Specification
- Skill ID
- frappe/skills/frappe-app-dev
- Publisher
- frappe
- Repository
- skills
- Installs
- 0
- Files
- 19
- Synced
- Sep 23, 2026
How to use it
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
frappe/skills/frappe-app-devInstalls these files- SKILL.md
- references/api.md
- references/background-jobs.md
- references/bench-operations.md
- references/caching.md
- references/controllers.md
- references/database.md
- references/doctypes.md
- references/existing-app.md
- references/frontend-desk.md
- references/frontend-portal.md
- references/frontend-vue.md
- references/frontend.md
- references/hooks.md
- references/new-app.md
- references/permissions.md
- references/realtime.md
- references/site-management.md
- references/testing.md
What this skill tells the agent
Frappe Full-Stack App Builder
Global Rules
- Use bare
bench. Not./env/bin/bench. Not a full path. - Do not run
which bench,bench --version,bench --help, or check frappe version. No discovery commands. - Do not delegate bench detection to a subagent. Run
ls apps/ sites/ Procfileyourself. - Do not create DocType folders with
mkdir. Frappe creates them viabench migrate. - Run
bench startin a background process only. - Before running
bench start, check if it's already running in an existing terminal. Do not start a second instance. - Always pass
--site <site>explicitly to bench commands. Never run barebench migrate.
Flow Selection
Determine which flow applies, then read ONLY the relevant file:
Creating a brand new app
Read new-app.md — covers bench setup, app scaffolding, site creation, and installation.
Working on an existing app
Read existing-app.md — covers finding the bench, locating the app, confirming site, and extending features.
Feature References
Load ONLY the references needed for the current task:
| Topic | When to load | File |
|---|---|---|
| Site management | Finding/creating/managing sites | site-management.md |
| DocTypes | Creating/modifying DocTypes, fields, naming | doctypes.md |
| Controllers | Document lifecycle, server logic | controllers.md |
| Whitelisted APIs | REST endpoints, @frappe.whitelist() | api.md |
| Database & ORM | frappe.db, queries, raw SQL | database.md |
| Caching | Redis, frappe.cache | caching.md |
| Realtime | WebSocket, publish_realtime | realtime.md |
| Background jobs | frappe.enqueue, scheduled jobs | background-jobs.md |
| Hooks | hooks.py patterns | hooks.md |
| Permissions | Roles, DocType permissions, has_permission | permissions.md |
| Testing | Writing & running tests | testing.md |
| Frontend & UI | Desk UI, Vue SPA, portal pages | frontend.md (router → 3 sub-files) |
| Bench CLI | All bench commands reference | bench-operations.md |
More from frappe
Use this skill in a project
Open any RiverX project, search the Skills panel for frappe/skills/frappe-app-dev, and install it in one click.
