Files
2026-05-15 14:52:29 +08:00

6.2 KiB

Skill Test Spec: /hotfix

Skill Summary

/hotfix manages an emergency fix workflow: it creates a hotfix branch from main, applies a targeted fix to the identified file(s), runs /smoke-check to validate the fix doesn't introduce regressions, and prompts the user to confirm merge back to main. Each code change requires a "May I write to [filepath]?" ask. Git operations (branch creation, merge) are presented as Bash commands for user confirmation before execution.

The skill is time-sensitive — director review is optional post-hoc, not a blocking gate. Verdicts: HOTFIX COMPLETE (fix applied, smoke check passed, merged) or HOTFIX BLOCKED (fix introduced regression or user declined).


Static Assertions (Structural)

Verified automatically by /skill-test static — no fixture needed.

  • Has required frontmatter fields: name, description, argument-hint, user-invocable, allowed-tools
  • Has ≥2 phase headings
  • Contains verdict keywords: HOTFIX COMPLETE, HOTFIX BLOCKED
  • Contains "May I write" language for code changes
  • Has a next-step handoff (e.g., /bug-report to document the issue, or version bump)

Director Gate Checks

None. Hotfixes are time-critical. Director review may follow separately as a post-hoc step. No gate is invoked within this skill.


Test Cases

Case 1: Happy Path — Critical crash bug fixed, smoke check passes

Fixture:

  • main branch is clean
  • Bug is identified in src/gameplay/arena.gd (crash on boss arena entry)
  • Repro steps are provided by user

Input: /hotfix (user describes the crash and affected file)

Expected behavior:

  1. Skill proposes creating a hotfix branch: hotfix/boss-arena-crash
  2. User confirms; Bash command for branch creation is shown and confirmed
  3. Skill identifies the fix location in arena.gd and drafts the change
  4. Skill asks "May I write to src/gameplay/arena.gd?" and applies fix on approval
  5. Skill runs /smoke-check — PASS
  6. Skill presents the merge command and asks user to confirm merge to main
  7. User confirms; merge executes; verdict is HOTFIX COMPLETE

Assertions:

  • Hotfix branch is created before any code changes
  • "May I write" is asked before modifying any source file
  • /smoke-check runs after the fix is applied
  • Merge requires explicit user confirmation (not automatic)
  • Verdict is HOTFIX COMPLETE after successful merge

Case 2: Smoke Check Fails — HOTFIX BLOCKED

Fixture:

  • Fix has been applied to src/gameplay/arena.gd
  • /smoke-check returns FAIL: "Player health clamping regression detected"

Input: /hotfix

Expected behavior:

  1. Skill applies the fix and runs /smoke-check
  2. Smoke check returns FAIL with specific regression identified
  3. Skill reports: "HOTFIX BLOCKED — smoke check failed: [regression detail]"
  4. Skill presents options: attempt revised fix, revert changes, or merge with known regression (user acknowledges risk)
  5. No automatic merge occurs when smoke check fails

Assertions:

  • Verdict is HOTFIX BLOCKED
  • Smoke check failure is shown verbatim to user
  • Merge is NOT performed automatically when smoke check fails
  • User is given explicit options for how to proceed

Case 3: Fix to Already-Released Build — Version tag noted, patch bump prompted

Fixture:

  • Latest git tag is v1.2.0
  • Hotfix targets a bug in the v1.2.0 release

Input: /hotfix

Expected behavior:

  1. Skill detects that the current HEAD is a tagged release (v1.2.0)
  2. Skill notes: "Hotfix targeting tagged release v1.2.0"
  3. After smoke check passes, skill prompts: "Should version be bumped to v1.2.1?"
  4. If user confirms version bump: skill asks "May I write to VERSION or equivalent?"
  5. After version update and merge: verdict is HOTFIX COMPLETE with version noted

Assertions:

  • Version tag context is detected and surfaced to user
  • Patch version bump is suggested (not required) after merge
  • Version bump requires its own "May I write" confirmation
  • Verdict is HOTFIX COMPLETE

Case 4: No Repro Steps — Skill Asks Before Applying Fix

Fixture:

  • User invokes /hotfix with a vague description: "something is broken on level 3"
  • No repro steps provided

Input: /hotfix (vague description)

Expected behavior:

  1. Skill detects insufficient information to identify the fix location
  2. Skill asks: "Please provide reproduction steps and the affected file or system"
  3. Skill does NOT create a branch or modify any file until repro steps are provided
  4. After user provides repro steps: normal hotfix flow begins

Assertions:

  • No branch is created without repro steps
  • No code changes are made without a clearly identified fix location
  • Repro step request is specific (not a generic "please provide more info")
  • Normal hotfix flow resumes after user provides repro steps

Case 5: Director Gate Check — No gate; hotfixes are time-critical

Fixture:

  • Critical bug with repro steps identified

Input: /hotfix

Expected behavior:

  1. Skill completes the hotfix workflow
  2. No director agents are spawned during execution
  3. No gate IDs appear in output
  4. Post-hoc director review (if needed) is a manual follow-up, not invoked here

Assertions:

  • No director gate is invoked
  • No gate skip messages appear
  • Verdict is HOTFIX COMPLETE or HOTFIX BLOCKED — no gate verdict

Protocol Compliance

  • Creates hotfix branch before making any code changes
  • Asks "May I write" before modifying any source files
  • Runs /smoke-check after applying the fix
  • Requires explicit user confirmation before merging
  • HOTFIX BLOCKED when smoke check fails — no automatic merge
  • Verdict is HOTFIX COMPLETE or HOTFIX BLOCKED

Coverage Notes

  • The case where multiple files need to be modified for one fix follows the same "May I write" per-file pattern and is not separately tested.
  • The post-hotfix steps (create bug report, update changelog) are suggested in the handoff but not tested as part of this skill's execution.
  • Conflict resolution during the merge (if main has diverged) is not tested; the skill would surface the conflict and ask the user to resolve it manually.