clarification
Use when a user's request is vague, ambiguous, or underspecified. Explores the codebase first, then runs an iterative Q&A loop…
Use when encountering any bug, test failure, or unexpected behavior. Enforces a strict reproduce-first, root-cause-first, failing-test-first debugging workflow before fixing.
$ npx -y skills add tmdgusya/engineering-discipline --skill systematic-debugging --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/systematic-debuggingContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when encountering any bug, test failure, or unexpected behavior. Enforces a strict reproduce-first, root-cause-first, failing-test-first debugging workflow before fixing.
name: systematic-debugging description: Use when encountering any bug, test failure, or unexpected behavior. Enforces a strict reproduce-first, root-cause-first, failing-test-first debugging workflow before fixing.
A strict debugging workflow. Use when dealing with bugs, test failures, or unexpected behavior.
Three core purposes:
1. Fix the cause, not the symptom. 2. Prevent guess-based fixes. 3. Lock the failure with a test before fixing.
These rules have no exceptions.
1. **Do not fix until you have a reproducible or observable state.** 2. **Do not fix until you have stated a root-cause hypothesis.** 3. **Do not fix until you have a failing test or equivalent reproduction mechanism.** 4. **Verify only one hypothesis at a time.** 5. **No "while I'm here" refactoring during a fix.** 6. **If three fix attempts fail, suspect a structural issue before applying another patch.**
Violating this process is considered a debugging failure.
Use this skill in the following situations:
The following excuses are not accepted:
When using this skill, the following items must be locked internally:
1. **Problem statement**: Define what went wrong in one sentence 2. **Reproduction path**: How to reproduce or observe the failure 3. **Evidence**: Actual observed results 4. **Root-cause hypothesis**: Why you believe this problem occurs 5. **Failing guard**: One of: failing test, reproduction script, or log verification 6. **Fix**: A single fix targeting the root cause 7. **Verification**: Reproduction path and related test results after the fix
If any of these seven items are missing, the work is not done.
Follow the steps below in order.
First, condense the problem.
Output format:
Problem: <expected> but got <actual> under <condition>
Do not mix symptoms with speculation.
Good: Product detail API returns 500 when brand is null. Bad: Serializer is broken because brand mapping seems wrong.
You must be able to see the failure again before fixing it.
Priority:
1. Reproduce with existing tests 2. Reproduce with a minimal integration test 3. Reproduce with a unit test 4. Observe via reproduction script or command 5. Observe after adding logs/instrumentation
Rules:
What to do when reproduction is not possible:
1. Record input values 2. Check for environment differences 3. Check recent changes 4. Add logs at boundary points 5. Search for smaller conditions that produce the same symptom
Collect only observable facts.
Always check:
For multi-component problems, check at each boundary.
Examples:
At each boundary, check:
Do not fix until you have pinpointed the problem location.
Formulate exactly one cause candidate.
Format:
Hypothesis: <root cause> because <evidence>
Qualities of a good hypothesis:
Examples of bad hypotheses:
Trace the cause back to the source. If the error appears deep in the stack, trace the origin of the input, not the symptom.
Lock the failure before fixing.
Priority:
1. Automated failing test 2. Add a regression case to existing tests 3. Minimal reproduction script 4. Temporary verification via logs/assertions
Rules:
If an automated test is feasible, use the `test-driven-development` skill alongside this one.
The fix addresses only one hypothesis.
Allowed:
Forbidden:
If the fix fails, immediately return to Phase 1 or Phase 3. The previous hypothesis was wrong.
All of the following must be satisfied before closing:
1. The original reproduction path no longer fails. 2. The new failing guard passes. 3. Related tests are not broken. 4. You can explain that the fix blocks the cause, not the symptom.
For intermittent bugs, a single pass
Engineering discipline skills for AI coding agents. Works with Claude Code, Gemini CLI, OpenCode, Codex, and Cursor.
Use when a user's request is vague, ambiguous, or underspecified. Explores the codebase first, then runs an iterative Q&A loop…
Corrective cleanup of AI-generated code — removes LLM-specific patterns while preserving behavior. Use when the user says…
Behavioral guardrails to prevent common LLM coding mistakes — enforces surgical changes, assumption verification, and scope…
Orchestrates multi-day execution of complex tasks through milestones. Each milestone goes through plan-crafting, run-plan…
Decomposes complex, multi-day tasks into optimized milestones (ultraplan). Broad parallel exploration grounds a draft milestone…
Use when a task's scope is clear and multi-step implementation is needed, before touching code. Triggered after clarification is…