Skills catalog¶
17 skills, organized by what a PM is trying to do. Each skill is a SKILL.md with frontmatter that tells Claude when to load it.
PMs don't read these directly. The engineer agent loads them automatically based on the user's prompt + the active slash command. This catalog is for reviewers who want to audit what's available.
Building things (6)¶
| Skill | Trigger phrases | Purpose | Refuses |
|---|---|---|---|
building/designing-forms |
"I need a form for…", "create a registration", "intake form", "application form" | Walks fields + permissions + naming. Emits a Stack Blueprint DocType payload. |
Reserved names, elevated fieldtypes without role, payload without permissions |
building/modeling-workflows |
"needs approval", "multi-step", "submit for review", "workflow", "status changes" | Walks states + transitions + roles. Emits a Stack Workflow Def. | No-terminal, orphan states, missing role, transitions to unknown states |
building/building-dashboards |
"dashboard", "chart of…", "KPI", "summary view", "by month / by district" | Forces "what decision?" before generating. Caps at 6 charts. | Real-time charts on million-row tables without caching, dashboards without permission scoping |
building/composing-reports |
"report on…", "export this list", "summary of…", "give me a CSV" | Picks Report Builder vs Query Report vs Script Report. | Raw SQL with f-strings or .format(), reports without permission_query_conditions |
building/wiring-integrations |
"send to Zapier", "webhook from…", "SMS notification", "S3 upload", "payment gateway" | Webhook (out) / signed-callback (in) / scheduled (pull). Forces signature+idempotency+min-work for inbound. | Inbound webhook without signature verification, embedded secrets in webhook headers |
building/designing-experiments |
"A/B test", "compare two flows", "split traffic", "experiment with…" | Forces the question format. Walks split-state shape. | More than 2 arms (v0.1), traffic_split that doesn't sum to 100, promotion before significance |
building/seeding-data |
"seed test data", "fill the form for testing", "create dummy records" | Generates synthetic records via stock REST. Cleanup ledger produced. | Real-shaped PII patterns. >100 records (use a proper import path). Required Link to empty DocTypes. |
Shipping things (2)¶
| Skill | Trigger phrases | Purpose | Refuses |
|---|---|---|---|
process/git-roundtrip |
"save to git", "commit my changes", "drift", "fixtures out of sync" | Site ↔ GitHub two-way sync model. Powers /pull, /push, /diff, /promote. |
Auto-resolving conflicts in the changed bucket — surfaces them, asks user to pick a direction |
process/promoting-changes |
"promote to prod", "ship this", "deploy", "go live" | Pre-promote checklist + PR open + merge → migrate handshake. | Friday-afternoon promote without --emergency, bundling > 5 unrelated changes, force-merge |
Staying organized (3)¶
| Skill | Trigger phrases | Purpose | Refuses |
|---|---|---|---|
process/writing-specs |
"write a spec", "PRD for…", "scope this out", "requirements doc" | The 5-section template (problem / user / solution-shape / out-of-scope / metric). | "We need to build X" without a problem statement, "TBD" in success metrics |
process/managing-tickets |
"what should we work on", "prioritize", "triage", "backlog" | 4-bucket triage (build now / build later / won't build / investigate) + 4-question filter. | Tickets that can't answer who/how-often/workaround/break-if-not |
process/running-qa |
"QA this", "smoke test", "verify it works", "check the build" | Automated tests + manual checklist per blueprint type. | Smoke-testing prod (always staging), skipping manual after auto-tests pass |
Background platform knowledge (4)¶
PMs don't read these end-to-end; the engineer agent loads the relevant one as needed.
| Skill | What it teaches Claude |
|---|---|
platform/frappe-platform |
The 4-layer model (DocType / fixture / Custom Field / app code) + config-vs-code decision tree |
platform/frappe-permissions |
The 5-layer permission model. Why ignore_permissions=True is refused. Row-level filtering. |
platform/frappe-patterns |
Reusable client-side patterns catalog (fuzzy-search, sticky-table-freeze, sequential-save, XLSX export, India map, …) |
platform/frappe-api |
Token auth, rate limits, CORS, secure endpoint template |
Meta-process (4)¶
| Skill | Purpose |
|---|---|
builder-protocol |
When to use the 4 memory files (PRD.md / PLAN.md / SECURITY.md / HEARTBEAT.md). Order of precedence. Decision register pattern. |
process/session-start |
Mandatory pre-flight: attach Security_DRIS.md, load CLAUDE.md, generate DeployControl token if pushing. Refuses to mutate code without Security_DRIS.md. |
meta/claude-md-template |
Generates a CLAUDE.md from the canonical template when a repo doesn't have one. Auto-fires from session-start. |
process/prompt-coaching |
Reference for the UserPromptSubmit hook — what gets blocked, what gets nudged, how to tune false positives. |
How a skill fires¶
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#8B1E24',
'primaryTextColor': '#ffffff',
'primaryBorderColor': '#6A2E2E',
'lineColor': '#9E2A2F',
'secondaryColor': '#F5E6DD',
'actorBkg': '#8B1E24',
'actorTextColor': '#ffffff',
'actorLineColor': '#6A2E2E',
'noteBkgColor': '#F5E6DD',
'noteTextColor': '#2E2E2E',
'noteBorderColor': '#D9B3A0',
'sequenceNumberColor': '#ffffff',
'fontFamily': 'Inter, system-ui, sans-serif',
'fontSize': '14px'
}
}}%%
sequenceDiagram
autonumber
actor PM
participant Hook as prompt hook
participant Eng as engineer
participant API as Frappe REST
participant Auto as tester + reviewer
PM->>Hook: build a beneficiary registration<br>with three approval levels
Hook->>Eng: suggest /frappe-stack:build doctype + workflow
Eng->>Eng: load designing-forms skill
Note right of Eng: walks 4-step form flow
Eng->>Eng: load modeling-workflows skill
Note right of Eng: walks 5-step workflow flow
Eng->>API: POST /api/resource/DocType
Eng->>API: POST /api/resource/Workflow
API-->>Eng: both 201 Created
Eng->>Auto: spawn in parallel
Auto-->>PM: ready to /pull or /promote
Each skill is self-contained: trigger phrases in frontmatter, conversation flow in body, anti-patterns at the end. Reading any one of them gives you the full picture for that surface.
Adding a skill¶
- Decide which category it belongs to (
building//process//platform/). - Create
skills/<category>/<kebab-name>/SKILL.mdwith frontmatter: - Write the body: when to load, conversation flow if applicable, worked example, anti-patterns to refuse.
- Add a row to this catalog under the right section.
- Open a PR.
Skill descriptions trigger on PM-natural language ("I need a form for…"), not jargon ("create a DocType"). That's the ergonomics test.