skills/woostack-debug/SKILL.md
Use as woostack's systematic-debugging phase — find the root cause of a bug, test failure, or unexpected behavior before any fix. Retells the four-phase method (root-cause investigation → pattern analysis → hypothesis/test → handback) with the Iron Law (no fix without root cause), wired to the .woostack/memory store (recall known gotchas at start). Invoke via /woostack-debug <target>; it runs the four-phase root-cause analysis automatically and hands the findings back. Investigative only — autonomous is its sole mode (no flag), and it never writes code, commits, or merges.
npx skillsauth add howarewoo/woo-stack woostack-debugInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Find the root cause of any bug, test failure, or unexpected behavior before attempting a fix. This is woostack's own systematic-debugging phase: a place every woostack skill can route a stuck verification or a confirmed bug instead of falling back to guess-and-check. It owns no approval gate, never writes code, never commits, and never merges — it hands the diagnosed root cause back.
It is a public command — /woostack-debug <target> — and an internal hook:
woostack-execute and
woostack-execute-overnight dispatch it on a
repeatedly-failing verification, and woostack-review points the
author at it for a confirmed bug. It always runs autonomously — there is no interactive mode and
no flag; running it performs a full root-cause analysis and hands the findings back.
A symptom fix is a failure. If you have not completed Phase 1 (root-cause investigation), you may not propose or apply a fix. This holds for EVERY issue regardless of perceived simplicity and ESPECIALLY under time pressure — systematic debugging is faster than thrashing. The root cause is always narrated before any fix is proposed, so the "why" is always visible. </IRON-LAW>
Any technical issue: test failures, production bugs, unexpected behavior, performance problems, build failures, integration issues. Use it especially when guessing is tempting — under time pressure, when "just one quick fix" looks obvious, when a previous fix didn't work, or when you don't fully understand the issue. Do not skip it because an issue "seems simple": simple bugs have root causes too, and the process is fast for them.
Complete each phase before the next.
git diff, recent commits, new dependencies, config or
environment differences. What changed that could cause this?For timing-dependent or flaky failures, recommend replacing arbitrary timeouts with condition-based waiting (poll for the condition) rather than sleeping a fixed interval.
woostack-debug always runs autonomously. Running /woostack-debug <target> works through
Phases 1–4 end to end — no per-hypothesis approval gate — and hands back the Phase 4 result: the
root-cause summary, the proposed minimal fix, and the TDD context. There is no interactive mode
and no --auto flag; autonomous is the only mode. The Iron Law still forces narrating the root
cause before any fix is proposed, so the "why" is always visible. It is investigative only — it
hands the findings back and never applies the fix itself.
/woostack-debug with no argument → ask what's broken; do not guess
(mirror woostack-execute's no-argument behavior).woostack-debug reads and writes the scoped .woostack/memory/ store. The note schema, the
recall procedure, the reject-by-default distillation gate, and the degradation contract are
defined once in memory.md — this section says only how
debugging uses them.
recall.sh when the woostack-init
scripts are present, the manual procedure (load MEMORY.md + the flat memory.md, scope-
match, one-hop link expand) otherwise. Surface matching gotcha/hotspot/pattern notes
before investigating — a matching note may already name the root cause. State whether recall
was script-assisted or manual; never fail silently.woostack-debug does not write code, so it does not distill gotcha notes directly. Memory note distillation is owned by the caller (such as woostack-fix or woostack-execute) once the minimal fix has been implemented and verified.If you catch yourself thinking any of these, stop and restart at Phase 1:
| Excuse | Reality | |---|---| | "Issue is simple, no process needed." | Simple issues have root causes too; the process is fast for them. | | "Emergency, no time for process." | Systematic debugging is faster than guess-and-check thrashing. | | "I see the symptom, let me fix it." | Seeing symptoms is not understanding the root cause. |
If a genuine investigation shows the issue is truly environmental, timing-dependent, or external: document what you investigated and log findings for future investigation. But treat this as rare — most "no root cause" outcomes are incomplete investigation.
.woostack/specs/, .woostack/plans/, or .woostack/fixes/ file. The phase enum and join contracts live in conventions.md — link, never restate.--auto flag (autonomous is the only mode) and never runs interactively. Investigative only — it never applies the fix.testing
Use to curate the .woostack/ knowledge store. Reflects over the static memory store + docs (no session mining), then proposes a gated changeset that merges duplicate notes, replaces stale/contradicted ones, drops dead/orphaned notes, resolves conflicts, surfaces consolidated insights, and recommends evidence-guarded documentation edits. Nothing mutates before explicit approval; ends on a summary + iterate loop. Local-only memory (no commit); doc edits land in the working tree. Never commits or merges. Invoke via /woostack-dream [instructions].
development
woostack's canonical test-driven-development home and on-demand test-adder. The single source for the TDD kernel — Red→Green→Refactor, test-first, cover happy/error/edge/success+failure, framework-aware, no-runner→concrete verification — that woostack-plan, woostack-execute, woostack-debug, and bootstrap patterns.md §7 should link to instead of restating. Also the 14th public command: /woostack-tdd <target> adds appropriate tests to an existing code block, PR, spec, or plan — one verb, target-routed (code→colocated *.test files, PR→tests for the gh pr diff surface, spec→strengthen §7 acceptance criteria, plan→fill failing-test steps) — with a characterization carve-out for existing code (new code is red-first; existing code pins current behavior). Writes tests to the working tree and hands to woostack-commit; never commits, merges, or authors status:/branch:; owns no approval gate.
development
Use to resolve small technical issues (bugs, hotfixes, refactors) through a unified execution loop — diagnose root cause with woostack-debug, author a fix plan under .woostack/fixes/, harden, get explicit user approval, then delegate execution to woostack-execute (TDD per task, task review, commit via woostack-commit, distill).
development
Use to execute an approved woostack plan UNATTENDED overnight — one autonomous run with no user input after launch that drives every increment to a reviewed stack, swapping woostack-execute's stop-and-ask gates for resolve-or-log-and-continue (woostack-debug on stuck verifications; bounded auto-address on a blocking review; halt-the-track on anything unsafe or ambiguous), honoring optional `## Track:` grouping in the plan (independent, fault-isolated tracks run sequentially), and writing a morning report under .woostack/overnight/ for a human to test in the morning. It is the third choice at woostack-build's execution-handoff gate (Go / Hand off / Run overnight); also usable standalone via /woostack-execute-overnight <plan-path> [--inline|--subagent]. One plan per spec, multiple PRs per plan. Never merges; never relaxes safety for autonomy.