skills/workflow-investigation-process/SKILL.md
--- name: workflow-investigation-process user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs) --- # Investigation Process Act as **expert debugger** tracing through code, **documentation assistant** capturing findings, AND **collaborative advisor** presenting analysis and discussing fix direction with the user. These are equally important — the investigation drives understanding
npx skillsauth add leeovery/agentic-workflows workflow-investigation-processInstall 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.
Act as expert debugger tracing through code, documentation assistant capturing findings, AND collaborative advisor presenting analysis and discussing fix direction with the user. These are equally important — the investigation drives understanding, the documentation preserves it, and the collaboration validates findings and aligns on approach. Dig deep: trace code paths, challenge assumptions, explore related areas. Then capture what you found.
Investigation combines:
The output becomes source material for a specification focused on the fix approach.
Follow these steps EXACTLY as written. Do not skip steps or combine them.
CRITICAL: This guidance is mandatory.
*_gate_mode: auto value in the manifest, set by the user's explicit a/auto choice at a prior gate.**STOP.** directives) — no courtesy check-ins, mid-loop summaries that end the turn, or unprescribed pauses between tasks/topics/phases.Context refresh (compaction) summarizes the conversation, losing procedural detail. When you detect a context refresh has occurred — the conversation feels abruptly shorter, you lack memory of recent steps, or a summary precedes this message — follow this recovery protocol:
.workflows/{work_unit}/investigation/{topic}.md — this is your source of truth for what's been discovered.git status and git log --oneline -10 to see recent commits. Commit messages follow a conventional pattern that reveals what was completed.Do not guess at progress or continue from memory. The files on disk and git history are authoritative — your recollection is not.
The investigation file is your memory. Context compaction is lossy — what's not on disk is lost.
Write to the file at natural moments:
After writing, git commit. Commits let you track and recover after compaction. Don't batch — commit each time you write.
Create the file early. After understanding the initial symptoms, create the investigation file with the symptoms section.
On length: Investigations can vary widely. Capture what's needed to fully understand the bug. Don't summarize prematurely — document the trail.
Output the next fenced block as a code block:
── Resume Detection ─────────────────────────────
Output the next fenced block as markdown (not a code block):
> Checking for an existing investigation. If one exists,
> you can pick up where you left off or start fresh.
Check if the investigation file exists at .workflows/{work_unit}/investigation/{topic}.md.
→ Proceed to Step 1.
Read the file.
Output the next fenced block as markdown (not a code block):
Found existing investigation for **{topic:(titlecase)}**.
· · · · · · · · · · · ·
- **`c`/`continue`** — Pick up where you left off
- **`r`/`restart`** — Delete the investigation file and start fresh
· · · · · · · · · · · ·
STOP. Wait for user response.
continue→ Proceed to Step 2.
restartinvestigation({work_unit}): restart investigation→ Proceed to Step 1.
Output the next fenced block as a code block:
── Initialize Investigation ─────────────────────
Output the next fenced block as markdown (not a code block):
> Creating the investigation file and recording the initial
> bug context.
Load initialize-investigation.md and follow its instructions as written.
→ Proceed to Step 2.
Output the next fenced block as a code block:
── Knowledge Usage ──────────────────────────────
Output the next fenced block as markdown (not a code block):
> Loading the usage guide for the knowledge base so
> proactive querying is available throughout the investigation.
Load knowledge-usage.md and follow its instructions as written.
→ Proceed to Step 3.
Output the next fenced block as a code block:
── Symptom Gathering ────────────────────────────
Output the next fenced block as markdown (not a code block):
> Gathering detailed symptoms — reproduction steps, error
> messages, affected areas, and environmental context.
Load symptom-gathering.md and use its questions to gather symptoms from the user.
Document symptoms in the investigation file as you gather them. Commit after each significant addition.
When symptoms are sufficiently understood to begin code analysis:
→ Proceed to Step 4.
Output the next fenced block as a code block:
── Contextual Query ─────────────────────────────
Output the next fenced block as markdown (not a code block):
> Checking the knowledge base for prior investigations or
> related work that matches the symptoms just gathered.
Load contextual-query.md and follow its instructions as written.
→ Proceed to Step 5.
Output the next fenced block as a code block:
── Code Analysis ────────────────────────────────
Output the next fenced block as markdown (not a code block):
> Tracing the bug through the codebase — following code
> paths, checking state, and narrowing down the root cause.
Load analysis-patterns.md and use its techniques to trace the bug through the code.
Document findings in the investigation file as you analyze. Commit after each significant finding.
→ Proceed to Step 6.
Output the next fenced block as a code block:
── Root Cause Synthesis ─────────────────────────
Output the next fenced block as markdown (not a code block):
> Synthesising findings into a clear root cause statement,
> contributing factors, and fix direction.
Synthesize findings into a clear root cause:
Document in the investigation file and commit.
Knowledge-base nudge — if the root cause pattern feels familiar, query the knowledge base before moving on. A matching prior investigation can confirm the diagnosis or surface a related bug. See knowledge-usage.md.
→ Proceed to Step 7.
Output the next fenced block as a code block:
── Root Cause Validation ────────────────────────
Output the next fenced block as markdown (not a code block):
> Reviewing the findings and optionally validating the root
> cause against the codebase.
Load synthesis-agent.md and follow its instructions as written.
→ Proceed to Step 8.
Output the next fenced block as a code block:
── Findings Review ──────────────────────────────
Output the next fenced block as markdown (not a code block):
> Confirming the findings and discussing the fix approach
> with you.
Load findings-review.md and follow its instructions as written.
→ Proceed to Step 9.
Output the next fenced block as a code block:
── Compliance Self-Check ────────────────────────
Output the next fenced block as markdown (not a code block):
> Verifying the investigation file follows workflow conventions.
Load compliance-check.md and follow its instructions as written.
→ Proceed to Step 10.
Output the next fenced block as a code block:
── Conclude Investigation ───────────────────────
Output the next fenced block as markdown (not a code block):
> Wrapping up. Final confirmation before marking the
> investigation as complete.
Load conclude-investigation.md and follow its instructions as written.
tools
--- name: workflow-discovery user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-discovery/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs), Bash(git status), Bash(git add), Bash(git commit), Bash(cp), Bash(mkdir -p .workflows/), Bash(mv .workflows/.inbox/) --- # Discovery The universal first phase. Shape the work the user is bringing — confirm what kind of work it is,
tools
--- name: workflow-continue-quickfix user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-continue-quickfix/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs) --- Continue an in-progress quick-fix. Determines current phase and routes to the appropriate phase skill. > **⚠️ ZERO OUTPUT RULE**: Do not narrate your processing. Produce no output until a step or reference file
tools
--- name: workflow-continue-feature user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-continue-feature/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs) --- Continue an in-progress feature. Determines current phase and routes to the appropriate phase skill. > **⚠️ ZERO OUTPUT RULE**: Do not narrate your processing. Produce no output until a step or reference file expl
tools
--- name: workflow-continue-epic user-invocable: false allowed-tools: Bash(node .claude/skills/workflow-continue-epic/scripts/discovery.cjs), Bash(node .claude/skills/workflow-manifest/scripts/manifest.cjs), Bash(node .claude/skills/workflow-knowledge/scripts/knowledge.cjs), Bash(node .claude/skills/workflow-legacy-research-split/scripts/detect.cjs), Bash(node .claude/skills/workflow-discovery/scripts/discovery.cjs) --- Continue an in-progress epic. Shows full phase-by-phase state and routes to