Skip to content

frappe-app-dev

Builds full-stack Frappe Framework applications end-to-end. Use this skill any time the user mentions: creating or modifying a DocType, writing a controller or lifecycle hook, adding a whitelisted API, setting up a new Frappe app or bench site, building a desk form or list view, creating portal pages, writing background jobs or scheduled tasks, managing permissions or roles, writing Frappe tests, or working with frappe.db / frappe.qb. Also applies when the user says things like "how do I hook into save", "add a field to a DocType", "create a REST endpoint in Frappe", "run bench migrate", or "install an app on a site" — even if they don't explicitly say "Frappe".

1,111
installs
0 up / 0 down, score 0.00
votes
154
repo stars
Updated
less than a month ago
In the catalog since
14 Oct 2026
From
frappe/skills
Get it through your agent npx skills add frappe/skills@frappe-app-dev

Skill instructions

Rendered from the published SKILL.md, 44 lines.

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/ Procfile yourself.
  • Do not create DocType folders with mkdir. Frappe creates them via bench migrate.
  • Run bench start in 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 bare bench 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