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.
- package/CHANGELOG.md +59 -0
- package/README.md +9 -5
- package/VERSION +1 -1
- package/framework/.claude/hooks/agent-discovery-gate.js +4 -2
- package/framework/.claude/skills/api-design-principles/CHANGELOG.md +7 -0
- package/framework/.claude/skills/api-design-principles/SKILL.md +1 -0
- package/framework/.claude/skills/baldart-push/CHANGELOG.md +7 -0
- package/framework/.claude/skills/baldart-push/SKILL.md +1 -0
- package/framework/.claude/skills/baldart-update/CHANGELOG.md +7 -0
- package/framework/.claude/skills/baldart-update/SKILL.md +1 -0
- package/framework/.claude/skills/bug/CHANGELOG.md +7 -0
- package/framework/.claude/skills/bug/SKILL.md +1 -0
- package/framework/.claude/skills/capture/CHANGELOG.md +7 -0
- package/framework/.claude/skills/capture/SKILL.md +1 -1
- package/framework/.claude/skills/context-primer/CHANGELOG.md +7 -0
- package/framework/.claude/skills/context-primer/SKILL.md +1 -0
- package/framework/.claude/skills/copywriting/CHANGELOG.md +7 -0
- package/framework/.claude/skills/design-sync/CHANGELOG.md +7 -0
- package/framework/.claude/skills/design-sync/SKILL.md +1 -0
- package/framework/.claude/skills/design-system-init/CHANGELOG.md +7 -0
- package/framework/.claude/skills/design-system-init/SKILL.md +1 -0
- package/framework/.claude/skills/doc-writing-for-rag/CHANGELOG.md +7 -0
- package/framework/.claude/skills/doc-writing-for-rag/SKILL.md +1 -0
- package/framework/.claude/skills/ds-edit/CHANGELOG.md +7 -0
- package/framework/.claude/skills/ds-edit/SKILL.md +1 -0
- package/framework/.claude/skills/ds-handoff/CHANGELOG.md +7 -0
- package/framework/.claude/skills/ds-handoff/SKILL.md +1 -0
- package/framework/.claude/skills/ds-new/CHANGELOG.md +7 -0
- package/framework/.claude/skills/ds-new/SKILL.md +1 -0
- package/framework/.claude/skills/ds-render/CHANGELOG.md +7 -0
- package/framework/.claude/skills/ds-render/SKILL.md +1 -0
- package/framework/.claude/skills/e2e-review/CHANGELOG.md +7 -0
- package/framework/.claude/skills/e2e-review/SKILL.md +1 -0
- package/framework/.claude/skills/find-skills/CHANGELOG.md +7 -0
- package/framework/.claude/skills/find-skills/SKILL.md +1 -0
- package/framework/.claude/skills/frontend-design/CHANGELOG.md +7 -0
- package/framework/.claude/skills/frontend-design/SKILL.md +1 -0
- package/framework/.claude/skills/gamification-design/CHANGELOG.md +7 -0
- package/framework/.claude/skills/graph-align/CHANGELOG.md +7 -0
- package/framework/.claude/skills/graph-align/SKILL.md +1 -0
- package/framework/.claude/skills/graphify-bootstrap/CHANGELOG.md +7 -0
- package/framework/.claude/skills/graphify-bootstrap/SKILL.md +1 -0
- package/framework/.claude/skills/i18n/CHANGELOG.md +7 -0
- package/framework/.claude/skills/i18n/SKILL.md +1 -0
- package/framework/.claude/skills/i18n-adopt/CHANGELOG.md +7 -0
- package/framework/.claude/skills/i18n-adopt/SKILL.md +1 -0
- package/framework/.claude/skills/issue-review/CHANGELOG.md +7 -0
- package/framework/.claude/skills/issue-review/SKILL.md +1 -0
- package/framework/.claude/skills/kie-ai/CHANGELOG.md +7 -0
- package/framework/.claude/skills/kie-ai/SKILL.md +1 -0
- package/framework/.claude/skills/lsp-bootstrap/CHANGELOG.md +7 -0
- package/framework/.claude/skills/lsp-bootstrap/SKILL.md +1 -0
- package/framework/.claude/skills/motion-design/CHANGELOG.md +7 -0
- package/framework/.claude/skills/motion-design/SKILL.md +1 -1
- package/framework/.claude/skills/new/CHANGELOG.md +7 -0
- package/framework/.claude/skills/new/SKILL.md +1 -0
- package/framework/.claude/skills/new/references/implement.md +52 -53
- package/framework/.claude/skills/new/references/review-cycle.md +16 -0
- package/framework/.claude/skills/new2/CHANGELOG.md +7 -0
- package/framework/.claude/skills/new2/SKILL.md +1 -0
- package/framework/.claude/skills/overlay/CHANGELOG.md +7 -0
- package/framework/.claude/skills/overlay/SKILL.md +1 -0
- package/framework/.claude/skills/playwright-skill/CHANGELOG.md +7 -0
- package/framework/.claude/skills/playwright-skill/SKILL.md +1 -0
- package/framework/.claude/skills/prd/CHANGELOG.md +7 -0
- package/framework/.claude/skills/prd/SKILL.md +1 -0
- package/framework/.claude/skills/prd-add/CHANGELOG.md +7 -0
- package/framework/.claude/skills/prd-add/SKILL.md +1 -0
- package/framework/.claude/skills/remotion-best-practices/CHANGELOG.md +7 -0
- package/framework/.claude/skills/remotion-best-practices/SKILL.md +1 -0
- package/framework/.claude/skills/seo-audit/CHANGELOG.md +7 -0
- package/framework/.claude/skills/simplify/CHANGELOG.md +7 -0
- package/framework/.claude/skills/simplify/SKILL.md +1 -0
- package/framework/.claude/skills/skill-creator/CHANGELOG.md +7 -0
- package/framework/.claude/skills/skill-creator/SKILL.md +16 -8
- package/framework/.claude/skills/skill-creator/references/skill-structure.md +81 -0
- package/framework/.claude/skills/skill-creator/scripts/init_skill.py +29 -104
- package/framework/.claude/skills/skill-creator/scripts/quick_validate.py +17 -1
- package/framework/.claude/skills/toolchain-bootstrap/CHANGELOG.md +7 -0
- package/framework/.claude/skills/toolchain-bootstrap/SKILL.md +1 -0
- package/framework/.claude/skills/ui-design/CHANGELOG.md +7 -0
- package/framework/.claude/skills/ui-design/SKILL.md +1 -0
- package/framework/.claude/skills/ui-implement/CHANGELOG.md +12 -0
- package/framework/.claude/skills/ui-implement/SKILL.md +235 -0
- package/framework/.claude/skills/ui-implement/references/integration.md +92 -0
- package/framework/.claude/skills/ui-implement/references/playbook.md +71 -0
- package/framework/.claude/skills/webapp-testing/CHANGELOG.md +7 -0
- package/framework/.claude/skills/webapp-testing/SKILL.md +1 -0
- package/framework/.claude/skills/worktree-manager/CHANGELOG.md +7 -0
- package/framework/.claude/skills/worktree-manager/SKILL.md +1 -0
- package/framework/agents/skills-mapping.md +29 -0
- package/framework/docs/ROOT-PRIMITIVES.md +98 -0
- package/framework/templates/primitives/AGENTS.CHANGELOG.md +18 -0
- package/framework/templates/primitives/AGENTS.md +111 -0
- package/framework/templates/primitives/CLAUDE.CHANGELOG.md +15 -0
- package/framework/templates/primitives/CLAUDE.md +41 -0
- package/package.json +1 -1
- package/src/commands/add.js +15 -0
- package/src/commands/doctor.js +65 -0
- package/src/commands/migrate.js +30 -0
- package/src/commands/update.js +31 -0
- package/src/utils/root-primitives.js +418 -0
- package/src/utils/symlinks.js +24 -10
- 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
|
-
**
|
|
117
|
-
When the
|
|
118
|
-
the
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
the
|
|
126
|
-
the
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
**
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
**
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
`
|
|
166
|
-
|
|
167
|
-
|
|
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
|
|
@@ -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
|
---
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -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
|
-
-
|
|
285
|
-
-
|
|
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,
|
|
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
|
-
|
|
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 `
|
|
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 `
|
|
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
|
-
|
|
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
|
-
|
|
110
|
-
Replace with actual implementation or delete if not needed.
|
|
113
|
+
CHANGELOG_TEMPLATE = """# Changelog — {skill_name}
|
|
111
114
|
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
239
|
-
|
|
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
|
|
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
|
|
267
|
-
print("
|
|
268
|
-
print("
|
|
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
|
|