Frappe Router
Route to the appropriate Frappe skill based on your task.
When to use
- First step when starting any Frappe-related work
- To determine which specialized skill applies to your task
Procedure
0) Identify task type
| Task |
Skill |
| Understand project structure, versions, apps |
→ project-triage |
| Scaffold new app, hooks, architecture, background jobs |
→ app-development |
| Create/modify DocTypes, fields, controllers |
→ doctype-development |
| Build REST/RPC APIs, webhooks, integrations |
→ api-development |
| Customize Desk UI, form scripts, list views, JS API |
→ desk-customization |
| Build Vue 3 frontends with Frappe UI, portals |
→ frontend-development |
| UI/UX patterns from CRM/Helpdesk/HRMS |
→ ui-patterns |
| Create print formats, email templates, Jinja, PDFs |
→ printing-templates |
| Build reports (Builder, Query, Script) |
→ reports |
| Create public web forms for data collection |
→ web-forms |
| Write or run tests |
→ testing |
| Set up dev environment with Docker/FM |
→ frappe-manager |
| Build CRM/Helpdesk/enterprise systems |
→ enterprise-patterns |
1) Run triage first (recommended)
Before deep work, run project-triage to understand:
- Project type (bench/FM/standalone)
- Frappe version
- Installed apps
- Available tooling
2) Combine skills as needed
Complex tasks may require multiple skills:
- New app =
app-development + doctype-development + api-development + testing
- Feature with UI =
doctype-development + desk-customization + api-development
- Custom frontend =
frontend-development + api-development
- Document workflow =
doctype-development + printing-templates + reports
- Enterprise app =
enterprise-patterns + doctype-development
Quick decision tree
Is this about understanding the project?
→ project-triage
Is this about creating a new app or app architecture?
→ app-development
Is this about data models or DocTypes?
→ doctype-development
Is this about APIs or external access?
→ api-development
Is this about Desk UI, form scripts, or client-side JS?
→ desk-customization
Is this about a Vue 3 frontend or portal?
→ frontend-development
Is this about UI/UX patterns or app design?
→ ui-patterns
Is this about print formats, PDFs, or Jinja templates?
→ printing-templates
Is this about reports or data analysis views?
→ reports
Is this about public web forms?
→ web-forms
Is this about testing?
→ testing
Is this about local dev environment?
→ frappe-manager
Is this a complex enterprise system?
→ enterprise-patterns
Guardrails
- Always run triage first before making code changes to unknown projects
- Check Frappe version before recommending features (API availability varies significantly between v13, v14, v15, v16)
- Don't assume ERPNext - many projects use Frappe Framework without ERPNext
- Verify site context - commands like
bench migrate affect specific sites
Common Mistakes
| Mistake |
Why It Fails |
Fix |
| Skipping project triage |
Applying wrong patterns for version |
Always run triage first |
| Using ERPNext-specific code in Frappe-only projects |
Module not found errors |
Check installed apps first |
| Wrong skill for task |
Incomplete implementation |
Match task type to skill carefully |
| Ignoring version differences |
Deprecated/missing APIs |
Check version compatibility in skill references |
| Working on wrong site |
Changes don't appear |
Always specify --site flag |
| Using vanilla JS/jQuery for frontends |
Ecosystem mismatch |
Use Frappe UI (Vue 3) via frontend-development |
| Custom app shell for CRUD apps |
Inconsistent UX |
Follow CRM/Helpdesk patterns via enterprise-patterns |
1---2name: router3description: Route to the appropriate Frappe skill based on task type. Use as the entry point when working on Frappe projects to determine which specialized skill to apply.4---56# Frappe Router78Route to the appropriate Frappe skill based on your task.910## When to use1112- First step when starting any Frappe-related work13- To determine which specialized skill applies to your task1415## Procedure1617### 0) Identify task type1819| Task | Skill |20|------|-------|21| Understand project structure, versions, apps | → `project-triage` |22| Scaffold new app, hooks, architecture, background jobs | → `app-development` |23| Create/modify DocTypes, fields, controllers | → `doctype-development` |24| Build REST/RPC APIs, webhooks, integrations | → `api-development` |25| Customize Desk UI, form scripts, list views, JS API | → `desk-customization` |26| Build Vue 3 frontends with Frappe UI, portals | → `frontend-development` |27| UI/UX patterns from CRM/Helpdesk/HRMS | → `ui-patterns` |28| Create print formats, email templates, Jinja, PDFs | → `printing-templates` |29| Build reports (Builder, Query, Script) | → `reports` |30| Create public web forms for data collection | → `web-forms` |31| Write or run tests | → `testing` |32| Set up dev environment with Docker/FM | → `frappe-manager` |33| Build CRM/Helpdesk/enterprise systems | → `enterprise-patterns` |3435### 1) Run triage first (recommended)3637Before deep work, run `project-triage` to understand:38- Project type (bench/FM/standalone)39- Frappe version40- Installed apps41- Available tooling4243### 2) Combine skills as needed4445Complex tasks may require multiple skills:46- New app = `app-development` + `doctype-development` + `api-development` + `testing`47- Feature with UI = `doctype-development` + `desk-customization` + `api-development`48- Custom frontend = `frontend-development` + `api-development`49- Document workflow = `doctype-development` + `printing-templates` + `reports`50- Enterprise app = `enterprise-patterns` + `doctype-development`5152## Quick decision tree5354```55Is this about understanding the project?56 → project-triage5758Is this about creating a new app or app architecture?59 → app-development6061Is this about data models or DocTypes?62 → doctype-development6364Is this about APIs or external access?65 → api-development6667Is this about Desk UI, form scripts, or client-side JS?68 → desk-customization6970Is this about a Vue 3 frontend or portal?71 → frontend-development7273Is this about UI/UX patterns or app design?74 → ui-patterns7576Is this about print formats, PDFs, or Jinja templates?77 → printing-templates7879Is this about reports or data analysis views?80 → reports8182Is this about public web forms?83 → web-forms8485Is this about testing?86 → testing8788Is this about local dev environment?89 → frappe-manager9091Is this a complex enterprise system?92 → enterprise-patterns93```9495## Guardrails9697- **Always run triage first** before making code changes to unknown projects98- **Check Frappe version** before recommending features (API availability varies significantly between v13, v14, v15, v16)99- **Don't assume ERPNext** - many projects use Frappe Framework without ERPNext100- **Verify site context** - commands like `bench migrate` affect specific sites101102## Common Mistakes103104| Mistake | Why It Fails | Fix |105|---------|--------------|-----|106| Skipping project triage | Applying wrong patterns for version | Always run triage first |107| Using ERPNext-specific code in Frappe-only projects | Module not found errors | Check installed apps first |108| Wrong skill for task | Incomplete implementation | Match task type to skill carefully |109| Ignoring version differences | Deprecated/missing APIs | Check version compatibility in skill references |110| Working on wrong site | Changes don't appear | Always specify `--site` flag |111| Using vanilla JS/jQuery for frontends | Ecosystem mismatch | Use Frappe UI (Vue 3) via `frontend-development` |112| Custom app shell for CRUD apps | Inconsistent UX | Follow CRM/Helpdesk patterns via `enterprise-patterns` |