repro-pilot
Evidence-driven GitHub issue reproduction and fixing workflow for Pi Coding Agent
Package details
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.comonly. - 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.