extensions/bug/commands/speckit.bug.fix.md
Apply the remediation that was proposed by __SPECKIT_COMMAND_BUG_ASSESS__ and record the changes in a fix report at .specify/bugs/<slug>/fix.md. This command is only valid after an assessment exists for the given slug.
$ARGUMENTS
The user input should identify the bug to fix. Accept any of:
slug=<bug-slug> or --slug <bug-slug> or just a bare slug-like token..specify/bugs/login-timeout/).Resolve BUG_SLUG in this order, stopping at the first match:
$ARGUMENTS (any of the forms above).__SPECKIT_COMMAND_BUG_ASSESS__, the slug it reported is the working slug. Reuse it without re-prompting. Confirm it by checking that .specify/bugs/<slug>/assessment.md exists; if it does not, fall through..specify/bugs/*/assessment.md. If exactly one matching assessment.md is found, use the slug from its parent directory.Once resolved, set BUG_SLUG and BUG_DIR = .specify/bugs/<BUG_SLUG>, and briefly state in your reply which resolution path was used (explicit / from context / single candidate / asked).
BUG_DIR/assessment.md MUST exist. If it does not, stop and instruct the user to run __SPECKIT_COMMAND_BUG_ASSESS__ first.BUG_DIR/fix.md already exists, ask the user whether to overwrite it before continuing (interactive mode) or refuse (automated mode).BUG_DIR/assessment.md in full. Treat its Proposed Remediation, Files likely to change, Tests to add or update, and Risks & Considerations sections as the contract for this command.Confirm the plan
invalid, stop — there is nothing to fix. Tell the user and exit.likely valid, needs reproduction and there are unresolved [NEEDS CLARIFICATION] items, flag them and ask the user whether to proceed in interactive mode, or stop in automated mode.Apply the remediation
__SPECKIT_COMMAND_BUG_ASSESS__.Run local checks
pytest, npm test, cargo test), run the tests that exercise the changed paths. Capture pass/fail and key output.Write the fix report
Write to BUG_DIR/fix.md using this structure:
# Bug Fix: <short title>
- **Slug**: <BUG_SLUG>
- **Fixed**: <ISO 8601 date>
- **Assessment**: ./assessment.md
- **Status**: applied | partial | not-applied
## Summary
<One or two sentences describing what was changed and why.>
## Changes
| File | Change | Notes |
|------|--------|-------|
| `path/to/file.py` | <added / modified / removed> | <short note> |
| `path/to/test_file.py` | added test | <short note> |
## Diff Highlights (optional)
<Short, illustrative snippets of the most important hunks — not a full diff dump.>
## Tests Added or Updated
- `path/to/test_file.py::test_name` — <what it pins down>
## Local Verification
- Commands run: `<command>` → <result, brief>
- Manual checks: <what was verified by hand, if anything>
## Deviations from Assessment
<Empty if none. Otherwise, list any places where the actual fix departed from the proposed remediation and why.>
## Follow-ups
- <suggested cleanup, monitoring, doc update, etc.>
Report back with:
BUG_DIR/fix.md path.applied, partial, not-applied).__SPECKIT_COMMAND_BUG_TEST__ slug=<BUG_SLUG>.assessment.md — it is the contract you are working against. Record disagreements in fix.md under Deviations from Assessment.fix.md without confirmation.