frappe-router
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.
Best use case
frappe-router is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
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.
Teams using frappe-router should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/frappe-router/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How frappe-router Compares
| Feature / Agent | frappe-router | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
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.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 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 | → `frappe-project-triage` | | Scaffold new app, hooks, architecture, background jobs | → `frappe-app-development` | | Create/modify DocTypes, fields, controllers | → `frappe-doctype-development` | | Build REST/RPC APIs, webhooks, integrations | → `frappe-api-development` | | Customize Desk UI, form scripts, list views, JS API | → `frappe-desk-customization` | | Build Vue 3 frontends with Frappe UI, portals | → `frappe-frontend-development` | | UI/UX patterns from CRM/Helpdesk/HRMS | → `frappe-ui-patterns` | | Create print formats, email templates, Jinja, PDFs | → `frappe-printing-templates` | | Build reports (Builder, Query, Script) | → `frappe-reports` | | Create public web forms for data collection | → `frappe-web-forms` | | Write or run tests | → `frappe-testing` | | Set up dev environment with Docker/FM | → `frappe-manager` | | Build CRM/Helpdesk/enterprise systems | → `frappe-enterprise-patterns` | ### 1) Run triage first (recommended) Before deep work, run `frappe-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 = `frappe-app-development` + `frappe-doctype-development` + `frappe-api-development` + `frappe-testing` - Feature with UI = `frappe-doctype-development` + `frappe-desk-customization` + `frappe-api-development` - Custom frontend = `frappe-frontend-development` + `frappe-api-development` - Document workflow = `frappe-doctype-development` + `frappe-printing-templates` + `frappe-reports` - Enterprise app = `frappe-enterprise-patterns` + `frappe-doctype-development` ## Quick decision tree ``` Is this about understanding the project? → frappe-project-triage Is this about creating a new app or app architecture? → frappe-app-development Is this about data models or DocTypes? → frappe-doctype-development Is this about APIs or external access? → frappe-api-development Is this about Desk UI, form scripts, or client-side JS? → frappe-desk-customization Is this about a Vue 3 frontend or portal? → frappe-frontend-development Is this about UI/UX patterns or app design? → frappe-ui-patterns Is this about print formats, PDFs, or Jinja templates? → frappe-printing-templates Is this about reports or data analysis views? → frappe-reports Is this about public web forms? → frappe-web-forms Is this about testing? → frappe-testing Is this about local dev environment? → frappe-manager Is this a complex enterprise system? → frappe-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 `frappe-frontend-development` | | Custom app shell for CRUD apps | Inconsistent UX | Follow CRM/Helpdesk patterns via `frappe-enterprise-patterns` |
Related Skills
frappe-web-forms
Build public-facing web forms for data collection without Desk access. Use when creating customer submission forms, feedback forms, or self-service portals with Frappe Web Forms.
frappe-ui-patterns
UI/UX patterns and guidelines derived from official Frappe apps (CRM, Helpdesk, HRMS). Use when designing interfaces for custom Frappe applications to ensure consistency with the ecosystem.
frappe-testing
Write and run tests for Frappe apps including unit tests, integration tests, and UI tests. Use when adding test coverage, debugging test failures, or setting up CI for Frappe projects.
frappe-reports
Create reports in Frappe including Report Builder, Query Reports (SQL), and Script Reports (Python + JS). Use when building data analysis views, dashboards, or custom reporting features.
frappe-project-triage
Detect Frappe project type, installed apps, version, and tooling. Use as the first step when working on any Frappe/ERPNext codebase to understand the project structure before making changes.
frappe-printing-templates
Build print formats, email templates, and web page templates using Jinja. Generate PDFs and configure letter heads. Use when creating custom print layouts, email templates, or any Jinja-based rendering in Frappe.
frappe-manager
Use Frappe Manager (FM) for Docker-based development and testing environments. Use when setting up local dev, running isolated tests, or managing agent-driven Frappe development workflows.
frappe-frontend-development
Build modern Vue 3 frontend apps using Frappe UI with components, data fetching, and portal pages. Use when creating custom frontends, SPAs, or portal interfaces for Frappe applications.
frappe-enterprise-patterns
Production-grade architectural patterns for building enterprise Frappe apps like CRM, Helpdesk, and HRMS. Use when designing complex multi-entity systems with workflows, SLAs, and integrations.
frappe-doctype-development
Create and modify Frappe DocTypes including schema design, controllers, child tables, and customization. Use when building data models, adding fields, or implementing document lifecycle logic.
frappe-desk-customization
Customize Frappe Desk UI with form scripts, list view scripts, report scripts, dialogs, and client-side JavaScript APIs. Use when building interactive Desk experiences, adding custom buttons, or scripting form behavior.
frappe-app-development
Scaffold and architect custom Frappe apps including app structure, hooks, background jobs, service layers, and production hardening. Use when creating new apps, setting up app architecture, or implementing cross-cutting patterns like caching, logging, and error handling.