baldart 4.81.0 → 4.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +9 -5
  3. package/VERSION +1 -1
  4. package/framework/.claude/hooks/agent-discovery-gate.js +4 -2
  5. package/framework/.claude/skills/api-design-principles/CHANGELOG.md +7 -0
  6. package/framework/.claude/skills/api-design-principles/SKILL.md +1 -0
  7. package/framework/.claude/skills/baldart-push/CHANGELOG.md +7 -0
  8. package/framework/.claude/skills/baldart-push/SKILL.md +1 -0
  9. package/framework/.claude/skills/baldart-update/CHANGELOG.md +7 -0
  10. package/framework/.claude/skills/baldart-update/SKILL.md +1 -0
  11. package/framework/.claude/skills/bug/CHANGELOG.md +7 -0
  12. package/framework/.claude/skills/bug/SKILL.md +1 -0
  13. package/framework/.claude/skills/capture/CHANGELOG.md +7 -0
  14. package/framework/.claude/skills/capture/SKILL.md +1 -1
  15. package/framework/.claude/skills/context-primer/CHANGELOG.md +7 -0
  16. package/framework/.claude/skills/context-primer/SKILL.md +1 -0
  17. package/framework/.claude/skills/copywriting/CHANGELOG.md +7 -0
  18. package/framework/.claude/skills/design-sync/CHANGELOG.md +7 -0
  19. package/framework/.claude/skills/design-sync/SKILL.md +1 -0
  20. package/framework/.claude/skills/design-system-init/CHANGELOG.md +7 -0
  21. package/framework/.claude/skills/design-system-init/SKILL.md +1 -0
  22. package/framework/.claude/skills/doc-writing-for-rag/CHANGELOG.md +7 -0
  23. package/framework/.claude/skills/doc-writing-for-rag/SKILL.md +1 -0
  24. package/framework/.claude/skills/ds-edit/CHANGELOG.md +7 -0
  25. package/framework/.claude/skills/ds-edit/SKILL.md +1 -0
  26. package/framework/.claude/skills/ds-handoff/CHANGELOG.md +7 -0
  27. package/framework/.claude/skills/ds-handoff/SKILL.md +1 -0
  28. package/framework/.claude/skills/ds-new/CHANGELOG.md +7 -0
  29. package/framework/.claude/skills/ds-new/SKILL.md +1 -0
  30. package/framework/.claude/skills/ds-render/CHANGELOG.md +7 -0
  31. package/framework/.claude/skills/ds-render/SKILL.md +1 -0
  32. package/framework/.claude/skills/e2e-review/CHANGELOG.md +7 -0
  33. package/framework/.claude/skills/e2e-review/SKILL.md +1 -0
  34. package/framework/.claude/skills/find-skills/CHANGELOG.md +7 -0
  35. package/framework/.claude/skills/find-skills/SKILL.md +1 -0
  36. package/framework/.claude/skills/frontend-design/CHANGELOG.md +7 -0
  37. package/framework/.claude/skills/frontend-design/SKILL.md +1 -0
  38. package/framework/.claude/skills/gamification-design/CHANGELOG.md +7 -0
  39. package/framework/.claude/skills/graph-align/CHANGELOG.md +7 -0
  40. package/framework/.claude/skills/graph-align/SKILL.md +1 -0
  41. package/framework/.claude/skills/graphify-bootstrap/CHANGELOG.md +7 -0
  42. package/framework/.claude/skills/graphify-bootstrap/SKILL.md +1 -0
  43. package/framework/.claude/skills/i18n/CHANGELOG.md +7 -0
  44. package/framework/.claude/skills/i18n/SKILL.md +1 -0
  45. package/framework/.claude/skills/i18n-adopt/CHANGELOG.md +7 -0
  46. package/framework/.claude/skills/i18n-adopt/SKILL.md +1 -0
  47. package/framework/.claude/skills/issue-review/CHANGELOG.md +7 -0
  48. package/framework/.claude/skills/issue-review/SKILL.md +1 -0
  49. package/framework/.claude/skills/kie-ai/CHANGELOG.md +7 -0
  50. package/framework/.claude/skills/kie-ai/SKILL.md +1 -0
  51. package/framework/.claude/skills/lsp-bootstrap/CHANGELOG.md +7 -0
  52. package/framework/.claude/skills/lsp-bootstrap/SKILL.md +1 -0
  53. package/framework/.claude/skills/motion-design/CHANGELOG.md +7 -0
  54. package/framework/.claude/skills/motion-design/SKILL.md +1 -1
  55. package/framework/.claude/skills/new/CHANGELOG.md +7 -0
  56. package/framework/.claude/skills/new/SKILL.md +1 -0
  57. package/framework/.claude/skills/new/references/implement.md +52 -53
  58. package/framework/.claude/skills/new/references/review-cycle.md +16 -0
  59. package/framework/.claude/skills/new2/CHANGELOG.md +7 -0
  60. package/framework/.claude/skills/new2/SKILL.md +1 -0
  61. package/framework/.claude/skills/overlay/CHANGELOG.md +7 -0
  62. package/framework/.claude/skills/overlay/SKILL.md +1 -0
  63. package/framework/.claude/skills/playwright-skill/CHANGELOG.md +7 -0
  64. package/framework/.claude/skills/playwright-skill/SKILL.md +1 -0
  65. package/framework/.claude/skills/prd/CHANGELOG.md +7 -0
  66. package/framework/.claude/skills/prd/SKILL.md +1 -0
  67. package/framework/.claude/skills/prd-add/CHANGELOG.md +7 -0
  68. package/framework/.claude/skills/prd-add/SKILL.md +1 -0
  69. package/framework/.claude/skills/remotion-best-practices/CHANGELOG.md +7 -0
  70. package/framework/.claude/skills/remotion-best-practices/SKILL.md +1 -0
  71. package/framework/.claude/skills/seo-audit/CHANGELOG.md +7 -0
  72. package/framework/.claude/skills/simplify/CHANGELOG.md +7 -0
  73. package/framework/.claude/skills/simplify/SKILL.md +1 -0
  74. package/framework/.claude/skills/skill-creator/CHANGELOG.md +7 -0
  75. package/framework/.claude/skills/skill-creator/SKILL.md +16 -8
  76. package/framework/.claude/skills/skill-creator/references/skill-structure.md +81 -0
  77. package/framework/.claude/skills/skill-creator/scripts/init_skill.py +29 -104
  78. package/framework/.claude/skills/skill-creator/scripts/quick_validate.py +17 -1
  79. package/framework/.claude/skills/toolchain-bootstrap/CHANGELOG.md +7 -0
  80. package/framework/.claude/skills/toolchain-bootstrap/SKILL.md +1 -0
  81. package/framework/.claude/skills/ui-design/CHANGELOG.md +7 -0
  82. package/framework/.claude/skills/ui-design/SKILL.md +1 -0
  83. package/framework/.claude/skills/ui-implement/CHANGELOG.md +12 -0
  84. package/framework/.claude/skills/ui-implement/SKILL.md +235 -0
  85. package/framework/.claude/skills/ui-implement/references/integration.md +92 -0
  86. package/framework/.claude/skills/ui-implement/references/playbook.md +71 -0
  87. package/framework/.claude/skills/webapp-testing/CHANGELOG.md +7 -0
  88. package/framework/.claude/skills/webapp-testing/SKILL.md +1 -0
  89. package/framework/.claude/skills/worktree-manager/CHANGELOG.md +7 -0
  90. package/framework/.claude/skills/worktree-manager/SKILL.md +1 -0
  91. package/framework/agents/skills-mapping.md +29 -0
  92. package/framework/docs/ROOT-PRIMITIVES.md +98 -0
  93. package/framework/templates/primitives/AGENTS.CHANGELOG.md +18 -0
  94. package/framework/templates/primitives/AGENTS.md +111 -0
  95. package/framework/templates/primitives/CLAUDE.CHANGELOG.md +15 -0
  96. package/framework/templates/primitives/CLAUDE.md +41 -0
  97. package/package.json +1 -1
  98. package/src/commands/add.js +15 -0
  99. package/src/commands/doctor.js +65 -0
  100. package/src/commands/migrate.js +30 -0
  101. package/src/commands/update.js +31 -0
  102. package/src/utils/root-primitives.js +418 -0
  103. package/src/utils/symlinks.js +24 -10
  104. package/framework/AGENTS.md +0 -255
@@ -113,59 +113,58 @@
113
113
  Design file: [path from card's links.design field]
114
114
  Design source: [path from card's links.design_src field, if present]
115
115
 
116
- **PRIMARYfinished source code (`links.design_src` / `mockups/_src/`).**
117
- When the card carries `links.design_src`, or the PRD's `mockups/_src/` holds
118
- the screen's archived `.jsx`/`.css`/tokens (a Claude Design export pulled at
119
- `/prd` time), THAT CODE is the fidelity source not the pixels. `Read` those
120
- files and BUILD FROM THEM per `framework/.claude/agents/ui-expert.md` §
121
- "Design Reference When the mockup is finished CODE": reuse-first (map the
122
- source's token refs / classes to the registry primitives), copy structure /
123
- spacing / `@keyframes` / `@media` exactly, introduce a new component only via
124
- `/ds-new`. The image branch below is then a SECONDARY visual cross-check, not
125
- the source of truth. **You MUST declare** which `mockups/_src/` files you read,
126
- the source symbols/classes you reuse, and the registry primitives you map them
127
- to (declaration gate below the orchestrator grounds it against disk).
128
-
129
- **Load the mockup image into your context branch on the file type:**
130
- - If `links.design` resolves to an IMAGE (`.png` / `.jpg` / `.jpeg` /
131
- `.webp` / `.pdf`, or the card points at a `mockups/*.png` canonical path):
132
- you are multimodal — **`Read` the mockup image file path directly**. `Read`
133
- renders the image visually into your context (the native multimodal
134
- mechanism). The mockup's PIXELS are the fidelity target: study layout,
135
- spacing, hierarchy, density, color, and the relative position of every
136
- region. Do NOT implement from the filename or a textual guess — you MUST
137
- actually load and look at the image. (On a non-multimodal tool the `Read`
138
- degrades to no-op text; fall back to the structured fields below.)
139
- - If `links.design` is an `.html` file: **Read the design.html file** and use
140
- it as the visual reference. **If that file does not exist** (a legacy
141
- mockup-only card that points at a `design.html` which was never generated),
142
- fall back: look under the PRD's `mockups/` dir (sibling of the `links.design`
143
- path) for the screen's PNG/JPG and `Read` that image instead — do not proceed
144
- with no visual reference.
145
-
146
- Use it as the **visual reference** for your implementation (layout, spacing,
147
- hierarchy, copy). The design was approved by the user — your implementation
148
- MUST match its appearance.
149
-
150
- **Structured design intent (when present on the card).** The image shows the
151
- static look at one viewport; these fields cover what a single image cannot:
152
- - `component_bindings[].props` / `variant` the exact props/variant each
153
- region must use (e.g. `SectionHeader {depth: 0}`, `DataTable {density:
154
- comfortable}`). Implement them verbatim; do not eyeball a variant.
155
- - the card's responsive acceptance criteria breakpoint behaviour the
156
- single-viewport mockup does not show (e.g. "≤640px: table collapses to
157
- card-list"). These are testable ACs, not optional polish.
158
-
159
- **The mockup is a visual reference, NOT a license to re-create components.**
160
- When the card carries `component_bindings` (the `/prd` Component Reconciliation
161
- map see `agents/card-schema.md`), THAT map is authoritative over *which
162
- component each region IS*: a region bound `action: reuse → SectionHeader` MUST
163
- be implemented by reusing `SectionHeader`, even if the mockup's pixels look like
164
- a fresh header. Honor the binding over any contrary reading of the mockup. Only
165
- `action: new` entries (confirmed with the user at `/prd` time) may introduce a
166
- component. A card with UI scope and `features.has_design_system: true` but NO
167
- `component_bindings` run the cascade below as your own reconciliation before
168
- writing code (do not assume a mockup affordance is a new component).
116
+ **DELEGATION GATE mockup→code is owned by `/ui-implement` (since v4.82.0).**
117
+ When the `/ui-implement` skill is available AND the card has `links.design` /
118
+ `links.design_src`, the orchestrator DELEGATES this card's mockup→code
119
+ **implement + fidelity verify** to `/ui-implement` in programmatic mode
120
+ (contract: `framework/.claude/skills/ui-implement/references/integration.md`).
121
+ The skill is the SSOT of the input-type build playbook (Claude Design link /
122
+ finished-code / image / HTML) and folds in Phase 2.6 `/e2e-review`. On delegation: **skip the
123
+ coarse briefing below AND Phase 2.6 for this card** (the skill already ran the
124
+ fidelity verify), consume its COMPACT JSON, then resume the normal per-card
125
+ cluster on the resulting diff (Phase 2.55 Simplify → **skip Phase 2.6** which
126
+ the skill already ran → Phase 3 doc / 3.5 QA / 3.7 Codex the skill's scope is
127
+ **fidelity only**, no review hole). The `ui-expert` registry-first cascade +
128
+ Post-Intervention Coherence below STILL apply — the skill enforces the same
129
+ SSOTs. **Coarse inline fallback** (skill unavailable / Codex / older install):
130
+ use the briefing below + Phase 2.6 as before; the prose here stays the SSOT
131
+ fallback (delegate-or-else-inline).
132
+
133
+ **Coarse fallback build workflow by input type.** The full SSOT is
134
+ `framework/.claude/skills/ui-implement/references/playbook.md` +
135
+ `framework/.claude/agents/ui-expert.md` § "Design Reference When the mockup
136
+ is finished CODE":
137
+ - **Finished source code** (`links.design_src` / `mockups/_src/*.jsx`,`*.css`)
138
+ is the PRIMARY fidelity source, NOT the pixels: `Read` it and BUILD FROM IT
139
+ reuse-first (map source token refs / classes to registry primitives, copy
140
+ structure / spacing / `@keyframes` / `@media` exactly, new component only via
141
+ `/ds-new`). **You MUST declare** the `mockups/_src/` files you read, the
142
+ source symbols/classes you reuse, and the registry primitives you map them to
143
+ (grounded at Step 7b).
144
+ - **Image** (`.png` / `.jpg` / `.jpeg` / `.webp` / `.pdf`, or a `mockups/*.png`
145
+ canonical path): you are multimodal — **`Read` the image path directly** so
146
+ the PIXELS render into context; they are the fidelity target (layout, spacing,
147
+ hierarchy, density, color, region positions). Do NOT build from the filename.
148
+ (Non-multimodal tool the `Read` degrades to no-op; fall back to the
149
+ structured fields below.)
150
+ - **HTML** (`.html`): `Read` it as the visual reference. If missing, look under
151
+ the PRD's `mockups/` dir for the screen's PNG/JPG and `Read` that instead — do
152
+ not proceed with no visual reference.
153
+
154
+ The design was approved by the user your implementation MUST match its
155
+ appearance AND its responsive acceptance criteria (breakpoint behaviour a
156
+ single-viewport image does not show are testable ACs, not optional polish).
157
+
158
+ **`component_bindings` are authoritative over the mockup.** When the card
159
+ carries `component_bindings` (the `/prd` Component Reconciliation map see
160
+ `agents/card-schema.md`), a region bound `action: reuse → SectionHeader` MUST be
161
+ implemented by reusing `SectionHeader`, even if the pixels look like a fresh
162
+ header. Honor the binding over any contrary reading; implement
163
+ `component_bindings[].props` / `variant` verbatim (do not eyeball a variant).
164
+ Only `action: new` entries (confirmed at `/prd` time) may introduce a component.
165
+ UI scope + `features.has_design_system: true` but NO `component_bindings` run
166
+ the cascade below as your own reconciliation before writing code (do not assume
167
+ a mockup affordance is a new component).
169
168
 
170
169
  ### i18n constraint (include when `features.has_i18n: true`)
171
170
  No user-facing string may be hardcoded. Externalize every label through the
@@ -158,6 +158,22 @@ The skill replaces the previous advisory pair (legacy Phase 2.6 E2E testing
158
158
  and Phase 2.7 visual design review). It runs by default on every UI card,
159
159
  auto-skips on backend-only cards, and BLOCKS the commit on gating findings.
160
160
 
161
+ > **Delegated cards skip this phase (since v4.82.0).** When Phase 2 delegated this
162
+ > card's mockup→code implement+verify to `/ui-implement` (its delegation gate in
163
+ > `implement.md` fired), `/ui-implement` ALREADY ran `/e2e-review` internally as
164
+ > its self-verify step. Do NOT invoke `/e2e-review` again here — consume the
165
+ > skill's COMPACT JSON (same `status` contract as below) and apply the gating table
166
+ > directly. Re-invoking would double the fidelity pass. Log `"e2e-review: SKIP
167
+ > (delegated to /ui-implement — verdict from the skill)"`.
168
+ >
169
+ > **Drift note (maintainers):** `/ui-implement` folds Phase 2 Design-Reference
170
+ > build + this Phase 2.6 into one skill for a UI card; the coarse fallback prose in
171
+ > `implement.md` + this phase stays the SSOT for the non-delegated path. `new2.js`
172
+ > keeps the INLINE path (no delegation) in this release — full parity (delegating
173
+ > off-context via `workflow()`) is a follow-up after the context-economy
174
+ > measurement. When you change this phase's gating or the mockup cascade, keep
175
+ > `ui-implement/references/integration.md` in sync.
176
+
161
177
  > **Route-independent, self-contained verification (since v4.78.0).** This card verifies
162
178
  > its **OWN** UI surface — it does NOT defer fidelity to a downstream card. `/e2e-review`
163
179
  > now runs a **route-free structural pass** (Phase 2.7, `markup-fidelity-verifier`: the
@@ -0,0 +1,7 @@
1
+ # Changelog — new2
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: new2
3
3
  effort: high
4
+ version: 1.0.0
4
5
  description: >
5
6
  EXPERIMENTAL workflow-hosted variant of /new (A/B testing). Implements one or
6
7
  more backlog cards end-to-end by delegating the WHOLE batch to a background
@@ -0,0 +1,7 @@
1
+ # Changelog — overlay
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: overlay
3
3
  effort: medium
4
+ version: 1.0.0
4
5
  description: "Guided author of .baldart/overlays/ — the per-project customisation layer for BALDART skills, agents, and commands. Use when the user says /overlay, 'customizza skill', 'modifica agente upstream', 'personalizza comando', 'crea overlay', 'extend skill X', 'override agent Y', 'overlay drift', or when the framework-edit-gate hook blocked an edit and pointed here. The skill walks the user through choosing the right canal (skill / agent / command), scaffolds the overlay with correct frontmatter and section markers via `npx baldart overlay scaffold`, validates the merge via `npx baldart overlay validate`, and surfaces drift via `npx baldart overlay drift`. Never edits `.framework/` directly and never re-implements the merger logic — the CLI is the source of truth."
5
6
  contamination_scan: skip
6
7
  ---
@@ -0,0 +1,7 @@
1
+ # Changelog — playwright-skill
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: playwright-skill
3
3
  effort: medium
4
+ version: 1.0.0
4
5
  description: E2E browser testing with Playwright Test CLI. Write .spec.ts files in tests/e2e/, run via `npm run test:e2e`. Supports headed mode, debug, UI mode, filtering, retries, screenshots, and trace on failure. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
5
6
  ---
6
7
 
@@ -0,0 +1,7 @@
1
+ # Changelog — prd
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: prd
3
3
  effort: high
4
+ version: 1.0.0
4
5
  description: "Structured PRD creation skill. Use when the user says /prd, 'crea un prd', 'nuova funzionalita', 'pianifica feature', or wants to plan a new feature end-to-end. Also handles /prd-add, 'aggiungi requisito', 'serve anche', 'manca un endpoint' for change requests on active PRD sessions — runs ICIAS impact analysis to determine which phases need SKIP/PATCH/REDO. Produces PRD + UI design + backlog cards, all validated and committed. Multi-turn conversation: asks questions, waits for answers, iterates through discovery, design, spec writing, card creation, and validation phases."
5
6
  ---
6
7
 
@@ -0,0 +1,7 @@
1
+ # Changelog — prd-add
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: prd-add
3
3
  effort: medium
4
+ version: 1.0.0
4
5
  description: "Change Request skill for active PRD sessions. Use when the user says /prd-add, 'aggiungi requisito', 'serve anche', 'manca un endpoint', or describes a new requirement that impacts an existing PRD. Also auto-triggered by /prd during discovery when the user's answer reveals a new sub-feature not covered by the original scope. Runs ICIAS impact analysis (semantic scan + structural propagation + scoring) to determine which PRD phases need SKIP/PATCH/REDO, then executes only affected phases."
5
6
  ---
6
7
 
@@ -0,0 +1,7 @@
1
+ # Changelog — remotion-best-practices
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: remotion-best-practices
3
3
  effort: medium
4
+ version: 1.0.0
4
5
  description: Best practices for Remotion - Video creation in React
5
6
  metadata:
6
7
  tags: remotion, video, react, animation, composition
@@ -0,0 +1,7 @@
1
+ # Changelog — seo-audit
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -0,0 +1,7 @@
1
+ # Changelog — simplify
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: simplify
3
3
  effort: medium
4
+ version: 1.0.0
4
5
  description: Review changed code for reuse, quality, and efficiency, then fix any issues found. Use when completing a coding task, after implementation, or when the user says /simplify. Covers deduplication (exact/near/inline), code quality patterns, and performance.
5
6
  ---
6
7
 
@@ -0,0 +1,7 @@
1
+ # Changelog — skill-creator
2
+
3
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
4
+
5
+ ## 1.0.0 — 2026-07-01
6
+
7
+ - Baseline: versioning per-skill introdotto al framework v4.82.0.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: skill-creator
3
3
  effort: medium
4
+ version: 1.0.0
4
5
  description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
5
6
  license: Complete terms in LICENSE.txt
6
7
  ---
@@ -116,11 +117,16 @@ A skill should only contain essential files that directly support its functional
116
117
  - README.md
117
118
  - INSTALLATION_GUIDE.md
118
119
  - QUICK_REFERENCE.md
119
- - CHANGELOG.md
120
120
  - etc.
121
121
 
122
122
  The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxilary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion.
123
123
 
124
+ > **BALDART override — `CHANGELOG.md` IS required.** Every BALDART skill ships a
125
+ > per-skill `CHANGELOG.md` (the one exception to the rule above). It is deliberately
126
+ > a SEPARATE file, NOT a section of `SKILL.md`, so the version history never burns
127
+ > context when the skill is loaded. Together with the `version:` frontmatter key it
128
+ > is the canonical structure — see [references/skill-structure.md](references/skill-structure.md).
129
+
124
130
  ### Progressive Disclosure Design Principle
125
131
 
126
132
  Skills use a three-level loading system to manage context efficiently:
@@ -280,11 +286,11 @@ scripts/init_skill.py <skill-name> --path <output-directory>
280
286
  The script:
281
287
 
282
288
  - Creates the skill directory at the specified path
283
- - Generates a SKILL.md template with proper frontmatter and TODO placeholders
284
- - Creates example resource directories: `scripts/`, `references/`, and `assets/`
285
- - Adds example files in each directory that can be customized or deleted
289
+ - Generates a SKILL.md template with proper frontmatter (`name` + `effort` + `version`) and TODO placeholders
290
+ - Generates a per-skill `CHANGELOG.md` (canonical structure — see [references/skill-structure.md](references/skill-structure.md))
291
+ - Does NOT scaffold empty `scripts/` / `references/` / `assets/` dirs add them on demand only when the skill needs them (no placeholder noise)
286
292
 
287
- After initialization, customize or remove the generated SKILL.md and example files as needed.
293
+ After initialization, complete the generated SKILL.md + CHANGELOG.md and add resource folders as needed.
288
294
 
289
295
  ### Step 4: Edit the Skill
290
296
 
@@ -305,7 +311,7 @@ To begin implementation, start with the reusable resources identified above: `sc
305
311
 
306
312
  Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion.
307
313
 
308
- Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them.
314
+ Add only the resource directories the skill actually needs (`scripts/` executables, `references/` on-demand docs, `assets/` output templates). The initializer no longer scaffolds empty placeholder dirs the canonical structure is `SKILL.md` + `CHANGELOG.md` plus whatever folders the skill genuinely uses. See [references/skill-structure.md](references/skill-structure.md).
309
315
 
310
316
  #### Update SKILL.md
311
317
 
@@ -313,16 +319,18 @@ Any example files and directories not needed for the skill should be deleted. Th
313
319
 
314
320
  ##### Frontmatter
315
321
 
316
- Write the YAML frontmatter with `name`, `description`, and `effort`:
322
+ Write the YAML frontmatter with `name`, `description`, `effort`, and `version`:
317
323
 
318
324
  - `name`: The skill name
319
325
  - `description`: This is the primary triggering mechanism for your skill, and helps Claude understand when to use the skill.
320
326
  - Include both what the Skill does and specific triggers/contexts for when to use it.
321
327
  - Include all "when to use" information here - Not in the body. The body is only loaded after triggering, so "When to Use This Skill" sections in the body are not helpful to Claude.
328
+ - Include no angle brackets (`<` / `>`) — the loader/validator rejects them.
322
329
  - Example description for a `docx` skill: "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks"
323
330
  - `effort`: The skill's baseline reasoning effort — one of `low | medium | high | xhigh | max`. Pick it by the skill's dominant cognitive load per the tiering rubric in `framework/agents/effort-protocol.md` (routine/lookup → `low`; standard authoring/review → `medium`; deep reasoning/orchestration → `high`). When in doubt, default to `medium` and let the user escalate per-run via the inline override.
331
+ - `version`: The skill's own SemVer (`MAJOR.MINOR.PATCH`), starting at `1.0.0`. Bump it whenever you change the skill and add a matching `CHANGELOG.md` entry — this is how skills evolve deliberately over time, independent of the framework version. See [references/skill-structure.md](references/skill-structure.md).
324
332
 
325
- Beyond `name`, `description`, and `effort`, do not include other fields in YAML frontmatter.
333
+ Beyond `name`, `description`, `effort`, and `version`, do not include other fields in YAML frontmatter (`license` / `metadata` are tolerated for third-party skills).
326
334
 
327
335
  Then paste the `## Effort` body block from `framework/templates/skill-effort.snippet.md` right after `## Project Context` (or after the title if the skill has no Project Context header), so the skill honors the inline `effort=<level>` override. See `framework/agents/effort-protocol.md` for the parsing contract.
328
336
 
@@ -0,0 +1,81 @@
1
+ # Canonical skill structure (BALDART)
2
+
3
+ The SSOT for how a BALDART skill is laid out and versioned. Every skill under
4
+ `framework/.claude/skills/<name>/` follows this — `init_skill.py` scaffolds it and
5
+ `quick_validate.py` warns on drift.
6
+
7
+ ## Layout
8
+
9
+ ```
10
+ framework/.claude/skills/<name>/
11
+ ├── SKILL.md # REQUIRED — the skill (frontmatter + body). Loaded into context on trigger.
12
+ ├── CHANGELOG.md # REQUIRED — per-skill version history. NOT loaded with SKILL.md.
13
+ ├── references/ # OPTIONAL — docs loaded on demand (playbooks, schemas, contracts).
14
+ ├── assets/ # OPTIONAL — output templates/files, never loaded into context.
15
+ └── scripts/ # OPTIONAL — executables (run, not read).
16
+ ```
17
+
18
+ **`SKILL.md` and `CHANGELOG.md` are mandatory. The three folders are created ONLY
19
+ when the skill needs them** — no empty placeholder dirs (that was upstream
20
+ `init_skill.py` noise, now removed). A single-file skill (just `SKILL.md` +
21
+ `CHANGELOG.md`) is perfectly canonical.
22
+
23
+ ## Frontmatter (required keys)
24
+
25
+ ```yaml
26
+ ---
27
+ name: <kebab-case> # matches the directory name
28
+ effort: medium # low | medium | high | xhigh | max (effort-protocol.md)
29
+ version: 1.0.0 # the skill's OWN SemVer
30
+ description: > # triggers + what/when; NO angle brackets
31
+ ...
32
+ ---
33
+ ```
34
+
35
+ Order: `name` → `effort` → `version` → `description`. `license` / `metadata` are
36
+ tolerated only on imported third-party skills; do not add other keys.
37
+
38
+ ## Body headers (in order, when applicable)
39
+
40
+ 1. `## Project Context` — when the skill reads `baldart.config.yml`
41
+ (`framework/templates/skill-project-context.snippet.md`).
42
+ 2. `## Effort` — the inline-override block
43
+ (`framework/templates/skill-effort.snippet.md`).
44
+ 3. The skill's own workflow / playbook / reference sections.
45
+
46
+ ## Versioning + CHANGELOG discipline
47
+
48
+ - **Why a separate `CHANGELOG.md`?** `SKILL.md` is loaded into context every time
49
+ the skill triggers; a changelog inside it would burn tokens on every invocation
50
+ for history the runtime never needs. Keeping it in a sibling file means the
51
+ history is there for a human/maintainer but costs zero runtime context.
52
+ - **`version` is the skill's OWN SemVer**, independent of the framework `VERSION`.
53
+ It lets a skill evolve deliberately and be diffed over time.
54
+ - **PATCH** — wording/clarity fix, no behaviour change.
55
+ - **MINOR** — added a capability, reference, or option (backwards-compatible).
56
+ - **MAJOR** — changed the invocation contract, removed a step, or otherwise broke
57
+ a caller's expectations.
58
+ - **Every change to a skill bumps `version` AND adds a `CHANGELOG.md` entry** in the
59
+ same edit. The framework `CHANGELOG.md` (repo root) still records the release; the
60
+ per-skill one records the skill's own line of evolution.
61
+
62
+ ### `CHANGELOG.md` format (Keep-a-Changelog-lite)
63
+
64
+ ```markdown
65
+ # Changelog — <name>
66
+
67
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
68
+
69
+ ## 1.1.0 — 2026-08-15
70
+ - Added: <what changed>.
71
+
72
+ ## 1.0.0 — 2026-07-01
73
+ - Baseline.
74
+ ```
75
+
76
+ ## Validation
77
+
78
+ `python framework/.claude/skills/skill-creator/scripts/quick_validate.py <skill-dir>`
79
+ returns valid but WARNS when `version` / `effort` / `CHANGELOG.md` are missing
80
+ (non-fatal, for backwards-compat with pre-convention skills). New skills must be
81
+ warning-free.
@@ -17,11 +17,18 @@ from pathlib import Path
17
17
 
18
18
  SKILL_TEMPLATE = """---
19
19
  name: {skill_name}
20
- description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.]
20
+ effort: medium
21
+ version: 1.0.0
22
+ description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it. No angle brackets.]
21
23
  ---
22
24
 
23
25
  # {skill_title}
24
26
 
27
+ <!-- BALDART canonical structure: keep `name` + `effort` + `version` in frontmatter,
28
+ ship a sibling CHANGELOG.md (already created), and paste the `## Project Context`
29
+ + `## Effort` headers from framework/templates/*.snippet.md right after the intro.
30
+ See framework/.claude/skills/skill-creator/references/skill-structure.md. -->
31
+
25
32
  ## Overview
26
33
 
27
34
  [TODO: 1-2 sentences explaining what this skill enables]
@@ -102,87 +109,14 @@ Files not intended to be loaded into context, but rather used within the output
102
109
  **Any unneeded directories can be deleted.** Not every skill requires all three types of resources.
103
110
  """
104
111
 
105
- EXAMPLE_SCRIPT = '''#!/usr/bin/env python3
106
- """
107
- Example helper script for {skill_name}
108
112
 
109
- This is a placeholder script that can be executed directly.
110
- Replace with actual implementation or delete if not needed.
113
+ CHANGELOG_TEMPLATE = """# Changelog {skill_name}
111
114
 
112
- Example real scripts from other skills:
113
- - pdf/scripts/fill_fillable_fields.py - Fills PDF form fields
114
- - pdf/scripts/convert_pdf_to_images.py - Converts PDF pages to images
115
- """
115
+ Formato: [Keep a Changelog](https://keepachangelog.com/) · [SemVer](https://semver.org/).
116
116
 
117
- def main():
118
- print("This is an example script for {skill_name}")
119
- # TODO: Add actual script logic here
120
- # This could be data processing, file conversion, API calls, etc.
117
+ ## 1.0.0 — TODO-DATE
121
118
 
122
- if __name__ == "__main__":
123
- main()
124
- '''
125
-
126
- EXAMPLE_REFERENCE = """# Reference Documentation for {skill_title}
127
-
128
- This is a placeholder for detailed reference documentation.
129
- Replace with actual reference content or delete if not needed.
130
-
131
- Example real reference docs from other skills:
132
- - product-management/references/communication.md - Comprehensive guide for status updates
133
- - product-management/references/context_building.md - Deep-dive on gathering context
134
- - bigquery/references/ - API references and query examples
135
-
136
- ## When Reference Docs Are Useful
137
-
138
- Reference docs are ideal for:
139
- - Comprehensive API documentation
140
- - Detailed workflow guides
141
- - Complex multi-step processes
142
- - Information too lengthy for main SKILL.md
143
- - Content that's only needed for specific use cases
144
-
145
- ## Structure Suggestions
146
-
147
- ### API Reference Example
148
- - Overview
149
- - Authentication
150
- - Endpoints with examples
151
- - Error codes
152
- - Rate limits
153
-
154
- ### Workflow Guide Example
155
- - Prerequisites
156
- - Step-by-step instructions
157
- - Common patterns
158
- - Troubleshooting
159
- - Best practices
160
- """
161
-
162
- EXAMPLE_ASSET = """# Example Asset File
163
-
164
- This placeholder represents where asset files would be stored.
165
- Replace with actual asset files (templates, images, fonts, etc.) or delete if not needed.
166
-
167
- Asset files are NOT intended to be loaded into context, but rather used within
168
- the output Claude produces.
169
-
170
- Example asset files from other skills:
171
- - Brand guidelines: logo.png, slides_template.pptx
172
- - Frontend builder: hello-world/ directory with HTML/React boilerplate
173
- - Typography: custom-font.ttf, font-family.woff2
174
- - Data: sample_data.csv, test_dataset.json
175
-
176
- ## Common Asset Types
177
-
178
- - Templates: .pptx, .docx, boilerplate directories
179
- - Images: .png, .jpg, .svg, .gif
180
- - Fonts: .ttf, .otf, .woff, .woff2
181
- - Boilerplate code: Project directories, starter files
182
- - Icons: .ico, .svg
183
- - Data files: .csv, .json, .xml, .yaml
184
-
185
- Note: This is a text placeholder. Actual assets can be any file type.
119
+ - Skill introdotta. [TODO: 1-line summary of what it does.]
186
120
  """
187
121
 
188
122
 
@@ -233,39 +167,30 @@ def init_skill(skill_name, path):
233
167
  print(f"❌ Error creating SKILL.md: {e}")
234
168
  return None
235
169
 
236
- # Create resource directories with example files
170
+ # Create the per-skill CHANGELOG.md (canonical structure — REQUIRED for every skill).
171
+ # Kept OUT of SKILL.md so version history never burns context when the skill is loaded.
172
+ changelog_path = skill_dir / 'CHANGELOG.md'
237
173
  try:
238
- # Create scripts/ directory with example script
239
- scripts_dir = skill_dir / 'scripts'
240
- scripts_dir.mkdir(exist_ok=True)
241
- example_script = scripts_dir / 'example.py'
242
- example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name))
243
- example_script.chmod(0o755)
244
- print("✅ Created scripts/example.py")
245
-
246
- # Create references/ directory with example reference doc
247
- references_dir = skill_dir / 'references'
248
- references_dir.mkdir(exist_ok=True)
249
- example_reference = references_dir / 'api_reference.md'
250
- example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title))
251
- print("✅ Created references/api_reference.md")
252
-
253
- # Create assets/ directory with example asset placeholder
254
- assets_dir = skill_dir / 'assets'
255
- assets_dir.mkdir(exist_ok=True)
256
- example_asset = assets_dir / 'example_asset.txt'
257
- example_asset.write_text(EXAMPLE_ASSET)
258
- print("✅ Created assets/example_asset.txt")
174
+ changelog_path.write_text(CHANGELOG_TEMPLATE.format(skill_name=skill_name))
175
+ print("✅ Created CHANGELOG.md")
259
176
  except Exception as e:
260
- print(f"❌ Error creating resource directories: {e}")
177
+ print(f"❌ Error creating CHANGELOG.md: {e}")
261
178
  return None
262
179
 
180
+ # Resource directories (scripts/, references/, assets/) are created ON DEMAND — only
181
+ # when the skill actually needs them. We do NOT scaffold empty placeholder dirs (noise).
182
+ # See references/skill-structure.md for what each folder is for.
183
+
263
184
  # Print next steps
264
185
  print(f"\n✅ Skill '{skill_name}' initialized successfully at {skill_dir}")
265
186
  print("\nNext steps:")
266
- print("1. Edit SKILL.md to complete the TODO items and update the description")
267
- print("2. Customize or delete the example files in scripts/, references/, and assets/")
268
- print("3. Run the validator when ready to check the skill structure")
187
+ print("1. Edit SKILL.md: complete the description (no angle brackets), pick the effort")
188
+ print(" baseline, and paste the ## Project Context + ## Effort headers from")
189
+ print(" framework/templates/*.snippet.md.")
190
+ print("2. Fill CHANGELOG.md's 1.0.0 entry (date + one-line summary).")
191
+ print("3. Add references/ (loaded on demand), assets/ (output templates), or scripts/")
192
+ print(" (executables) ONLY if the skill needs them — no empty placeholders.")
193
+ print("4. Run scripts/quick_validate.py <skill_dir> to check the structure.")
269
194
 
270
195
  return skill_dir
271
196