CAT
/Skills
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Frappe Doctype Development

lubusin/agent-skills
126 installs21 stars
Summary

This handles the full lifecycle of Frappe DocTypes, from creating new data models to wiring up controller logic and permissions. You'll reach for it when building standard documents, child tables, or submittable workflows. It covers the practical stuff: field definitions across 20+ types, naming series setup, controller hooks like validate and before_save, and the parent-child table patterns that trip people up. The guardrails are solid, reminding you to enable developer mode before schema changes and always run migrate after modifications. Honestly, the structured approach to controller implementation and the comprehensive field type reference make this more useful than the official docs for day-to-day DocType work.

Install to Claude Code

npx -y skills add lubusin/agent-skills --skill frappe-doctype-development --agent claude-code

Installs into .claude/skills of the current project.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Files
SKILL.mdView on GitHub

Frappe DocType Development

Build and modify DocTypes—the core data model abstraction in Frappe Framework.

When to use

  • Creating new DocTypes (standard, single, child table, submittable, tree)
  • Adding or modifying fields on existing DocTypes
  • Implementing controller logic (validate, before_save, on_submit, etc.)
  • Setting up naming series and auto-naming
  • Configuring permissions and workflows
  • Building child tables and parent-child relationships

Inputs required

  • Target app and module path
  • DocType name and type (standard/single/child/submittable/tree)
  • Field definitions (name, type, options)
  • Permission requirements by role
  • Whether workflow is needed

Procedure

0) Verify environment

# Ensure developer mode is enabled
bench --site <site> console
>>> frappe.conf.developer_mode  # Must be True

1) Choose DocType type

TypeUse CaseKey Setting
StandardMultiple recordsDefault
SingleConfig/settings (one record)issingle: 1
Child TableRows in parent tableistable: 1
SubmittableDraft→Submit→Cancel workflowis_submittable: 1
TreeHierarchical datais_tree: 1
VirtualExternal data sourceis_virtual: 1

2) Create DocType

Option A: Via UI (recommended for new DocTypes)

  1. Navigate to DocType List → New
  2. Define fields, permissions, settings
  3. Save (exports to app in developer mode)

Option B: Via code

# Create DocType JSON in: 
# <app>/<module>/doctype/<doctype_name>/<doctype_name>.json

3) Define fields

Common field patterns:

{
  "fieldname": "customer",
  "fieldtype": "Link",
  "label": "Customer",
  "options": "Customer",
  "reqd": 1
}

See references/field-types.md for all field types.

4) Implement controller

Create <doctype_name>.py alongside the JSON:

import frappe
from frappe.model.document import Document

class MyDocType(Document):
    def validate(self):
        # Lightweight validation
        if not self.customer:
            frappe.throw("Customer is required")
    
    def before_save(self):
        # Pre-save normalization
        self.full_name = f"{self.first_name} {self.last_name}"
    
    def after_insert(self):
        # Post-create side effects
        frappe.publish_realtime("new_doc", {"name": self.name})

5) Set up naming

{
  "autoname": "naming_series:",
  "fields": [
    {
      "fieldname": "naming_series",
      "fieldtype": "Select",
      "options": "PRJ-.YYYY.-\nPRJ-.YYYY.-.###"
    }
  ]
}

Options: field:fieldname, naming_series:, hash, format:PREFIX-{####}

6) Configure permissions

Set in DocType → Permissions tab:

  • Role + Read/Write/Create/Delete/Submit/Cancel
  • User permissions for row-level filtering

7) Add workflow (if needed)

Create Workflow DocType linking to your DocType with states and transitions.

Verification

  • DocType appears in list and can create new records
  • All fields save correctly
  • Controller hooks fire (check logs)
  • Permissions enforced for each role
  • Naming series generates correctly
  • Run: bench --site <site> migrate succeeds

Failure modes / debugging

  • DocType not found: Check module path and app installation
  • Controller not loading: Verify class name matches DocType name (PascalCase)
  • Fields not saving: Check fieldtype and options compatibility
  • Permission denied: Verify role permissions and User Permissions

Escalation

  • For complex permission logic, see references/permissions.md
  • For child table patterns, see references/child-tables.md
  • For Virtual DocTypes, see references/virtual-doctypes.md

References

  • references/field-types.md - All field types and options
  • references/controllers.md - Controller lifecycle hooks
  • references/child-tables.md - Parent-child patterns
  • references/naming.md - Naming patterns

Guardrails

  • Check developer_mode before schema changes: DocType modifications only export to files when developer_mode = 1 in site config
  • Verify naming series uniqueness: Ensure naming series prefixes don't conflict with existing DocTypes
  • Test child tables separately: Child tables have their own lifecycle; test them in isolation before parent integration
  • Always run migrate after changes: Schema changes require bench --site <site> migrate to apply
  • Validate fieldname conventions: Use snake_case, max 140 chars, no reserved SQL keywords

Common Mistakes

MistakeWhy It FailsFix
Missing reqd on mandatory fieldsUsers can save incomplete dataSet reqd: 1 on fields that must have values
Wrong fieldtype for dataData truncation or validation errorsMatch fieldtype to data (e.g., Currency for money, not Float)
Not running bench migrateSchema changes not applied to databaseAlways run bench --site <site> migrate after DocType changes
Circular Link dependenciesDocType creation failsUse Dynamic Link or restructure relationships
Controller class name mismatchController methods not calledClass name must be PascalCase of DocType name (e.g., SalesOrder for "Sales Order")
Missing in_list_view on key fieldsFields not visible in listSet in_list_view: 1 on important fields
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Categories
AI & Agent Building
First SeenJun 3, 2026
View on GitHub

Recommended

More AI & Agent Building →
agent-memory-mcp

sickn33/antigravity-awesome-skills

agent memory mcp
954
39.4k
agent-memory-mcp

davila7/claude-code-templates

agent memory mcp
521
27.7k
llm-application-dev-langchain-agent

sickn33/antigravity-awesome-skills

llm application dev langchain agent
306
39.4k
llm-application-dev

moizibnyousaf/ai-agent-skills

Building applications with Large Language Models - prompt engineering, RAG patterns, and LLM integration. Use for AI-powered features, chatbots, or LLM-based automation.
1.1k
ai-prompt-engineering-safety-review

github/awesome-copilot

Comprehensive safety analysis and improvement framework for AI prompts with detailed assessment methodologies.
9.4k
34.3k
emblem-ai-prompt-examples

emblemcompany/agent-skills

emblem ai prompt examples
8.7k
10