frappe-agent-architect
Use when designing multi-app Frappe architectures, deciding whether to split functionality into separate apps, or implementing cross-app communication…
Use when creating or customizing Workspace pages in Frappe v14-v16. Covers Workspace DocType structure, shortcuts, number cards, dashboard charts, custom HTML blocks, JSON content format, shipping workspaces with custom apps, and role-based access control. Prevents common
$ npx -y skills add Impertio-Studio/Frappe_Claude_Skill_Package --skill frappe-impl-workspace --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/frappe-impl-workspaceContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when creating or customizing Workspace pages in Frappe v14-v16. Covers Workspace DocType structure, shortcuts, number cards, dashboard charts, custom HTML blocks, JSON content format, shipping workspaces with custom apps, and role-based access control. Prevents common
name: frappe-impl-workspace description: > Use when creating or customizing Workspace pages in Frappe v14-v16. Covers Workspace DocType structure, shortcuts, number cards, dashboard charts, custom HTML blocks, JSON content format, shipping workspaces with custom apps, and role-based access control. Prevents common mistakes with content/child-table desync and missing fixtures. Keywords: workspace, desk, dashboard, number card, chart, shortcut,, customize desk, dashboard setup, add shortcut, module page, sidebar customize. workspace builder, module, fixtures, sidebar. license: MIT compatibility: "Claude Code, Claude.ai Projects, Claude API. Frappe v14-v16." metadata: author: OpenAEC-Foundation version: "3.0"
Step-by-step workflows for creating and customizing Workspace pages. Workspaces are the block-based dashboard/navigation pages in Frappe Desk.
**Version**: v14/v15/v16 (version-specific features noted)
---
| Concept | Description | |---------|-------------| | Workspace | Block-based page with 12-column grid layout | | Public Workspace | Visible to all permitted users; requires Workspace Manager role to edit | | Private Workspace | Per-user dashboard under "My Workspaces"; any Desk User can create | | Content field | JSON array storing the block layout | | Child tables | 6 tables: charts, shortcuts, links, quick_lists, number_cards, custom_blocks | | Module association | Primary access control mechanism |
---
NEED A WORKSPACE?
│
├─► Default DocType landing page?
│ └─► NO workspace needed — Frappe auto-generates list views
│
├─► Custom dashboard for a module?
│ └─► Create PUBLIC Workspace (Workspace Manager role required)
│
├─► Personal dashboard for a user?
│ └─► Create PRIVATE Workspace (appears under "My Workspaces")
│
└─► Navigation link in sidebar?
└─► type="Link" (internal) or type="URL" (external)
ADDING COMPONENTS?
│
├─► Key metrics (counts, sums) → Number Cards
├─► Trend / time-series data → Dashboard Charts
├─► Quick navigation links → Shortcuts
├─► Grouped link categories → Link Cards (Card Break + Links)
├─► Custom HTML/JS content → Custom HTML Blocks
└─► Recent record lists → Quick Lists---
| Field | Type | Purpose | |-------|------|---------| | `label` | Data | Display name in sidebar | | `title` | Data | Page title (defaults to label) | | `module` | Link → Module Def | Associates workspace with a module for access control | | `parent_page` | Link → Workspace | Nesting under another workspace in sidebar | | `icon` | Data | Sidebar icon (e.g., `"chart-line"`) | | `type` | Select | `Workspace` / `Link` / `URL` (v15+) | | `sequence_id` | Int | Sidebar ordering | | `content` | JSON | Block layout as JSON array | | `for_user` | Data | If set, workspace is private to that user | | `roles` | Table → Has Role | Role-based access restrictions | | `app` | Data | Owning app identifier (v15+) | | `indicator_color` | Color | Sidebar indicator dot (v15+) |
| Child Table | DocType | Purpose | |-------------|---------|---------| | `charts` | Workspace Chart | Dashboard Chart references | | `shortcuts` | Workspace Shortcut | DocType/Report/Page/URL shortcuts | | `links` | Workspace Link | Grouped navigation links | | `quick_lists` | Workspace Quick List | Recent record lists | | `number_cards` | Workspace Number Card | Metric card references | | `custom_blocks` | Workspace Custom Block | HTML block references |
> **CRITICAL**: The `content` JSON and the child tables MUST stay in sync. ALWAYS use the Workspace Builder UI or programmatic API — NEVER manually edit the `content` JSON without updating child tables. See `references/anti-patterns.md`.
---
The `content` field is a JSON array. Each element represents a block in the 12-column grid:
[
{
"id": "unique-block-id",
"type": "header",
"data": {"text": "Overview", "level": 4, "col": 12}
},
{
"id": "unique-block-id-2",
"type": "chart",
"data": {
"chart_name": "Sales Trends",
"col": 12
}
},
{
"id": "unique-block-id-3",
"type": "number_card",
"data": {
"number_card_name": "Open Orders",
"col": 4
}
},
{
"id": "unique-block-id-4",
"type": "shortcut",
"data": {
"shortcut_name": "New Sales Order",
"col": 4
}
},
{
"id": "unique-block-id-5",
"type": "spacer",
"data": {"col": 12}
}
]| Type | `data` fields | Description | |------|---------------|-------------| | `header` | `text`, `level`, `col` | Section heading (h3/h4/h5) | | `chart` | `chart_name`, `col` | References a Dashboard Chart doc | | `number_card` | `number_card_name`, `col` | References a Number Card doc | | `shortcut` | `shortcut_name`, `col` | References a Workspace Shortcut child | | `card` | `card_name`, `col` | Card break for grouped links | | `quick_list` | `quick_list_name`, `col` | Recent records for a DocType | | `custom_block` | `custom_block_name`, `col` | References a Custom HTML Block doc | | `text` | `body`, `col` | Rich text / Markdown block | | `spacer` | `col` | Empty vertical space | | `onboarding` | `onboarding_name`, `col` | Module onboarding widget |
> `col` values MUST be 1-12 and represent grid column width. Blocks in the same row MUST sum to ≤ 12.
---
1. Navigate to `/app/workspace` → click **+ New Workspace** 2. Set **Label** (appears in sidebar), **Module**, **Icon** 3. Use the Workspace Builder to drag-and-drop blocks 4. Add components: Charts, Number Cards, Shortcuts, Links 5. Click **Save** → workspace appears in sidebar for permitted users 6. In developer mode: JSON auto-exports to your app directory
60 deterministic Claude AI skills for Frappe Framework & ERPNext v14-v16 development and operations
Repo: Impertio-Studio/Frappe_Claude_Skill_Package
Use when designing multi-app Frappe architectures, deciding whether to split functionality into separate apps, or implementing cross-app communication…
Use when debugging Frappe errors, using bench console for live inspection, analyzing tracebacks, or reading Frappe log files. Prevents wasted debugging time…
Use when receiving vague or unclear ERPNext/Frappe development requests that need interpretation. Transforms requirements like 'make invoice auto-calculate' or…
Use when migrating a Frappe app between major versions, detecting breaking API changes, or resolving post-migration errors. Prevents failed migrations from…
Use when reviewing or validating Frappe/ERPNext code against best practices and common pitfalls. Checks generated code before deployment, validates against all…
Use when building ERPNext/Frappe API integrations (v14/v15/v16) including REST API, RPC API, authentication, webhooks, and rate limiting. Covers external API…