Claude-skill-registry frappe-doctype-builder
Build Frappe DocTypes with fields, permissions, and naming configurations. Use this skill when creating or modifying DocType structures.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/frappe-doctype-builder" ~/.claude/skills/majiayu000-claude-skill-registry-frappe-doctype-builder && rm -rf "$T"
skills/data/frappe-doctype-builder/SKILL.mdFrappe DocType Builder Skill
Build complete DocType definitions with proper field types, permissions, and configurations.
When to Use This Skill
Claude should invoke this skill when:
- User wants to create a new DocType
- User needs to add fields to an existing DocType
- User asks about DocType structure or design
- User wants to modify DocType properties
- User needs help with DocType JSON schema
Capabilities
1. DocType JSON Generation
Create complete DocType JSON files with:
- Metadata (name, module, naming, permissions)
- Fields with proper types and options
- Permissions for different roles
- Form layout and sections
- Naming series configuration
2. Field Type Expertise
Support all Frappe field types:
- Data: Short text fields
- Text: Long text with editor options
- Int: Integer numbers
- Float: Decimal numbers
- Currency: Money values
- Date: Date picker
- Datetime: Date and time
- Time: Time picker
- Link: Reference to another DocType
- Select: Dropdown with options
- Check: Boolean checkbox
- Table: Child table
- Attach: File upload
- Attach Image: Image upload with preview
- Signature: Signature capture
- HTML: Custom HTML content
- Markdown Editor: Markdown content
- Code: Code editor with syntax highlighting
- Dynamic Link: Polymorphic references
- Rating: Star rating
- Color: Color picker
- Geolocation: GPS coordinates
3. DocType Patterns
Master DocType:
{ "name": "Customer", "module": "CRM", "autoname": "naming_series:", "naming_rule": "By naming series", "track_changes": 1, "is_submittable": 0 }
Transaction DocType:
{ "name": "Sales Order", "module": "Selling", "is_submittable": 1, "autoname": "naming_series:", "track_changes": 1 }
Child Table:
{ "name": "Sales Order Item", "module": "Selling", "istable": 1, "editable_grid": 1 }
Settings DocType:
{ "name": "System Settings", "module": "Core", "issingle": 1 }
4. Common Field Patterns
Naming Series:
{ "fieldname": "naming_series", "fieldtype": "Select", "label": "Naming Series", "options": "CUST-.YYYY.-\nCUST-", "reqd": 1 }
Status Field:
{ "fieldname": "status", "fieldtype": "Select", "label": "Status", "options": "Draft\nSubmitted\nCancelled", "default": "Draft" }
Link Field:
{ "fieldname": "customer", "fieldtype": "Link", "label": "Customer", "options": "Customer", "reqd": 1 }
Child Table:
{ "fieldname": "items", "fieldtype": "Table", "label": "Items", "options": "Sales Order Item", "reqd": 1 }
Computed Field:
{ "fieldname": "total", "fieldtype": "Currency", "label": "Total Amount", "read_only": 1 }
5. Permission Configuration
{ "permissions": [ { "role": "Sales User", "read": 1, "write": 1, "create": 1, "delete": 0, "submit": 0, "cancel": 0 }, { "role": "Sales Manager", "read": 1, "write": 1, "create": 1, "delete": 1, "submit": 1, "cancel": 1 } ] }
6. Advanced Features
Dependent Fields:
{ "fieldname": "customer_group", "fieldtype": "Link", "options": "Customer Group", "depends_on": "eval:doc.customer" }
Mandatory Depends On:
{ "fieldname": "tax_id", "fieldtype": "Data", "label": "Tax ID", "mandatory_depends_on": "eval:doc.country=='United States'" }
Read Only Depends On:
{ "fieldname": "posted_date", "fieldtype": "Date", "read_only_depends_on": "eval:doc.docstatus==1" }
Output Format
When building a DocType, provide:
- Complete JSON structure
- Explanation of key fields
- Permission rationale
- Controller method suggestions (if needed)
- Migration instructions
Best Practices
- Naming: Use clear, descriptive field names in snake_case
- Required Fields: Mark essential fields as required
- Defaults: Provide sensible default values
- Permissions: Start restrictive, expand as needed
- Indexing: Add database indexes for frequently queried fields
- Validation: Use field properties for basic validation
- Organization: Group related fields with sections and column breaks
Integration with Controllers
After creating DocType JSON, suggest controller methods:
- Pre-save validationvalidate()
- Modify values before savingbefore_save()
- Actions when document is submittedon_submit()
- Actions when document is cancelledon_cancel()
- Actions before deletionon_trash()
Example Usage Flow
- User asks: "Create a Customer DocType with name, email, and phone"
- Skill generates:
- Complete DocType JSON
- Appropriate field types
- Basic permissions
- Naming configuration
- Output includes:
- JSON file content
- Where to save it (
)apps/<app>/doctype/customer/customer.json - Migration command (
)bench --site <site> migrate - Next steps for customization
File Structure
Generated files should follow:
apps/ └── <app_name>/ └── <module_name>/ └── doctype/ └── <doctype_name>/ ├── __init__.py ├── <doctype_name>.json ├── <doctype_name>.py └── <doctype_name>.js
Remember: This skill is model-invoked. Claude will use it autonomously when detecting DocType-related tasks.