frappe-debug
Investigate a Frappe/ERPNext error or unexpected behavior. Use when the user reports an exception, a 500 response, a permission error, a slow query, a stuck background job, or an unexpected DocType state.
What this skill does
# Frappe Debug
Use this skill when something is broken in a Frappe or ERPNext site and the next step is diagnosis, not implementation. Invoking it also starts the `bench-error-log` background monitor (defined in this plugin's `monitors/monitors.json`), so new tracebacks from `web.error.log` and `worker.error.log` arrive as notifications during the session.
## Standard checks
Work through these in order; stop as soon as the symptom is reproduced and the root cause is clear.
1. **Frame the failure**
- Exact error message or HTTP status, with the user's reproduction steps.
- Which DocType, API endpoint, scheduled job, or page is involved.
- First-seen-on: was this working previously? what changed (recent migrate, app install, hooks.py edit)?
2. **Read the live logs**
The monitor is already tailing `web.error.log` and `worker.error.log` for the configured site. Cross-reference the timestamp of the user's reproduction with the most recent traceback. If the monitor has not surfaced anything, also check:
- `${user_config.bench_path}/sites/${user_config.default_site}/logs/scheduler.log`
- `${user_config.bench_path}/sites/${user_config.default_site}/logs/web.log`
- `${user_config.bench_path}/logs/bench.log`
3. **Reproduce in `bench console`**
```bash
bench --site ${user_config.default_site} console
```
Import the relevant DocType controller, instantiate or fetch a document, and call the failing method directly. This narrows the failure surface from "request pipeline" to "Python logic".
4. **Check permissions**
If the error is a `PermissionError` or unexpected empty result:
- `frappe.permissions.has_permission(doctype, ptype, doc=name, user=user)`
- Inspect the DocType's permission rules, role profile, and User Permissions on the affected user.
5. **Inspect database state**
```bash
bench --site ${user_config.default_site} mariadb
```
Confirm the row exists, owner is correct, no orphaned child rows, no stuck workflow_state. Compare `tabSingles` for Single doctypes.
6. **Check recent migrations**
```bash
bench --site ${user_config.default_site} list-apps
bench --site ${user_config.default_site} migrate --dry-run
```
A pending or partial migration is a frequent cause of "field doesn't exist" / "table doesn't exist".
## Hand off to the debugger agent
Once the failure is framed and basic logs are in hand, route the deep investigation to the specialist:
> Use the `frappe-fullstack:frappe-debugger` agent with all of the above as context. Pass it the error message, the reproduction steps, the relevant traceback, and any log lines the monitor has surfaced.
Do not attempt fixes from this skill. Diagnose first; the appropriate agent (`frappe-debugger` for analysis, `frappe-backend` / `erpnext-customizer` / `frappe-frontend` for the actual fix) handles the change.
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.