frappe-erpnext

Guide Frappe Framework and ERPNext development with DocType customization and Python controllers.

Updated Aug 27, 2026
One-click install
npx skills add https://github.com/QuantumSolver/ai-skillset --skill frappe-erpnext
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: frappe-erpnext
Source: https://github.com/QuantumSolver/ai-skillset/tree/main/frappe-skill
Command: npx skills add https://github.com/QuantumSolver/ai-skillset --skill frappe-erpnext

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides expert-level guidance for Frappe Framework and ERPNext development, enabling developers to build, customize, and extend applications efficiently.

Core Features & Use Cases

  • DocType Customization: Building or modifying DocTypes, including fields, forms, and logic.
  • Server-Side Logic: Writing Python controllers, hooks, and handling database operations (frappe.db).
  • Client-Side Scripting: Implementing JavaScript for form interactions and UI enhancements.
  • API Integration: Utilizing and understanding the REST API for external interactions.
  • Use Case: A developer needs to add a custom field to the Sales Invoice DocType, implement validation logic before saving, and trigger a background job upon submission.

Quick Start

Use the frappe-erpnext skill to understand how to override a DocType class in Frappe.

Frequently Asked Questions about frappe-erpnext

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I override core logic in a Frappe DocType controller?

To override core logic in a Frappe DocType, write a custom Python controller and link it via hooks to extend or override standard ERPNext methods. This ensures custom validations and server-side logic execute without modifying core framework files.

How do I add custom validation logic to an ERPNext Sales Invoice?

Adding custom validation logic to an ERPNext Sales Invoice involves writing a Python controller and mapping the validation event in hooks. This intercepts the save process to execute custom field checks before database commits.

How do I enqueue background jobs in Frappe?

Enqueueing background jobs in Frappe uses the `frappe.enqueue` method within your Python controllers. This offloads long-running tasks from the user request cycle to background workers, preventing UI timeouts.

Does Frappe framework support REST API interactions for external integrations?

The Frappe framework supports REST API interactions natively, allowing external applications to perform CRUD operations on DocTypes. This enables seamless data exchange and integration with external systems using standard HTTP requests.

What is the best way to handle database operations in ERPNext Python controllers?

The best way to handle database operations in ERPNext Python controllers is using the `frappe.db` object. This wrapper provides secure methods for querying and updating records while maintaining framework validation and caching layers.

How do I implement client-side JavaScript for Frappe form interactions?

Implementing client-side JavaScript for Frappe form interactions involves attaching custom scripts to DocTypes. This handles UI events like field value changes and form validations directly in the browser before data reaches the server.