Mk investigate
Skill ngocsangyem/MeowKit/packages/mewkit/src/migrate/modules/cursor/root/.cursor/skills/mk-investigate
Systematic root-cause debugging that produces a diagnostic report (mk:fix applies the fix; mk:build-fix owns compile failures). Use for 'debug this', 'why is this broken', 'root cause'.From its SKILL.md
npx -y skills add ngocsangyem/MeowKit --skill mk-investigateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.8 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Systematic Investigation
Path convention: Commands below assume cwd is
$(git rev-parse --show-toplevel)(project root). Prefix paths with"$(git rev-parse --show-toplevel)/"when invoking from subdirectories.
Iron Law: NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST.
Skill wiring
- Reads memory: canonical
.meowkit/memory/fixes.jsonandarchitecture-decisions.json; fall back to matching generated Markdown views only when JSON is absent. SeeAGENTS.md(Memory). - Writes: a diagnostic report only, under
tasks/reports/**; the hook enforces this path.mk:fixowns remediation and any memory capture after a fix.
Plan-First Gate
Investigation precedes planning for bug fixes:
- Confirm root cause FIRST (Iron Law)
- After root cause confirmed, hand off to
mk:fix. If the remedy affects more than two files,mk:fixrequests an approved bug-fix plan using supported plan-creator syntax.
Skip: Investigation itself doesn't need a plan — it produces the input for planning.
When to Use
- User reports errors, bugs, unexpected behavior
- "debug this", "fix this bug", "why is this broken"
- "investigate this error", "root cause analysis"
- Troubleshooting why something stopped working
Process
- Run preamble — load
references/preamble.mdand execute the startup bash block - Collect symptoms — read error messages, stack traces, reproduction steps
- Investigate root cause — load
references/debugging-methodology.mdand follow Phase 1-3. For recurring patterns or complex failures, loadreferences/rca-method-selection.mdfor methodology selection. Loadreferences/rca-anti-patterns.mdto avoid common RCA mistakes. - Check alternatives — test the strongest competing explanation before declaring a root cause.
- Write diagnostic report — save only to
tasks/reports/{timestamp}-investigation-{slug}.md; include the required output contract below. - Hand off — route confirmed defects to
mk:fix, compile/build failures tomk:build-fix, and unresolved causes back to the user with explicit uncertainty. - Run shared protocols — load
references/shared-protocols.mdfor completion status + telemetry
References
Load only when executing the corresponding step — not upfront.
| Reference | When to load | Content |
|---|---|---|
| preamble.md | Step 1 — skill startup | Session init, env detection, upgrade check |
| debugging-methodology.md | Steps 2-4 — investigation | Evidence collection and hypothesis testing |
| shared-protocols.md | Step 7 — completion | stop and ask the user in chat format, completion status, telemetry, contributor mode |
Specialized Techniques (load based on bug type)
| Bug type | Load reference | What it adds |
|---|---|---|
| Deep stack trace errors | references/root-cause-tracing.md | Backward trace: symptom → cause → ROOT CAUSE |
| Server/CI/DB incidents | references/system-investigation.md | 5-step system investigation methodology |
| CI/CD failures, log correlation | references/log-analysis.md | Filter → timeline → pattern → cross-source |
| Performance issues | references/performance-diagnostics.md | Quantify → layer isolation → bottleneck |
| Post-fix validation | references/reporting-standards.md | Enhanced DEBUG REPORT with timeline + recommendations |
| Test pollution | Run scripts/find-polluter.sh <file> <test-pattern> | Bisection to find which test creates unwanted state |
| Defense-in-depth | See mk:fix/references/prevention-gate.md | 4-layer validation (DRY — shared with mk:fix) |
Constraints
- Diagnostic only — never edit source, tests, configuration, plans, or memory stores
- Report-only writes —
Writeis allowed solely fortasks/reports/**and is hook-enforced - 3-strike rule — if 3 hypotheses fail, STOP and escalate
- Evidence boundary — label each claimed cause as confirmed or uncertain; do not imply remediation completed
Diagnostic Output Contract
Every report includes: symptom, reproduction status, expected versus actual behavior, ranked causes, confirmed root cause or explicit uncertainty, evidence, and blast radius. Recommendations may name a next owner but must not implement a fix.
Hooks
- Iron Law enforcement: No fixes without confirmed root cause;
mk:fixis the only remediation owner. - Report-path hook: a pre-write hook, enforced by this project's configured hooks when present, fails closed unless the destination is under
tasks/reports/**. - If root cause cannot be confirmed after 3 hypotheses, escalate to human
- Interaction with mk:careful: If mk:careful is active, debugging commands that touch state will still prompt for confirmation. This is expected — do not bypass.
Gotchas
- Confirming hypothesis without disproving alternatives: Finding evidence FOR a theory doesn't mean it's correct → Actively test at least one alternative hypothesis before concluding
- Log timestamps in wrong timezone: Server logs in UTC, local comparison in local time → Normalize all timestamps to UTC before correlation
Delegation: mk:web-to-markdown
When investigation requires fetching an arbitrary external URL (e.g. a vendor error page,
a remote log endpoint, a referenced issue URL), this skill delegates to
mk:web-to-markdown via the --wtm-accept-risk flag.
- Without
--wtm-accept-risk:mk:web-to-markdownrefuses cross-skill delegation. External URL resolution falls back to Context7 / chub / WebSearch only. - With
--wtm-accept-risk: delegation proceeds through all security layers (SSRF guard, injection scanner, DATA boundary, secret scrub). The flag is a conscious trust-boundary crossing — the caller acknowledges the target URL may contain prompt injection and that the skill's defenses are best-effort. - Delegation example:
.cursor/skills/.venv/bin/python3 .cursor/skills/web-to-markdown/scripts/fetch_as_markdown.py "<url>" --wtm-accept-risk --caller mk:investigate
What ships with it: 13 files
46.8 KB alongside SKILL.md, 3 of them executable
bin/
- check-freeze.shruns354 B
- check-report-path.shruns1.2 KB
references/
- debugging-methodology.md3.6 KB
- log-analysis.md3.4 KB
- performance-diagnostics.md4.2 KB
- preamble.md2.6 KB
- rca-anti-patterns.md2.7 KB
- rca-method-selection.md2.9 KB
- reporting-standards.md3.5 KB
- root-cause-tracing.md3.8 KB
- shared-protocols.md12.4 KB
- system-investigation.md3.9 KB
scripts/
- find-polluter.shruns2.4 KB