repro-pilot

Evidence-driven GitHub issue reproduction and fixing workflow for Pi Coding Agent

Packages

Package details

extensionskill

Install repro-pilot from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:repro-pilot
Package
repro-pilot
Version
0.2.0
Published
Oct 28, 2026
Downloads
226/mo · 206/wk
Author
zey2
License
MIT
Types
extension, skill
Size
75.3 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "skills": [
    "./skills"
  ],
  "extensions": [
    "./extensions/repro-workflow/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

ReproPilot

English | 简体中文

ReproPilot is an issue reproduction agent built on Pi Coding Agent.

Give it a GitHub issue URL. It investigates the matching local repository, reproduces the reported behavior, creates a regression test, and reports evidence from commands it actually ran. Add --fix to also request a fix and verification.

Who it is for

  • Developers learning how an evidence-driven coding agent works.
  • Maintainers who want an issue turned into a reproducible test case.
  • Developers who want to confirm a bug before attempting a fix.

ReproPilot runs locally. It does not automatically commit, push, or create a pull request.

What it does

Load issue → Triage → Reproduce → Add a failing regression test
                                      ↓
                    No --fix: verify and report
                    With --fix: repair → verify → report

Reading code is not proof of reproduction. ReproPilot records real Pi bash executions and lets the model cite their execution IDs. The model describes actual versus expected behavior; it cannot submit its own command output or exit code as execution evidence.

Tests must verify the current files. Later failures or file edits invalidate older passing results. An interrupted command is treated as unknown, not as a pass.

Architecture

ReproPilot is a Pi package with the following components:

Path Responsibility
extensions/repro-workflow/ Connects ReproPilot to Pi: /repro, custom tools, session events, and TUI status
skills/repro-workflow/ Gives the model the step-by-step reproduction procedure
src/core/ Enforces workflow state, evidence rules, persistence validation, and report generation without depending on Pi
src/github.ts Loads and validates the GitHub issue and verifies the current repository
src/workspace.ts Records the Git baseline and detects repository file changes

Pi provides the model loop and built-in repository tools. ReproPilot adds only the issue-reproduction workflow and its deterministic evidence gates.

Requirements

  • Node.js 22.19 or later.
  • Pi Coding Agent with a model configured.
  • A local checkout of the repository that owns the issue, with the correct GitHub origin.
  • The dependencies and toolchain needed to run that repository locally.

The target repository is not restricted to a programming language or test framework.

ReproPilot runs commands and may create or edit files in the current repository. Check your working tree first or use a separate branch.

Quick start

Install Pi with npm:

npm install -g --ignore-scripts @earendil-works/pi-coding-agent

--ignore-scripts disables dependency lifecycle scripts during installation. Pi does not require install scripts for normal npm installs.

Installer alternative:

curl -fsSL https://pi.dev/install.sh | sh

Authenticate with an API key:

export ANTHROPIC_API_KEY=sk-ant-...
pi

Or use an existing subscription:

pi
/login  # Then select provider

Install ReproPilot once:

pi install npm:repro-pilot

Public issues require no GitHub token. For issues you can access only after authentication, set GITHUB_TOKEN before starting Pi.

Run

Clone or open the repository that owns the issue:

git clone https://github.com/OWNER/REPOSITORY.git
cd REPOSITORY
git switch -c test-repro-pilot
pi

Using a separate branch is recommended because ReproPilot may create tests or modify source files. You can choose any branch name.

Start Pi normally. Do not add --no-skills: it disables ReproPilot's workflow skill. ReproPilot does not include any unrelated skills.

Replace the uppercase placeholders, then run this inside Pi:

/repro https://github.com/OWNER/REPOSITORY/issues/ISSUE_NUMBER

This reproduces the issue and creates a regression test, but does not repair the source code.

To also request a fix:

/repro https://github.com/OWNER/REPOSITORY/issues/ISSUE_NUMBER --fix

The issue repository must match the current repository's GitHub origin. ReproPilot stops on a mismatch to avoid changing the wrong codebase.

Read the live status

Pi shows a status such as:

repro:triage outcome:in_progress evidence:0 test:not_started fix:not_started
  • repro: current workflow phase.
  • outcome: current or final result.
  • evidence: number of recorded evidence items.
  • test: regression test status.
  • fix: fix status.
Phase Meaning
triage Understand the issue and find relevant code and tests
reproduce Run the code and compare actual with expected behavior
test Add a regression test and observe it failing on the baseline
fix Change source code; entered only when --fix was used
verify Run the regression test and relevant existing tests
report Write the final report

test is not_started, failing, passing, or blocked. fix is not_started or applied.

Read the final result

Outcome Meaning
reproduced The bug was reproduced and the regression test fails on the baseline; no source fix was applied
fixed The bug was reproduced and fixed; the regression and relevant existing tests pass
not_reproduced Reproduction was attempted, but the reported behavior was not observed
blocked The run could not continue because of missing information, dependencies, or environment

The final report is written inside the target repository:

.repro-pilot/runs/<run-id>/report.md

Read Outcome and Verification first. Use Evidence Details when you need the exact command, exit code, and relevant output behind a conclusion. Evidence items are numbered E1, E2, and so on.

Recovery and failed saves

ReproPilot restores valid checkpoints on the current Pi session branch and checks the repository again before resuming work. Completed runs are frozen. Finish the current run before starting another /repro.

If saving session state fails, restart Pi before continuing. If writing the report fails, the run remains unfinished and can be retried. Older schema-v1 checkpoints do not contain execution records; start a new run rather than treating those old claims as verified evidence.

Current limits

  • Accepts issue URLs from github.com only.
  • Requires the user to open the matching local repository first.
  • Requires the target project's dependencies and tests to run locally.
  • Requires a committed Git HEAD. Repository snapshots cover tracked and non-ignored untracked files; submodules and special files are currently rejected.
  • Commands that create or modify repository files need to be re-run after the files stabilize before their results can be used as test evidence.
  • Provides no cloud sandbox and does not automatically commit, push, or open a pull request.