Best for
- Use when "debug this error", "investigate this bug", or behavior is unexpected.
kensaurus/cursor-kenji/skills/debug-error/SKILL.md
Diagnose one error/bug with hypotheses and runtime evidence before fixing. Use when "debug this error", "investigate this bug", or behavior is unexpected. FE↔BE contract mismatch → debug-fe-be-integration. Sentry backlog/monitoring → debug-sentry-monitor. Bug-to-PR lifecycle → workflow-fix-and-ship.
Decision brief
Degree of freedom: MIXED. Root-cause judgment [HIGH freedom]; the red feedback loop and verify-green re-run [LOW freedom — run exactly].
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/kensaurus/cursor-kenji --skill "skills/debug-error"Inspect the Agent Skill "debug-error" from https://github.com/kensaurus/cursor-kenji/blob/28a0bd8403c950f58ed063d47a858ee3493b0038/skills/debug-error/SKILL.md at commit 28a0bd8403c950f58ed063d47a858ee3493b0038. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Observe — exact symptom, stack, environment, first-seen 2. Interpret — crash site vs producer; FE / BE / integration / data 3. Classify — null-access / contract / env / race / unknown 4. Severity — prod-wide auth break outranks a single-user edge
Before diving into debug, state:
Review the “Debug Process” section in the pinned source before continuing.
This is the skill — everything after is mechanical. Before reading code to build a theory, construct one command that goes red on this bug and will go green when it's fixed (adapted from mattpocock/skills, MIT). In rough order of preference: a failing test at the nearest seam →…
For data-related bugs, trace the full pipeline:
Permission review
The documentation asks the agent to run terminal commands or scripts.
npm testThe documentation asks the agent to run terminal commands or scripts.
cargo testEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 96/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 9 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Degree of freedom: MIXED. Root-cause judgment [HIGH freedom]; the red
feedback loop and verify-green re-run [LOW freedom — run exactly].
Systematic approach to debugging errors and unexpected behavior. Works with any project.
Observe:
TypeError: Cannot read property 'email' of undefinedon/accountafter signup. Interpret: crash is in the profile card; API returnsnullfor incomplete onboarding. Classify: data bug — producer returns null, consumer assumes an object. Fix: handle the onboarding-null at the producer contract + UI empty state; do not?.the crash site only.
?. / swallowed catch as the sole fixdebug-fe-be-integration; Sentry backlog → debug-sentry-monitorBEFORE debugging, you MUST:
README.md (project overview)
src/[domain]/@_[domain]-README.md (domain-specific behavior)
docs/ (system documentation)
If the error is from production and Sentry is configured, fetch the full context:
sentry:search_issues
{
"organizationSlug": "<ORG_SLUG>",
"query": "<error message or description>",
"projectSlugOrId": "<PROJECT_SLUG>",
"regionUrl": "<REGION_URL>",
"limit": 5
}
Then get details for the matching issue:
sentry:get_sentry_resource
{
"organizationSlug": "<ORG_SLUG>",
"resourceType": "issue",
"resourceId": "<ISSUE_ID>"
}
Extract: stacktrace, breadcrumbs, tags (browser, OS, URL, release), event frequency.
If data is involved, verify expectations against reality using Supabase MCP or direct queries.
Before diving into debug, state:
"Pre-debug check:
- README/docs read: [list]
- Sentry context: [YES with details / NO — not production / not configured]
- Database state verified: [YES/NO — findings]
- Backend API checked: [YES/NO — status]
- Error scope identified: [FE only / BE only / Integration / Data]"
1. Reproduce → 2. Isolate → 3. Research → 4. Identify → 5. Fix → 6. Verify → 7. Prevent
This is the skill — everything after is mechanical. Before reading code to build a theory, construct one command that goes red on this bug and will go green when it's fixed (adapted from mattpocock/skills, MIT). In rough order of preference: a failing test at the nearest seam → a curl/HTTP script against the dev server → a CLI invocation with a fixture input → a headless browser script → replaying a captured trace/payload through the code path in isolation.
The loop is done when it is:
If you catch yourself forming a hypothesis before this command exists, stop — that is the exact failure this phase prevents. If you genuinely cannot build a loop, say so explicitly, list what you tried, and ask for a captured artifact (HAR, log dump, recording) instead of proceeding blind.
Error Report:
- What happened: [description]
- Expected behavior: [what should happen]
- Steps to reproduce:
1. [step]
2. [step]
- Environment: [browser/OS/Node version]
- Error message: [exact message]
- Stack trace: [if available]
- First seen: [when — correlate with deploys]
git log for recent changes)Works in: Fails in:
├─ Production? ├─ Production?
├─ Staging? ├─ Staging?
├─ Local? ├─ Local?
├─ All browsers? ├─ Specific browser?
├─ All users? ├─ Specific user?
└─ All data? └─ Specific data?
For data-related bugs, trace the full pipeline:
User Action → Frontend Handler → API Call → Backend Controller → Database → Response → State Update → Render
Identify where the data goes wrong by checking each boundary.
Once the feedback loop is red, shrink the repro to the smallest scenario that still goes red: cut inputs, callers, config, and data one at a time, re-running the loop after each cut. Done when every remaining element is load-bearing — removing any one makes the loop go green. A minimal repro shrinks the hypothesis space and becomes the regression test in Phase 6.
For non-trivial errors, research the correct fix before implementing:
firecrawl:firecrawl_search
{
"query": "<framework> <exact error message> fix best practice",
"limit": 5,
"sources": [{ "type": "web" }]
}
Then scrape the most relevant result:
firecrawl:firecrawl_scrape
{
"url": "<best-result-url>",
"formats": ["markdown"],
"onlyMainContent": true
}
Also check official docs via Context7 if the error relates to a library:
context7:resolve-library-id
{
"libraryName": "<library>",
"query": "<error description>"
}
Trust hierarchy: Official docs > maintainer posts > engineering blogs > Stack Overflow (current year, high votes).
| Error | Likely Cause | First Check |
|---|---|---|
TypeError: Cannot read property 'x' of undefined | Null/undefined access | Where does the value come from? Fix the producer. |
ReferenceError: x is not defined | Variable not declared | Check imports, scope, circular dependencies |
SyntaxError | Invalid code | Check syntax, missing brackets, JSON parsing |
Network Error | API/connectivity | Check endpoint, CORS, auth, network tab |
CORS Error | Cross-origin blocked | Check server CORS config, proxy setup |
401 Unauthorized | Auth issue | Check token expiry, refresh logic, cookie settings |
404 Not Found | Wrong URL/missing resource | Check route definition, dynamic params, API path |
500 Internal Server Error | Server-side bug | Check server logs, not frontend code |
Unhandled Promise Rejection | Missing await or catch | Find the unhandled async chain |
Hydration mismatch | Server/client render differs | Check for browser-only APIs in SSR, dynamic content |
Before writing any fix, state:
Do NOT apply these as the sole fix:
?. to suppress a TypeError → fix why the value is null?? [] fallback → handle loading/error states explicitlyif guards at the consumer → fix the producer# Run tests
npm test
# Or framework-specific
pytest
cargo test
go test ./...
If the bug could recur in a different form, add monitoring:
If the bug was caused by a non-obvious interaction, add a comment explaining the constraint:
// Profile can be null for users who haven't completed onboarding.
// The API returns null (not 404) in this case. See: ISSUE-123.
## Bug Investigation: [Title]
**Pre-Debug:**
- [ ] Docs/README read
- [ ] Sentry context fetched (if applicable)
- [ ] Database state checked (if data-related)
- [ ] Error scope identified
**Investigation:**
- [ ] Can reproduce locally (or have Sentry reproduction)
- [ ] Isolated to specific component/function/layer
- [ ] Research completed (Firecrawl/Context7)
- [ ] Root cause identified and stated
**Fix:**
- [ ] Fix addresses root cause (not symptoms)
- [ ] No anti-patterns used as sole fix
- [ ] Side effects checked (other callers)
- [ ] Tests pass
**Prevention:**
- [ ] Monitoring added (if applicable)
- [ ] Documentation updated (if non-obvious)
# Check recent changes to a file
git log --oneline -20 -- path/to/file.ts
# Find when a bug was introduced
git bisect start
git bisect bad HEAD
git bisect good <known-good-commit>
# Check what changed between two commits
git diff <commit1>..<commit2> -- path/to/file.ts
# Search for all usages of a function
rg "functionName" --type ts
Frequently asked questions
Degree of freedom: MIXED. Root-cause judgment [HIGH freedom]; the red feedback loop and verify-green re-run [LOW freedom — run exactly].
The source record exposes this install command: npx skills add https://github.com/kensaurus/cursor-kenji --skill "skills/debug-error". Inspect the command and pinned source before running it.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
mgiovani/cc-arsenal
Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r
dotnet/skills
Guides creation and modification of ASP.NET Core Web API endpoints with correct HTTP semantics, OpenAPI metadata, and error handling. USE FOR: adding new API endpoints (controllers or minimal APIs), wiring up OpenAPI/Swagger, creating .http test files, setting up global error handling middleware. DO NOT USE FOR: general C# coding style, EF Core data access or query optimization (use optimizing-ef-core-queries), frontend/Blazor work, gRPC services, or SignalR hubs.
almanak-co/sdk
Build, test, and deploy DeFi trading strategies using the Almanak SDK. ALWAYS use this skill when the user mentions almanak, DeFi strategy, trading strategy, yield farming, liquidity provision, token swap, borrowing, lending, perpetuals, staking, vault deposit, bridging tokens, backtesting, paper trading, or on-chain execution. Use for writing strategy.py files, composing intents (Swap, LP, Borrow, Supply, Perp, Bridge, Stake, Vault, Prediction), working with config.json strategy parameters, run
Postpartum-genushyacinthus29/dotnet-skills
Build, review, or migrate .NET MAUI applications across Android, iOS, macOS, and Windows with correct cross-platform UI, platform integration, and native packaging assumptions.