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

- **Type:** Skill
- **Install:** `agentstack add skill-6missedcalls-erpnext-skill-erpnext-skill`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [6missedcalls](https://agentstack.voostack.com/s/6missedcalls)
- **Installs:** 0
- **Category:** [Databases](https://agentstack.voostack.com/c/databases)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [6missedcalls](https://github.com/6missedcalls)
- **Source:** https://github.com/6missedcalls/erpnext-skill

## Install

```sh
agentstack add skill-6missedcalls-erpnext-skill-erpnext-skill
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 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
```bash
bench new-app my_app
bench --site mysite install-app my_app
```

### Key Files
- `hooks.py` — App-level configuration and event handlers
- `{doctype}.py` — Python controller (server-side logic)
- `{doctype}.js` — Form script (client-side logic)
- `{doctype}.json` — DocType definition

## Documentation Index

| Reference | Contents |
|-----------|----------|
| `reference/frappe-framework-complete.md` | **MAIN REFERENCE** — Full API docs for Document, Database, Controllers, Hooks, REST API, Form Scripts, Testing |
| `reference/document-api.md` | Document CRUD operations |
| `reference/database-api.md` | Database queries and transactions |
| `reference/hooks-reference.md` | hooks.py configuration |
| `reference/rest-api.md` | REST API endpoints |
| `reference/form-scripts.md` | Client-side JavaScript |
| `reference/index.md` | ERPNext module documentation index |
| `reference/accounting/` | Accounting module reference |
| `reference/stock/` | Inventory/Stock module reference |
| `reference/manufacturing/` | Manufacturing module reference |
| `reference/crm/` | CRM module reference |
| `reference/hr-payroll/` | HR & Payroll module reference |
| `reference/api/` | REST & Developer API reference |

## Core Concepts Summary

### DocType = Model
```python
# DocType "Customer" creates:
# - Database table `tabCustomer`
# - Python controller customer.py
# - Form script customer.js
```

### Document = Instance
```python
doc = frappe.get_doc("Customer", "CUST-001")
doc.customer_name = "Updated Name"
doc.save()
```

### Controller = Business Logic
```python
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
```python
# hooks.py
doc_events = {
    "Sales Order": {
        "on_submit": "my_app.events.on_sales_order_submit"
    }
}
```

## API Quick Reference

### Document Operations
```python
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
```python
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
```javascript
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.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [6missedcalls](https://github.com/6missedcalls)
- **Source:** [6missedcalls/erpnext-skill](https://github.com/6missedcalls/erpnext-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-6missedcalls-erpnext-skill-erpnext-skill
- Seller: https://agentstack.voostack.com/s/6missedcalls
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
