Files
msd-core/commands/gsd/debug.md
Tom Boucher a411e08e88 fix(coderabbit): resolve all 12 findings on PR #3152
MAJOR (security/correctness):
- commands/gsd/debug.md: add Write to allowed-tools (session file creation
  requires it — workflow explicitly says 'use Write tool, never heredoc')
- workflows/debug.md: add SLUG sanitization guard to steps 1b+1c (status/
  continue subcommands used raw user input in file paths — path traversal)
- workflows/thread.md: sanitize $ARGUMENTS in RESUME mode before file path
  construction (was bypassing the sanitization guard in CLOSE/STATUS modes)

MINOR (consistency/correctness):
- docs/INVENTORY-MANIFEST.json: remove stale top-level 'workflows' array
  (duplicate of families.workflows introduced in earlier update)
- commands/gsd/resume-work.md: normalize process to 'Execute end-to-end.'
- commands/gsd/settings.md: normalize process to 'Execute end-to-end.'
- commands/gsd/update.md: normalize otherwise branch to 'execute end-to-end.'
- docs/adr/0002: add Status: Accepted + Date header (ADR convention)
- workflows/extract-learnings.md: rename step extract_learnings → extract-learnings
- tests/extract-learnings.test.cjs: tighten step-name assertion to exact name

ARCHITECTURE:
- scripts/command-contract-helpers.cjs: extract CANONICAL_TOOLS, parseFrontmatter,
  executionContextRefs as shared module — single source of truth consumed by
  both lint script and test suite (prevents silent lint/test disagreement)
- scripts/lint-command-contract.cjs: require() helpers instead of duplicating
- tests/command-contract.test.cjs: require() helpers; move readFileSync calls
  inside test() callbacks (registration-time throws surface as named failures)
2026-05-05 16:06:29 -04:00

1.7 KiB

name: gsd:debug description: Systematic debugging with persistent state across context resets argument-hint: [list | status | continue | --diagnose] [issue description] allowed-tools: - Read - Write - Bash - Task - AskUserQuestion Debug issues using scientific method with subagent isolation.

Orchestrator role: Gather symptoms, spawn gsd-debugger agent, handle checkpoints, spawn continuations.

Flags:

  • --diagnose — Diagnose only. Returns a Root Cause Report without applying a fix.

Subcommands: list · status <slug> · continue <slug>

<available_agent_types> Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):

  • gsd-debug-session-manager — manages debug checkpoint/continuation loop in isolated context
  • gsd-debugger — investigates bugs using scientific method </available_agent_types>

<execution_context> @~/.claude/get-shit-done/workflows/debug.md </execution_context>

User's input: $ARGUMENTS

Parse subcommands and flags from $ARGUMENTS BEFORE the active-session check:

  • If $ARGUMENTS starts with "list": SUBCMD=list, no further args
  • If $ARGUMENTS starts with "status ": SUBCMD=status, SLUG=remainder (trim whitespace)
  • If $ARGUMENTS starts with "continue ": SUBCMD=continue, SLUG=remainder (trim whitespace)
  • If $ARGUMENTS contains --diagnose: SUBCMD=debug, diagnose_only=true, strip --diagnose from description
  • Otherwise: SUBCMD=debug, diagnose_only=false

Check for active sessions (used for non-list/status/continue flows):

ls .planning/debug/*.md 2>/dev/null | grep -v resolved | head -5
Execute end-to-end.