Claude-skill-registry frappe-doctype-builder

Build Frappe DocTypes with fields, permissions, and naming configurations. Use this skill when creating or modifying DocType structures.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/data/frappe-doctype-builder/SKILL.md
source content

Frappe 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:

  1. Complete JSON structure
  2. Explanation of key fields
  3. Permission rationale
  4. Controller method suggestions (if needed)
  5. Migration instructions

Best Practices

  1. Naming: Use clear, descriptive field names in snake_case
  2. Required Fields: Mark essential fields as required
  3. Defaults: Provide sensible default values
  4. Permissions: Start restrictive, expand as needed
  5. Indexing: Add database indexes for frequently queried fields
  6. Validation: Use field properties for basic validation
  7. Organization: Group related fields with sections and column breaks

Integration with Controllers

After creating DocType JSON, suggest controller methods:

  • validate()
    - Pre-save validation
  • before_save()
    - Modify values before saving
  • on_submit()
    - Actions when document is submitted
  • on_cancel()
    - Actions when document is cancelled
  • on_trash()
    - Actions before deletion

Example Usage Flow

  1. User asks: "Create a Customer DocType with name, email, and phone"
  2. Skill generates:
    • Complete DocType JSON
    • Appropriate field types
    • Basic permissions
    • Naming configuration
  3. 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.