a11y
Accessibility audit + auto-fix (WCAG 2.2 A/AA). Scans built/static HTML for screen-reader, keyboard, and structure failures, fixes the deterministic ones, and…
Root cause investigation — structured debugging with module freeze. No fixes without investigation. Use when encountering any bug, error, or unexpected behavior.
$ npx -y skills add Houseofmvps/ultraship --skill investigate --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/investigateContext preview
The summary Claude sees to decide when to auto-load this skill.
Root cause investigation — structured debugging with module freeze. No fixes without investigation. Use when encountering any bug, error, or unexpected behavior.
name: investigate description: Root cause investigation — structured debugging with module freeze. No fixes without investigation. Use when encountering any bug, error, or unexpected behavior. argument-hint: "<error-or-symptom-description>" disallowed-tools: Edit, Write, NotebookEdit
Investigation is the discipline of understanding a problem before fixing it. This skill enforces a strict protocol: **no fixes until the root cause is found.**
> **Enforced:** while this skill is active, `Edit`, `Write`, and `NotebookEdit` are removed via `disallowed-tools`. The no-fixes rule is a hard constraint here, not a request. Once you have found and stated the root cause, conclude the investigation — the fix happens as a separate step outside this skill.
**Announce at start:** "I'm using the investigate skill — no fixes until we find the root cause."
┌──────────────────────────────────────────────┐ │ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION │ │ │ │ If you haven't found the root cause, │ │ you cannot propose a fix. │ └──────────────────────────────────────────────┘
This is not a suggestion. This is a hard constraint. Guessing causes more bugs than it fixes.
Before investigating, lock the investigation scope to prevent it from sprawling:
1. **State the symptom** — What exactly is broken? Be precise. 2. **Identify the module** — Which part of the codebase is affected? 3. **Freeze to module** — Investigation stays within this module until evidence points elsewhere.
Example:
Symptom: API returns 500 on POST /api/webhooks Module: packages/api/src/routes/webhooks.ts Freeze: Investigation limited to webhook handler + its direct dependencies
**Why freeze?** Without scope, investigation becomes exploration. Exploration finds interesting things but doesn't fix bugs.
Gather evidence BEFORE forming any hypothesis:
1. **Read the error** — Full stack trace, error message, error code. Not a glance — read every line.
2. **Reproduce** — Can you trigger it reliably? What are the exact steps?
3. **Check the timeline** — What changed recently?
git log --oneline -20 git diff HEAD~3
4. **Trace the data flow** — Follow the data from input to error:
5. **Check boundaries** — For multi-component systems, verify data at each boundary:
Form ONE hypothesis based on evidence:
"I think [X] is the root cause because [evidence Y shows Z]"
Requirements:
Test the hypothesis with the SMALLEST possible change:
1. Make ONE change 2. Run the reproduction steps 3. Did it fix the issue?
**Critical:** If 3 hypotheses fail, STOP. The problem is likely architectural, not a simple bug. Discuss with the user before attempting fix #4.
Now — and only now — implement the proper fix:
1. **Write a failing test** that reproduces the exact bug 2. **Implement the fix** — address the root cause, not the symptom 3. **Verify the test passes** 4. **Run the full test suite** — ensure no regressions 5. **Save the learning** — record what you found for future reference:
node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs save --title "Root cause of webhook 500" --body "The webhook handler wasn't awaiting the database write, causing a race condition with the response" --tags "debugging,webhooks,async"If you catch yourself doing any of these, STOP and return to Phase 2:
For critical systems, activate `/guard` before investigating to prevent accidental changes:
/guard → /investigate → fix → /canary
Guard ensures no destructive commands run during investigation, and canary verifies the fix in production.
This skill shares principles with `ultraship:systematic-debugging` but adds:
"ULTRASHIP" Claude Code plugin — 39 skills, 33 tools, 11 agents for ship-ready workflows: planning, review, pentesting, safety guardrails, canary monitoring, SEO/AI-readiness check, penetration testing, code review, competitive analysis, incident response. 1 dependency. 180 tests. MIT.
Repo: Houseofmvps/ultraship
Accessibility audit + auto-fix (WCAG 2.2 A/AA). Scans built/static HTML for screen-reader, keyboard, and structure failures, fixes the deterministic ones, and…
Living Architecture Map — auto-generate Mermaid diagrams of your codebase. Use when user wants to visualize architecture, understand code structure, generate…
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent,…
Post-deploy canary monitoring — checks site health, detects regressions, monitors for errors after deployment. Use after deploying to verify production is…
Learn From the Best — analyze patterns from any codebase and apply them to yours. Use when user wants to adopt best practices from another repo, compare code…
Code review with principal-engineer-level depth. Reviews for correctness, performance, security, maintainability, and architecture. Use when completing tasks,…