.agents/skills/issue-repro/references/anti-patterns.md
The critical rules are in SKILL.md. This file has the complete list with examples.
| You Run | What Happens | Step Result | Why |
|---|---|---|---|
dotnet build | Build succeeds, exits 0 | success | Command succeeded |
dotnet build | Build fails with CS0117 | failure | Command failed |
dotnet build (reporter said it fails) | Build fails with CS0117 | failure | Command still failed — matching the report doesn't change the technical outcome |
| Render image | Exits 0 but pixels wrong | wrong-output | Process succeeded, output incorrect |
artifacts array with URLs, not inline data.issue-fix's job./Users/{name}/ → $HOME/.not-reproduced.reproduced = reported behavior occurred, even if by-design.result = technical outcome, not expectation match.needs-platform.net8.0 works on net10.0.notes, set scope to "unknown".rm -rf bin/ obj/ between versions.See SKILL.md for the authoritative output limits table.
| Field | Max Size |
|---|---|
reproductionSteps[].output (success) | 2KB |
reproductionSteps[].output (failure) | 4KB |
errorMessages.stackTrace | 5KB / 50 lines |
| File content | Inline for small source files; omit binaries |
Redaction: /Users/{name}/ → $HOME/, tokens → [REDACTED]
Never use sudo. If a command requires sudo, find an alternative. sudo prompts for a password interactively, which blocks the session indefinitely. Use user-local installs, Docker, or different approaches.
No repo markdown artifacts. NEVER create markdown summary files (e.g., REPRO_SUMMARY.md, COMPLETION_REPORT.md) in the repository working tree. All working files belong in the session workspace (~/.copilot/session-state/). Clean up any accidentally created files before persisting.
Fabricating output or evidence. NEVER use echo/print statements to simulate command output, claim "reproduced" from static code analysis without executing the code, or report environment details (OS version, SDK version) without actually running the diagnostic commands. If you cannot run it, report needs-platform.
Modifying product source during repro. Reproduction ONLY creates new test projects in /tmp/skiasharp/repro/{timestamp}/. NEVER edit binding/, externals/, samples/, source/, tests/, utils/, or any other product source — that is the issue-fix skill's job. Revert immediately if done accidentally.
Skipping validation. NEVER skip the validation script (validate-repro.ps1 / validate-repro.py). NEVER assume the JSON is valid without running it. NEVER persist to the data cache without seeing ✅ from the validator. Mentally reviewing the JSON is not a substitute for the script.
Using reproduced/not-reproduced for non-bug issues. For enhancements, feature requests, and documentation issues, use confirmed/not-confirmed instead. reproduced means "reported misbehavior was observed" — it doesn't make sense for "the feature is missing."
Using confirmed/not-confirmed for bugs. For bugs, always use reproduced/not-reproduced. confirmed means "reporter's non-bug claim was verified" — it doesn't apply to behavioral bugs.