Help us improve
Share bugs, ideas, or general feedback.
From techne
Reproduces behavioral bugs by recording a failing probe, then verifying the fix with the same probe. Use for crashes, hangs, regressions, wrong output, and failing tests.
npx claudepluginhub lynxlangya/techne --plugin techneHow this skill is triggered — by the user, by Claude, or both
Slash command
/techne:reproThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Force the skipped move in debugging: observe the bug before editing, then prove
Diagnoses and fixes bugs using a test-first workflow: reproduce with a failing test, diagnose root cause, then fix.
Enforces strict reproduce-first, root-cause-first, failing-test-first workflow for debugging bugs, test failures, or unexpected behavior.
Guides bug fixing through four phases: reproduce, understand, hypothesize, fix and verify. Use before proposing fixes for any bug or test failure.
Share bugs, ideas, or general feedback.
Force the skipped move in debugging: observe the bug before editing, then prove the fix with the same observation.
Use this skill when the task is to correct observable behavior that is currently wrong: a failing test, error message, stack trace, regression, crash, hang, wrong return value, wrong render, or "X does Y; it should do Z."
Do not use it for new features, refactors, renames, formatting, docs/copy changes, dependency bumps without a behavioral symptom, or performance work without a measurable probe.
Boundary test: can the wrongness be written as "running X currently produces Y; it should produce Z"? If yes, use this skill and make X the probe seed. If the statement cannot be formed from current information, ask for or find the missing observation before editing.
--expect. Omit heap addresses,
PIDs, timestamps, temp paths, and wrapped fragments. Use --expect whenever
the symptom has stable text. If no stable text exists, --no-stable-expect
is the honest fallback, not an unanchored run; do not use it when stable
textual output exists.--cwd <package-dir>, not with a
cd ... && convention. If required environment changes matter, encode them
inside --shell as one quoted command string such as
'VAR=... command'; inherited environment changes are not part of probe
identity in v1.scripts/repro_ledger.py run --project <root> --bug <slug> ... -- <command>.
Read the failing output and confirm it fails for the reported reason:
mechanically, expectMatched should be true when --expect was supplied;
procedurally, inspect the tail/context instead of trusting an exit code.--cwd, and --timeout. Then run
scripts/repro_ledger.py close --project <root> --bug <slug>.close JSON, cite the first repro entry's git evidence,
name the strength rung from reference.md, and carry speculative when the
ledger took an unreproduced path.Run and record a probe:
python3 skills/repro/scripts/repro_ledger.py run \
--project /path/to/project \
--bug login-crash \
--cwd packages/app \
--expect "TypeError: cannot read" \
--timeout 60 \
-- npm test -- login.test.ts
Verify after the fix:
python3 skills/repro/scripts/repro_ledger.py run \
--project /path/to/project \
--bug login-crash \
--cwd packages/app \
--expect "TypeError: cannot read" \
--timeout 60 \
-- npm test -- login.test.ts
python3 skills/repro/scripts/repro_ledger.py close \
--project /path/to/project \
--bug login-crash
Mark an honestly speculative fix only when reproduction is impossible:
python3 skills/repro/scripts/repro_ledger.py mark-unreproduced \
--project /path/to/project \
--bug customer-only-crash \
--no-probe-possible \
--reason "Requires customer-only data and credentials unavailable in this environment"
The ledger writes target-project artifacts under .techne/repro/ and
idempotently adds .techne/ to the target project's .gitignore. Do not commit
.techne/ output.
mark-unreproduced path.close does not exit 0 with a
verified same-probe summary.