frappe-agent-debugger
Use when debugging Frappe errors, using bench console for live inspection, analyzing tracebacks, or reading Frappe log files. Prevents wasted debugging time…
Use when designing multi-app Frappe architectures, deciding whether to split functionality into separate apps, or implementing cross-app communication patterns. Prevents monolithic app sprawl, circular dependencies between apps, and broken override chains. Covers multi-app
$ npx -y skills add Impertio-Studio/Frappe_Claude_Skill_Package --skill frappe-agent-architect --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/frappe-agent-architectContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when designing multi-app Frappe architectures, deciding whether to split functionality into separate apps, or implementing cross-app communication patterns. Prevents monolithic app sprawl, circular dependencies between apps, and broken override chains. Covers multi-app
name: frappe-agent-architect description: > Use when designing multi-app Frappe architectures, deciding whether to split functionality into separate apps, or implementing cross-app communication patterns. Prevents monolithic app sprawl, circular dependencies between apps, and broken override chains. Covers multi-app architecture decisions, app dependency management, cross-app hooks, override patterns, when to split vs extend, shared DocType strategies. Keywords: architecture, multi-app, app splitting, cross-app, dependencies, override, extend, monolith, modular, how to structure frappe apps, when to split apps, app design, multi-app planning.. license: MIT compatibility: "Claude Code, Claude.ai Projects, Claude API. Frappe v14-v16." metadata: author: OpenAEC-Foundation version: "2.0"
Designs Frappe/ERPNext multi-app architectures by analyzing business requirements, deciding app boundaries, and generating implementation roadmaps.
**Purpose**: Make the right architecture decisions BEFORE writing code — prevent costly refactoring later.
ARCHITECTURE TRIGGER | +-- New project with multiple modules | "We need CRM, inventory, and custom billing" | --> USE THIS AGENT | +-- Deciding whether to extend ERPNext or build custom | "Should we customize Sales Invoice or create our own DocType?" | --> USE THIS AGENT | +-- Multiple teams building on same Frappe instance | "Team A does HR, Team B does manufacturing" | --> USE THIS AGENT | +-- Existing monolith needs splitting | "Our single custom app has 50 DocTypes" | --> USE THIS AGENT | +-- Cross-app communication needed | "App A needs to react when App B creates a document" | --> USE THIS AGENT
STEP 1: ANALYZE REQUIREMENTS Business needs → DocTypes, workflows, integrations STEP 2: DECIDE APP BOUNDARIES Single app vs multiple apps decision framework STEP 3: DESIGN CROSS-APP DEPENDENCIES required_apps, shared DocTypes, hook contracts STEP 4: DESIGN DATA MODEL DocTypes, relationships, naming conventions STEP 5: GENERATE IMPLEMENTATION ROADMAP Build order, milestones, team assignments
See [references/workflow.md](references/workflow.md) for detailed steps.
Map each business requirement to Frappe mechanisms:
| Requirement Type | Frappe Mechanism | Example | |-----------------|-----------------|---------| | Data storage | DocType | "Track customer contracts" | | Business rules | Controller/Server Script | "Auto-calculate totals" | | Approval flow | Workflow | "Manager must approve orders >10k" | | Scheduled tasks | Scheduler/hooks.py | "Daily report email" | | External sync | Integration/API | "Sync with Shopify" | | Custom UI | Client Script/Page | "Dashboard for warehouse" | | Reports | Script Report/Query Report | "Monthly sales by region" | | Permissions | Role Permission | "Sales team sees own data only" | | Print output | Print Format (Jinja) | "Custom invoice layout" | | Portal access | Website/Portal | "Customer can view orders" |
HOW MANY DOCTYPES? | +-- < 15 total | +-- Single domain? --> SINGLE APP | +-- Multiple domains? --> Consider splitting | +-- 15-30 total | +-- Tight coupling between all? --> SINGLE APP (with modules) | +-- Clear domain boundaries? --> 2-3 APPS | +-- > 30 total | --> ALWAYS SPLIT into multiple apps | Group by domain/team/release cycle
See [references/decision-tree.md](references/decision-tree.md) for the complete decision framework.
ALWAYS declare dependencies explicitly in `hooks.py`:
# myapp/hooks.py required_apps = ["frappe", "erpnext"] # NEVER omit frappe
frappe (base framework)
└── erpnext (ERP modules)
├── custom_manufacturing (extends Manufacturing)
└── custom_crm (extends CRM)
└── crm_analytics (extends custom_crm)
RULE: Dependencies flow DOWN only. Never up, never sideways.| Pattern | Mechanism | Use When | |---------|-----------|----------| | **Hook Events** | `doc_events` in hooks.py | App B reacts to App A's documents | | **Shared DocType** | Link fields to other app's DocTypes | Apps share reference data | | **API Call** | `frappe.call()` to whitelisted method | Loose coupling between apps | | **Custom Fields** | `fixtures` with Custom Field | Extend another app's DocType without modifying it | | **Override** | `extend_doctype_class` (v16) or `doc_events` | Modify another app's behavior | | **Signals** | `frappe.publish_realtime()` | Real-time notifications between apps |
| Relationship | Implementation | Example | |-------------|---------------|---------| | One-to-Many | Child Table DocType | Invoice → Invoice Items | | Many-to-One | Link field | Invoice → Customer | | Many-to-Many | Link DocType (intermediary) | Student → Course (via Enrollment) | | One-to-One | Link field + unique validation | Empl
60 deterministic Claude AI skills for Frappe Framework & ERPNext v14-v16 development and operations
Repo: Impertio-Studio/Frappe_Claude_Skill_Package
Use when debugging Frappe errors, using bench console for live inspection, analyzing tracebacks, or reading Frappe log files. Prevents wasted debugging time…
Use when receiving vague or unclear ERPNext/Frappe development requests that need interpretation. Transforms requirements like 'make invoice auto-calculate' or…
Use when migrating a Frappe app between major versions, detecting breaking API changes, or resolving post-migration errors. Prevents failed migrations from…
Use when reviewing or validating Frappe/ERPNext code against best practices and common pitfalls. Checks generated code before deployment, validates against all…
Use when building ERPNext/Frappe API integrations (v14/v15/v16) including REST API, RPC API, authentication, webhooks, and rate limiting. Covers external API…
Use when implementing Redis caching, cache invalidation, or distributed locking in Frappe. Prevents stale cache bugs, race conditions from missing locks, and…