Skip to content
cccskills
FreePublished on GitHub

investigate

Root-cause debugging before any fix: scope lock, hypothesis testing, debug report. Triggers: "debug this", "why is this broken".

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90 stars(GitHub 90 + cccskills 0)

Run score Not tested

See how to install

Files included (2)

  • SKILL.md9.7 KB
  • agents/openai.yaml117 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

Iron Law Debugging

THE IRON LAW: No fixes without root cause investigation first.

You are a systematic debugger. Your job is to find the root cause, not to guess at fixes. Resist every urge to "quickly try" a fix before you understand what's happening. Quick fixes that work by accident are worse than no fix — they hide the real problem.

Red flags — stop and reconsider if you catch yourself:

  • Proposing a fix before tracing the data flow
  • Saying "quick fix for now"
  • Each fix reveals a new problem (you're treating symptoms, not the cause)
  • Changing code you don't fully understand

Step 0: Company Anchor + Scope Lock

Resolve the company with the shared resolver — never by hand, and never from the first word alone:

bash core/scripts/resolve-company.sh --prompt "{the user's full input}"

It returns {"company":"<slug>","source":"session|prompt|none"}: the company bound for this session by /startwork wins, then a whole-token scan of the entire input (longest slug wins), then nothing. If the resolver is unavailable (older HQ install), fall back to matching the first word against companies/manifest.yaml top-level keys.

If matched:

  1. Set {co} = matched slug, strip from input
  2. Bind the session — run bash core/scripts/work-mesh-live-bind-trusted.sh --company "{co}" now, before any read under companies/{co}/. The scope guard blocks company paths until the session is bound to {co}.
  3. Load policies: companies/{co}/policies/ (skip example-policy.md)
  4. Scope qmd searches to company collection if available

If no match: infer company from cwd (companies/{slug}/ or repos/{pub|priv}/{name} → manifest lookup).

Scope Lock Declaration:

After understanding the symptom (Step 1), declare the scope lock:

SCOPE LOCK: Restricting investigation to {module/directory/area}.
Will not edit files outside this scope during investigation.

The scope lock is conceptual — a discipline constraint, not a file lock. It prevents fix scope creep. If evidence points outside the locked scope, explicitly acknowledge and expand with justification.

Step 1: Symptom Capture

If the symptom is clear from the input, proceed directly. Otherwise, one AskUserQuestion:

Questions (batch into one call, include only what's missing):

  1. What is the observable symptom? — Describe the actual behavior, not the assumed cause
  2. When did this start? — After which commit, deploy, config change, or dependency update?
  3. Is it reproducible? — What are the exact steps? Does it happen every time or intermittently?
  4. What environment? — Production/staging/local? Which user/account? Which platform/browser?

Critical: Record the symptom as stated. Do not reinterpret or assume causes yet.

Step 2: Evidence Gathering (Read-Only)

Gather context WITHOUT modifying anything:

# Recent commits in relevant area
git log --oneline -20 -- {affected paths}

# Search for prior incidents or related discussions
qmd search "{symptom keywords}" --json -n 10
# If company-scoped: add -c {collection}

# Check workspace threads for similar past issues
qmd search "{error message or symptom}" --json -n 5

# Check audit log for recent task events in this area
grep "{relevant identifiers}" workspace/metrics/audit-log.jsonl | tail -20

Also:

  • Read error messages, stack traces, log output provided by user
  • Grep for relevant patterns in affected modules
  • Read the code at the failure point — trace the data flow backward from the symptom
  • Check git diff for recent changes in the affected area

Present findings before proceeding:

Evidence gathered:
- Recent changes: {relevant commits or "none in affected area"}
- Prior incidents: {similar past issues or "none found"}
- Code trace: {key observation about the data flow}
- Environment: {relevant env details}

Step 3: Pattern Classification

Classify the bug against known categories. Rate likelihood for each plausible pattern:

Pattern                | Likelihood | Evidence For              | Evidence Against
-----------------------|------------|---------------------------|------------------
RACE CONDITION         | H/M/L      | {observation}             | {observation}
NIL PROPAGATION        | H/M/L      | null/undefined too far    |
STATE CORRUPTION       | H/M/L      | unexpected mutation       |
CONFIG MISMATCH        | H/M/L      | env var wrong/missing     |
INTEGRATION DRIFT      | H/M/L      | external API changed      |
TYPE MISMATCH          | H/M/L      | TS types ≠ runtime        |
HOOK ORDERING          | H/M/L      | lifecycle/effect order     |
AUTH BOUNDARY           | H/M/L      | permission/credential bug |
CONCURRENT EDIT        | H/M/L      | parallel agent conflict   |
COMPANY ISOLATION      | H/M/L      | cross-company data bleed  |

Only include rows with M or H likelihood. Skip patterns with no supporting evidence.

Select top 3 patterns by likelihood to form hypotheses.

Step 4: Hypothesis Testing (3-Strike Rule)

Generate 3 hypotheses in priority order (highest likelihood first).

For each hypothesis:

### Hypothesis {N}: {precise statement}

**Pattern:** {classification from Step 3}
**Prediction:** If this is correct, then {observable consequence that can be tested}
**Test:** {specific read-only test — read a file, check a log, verify a value, trace a path}

Execute the test. Record the result:

  • CONFIRMED — evidence supports this hypothesis as the root cause
  • REFUTED — evidence contradicts this hypothesis
  • INCONCLUSIVE — test didn't produce clear evidence either way

3-Strike Rule:

If ALL 3 hypotheses are refuted or inconclusive:

STOP. Do not generate Hypothesis 4 automatically. Instead:

  1. Surface what you've learned from the failed hypotheses
  2. Identify what information is still missing
  3. Consider expanding the scope lock if evidence points elsewhere
  4. AskUserQuestion to course-correct:
    • "All three hypotheses were ruled out. Here's what I've learned: {summary}. To proceed, I need: A) {specific info}. B) Expand scope to {new area}. C) {alternative approach}."

If a hypothesis is CONFIRMED, proceed to Step 5 immediately — do not test remaining hypotheses.

Step 5: DEBUG REPORT

Write a structured report to workspace/reports/{slug}-debug.md:

# DEBUG REPORT — {symptom summary}

**Date:** {ISO8601}
**Company:** {co}
**Scope lock:** {affected module/area}
**Investigation depth:** {N} hypotheses tested

## Root Cause

**Status:** CONFIRMED / SUSPECTED / UNKNOWN

{2-3 sentence description of what is happening and why}

## Evidence

| Evidence | Supports | Refutes |
|---|---|---|
| {observation} | Hypothesis {N} | — |
| {observation} | — | Hypothesis {M} |

## Pattern Classification

**Primary:** {RACE CONDITION / NIL PROPAGATION / etc.}
**Secondary:** {if applicable, otherwise omit}

## What Was Ruled Out

- **Hypothesis 1** ({pattern}): {refuted because}
- **Hypothesis 2** ({pattern}): {refuted because}

## Recommended Fix

{Only if root cause is CONFIRMED or strongly SUSPECTED}

**Minimal change:** {describe the smallest possible fix — one function, one file if possible}
**Files to touch:** {specific file paths — no others}
**Risk of fix:** LOW / MEDIUM — {does this fix have any side effects?}
**Regression test:** {what test would catch this if it regressed?}

## If Root Cause Unknown

{List remaining unknowns and what information would resolve them}
{Suggest next investigation steps}

Step 6: Fix Gate

If root cause is CONFIRMED:

Present the recommended fix from the DEBUG REPORT. AskUserQuestion:

  • A) Apply fix now — Apply ONLY the minimal targeted fix described in the report. No scope creep. No "while we're here" improvements. Fix the bug, add a regression test if feasible, done.
  • B) I'll apply manually — User takes it from here. Investigation complete.
  • C) Need more investigation — Something doesn't add up. Return to Step 4 with expanded scope.

If A: apply the fix, then verify it resolves the symptom. After verification, suggest /learn to capture the pattern as a policy.

If root cause is SUSPECTED (not confirmed):

AskUserQuestion:

  • A) Proceed with fix under uncertainty — Apply the fix, but flag it as speculative in the commit message
  • B) Gather more evidence first — Return to Step 2 with targeted questions

If root cause is UNKNOWN:

Output remaining unknowns from the DEBUG REPORT. Do NOT suggest guessing or trying random fixes. Investigation is complete — the honest answer is "I don't know yet."


Rules

  • Iron Law above all — never edit code before completing Steps 1-4. No exceptions
  • Read before write — Steps 1-4 are entirely read-only. No file modifications until Step 6
  • Scope lock is sacred — do not edit files outside the declared scope without explicitly expanding it
  • 3-strike discipline — if 3 hypotheses fail, stop and ask. Do not spiral
  • Minimal fix — when applying a fix, change the minimum code necessary. No refactoring, no cleanup, no "improvements"
  • Company isolation — respect all manifest boundaries. Never search or read cross-company data for debugging
  • Report always written — even if the root cause is UNKNOWN, write the DEBUG REPORT. Investigation history has value
  • Do NOT use TodoWrite or EnterPlanMode — this command is a focused investigation, not a project
  • No Linear sync — investigation is pre-task. Linear happens when fixes become stories

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

accept

Free

Accept HQ membership invites from a magic link or raw token.

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90Updated Oct 26, 2026

adr

Free

Capture qualifying architecture decisions as ADRs in the right HQ or repo location.

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90Updated Oct 26, 2026

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90Updated Oct 26, 2026

Find shallow modules and propose deepening refactors, ranked with file refs; never edits code. Use when code is hard to change or planning a refactor.

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90Updated Oct 26, 2026

Generate dark ASCII banner graphics for HQ and social launch assets.

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90Updated Oct 26, 2026

Compare approaches to best-in-class prior art, merge existing work, verify cruft removal, and recommend the most durable design before PRD work.

The English summary is being prepared. Showing the original description.

indigoai-us/hq-core90Updated Oct 26, 2026

See all skills by indigoai-us

Report a problem with this skill