Learn-skills.dev erpnext-frappe-dev
Complete Frappe Framework development reference for building ERPNext apps. Use when creating custom DocTypes, controllers, hooks, REST APIs, form scripts, background jobs, or any Frappe/ERPNext development. Contains full API documentation for Document, Database, Controllers, Hooks, REST API, Form Scripts, Testing, and common patterns.
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/6missedcalls/erpnext-skill/erpnext-frappe-dev" ~/.claude/skills/neversight-learn-skills-dev-erpnext-frappe-dev && rm -rf "$T"
manifest:
data/skills-md/6missedcalls/erpnext-skill/erpnext-frappe-dev/SKILL.mdsource content
Frappe Framework Development Reference
Complete documentation for building applications on Frappe Framework / ERPNext. This skill contains comprehensive API documentation that Claude Code needs to build any Frappe app from scratch.
When to Use This Skill
Use this skill when:
- Creating a new Frappe/ERPNext custom app
- Building DocTypes and controllers
- Writing hooks for customization
- Implementing REST APIs
- Creating form scripts (client-side JS)
- Writing background jobs
- Building integrations with external services
- Any ERPNext/Frappe development work
Quick Start
Create an App
bench new-app my_app bench --site mysite install-app my_app
Key Files
— App-level configuration and event handlershooks.py
— Python controller (server-side logic){doctype}.py
— Form script (client-side logic){doctype}.js
— DocType definition{doctype}.json
Documentation Index
| Reference | Contents |
|---|---|
| MAIN REFERENCE — Full API docs for Document, Database, Controllers, Hooks, REST API, Form Scripts, Testing |
| Document CRUD operations |
| Database queries and transactions |
| hooks.py configuration |
| REST API endpoints |
| Client-side JavaScript |
| ERPNext module documentation index |
| Accounting module reference |
| Inventory/Stock module reference |
| Manufacturing module reference |
| CRM module reference |
| HR & Payroll module reference |
| REST & Developer API reference |
Core Concepts Summary
DocType = Model
# DocType "Customer" creates: # - Database table `tabCustomer` # - Python controller customer.py # - Form script customer.js
Document = Instance
doc = frappe.get_doc("Customer", "CUST-001") doc.customer_name = "Updated Name" doc.save()
Controller = Business Logic
class Customer(Document): def validate(self): if not self.email: frappe.throw("Email required") def on_submit(self): self.create_linked_records()
Hooks = App Configuration
# hooks.py doc_events = { "Sales Order": { "on_submit": "my_app.events.on_sales_order_submit" } }
API Quick Reference
Document Operations
frappe.get_doc(doctype, name) # Get document frappe.new_doc(doctype) # Create new doc.insert() # Insert to DB doc.save() # Update in DB doc.delete() # Delete doc.db_set(field, value) # Direct DB update
Database Queries
frappe.db.get_list(doctype, filters, fields) # With permissions frappe.db.get_all(doctype, filters, fields) # All records frappe.db.get_value(doctype, name, field) # Single value frappe.db.set_value(doctype, name, field, val) # Direct update frappe.db.exists(doctype, name) # Check exists frappe.db.count(doctype, filters) # Count records
Controller Hooks
autoname → before_insert → validate → before_save → on_update → after_insert → on_submit → on_cancel
REST API
GET /api/resource/{doctype} # List GET /api/resource/{doctype}/{name} # Read POST /api/resource/{doctype} # Create PUT /api/resource/{doctype}/{name} # Update DELETE /api/resource/{doctype}/{name} # Delete POST /api/method/{dotted.path} # Custom method
Form Scripts
frappe.ui.form.on('DocType', { refresh(frm) { }, validate(frm) { }, fieldname(frm) { } // Field change });
Read Full Documentation
Start with:
reference/frappe-framework-complete.md
This file contains 20KB+ of comprehensive documentation covering all Frappe APIs with code examples.