Frappe App Dev

frappe/skills/skills/frappe-app-dev

by frappe0bef982e933705c30706efc1db3bc3bc5e7aca62No licenseListed Oct 9, 2026Updated Oct 9, 2026

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".

Instructions onlySoftware Development
AI-generated overview

Guides building full-stack Frappe Framework apps, covering DocTypes, controllers, APIs, hooks, permissions, frontend and bench operations.

What it does
This skill provides instructions for building and extending Frappe Framework applications end to end. It routes the agent to reference files for new or existing apps and for topics such as DocTypes, controllers, whitelisted APIs, database access, caching, realtime, background jobs, hooks, permissions, testing, frontend and bench commands. It produces guidance and commands rather than files or scripts.
When to use it
Use it when creating or modifying a DocType, controller, lifecycle hook, whitelisted API, desk or portal page, background job, permission rule or Frappe test. It also applies to setting up a new Frappe app or bench site and to questions about frappe.db, frappe.qb or bench commands.
Requirements
No scripts are shipped; it is instructions only. It assumes a Frappe bench environment with the bench CLI and a site, and expects commands to be run against an explicit site.

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:

TopicWhen to loadFile
Site managementFinding/creating/managing sitessite-management.md
DocTypesCreating/modifying DocTypes, fields, namingdoctypes.md
ControllersDocument lifecycle, server logiccontrollers.md
Whitelisted APIsREST endpoints, @frappe.whitelist()api.md
Database & ORMfrappe.db, queries, raw SQLdatabase.md
CachingRedis, frappe.cachecaching.md
RealtimeWebSocket, publish_realtimerealtime.md
Background jobsfrappe.enqueue, scheduled jobsbackground-jobs.md
Hookshooks.py patternshooks.md
PermissionsRoles, DocType permissions, has_permissionpermissions.md
TestingWriting & running teststesting.md
Frontend & UIDesk UI, Vue SPA, portal pagesfrontend.md (router → 3 sub-files)
Bench CLIAll bench commands referencebench-operations.md

Source and attribution

Source:frappe/skillsinskills/frappe-app-devat commit0bef982

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal