baldart 3.6.2
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 +599 -0
- package/README.md +566 -0
- package/VERSION +1 -0
- package/bin/baldart.js +143 -0
- package/framework/.claude/agents/REGISTRY.md +169 -0
- package/framework/.claude/agents/api-perf-cost-auditor.md +291 -0
- package/framework/.claude/agents/code-reviewer.md +350 -0
- package/framework/.claude/agents/codebase-architect.md +391 -0
- package/framework/.claude/agents/coder.md +291 -0
- package/framework/.claude/agents/deep-human-insight.md +198 -0
- package/framework/.claude/agents/doc-reviewer.md +440 -0
- package/framework/.claude/agents/email-deliverability-architect.md +193 -0
- package/framework/.claude/agents/hybrid-ml-architect.md +285 -0
- package/framework/.claude/agents/hyper-gamification-designer.md +149 -0
- package/framework/.claude/agents/legal-counsel-gdpr.md +179 -0
- package/framework/.claude/agents/marketing-conversion-strategist.md +162 -0
- package/framework/.claude/agents/motion-expert.md +108 -0
- package/framework/.claude/agents/onboarding-architect-lead.md +230 -0
- package/framework/.claude/agents/plan-auditor.md +546 -0
- package/framework/.claude/agents/prd-card-writer.md +372 -0
- package/framework/.claude/agents/prd.md +744 -0
- package/framework/.claude/agents/qa-sentinel.md +305 -0
- package/framework/.claude/agents/remotion-animator-orchestrator.md +218 -0
- package/framework/.claude/agents/security-reviewer.md +276 -0
- package/framework/.claude/agents/senior-researcher.md +175 -0
- package/framework/.claude/agents/seo-analytics-strategist.md +156 -0
- package/framework/.claude/agents/skill-improver.md +61 -0
- package/framework/.claude/agents/ui-expert.md +191 -0
- package/framework/.claude/agents/visual-designer.md +190 -0
- package/framework/.claude/agents/website-orchestrator.md +118 -0
- package/framework/.claude/agents/wiki-curator.md +145 -0
- package/framework/.claude/commands/baldart-push.md +15 -0
- package/framework/.claude/commands/check.md +237 -0
- package/framework/.claude/commands/codexreview.md +203 -0
- package/framework/.claude/commands/design-review.md +11 -0
- package/framework/.claude/commands/issue-review.md +34 -0
- package/framework/.claude/commands/new.md +331 -0
- package/framework/.claude/commands/qa.md +257 -0
- package/framework/.claude/hooks/framework-edit-gate.js +208 -0
- package/framework/.claude/hooks/lint-before-commit.sh.template +66 -0
- package/framework/.claude/settings.local.json.example +32 -0
- package/framework/.claude/skills/api-design-principles/SKILL.md +567 -0
- package/framework/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/framework/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/framework/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/framework/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/framework/.claude/skills/baldart-push/SKILL.md +222 -0
- package/framework/.claude/skills/bug/SKILL.md +200 -0
- package/framework/.claude/skills/bug/references/logging-patterns.md +174 -0
- package/framework/.claude/skills/capture/SKILL.md +125 -0
- package/framework/.claude/skills/capture/references/synthesis-template.md +42 -0
- package/framework/.claude/skills/context-primer/SKILL.md +189 -0
- package/framework/.claude/skills/copywriting/SKILL.md +273 -0
- package/framework/.claude/skills/copywriting/references/copy-frameworks.md +338 -0
- package/framework/.claude/skills/copywriting/references/natural-transitions.md +252 -0
- package/framework/.claude/skills/doc-writing-for-rag/SKILL.md +119 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/before-after-examples.md +291 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/compact-templates.md +183 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/frontmatter-minimal.md +112 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/line-count-targets.md +110 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/schemas-and-errors.md +129 -0
- package/framework/.claude/skills/find-skills/SKILL.md +133 -0
- package/framework/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/framework/.claude/skills/frontend-design/SKILL.md +84 -0
- package/framework/.claude/skills/gamification-design/SKILL.md +130 -0
- package/framework/.claude/skills/issue-review/SKILL.md +45 -0
- package/framework/.claude/skills/kie-ai/SKILL.md +262 -0
- package/framework/.claude/skills/kie-ai/references/models-catalog.md +272 -0
- package/framework/.claude/skills/kie-ai/scripts/kie_api.sh +209 -0
- package/framework/.claude/skills/kie-ai/scripts/remove_greenscreen.py +69 -0
- package/framework/.claude/skills/kie-ai/scripts/setup_api_key.sh +77 -0
- package/framework/.claude/skills/motion-design/LICENSE +21 -0
- package/framework/.claude/skills/motion-design/README.md +82 -0
- package/framework/.claude/skills/motion-design/SKILL.md +336 -0
- package/framework/.claude/skills/motion-design/director/choreography.md +93 -0
- package/framework/.claude/skills/motion-design/director/context-adaptation.md +83 -0
- package/framework/.claude/skills/motion-design/director/core-philosophy.md +53 -0
- package/framework/.claude/skills/motion-design/director/decision-framework.md +91 -0
- package/framework/.claude/skills/motion-design/director/disney-principles.md +102 -0
- package/framework/.claude/skills/motion-design/director/emotion-mapping.md +71 -0
- package/framework/.claude/skills/motion-design/director/motion-personality.md +89 -0
- package/framework/.claude/skills/motion-design/director/narrative-structure.md +62 -0
- package/framework/.claude/skills/motion-design/patterns/ambient-continuous.md +81 -0
- package/framework/.claude/skills/motion-design/patterns/entrance-exit.md +82 -0
- package/framework/.claude/skills/motion-design/patterns/multi-element.md +69 -0
- package/framework/.claude/skills/motion-design/patterns/state-feedback.md +96 -0
- package/framework/.claude/skills/motion-design/reference/property-selection.md +95 -0
- package/framework/.claude/skills/motion-design/reference/quality-checklist.md +67 -0
- package/framework/.claude/skills/motion-design/reference/timing-easing-tables.md +106 -0
- package/framework/.claude/skills/motion-design/reference/troubleshooting.md +73 -0
- package/framework/.claude/skills/new/SKILL.md +1687 -0
- package/framework/.claude/skills/playwright-skill/API_REFERENCE.md +652 -0
- package/framework/.claude/skills/playwright-skill/SKILL.md +157 -0
- package/framework/.claude/skills/playwright-skill/package.json +26 -0
- package/framework/.claude/skills/prd/SKILL.md +228 -0
- package/framework/.claude/skills/prd/assets/card-template.yml +232 -0
- package/framework/.claude/skills/prd/assets/epic-template.yml +190 -0
- package/framework/.claude/skills/prd/assets/prd-template.md +230 -0
- package/framework/.claude/skills/prd/assets/state-template.md +78 -0
- package/framework/.claude/skills/prd/references/api-perf-gate.md +152 -0
- package/framework/.claude/skills/prd/references/audit-phase.md +478 -0
- package/framework/.claude/skills/prd/references/backlog-phase.md +145 -0
- package/framework/.claude/skills/prd/references/discovery-phase.md +359 -0
- package/framework/.claude/skills/prd/references/impact-analysis.md +233 -0
- package/framework/.claude/skills/prd/references/prd-add-phase.md +214 -0
- package/framework/.claude/skills/prd/references/prd-writing-phase.md +145 -0
- package/framework/.claude/skills/prd/references/research-phase.md +216 -0
- package/framework/.claude/skills/prd/references/ui-design-phase.md +61 -0
- package/framework/.claude/skills/prd/references/validation-phase.md +72 -0
- package/framework/.claude/skills/prd-add/SKILL.md +222 -0
- package/framework/.claude/skills/prd-add/references/impact-analysis.md +233 -0
- package/framework/.claude/skills/remotion-best-practices/SKILL.md +48 -0
- package/framework/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
- package/framework/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
- package/framework/.claude/skills/remotion-best-practices/rules/audio.md +169 -0
- package/framework/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/framework/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/framework/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
- package/framework/.claude/skills/remotion-best-practices/rules/compositions.md +141 -0
- package/framework/.claude/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/framework/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/framework/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/framework/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/framework/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/framework/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/framework/.claude/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/framework/.claude/skills/remotion-best-practices/rules/images.md +130 -0
- package/framework/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/framework/.claude/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/framework/.claude/skills/remotion-best-practices/rules/lottie.md +67 -0
- package/framework/.claude/skills/remotion-best-practices/rules/maps.md +401 -0
- package/framework/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/framework/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/framework/.claude/skills/remotion-best-practices/rules/parameters.md +98 -0
- package/framework/.claude/skills/remotion-best-practices/rules/sequencing.md +118 -0
- package/framework/.claude/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/framework/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/framework/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/framework/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
- package/framework/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/framework/.claude/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/framework/.claude/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/framework/.claude/skills/remotion-best-practices/rules/trimming.md +52 -0
- package/framework/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
- package/framework/.claude/skills/seo-audit/SKILL.md +394 -0
- package/framework/.claude/skills/seo-audit/references/aeo-geo-patterns.md +279 -0
- package/framework/.claude/skills/seo-audit/references/ai-writing-detection.md +190 -0
- package/framework/.claude/skills/simplify/SKILL.md +137 -0
- package/framework/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/framework/.claude/skills/skill-creator/SKILL.md +356 -0
- package/framework/.claude/skills/skill-creator/references/output-patterns.md +82 -0
- package/framework/.claude/skills/skill-creator/references/workflows.md +28 -0
- package/framework/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/framework/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/framework/.claude/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/framework/.claude/skills/ui-design/SKILL.md +199 -0
- package/framework/.claude/skills/ui-design/references/component-discovery.md +54 -0
- package/framework/.claude/skills/ui-design/references/evaluation.md +171 -0
- package/framework/.claude/skills/ui-design/references/generation.md +109 -0
- package/framework/.claude/skills/ui-design/references/inventory.md +59 -0
- package/framework/.claude/skills/webapp-testing/LICENSE.txt +202 -0
- package/framework/.claude/skills/webapp-testing/SKILL.md +123 -0
- package/framework/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
- package/framework/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/framework/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/framework/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
- package/framework/.claude/skills/worktree-manager/SKILL.md +680 -0
- package/framework/AGENTS.md +240 -0
- package/framework/agents/api-contracts.md +137 -0
- package/framework/agents/architecture.md +145 -0
- package/framework/agents/coding-standards.md +148 -0
- package/framework/agents/data-model.md +110 -0
- package/framework/agents/deployment-protocol.md +232 -0
- package/framework/agents/design-review.md +172 -0
- package/framework/agents/env-reference.md +171 -0
- package/framework/agents/github-issue-subagent.md +252 -0
- package/framework/agents/index.md +261 -0
- package/framework/agents/llm-wiki-methodology.md +216 -0
- package/framework/agents/maintenance-protocol.md +305 -0
- package/framework/agents/observability.md +162 -0
- package/framework/agents/performance.md +155 -0
- package/framework/agents/project-context.md +145 -0
- package/framework/agents/runbook.md +208 -0
- package/framework/agents/security.md +168 -0
- package/framework/agents/skills-mapping.md +286 -0
- package/framework/agents/testing.md +111 -0
- package/framework/agents/workflows.md +215 -0
- package/framework/docs/PROJECT-CONFIGURATION.md +336 -0
- package/framework/docs/references/brand-guidelines.md +170 -0
- package/framework/docs/references/ui-guidelines.template.md +182 -0
- package/framework/routines/code-review.routine.yml +46 -0
- package/framework/routines/doc-review.routine.yml +45 -0
- package/framework/routines/ds-drift.routine.yml +52 -0
- package/framework/routines/full-sweep.routine.yml +51 -0
- package/framework/routines/index.yml +70 -0
- package/framework/routines/skill-improve.routine.yml +50 -0
- package/framework/routines/wiki-review.routine.yml +45 -0
- package/framework/templates/baldart.config.template.yml +113 -0
- package/framework/templates/breaking-change-checklist.md +484 -0
- package/framework/templates/feature-card.template.yml +125 -0
- package/framework/templates/overlays/README.md +44 -0
- package/framework/templates/overlays/copywriting.fidelity-example.md +62 -0
- package/framework/templates/overlays/ui-design.fidelity-example.md +75 -0
- package/framework/templates/skill-project-context.snippet.md +19 -0
- package/framework/templates/spec.template.md +208 -0
- package/package.json +51 -0
- package/src/commands/add.js +229 -0
- package/src/commands/configure.js +385 -0
- package/src/commands/doctor.js +486 -0
- package/src/commands/migrate.js +185 -0
- package/src/commands/push.js +0 -0
- package/src/commands/routines.js +269 -0
- package/src/commands/status.js +130 -0
- package/src/commands/update.js +419 -0
- package/src/commands/version.js +88 -0
- package/src/utils/contamination.js +400 -0
- package/src/utils/git.js +181 -0
- package/src/utils/hooks.js +152 -0
- package/src/utils/routine-adapters/claude-code-cloud.js +78 -0
- package/src/utils/routine-adapters/cron.js +138 -0
- package/src/utils/routine-adapters/github-actions.js +141 -0
- package/src/utils/routine-adapters/index.js +21 -0
- package/src/utils/routines.js +166 -0
- package/src/utils/state.js +143 -0
- package/src/utils/symlinks.js +425 -0
- package/src/utils/ui.js +133 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to BALDART will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [3.6.2] - 2026-05-22
|
|
9
|
+
|
|
10
|
+
BALDART is now published to npm as [`baldart`](https://www.npmjs.com/package/baldart) on every `v*.*.*` tag. End-users can run `npx baldart <cmd>` (without the `-y github:antbald/BALDART` prefix), which resolves through the npm registry and avoids the stale-tarball cache that plagued the GitHub-source installation.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`.github/workflows/publish-npm.yml`** — triggers on `v*.*.*` tag push (and `workflow_dispatch`). Steps: checkout the tagged ref, setup Node 20 with npm registry auth, sync `package.json` version to the `VERSION` file, verify tag matches VERSION (hard fail otherwise), `npm ci`, `npm publish --access public --provenance`. Requires `NPM_TOKEN` repo secret.
|
|
15
|
+
- **`package.json` scripts** — `sync-version` reads `VERSION` and writes it into `package.json`. `prepublishOnly` runs it so manual `npm publish` is also safe.
|
|
16
|
+
- **`package.json` files** — added `VERSION` and `CHANGELOG.md` to the published tarball; removed dangling `LICENSE` reference; removed unused `main` field (this is a CLI package, `bin` is what matters).
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **README.md** — primary install/usage examples now use `npx baldart <cmd>` (npm form). The legacy `npx -y github:antbald/BALDART <cmd>` is mentioned as the fallback for unreleased commits on `main`.
|
|
21
|
+
- **CLAUDE.md** — documented the dual distribution model (npm registry + Git subtree for the framework payload) and the workflow's tag-vs-VERSION gate.
|
|
22
|
+
- **MAINTAINING.md** — release checklist now mentions the npm publish trigger and the `npm view baldart version` verification step.
|
|
23
|
+
|
|
24
|
+
### Why it matters
|
|
25
|
+
|
|
26
|
+
Before this, `npx -y github:antbald/BALDART` was the only install path, and npx's GitHub-tarball cache regularly served stale CLI code even after `update` to a newer framework version — producing confusing errors like *"Template not found at .framework/templates/baldart.config.template.yml"* that referenced bugs already fixed on `main`. Publishing to the npm registry sidesteps that entire caching layer.
|
|
27
|
+
|
|
28
|
+
### Operational note
|
|
29
|
+
|
|
30
|
+
The first tag push to v3.6.2 will fail if `NPM_TOKEN` is not yet configured as a GitHub Actions secret. Generate an **Automation token** on npmjs.com (Settings → Access Tokens → Generate New Token → Automation) and add it as `NPM_TOKEN` under repo Settings → Secrets and variables → Actions.
|
|
31
|
+
|
|
32
|
+
## [3.6.1] - 2026-05-22
|
|
33
|
+
|
|
34
|
+
Fix a long-standing path bug: the bulk symlinks (`AGENTS.md`, `agents/`, `.claude/agents/`, `.claude/commands/`), the customizable-template copies (hooks, ui-guidelines, brand-guidelines, backlog templates), and the `baldart.config.template.yml` lookup all referenced `.framework/<sub>` (single `framework/` segment). The Git subtree pull nests the entire BALDART repo under `.framework/`, and the repo itself nests its shippable content under a top-level `framework/` directory — so the real path is `.framework/framework/<sub>`. The bulk symlinks were therefore being created broken (pointed nowhere) and `configure` couldn't find its template, surfacing the misleading *"Run `npx baldart add` first"* error during `update`.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- **`src/utils/symlinks.js`** — introduced `FRAMEWORK_PAYLOAD = .framework/framework` constant. All bulk symlinks (`AGENTS.md`, `agents`, `.claude/agents`, `.claude/commands`), the `copyCustomizableFiles()` source paths (hooks, docs/references, templates copy loop), and the relative-mode symlink callsites now resolve through it. The relative symlink callers no longer mis-prepend `..` (which previously combined with `path.join(cwd, target)` to navigate ABOVE the consumer repo).
|
|
39
|
+
- **`src/commands/configure.js`** — `TEMPLATE_PATH` corrected to `.framework/framework/templates/baldart.config.template.yml`.
|
|
40
|
+
- **`src/commands/update.js`** — schema-drift template lookup corrected to the same path.
|
|
41
|
+
- **`src/commands/doctor.js`** — `loadConfigTemplate()` corrected to the same path.
|
|
42
|
+
|
|
43
|
+
### Why it matters
|
|
44
|
+
|
|
45
|
+
Until now, every consumer had **broken** `AGENTS.md`/`agents/`/`.claude/agents/`/`.claude/commands/` symlinks (pointing at paths that don't exist) — Claude Code silently saw "no shared agents/commands" and used only what the user had authored locally. Same story for `configure`: it could never find its template, so it bailed and the user's `baldart.config.yml` was never generated automatically during `update`. After v3.6.1, on the next `npx baldart update` the symlinks get re-created with the correct `.framework/framework/` target and `configure` runs end-to-end.
|
|
46
|
+
|
|
47
|
+
## [3.6.0] - 2026-05-22
|
|
48
|
+
|
|
49
|
+
`npx baldart update` now handles a dirty consumer worktree gracefully instead of crashing with `fatal: working tree has modifications. Cannot add.` from `git subtree pull`. Before the subtree pull runs, the CLI detects uncommitted changes, lists them, and offers to auto-stash + re-apply automatically after the update.
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
|
|
53
|
+
- **`src/commands/update.js` pre-flight check** — after the user confirms "Proceed with update?", if the working tree is dirty: the CLI lists the dirty paths and asks "Auto-stash now and re-apply after the update (recommended) / Abort". Stash is labelled `baldart-pre-update-<ISO timestamp>` for traceability.
|
|
54
|
+
- **Auto-pop after success** — on a successful subtree pull the stash is popped. If the pop conflicts with the framework update, the stash is left intact and the user gets a `STASH CONFLICT` box with recovery commands (`git stash list`, `git stash pop`).
|
|
55
|
+
- **Auto-restore on failure** — if the subtree pull itself fails after stashing, the stash is restored automatically so the user's pre-update changes never appear lost.
|
|
56
|
+
|
|
57
|
+
### Why it matters
|
|
58
|
+
|
|
59
|
+
Combined with the v3.5.0 post-update auto-commit, the full update flow now keeps the worktree clean on entry AND on exit, without ever silently dropping the user's work-in-progress.
|
|
60
|
+
|
|
61
|
+
## [3.5.1] - 2026-05-22
|
|
62
|
+
|
|
63
|
+
Fix `npx baldart update` crashing with `EEXIST: file already exists, symlink …` when the bulk symlinks (`AGENTS.md`, `agents`, `.claude/agents`, `.claude/commands`) were broken (target sparito dopo un cleanup o move). `fs.existsSync` segue il symlink e tornava `false` per i broken link → il ramo di cleanup veniva saltato → `fs.symlinkSync` falliva creando il nuovo link sopra quello rotto.
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- **`src/utils/symlinks.js` `createSymlink()`** — switched from `fs.existsSync` to `fs.lstatSync` (with try/catch) to detect broken symlinks and treat them as "existing symlink to wrong target" → unlink + recreate.
|
|
68
|
+
- **`src/utils/symlinks.js` `verifySymlinks()`** — same fix on the diagnostic path, so broken bulk symlinks are now reported as `Broken symlink: <link> → <target>` instead of being misclassified as `Missing`.
|
|
69
|
+
|
|
70
|
+
## [3.5.0] - 2026-05-22
|
|
71
|
+
|
|
72
|
+
`npx baldart update` now offers to commit the post-update reconcile (symlinks, hook registration, state.json, routine adapters, etc.) in a single dedicated commit, so the consumer's worktree stays clean and there is a clear revert point per upgrade.
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- **`src/commands/update.js` `postUpdateAutoCommit()`** — runs after all post-update reconcile steps. Scans `git status`, filters to a BALDART-managed allowlist (`.framework/`, `AGENTS.md`, `agents`, `.claude/{agents,commands,skills,hooks,routines,settings.json}`, `.baldart/`, `baldart.config.yml`, `docs/references/{ui-guidelines.template,brand-guidelines}.md`, `templates/`, `.github/workflows/baldart-*`, `scripts/routines/`), shows a preview and asks before committing as `chore(baldart): post-update reconcile to vX.Y.Z`. User-owned dirty paths are never staged.
|
|
77
|
+
- **`bin/baldart.js` `--no-commit` flag on `update`** — skips the prompt entirely for CI/scripted runs.
|
|
78
|
+
|
|
79
|
+
### Why it matters
|
|
80
|
+
|
|
81
|
+
Before v3.5.0 every `update` left a dirty worktree (the subtree-pull commit only covers `.framework/`; symlink reconcile + hook + state writes happen outside it). Consumers either had to `git status` and craft a commit by hand or live with a noisy `git status`. The new flow keeps the post-update side effects bundled in one self-describing commit you can `git revert` if anything goes wrong.
|
|
82
|
+
|
|
83
|
+
## [3.4.1] - 2026-05-22
|
|
84
|
+
|
|
85
|
+
Fix `npx baldart update` crashing with `ReferenceError: newVersion is not defined` after a successful framework update. The update completed correctly but the final "WHAT CHANGED" summary referenced an out-of-scope `const`, surfacing the error through the outer catch and exiting non-zero — confusing the user and breaking CI signal.
|
|
86
|
+
|
|
87
|
+
### Fixed
|
|
88
|
+
|
|
89
|
+
- **`src/commands/update.js`** — hoisted `newVersion` declaration above the inner try/catch (`let newVersion;`) so the "WHAT CHANGED" box can read it. The `const` lived inside the inner try block (lines 105–138) and was unreachable from the success summary below it.
|
|
90
|
+
|
|
91
|
+
## [3.4.0] - 2026-05-22
|
|
92
|
+
|
|
93
|
+
Worktree manager now respects terminal isolation. The `/mw` skill no longer runs `git checkout develop` on the main repo (which is a shared resource across parallel terminals in worktree-driven projects). Same for `/nw` pre-flight. Reported from a production failure in the `mayo` consumer where CLAUDE.md declares terminal-isolation as an absolute rule and Claude Code's classifier preemptively blocked the checkout.
|
|
94
|
+
|
|
95
|
+
### Changed
|
|
96
|
+
|
|
97
|
+
- **`framework/.claude/skills/worktree-manager/SKILL.md` `/mw` step 4c** — replaced local-checkout merge (`git checkout develop && git pull --ff-only && git merge && git push`) with remote merge via GitHub PR (`gh pr create` + `gh pr merge --merge --delete-branch`). The main repo's `HEAD` is never touched. Local `develop` is synced via `git -C <main> pull --ff-only` ONLY when the main repo HEAD is already `develop`; otherwise we just fetch and leave the user's working state alone.
|
|
98
|
+
- **`/mw` step 4c fallback** — if `gh pr merge` CLI fails (typically on the local-branch cleanup when `develop` is checked out in another worktree), fall back to the REST API (`gh api -X PUT repos/:owner/:repo/pulls/:n/merge`). Hard-fails (no local-checkout fallback) — the user installs `gh` and re-runs.
|
|
99
|
+
- **`/nw` pre-flight (step 1) + step 3** — no longer runs `git checkout develop` on the main repo. Pre-flight is now `git fetch origin develop` (read-only); worktrees branch from `origin/develop` directly.
|
|
100
|
+
- **`/mw` Programmatic API output** — now returns `prNumber` alongside `mergeCommit`.
|
|
101
|
+
- **Safety Rules** in worktree-manager SKILL.md — added explicit `NEVER git checkout/switch/branch on main repo` rule with rationale (terminal isolation, classifier pre-blocking).
|
|
102
|
+
- **`framework/.claude/skills/new/SKILL.md` Phase 6 description + Fail-safe rules** — aligned to the new flow.
|
|
103
|
+
|
|
104
|
+
### Why it matters
|
|
105
|
+
|
|
106
|
+
Many consumer projects declare a "shared main repo" / terminal-isolation rule in their CLAUDE.md. The classifier in Claude Code pattern-matches the rule text (not the runtime state) and preemptively denies `git checkout develop` on the main repo. The legacy flow therefore failed silently in those projects, and the `/new` orchestrator could not close the merge loop — the user had to merge by hand. With v3.4.0 the merge happens entirely server-side via the GitHub API and the main repo is never touched.
|
|
107
|
+
|
|
108
|
+
### Note for consumers
|
|
109
|
+
|
|
110
|
+
`gh` CLI must be installed and authenticated (`gh auth login`). If it isn't, `/mw` STOPs and asks the user to install it — it does NOT fall back to the legacy local-checkout flow.
|
|
111
|
+
|
|
112
|
+
## [3.3.0] - 2026-05-21
|
|
113
|
+
|
|
114
|
+
Real-time contamination gate. A Claude Code `PreToolUse` hook now intercepts every `Edit`/`Write`/`MultiEdit` whose target resolves (via symlink) to a path inside `.framework/`, runs the contamination scanner on the new content, and blocks the call with an informative reason if project-specific tokens are detected. Auto-registered in every consumer at install time.
|
|
115
|
+
|
|
116
|
+
### Added
|
|
117
|
+
|
|
118
|
+
- **`framework/.claude/hooks/framework-edit-gate.js`** — Claude Code `PreToolUse` hook (Node, cross-platform, fail-safe). Reads tool input from stdin, resolves the real path with `fs.realpathSync` (follows symlinks), and checks if it lands inside `.framework/`. If so, scans the new content via the existing contamination utility and returns `permissionDecision: "deny"` with a structured reason walking the user through three resolution paths: (A) reformulate generically using `${paths.X}`/`identity.X`/`stack.X`, (B) move to `.baldart/overlays/<skill>.md`, (C) declare the file opt-out with the contamination-scan marker.
|
|
119
|
+
- **`src/utils/hooks.js`** — registration utility. `register()` / `unregister()` / `isRegistered()` operate on `.claude/settings.json` with idempotent JSON merge (preserves user-authored hooks). The registered entry carries a stable `id: "baldart-framework-edit-gate"` for future detection.
|
|
120
|
+
- **Auto-registration**:
|
|
121
|
+
- `baldart add` registers the hook after symlinks are created (creates `.claude/settings.json` if absent, merges otherwise).
|
|
122
|
+
- `baldart update` re-registers (idempotent) — backfills consumers installed before v3.3.0.
|
|
123
|
+
- `baldart doctor` detects missing registration and proposes "Register framework-edit-gate hook" as a remediation action.
|
|
124
|
+
- **`baldart doctor` status line**: new "Edit gate" row in the diagnostic table showing registered vs not-registered.
|
|
125
|
+
|
|
126
|
+
### How it works
|
|
127
|
+
|
|
128
|
+
A typical flow now looks like this. Claude is editing a skill in fidelity-app:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
Claude → Edit .claude/skills/ui-design/SKILL.md (new_string contains "Neo-Brutalism")
|
|
132
|
+
↓
|
|
133
|
+
framework-edit-gate.js fires (PreToolUse)
|
|
134
|
+
↓
|
|
135
|
+
Resolves symlink → /…/.framework/framework/.claude/skills/ui-design/SKILL.md
|
|
136
|
+
↓
|
|
137
|
+
Detects ".framework/" segment → triggers
|
|
138
|
+
↓
|
|
139
|
+
Runs contamination.scan() on new_string → finds "Neo-Brutalism"
|
|
140
|
+
↓
|
|
141
|
+
Returns permissionDecision: "deny" with structured reason
|
|
142
|
+
↓
|
|
143
|
+
Claude reads the reason, moves the rule to .baldart/overlays/ui-design.md instead.
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The hook is fail-safe: any internal error (missing scanner, parse error, IO error) exits 0 and lets the tool call through. The scanner is a safety net, not a tribunal.
|
|
147
|
+
|
|
148
|
+
### Disabling
|
|
149
|
+
|
|
150
|
+
If the gate gets in the way for a specific session, remove the entry from `.claude/settings.json` under `hooks.PreToolUse[]` (look for `id: "baldart-framework-edit-gate"`). `baldart doctor` will detect the absence and offer to re-register on next run.
|
|
151
|
+
|
|
152
|
+
For per-file legitimate exceptions (docs that legitimately quote canonical paths as illustrative examples), add the existing opt-out marker:
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
<!-- contamination-scan: skip -->
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
or in YAML frontmatter:
|
|
159
|
+
|
|
160
|
+
```yaml
|
|
161
|
+
contamination_scan: skip
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## [3.2.0] - 2026-05-21
|
|
165
|
+
|
|
166
|
+
Single smart entry point. `npx baldart` with no arguments now runs a doctor that diagnoses the install and proposes the next sensible action.
|
|
167
|
+
|
|
168
|
+
### Added
|
|
169
|
+
|
|
170
|
+
- **`baldart doctor` command** + **no-argument shortcut**. Detects (in priority order): not-a-git-repo, framework absent, legacy v2.0.x bulk-skills layout, malformed config, missing config, config schema drift, remote ahead, local framework changes, overlay version drift. Renders a status table, then proposes the matching action(s) and runs each with confirmation. Acts as the new informational default — `npx baldart` no longer prints commander help, it prints a diagnostic.
|
|
171
|
+
- **`--auto` flag**: skips yes/no confirmations for CI; errors out with exit 2 if multiple actions are proposed (avoids guessing in ambiguous states). Pairs cleanly with `--offline` for fully sandboxed runs.
|
|
172
|
+
- **`--offline` flag**: skips the upstream fetch (no remote drift detection).
|
|
173
|
+
- Both flags work without typing `doctor`: `npx baldart --auto --offline` is equivalent to `npx baldart doctor --auto --offline`.
|
|
174
|
+
|
|
175
|
+
### Changed
|
|
176
|
+
|
|
177
|
+
- `npx baldart` with no arguments previously dumped the commander help. It now runs the doctor flow instead. The help is still accessible via `npx baldart --help` or `npx baldart <subcommand> --help`.
|
|
178
|
+
|
|
179
|
+
## [3.1.0] - 2026-05-21
|
|
180
|
+
|
|
181
|
+
Contribution flow upgrade. Centralized framework versioning via `.baldart/state.json`. New `/baldart-push` skill orchestrates safe upstream contributions with automatic contamination autofix, version bump, CHANGELOG generation, and tag push.
|
|
182
|
+
|
|
183
|
+
### Added
|
|
184
|
+
|
|
185
|
+
- **`/baldart-push` skill** (`framework/.claude/skills/baldart-push/`) + slash command (`framework/.claude/commands/baldart-push.md`). Conversational orchestration of the contribution flow with hard rules: no secrets, no overlay/config push, always show current version first.
|
|
186
|
+
- **`src/utils/contamination.js`** — scanner + autofix library. Catalogues every fidelity-app-specific token pattern that v3.0.0 cleaned up. Three severities: `autofixable` (safe substitutions like `docs/design-system/` → `${paths.design_system}/`), `requires-decision` (identity/stack tokens — user reviews per file), `block` (secrets — hard fail).
|
|
187
|
+
- **`src/utils/state.js`** — `.baldart/state.json` read/write. Centralized versioning state: installed_version, install_date, last_update_date, last_pushed_version, last_push_date, rolling history of the last 20 events. Updated automatically by `add`/`update`/`push`.
|
|
188
|
+
- **`baldart version`** command rewritten — now shows installed version + install date, remote drift (ahead/behind), local uncommitted-files count, last-push info, CLI version. New `--offline` flag to skip the upstream fetch.
|
|
189
|
+
- **`baldart push`** command rewritten — auto-pull when behind, file triage, new-skill discovery, contamination scan with per-file decisions, auto VERSION bump, auto-generated CHANGELOG entry (Added/Changed/Removed grouped from diff), annotated tag push, state.json update. Replaces the previous "next steps required" manual workflow.
|
|
190
|
+
- **Triage rules**: hooks customizations (`.claude/hooks/*.sh` non-template) are blocked from push automatically; overlay starter examples (`framework/templates/overlays/*`) are exempted from contamination scan.
|
|
191
|
+
|
|
192
|
+
### Changed
|
|
193
|
+
|
|
194
|
+
- `src/commands/add.js`, `src/commands/update.js` now record events into `.baldart/state.json` after successful operations.
|
|
195
|
+
- The push flow now exits with `Description is required.` when the user provides empty description (was previously a silent failure mode).
|
|
196
|
+
- `AGENTS.md` `§ 4 Non-negotiables (MUST)` split into **4.a Universal MUST** (apply everywhere) and **4.b Workflow MUST** (gated by `features.has_backlog` / `features.has_adrs` / existence of `project-status.md` / overlay-declared conventions). Pre-v3 absolute MUST rules around backlog / ADRs / GitHub issue labels / `git_strategy` are now correctly feature-gated. Duplicate ADR completeness MUST removed.
|
|
197
|
+
- `framework/agents/project-context.md` § 6 autodetection table rewritten as the source of truth, listing all 20 probes that `configure.js detect()` actually runs.
|
|
198
|
+
- README "Migrating an Existing Install" rewritten as `v1.x / v2.x → v3.x` (was v2.1.1 framing), with explicit `npx baldart configure` step and links to `PROJECT-CONFIGURATION.md` § 9.
|
|
199
|
+
- README duplicate `push` command section removed; Quick Start now lists `configure`.
|
|
200
|
+
- `MAINTAINING.md` prefaced with v3.1.0+ automated flow TL;DR (the CLI now does steps that used to be manual: VERSION bump, CHANGELOG entry, tag).
|
|
201
|
+
|
|
202
|
+
### Fixed
|
|
203
|
+
|
|
204
|
+
- `src/commands/push.js` "skip file" branch now distinguishes status `A` (newly added — `git rm -f`) from `M`/`R`/`D` (existing upstream — `git checkout origin/main`). Previously the `checkout` failed silently on newly-added files and they were pushed despite the user's skip decision.
|
|
205
|
+
- `src/commands/push.js` autofix commit now stages only the files autofix actually modified (was sweeping all pushable files, capturing unrelated edits).
|
|
206
|
+
- `src/commands/push.js` partial failure surfaces a rollback SHA snapshot (`git reset --hard <preFlightSHA>`) so the user can undo chore commits cleanly.
|
|
207
|
+
- `src/commands/push.js` path comparisons normalized to forward slashes — fixes Windows where `simple-git` returns `/` but `path.join` produces `\`, so `CHANGELOG.md` and `VERSION` previously fell into the `pushable` bucket and were double-committed.
|
|
208
|
+
- `src/commands/push.js` `buildChangelogEntry` strips the `.framework/` mount-point prefix from path entries (was `.framework/framework/.claude/skills/foo/SKILL.md`; now `framework/.claude/skills/foo/SKILL.md`).
|
|
209
|
+
- `src/commands/configure.js` `mergePreserving` preserves deliberate empty-string user values (was overwriting them with detected defaults).
|
|
210
|
+
- `src/utils/contamination.js` `stack-recharts` rule case-insensitive (was missing lowercase `import 'recharts'`).
|
|
211
|
+
- `src/utils/contamination.js` `secret-api-key` rule catches unquoted assignments (`API_KEY=abc123...` in `.env` files).
|
|
212
|
+
- `src/utils/contamination.js` added secret patterns: GitHub PATs (`ghp_`/`ghs_`/`ghu_`/`gho_`), Slack tokens (`xox[baprs]-`), JWTs.
|
|
213
|
+
|
|
214
|
+
## [3.0.0] - 2026-05-21
|
|
215
|
+
|
|
216
|
+
This is a MAJOR release. Skills no longer hard-code paths, brand identity, or technology stack choices — they read them from `baldart.config.yml` and project-specific overlays. The same skills now work across projects with different design systems, audiences, and stacks.
|
|
217
|
+
|
|
218
|
+
### Added
|
|
219
|
+
|
|
220
|
+
- **Project context system** (3 layers):
|
|
221
|
+
- `baldart.config.yml` at repo root — schema versioned, populated by the new `npx baldart configure` command. Defines `paths.*`, `identity.*`, `stack.*`, `features.*` for the project.
|
|
222
|
+
- `.baldart/overlays/<skill>.md` — consumer-authored per-skill extensions with `base_skill_version` frontmatter for drift detection. Sections marked `## [OVERRIDE] <topic>` replace base skill sections.
|
|
223
|
+
- `framework/agents/project-context.md` — protocol module loaded as MANDATORY pre-read for any skill that touches project-specific facts.
|
|
224
|
+
- **`npx baldart configure` command** — interactive prompts + filesystem autodetection (probes for design-system index, components dirs, backlog, ADRs, wiki overlay, package.json dependencies for charting/animation/E2E framework). Idempotent: re-running merges without clobbering user values. Available as `--non-interactive` for CI.
|
|
225
|
+
- **Project context header convention** — every refactored skill now declares its config dependencies in a dense 4-line header citing `framework/agents/project-context.md` for the protocol.
|
|
226
|
+
- **Overlay starter templates** under `framework/templates/overlays/`:
|
|
227
|
+
- `ui-design.fidelity-example.md` — Neo-Brutalism, Recharts/nivo stack, merchant theming, Safari open command, evaluation thresholds.
|
|
228
|
+
- `copywriting.fidelity-example.md` — 4-pillar brand voice, Italian-only rule, audience register matrix, forbidden vocabulary.
|
|
229
|
+
- **`framework/docs/PROJECT-CONFIGURATION.md`** — comprehensive guide for consumers: schema reference, overlay system, per-skill behaviour when keys are missing, ground-up examples, v2→v3 migration cheat sheet, FAQ.
|
|
230
|
+
- **Status command extensions** — reports `baldart.config.yml` presence + schema version, lists authored overlays with version-drift warnings.
|
|
231
|
+
- **Update command extensions** — never overwrites `baldart.config.yml`; warns when new framework version adds config keys not yet in the consumer's file (suggests re-running configure).
|
|
232
|
+
|
|
233
|
+
### Changed (BREAKING)
|
|
234
|
+
|
|
235
|
+
- **Skills no longer assume the fidelity-app shape**. Sixteen skills with significant hard-coded paths or identity tokens were refactored to resolve them from `baldart.config.yml`; the remaining skills (`api-design-principles`, `remotion-best-practices`, `seo-audit`, `skill-creator`, `worktree-manager`, `find-skills`) had no significant project-leaks and were left untouched. The refactored skills:
|
|
236
|
+
- `ui-design`, `ui-design/references/*` — design-system reads, charting stack, identity-driven aesthetic
|
|
237
|
+
- `copywriting` — brand voice pillars now overlay-driven
|
|
238
|
+
- `prd`, `prd-add`, `prd/references/*`, `prd/assets/*` — backlog/PRD/references paths, design-system gating
|
|
239
|
+
- `new` — backlog and references paths, validation tooling generalized
|
|
240
|
+
- `bug`, `bug/references/logging-patterns.md` — project-specific debug entry points moved to overlay
|
|
241
|
+
- `kie-ai` — design-system reads gated by `features.has_design_system`
|
|
242
|
+
- `motion-design` — illustration-motion path resolved from config
|
|
243
|
+
- `capture` — wiki overlay path from `paths.wiki_dir`, domain vocabulary from overlay
|
|
244
|
+
- `context-primer` — backlog/references/wiki paths from config; feature-gated probing
|
|
245
|
+
- `playwright-skill`, `webapp-testing` — design-system reads gated, theming pairing from overlay
|
|
246
|
+
- `gamification-design` — design system + audience segment from config, customer surface guidance overlay-driven
|
|
247
|
+
- `doc-writing-for-rag` — schemas/errors paths from config, examples marked as illustrative
|
|
248
|
+
- `frontend-design`, `simplify` — design-system reads gated by `features.has_design_system`
|
|
249
|
+
- **Skills refuse to run when their gating feature is `false`**. E.g. `/new` requires `features.has_backlog: true`, `/prd` requires `features.has_prd_workflow: true`, `/capture` requires `features.has_wiki_overlay: true`. This replaces silent degradation with explicit refusal + suggestion to enable the feature in config.
|
|
250
|
+
- **Always-ask on missing keys**. When a skill encounters a required path that is `""`, or a `features.*` flag absent from the YAML, it prompts the user and suggests persisting the answer via `npx baldart configure`. Never defaults to `false` from absence.
|
|
251
|
+
- **`templates/` install excludes framework-internal templates**. `baldart.config.template.yml`, `skill-project-context.snippet.md`, and the `overlays/` example directory live in `.framework/templates/` only — they are consumed by CLI commands and references, not copied to the user's `templates/`.
|
|
252
|
+
|
|
253
|
+
### Migration from 2.x
|
|
254
|
+
|
|
255
|
+
`npx baldart update` warns if `baldart.config.yml` is missing and offers to run configure. Existing v2.x installs need:
|
|
256
|
+
|
|
257
|
+
1. `npx baldart update` (pulls v3.0.0).
|
|
258
|
+
2. `npx baldart configure` (interactive — autodetects ~80% of values from typical fidelity-app layouts).
|
|
259
|
+
3. For projects that relied on the pre-v3 hard-coded opinions (Neo-Brutalism, merchant/customer, Recharts-only): copy the matching `*.fidelity-example.md` from `.framework/templates/overlays/` into `.baldart/overlays/` and adapt.
|
|
260
|
+
4. `npx baldart status` — verify config + overlays.
|
|
261
|
+
5. Commit `baldart.config.yml` and `.baldart/overlays/`.
|
|
262
|
+
|
|
263
|
+
Full migration guide: `.framework/docs/PROJECT-CONFIGURATION.md` § 9.
|
|
264
|
+
|
|
265
|
+
## [1.0.0] - 2026-02-13
|
|
266
|
+
|
|
267
|
+
### Added
|
|
268
|
+
- Complete npm package implementation with CLI
|
|
269
|
+
- 5 commands: add, update, push, version, status
|
|
270
|
+
- Interactive prompts with colored terminal output
|
|
271
|
+
- Git subtree bidirectional sync (pull updates + push improvements)
|
|
272
|
+
- Professional utility classes (git, ui, symlinks)
|
|
273
|
+
- Comprehensive README with npm/npx usage
|
|
274
|
+
- 9 generic AI agents (codebase-architect, coder, code-reviewer, doc-reviewer, prd, plan-auditor, senior-researcher, api-perf-cost-auditor)
|
|
275
|
+
- 17 domain modules (architecture, workflows, testing, security, etc.)
|
|
276
|
+
- 3 commands (/new, /design-review, /issue-review)
|
|
277
|
+
- Templates (feature-card, spec, breaking-change-checklist, ui-guidelines, brand-guidelines)
|
|
278
|
+
- Symlink-based auto-update mechanism
|
|
279
|
+
- Customizable files (hooks, UI guidelines, templates)
|
|
280
|
+
|
|
281
|
+
### Changed
|
|
282
|
+
- **BREAKING**: Replaced bash scripts with npm package
|
|
283
|
+
- **BREAKING**: Installation now via `npx baldart add` instead of bash script
|
|
284
|
+
- **BREAKING**: All commands now use `npx baldart <command>` syntax
|
|
285
|
+
- **BREAKING**: Framework files moved to `framework/` subdirectory
|
|
286
|
+
|
|
287
|
+
### Removed
|
|
288
|
+
- install-framework.sh (replaced by src/commands/add.js)
|
|
289
|
+
- update-framework.sh (replaced by src/commands/update.js)
|
|
290
|
+
- push-improvements.sh (replaced by src/commands/push.js)
|
|
291
|
+
|
|
292
|
+
## [1.1.0] - 2026-02-27
|
|
293
|
+
|
|
294
|
+
### Added
|
|
295
|
+
- 12 new specialized agents: hybrid-ml-architect, hyper-gamification-designer, legal-counsel-gdpr, marketing-conversion-strategist, motion-expert, onboarding-architect-lead, qa-sentinel, remotion-animator-orchestrator, seo-analytics-strategist, ui-expert, visual-designer, website-orchestrator
|
|
296
|
+
- `/qa` command: Standardized QA workflow with 3 profiles (Light, Balanced, Deep)
|
|
297
|
+
- `/check` command: Pre-development parallel quality audits on backlog cards using agent teams
|
|
298
|
+
- QA Protocol in REGISTRY.md with profile selection guide and self-healing loop
|
|
299
|
+
- Batch tracking protocol in `/new` command for parallel session safety
|
|
300
|
+
- Context recovery protocol in `/new` for resilience after context compaction
|
|
301
|
+
- Phase 3.5 (QA Validation) in `/new` pipeline with automatic profile selection
|
|
302
|
+
- Phase 7 (Production Readiness Checklist) in `/new` pipeline
|
|
303
|
+
- Branching Strategy section in AGENTS.md (Simplified Git Flow with develop branch)
|
|
304
|
+
- Execution Modes section in AGENTS.md (local/cloud/hotfix)
|
|
305
|
+
- Pre-commit vs Pre-PR build check separation in AGENTS.md
|
|
306
|
+
- Macro Feature Identification Protocol in doc-reviewer
|
|
307
|
+
- Single Source of Truth (SSOT) Protocol in doc-reviewer
|
|
308
|
+
- Post-Development Doc Debt tracking in doc-reviewer
|
|
309
|
+
- Multi-phase review with risk matrix in plan-auditor
|
|
310
|
+
- PRD Review & Confirmation phase (Phase 2.1) with [TO CONFIRM] markers in prd
|
|
311
|
+
- API Performance & Cost Audit phase (Phase 2.5) in prd
|
|
312
|
+
- Autonomous technical decisions (Phase 1A) in prd — agent decides tech, asks user only product questions
|
|
313
|
+
- Parent/child card structure with epic support in prd
|
|
314
|
+
- Bug card template with mandatory clarity analysis in prd
|
|
315
|
+
|
|
316
|
+
### Changed
|
|
317
|
+
- **REGISTRY.md**: Expanded from 9 to 21 agents with compact table format, decision tree, and QA Protocol section
|
|
318
|
+
- **doc-reviewer**: Major rewrite — now fully responsible for documentation (audit + write), with SSOT sync and doc debt tracking
|
|
319
|
+
- **plan-auditor**: Enhanced with 4 expert personas (Staff Engineer, Tech Lead, Security Engineer, SRE), anti-patterns checklist, and pre-mortem scenario
|
|
320
|
+
- **prd**: Major expansion — one-question-at-a-time discovery, gamification validation for B2C, performance audit integration, detailed card templates
|
|
321
|
+
- **senior-researcher**: Improved with AI-readable output format (retrieval index, evidence map, structured reading notes)
|
|
322
|
+
- **code-reviewer**: Added structured output format (Critical/Major/Minor/Recommendations), review checklist, and Linked Skills pattern
|
|
323
|
+
- **coder**: Added explicit build/test/lint gates, task scoping guidelines, and Linked Skills pattern
|
|
324
|
+
- **api-perf-cost-auditor**: Added project context integration section and Linked Skills pattern
|
|
325
|
+
- **new.md**: Added worktree grouping, QA validation phase, production readiness checklist, and context recovery
|
|
326
|
+
- **AGENTS.md**: Added branching strategy, execution modes, testing gates separation, commit hygiene rules
|
|
327
|
+
|
|
328
|
+
## [2.1.1] - 2026-05-18
|
|
329
|
+
|
|
330
|
+
Critical migration-safety fix. v2.0.0 / v2.1.0 introduced a bulk symlink for
|
|
331
|
+
`.claude/skills/` that — on existing installations — silently renamed the
|
|
332
|
+
user's personal skills directory to `.claude/skills.backup` and replaced it
|
|
333
|
+
with the framework symlink. This release fixes the merge strategy and ships
|
|
334
|
+
a migration command for repos already affected.
|
|
335
|
+
|
|
336
|
+
### Added
|
|
337
|
+
|
|
338
|
+
- **`npx baldart migrate` command** — idempotent recovery for repos that ran
|
|
339
|
+
v2.0.0 / v2.1.0 update with the old bulk-symlink strategy:
|
|
340
|
+
- Detects legacy `.claude/skills` bulk symlink and converts it to a real
|
|
341
|
+
directory.
|
|
342
|
+
- Re-merges framework skills as per-item symlinks alongside user skills.
|
|
343
|
+
- Restores `.claude/skills.backup/*` user skills into `.claude/skills/`
|
|
344
|
+
(skipping name collisions, which stay in `.backup/` for manual review).
|
|
345
|
+
- Removes empty `.backup/` directory at the end.
|
|
346
|
+
- Records remaining collisions in `.baldart/skill-conflicts.json`.
|
|
347
|
+
- **Per-skill merge strategy** in `symlinks.js`:
|
|
348
|
+
- `.claude/skills/` is now a **real directory the user owns**.
|
|
349
|
+
- Each framework skill is symlinked individually:
|
|
350
|
+
`.claude/skills/<name> → ../../.framework/framework/.claude/skills/<name>`.
|
|
351
|
+
- User-authored skills coexist in the same directory and are NEVER
|
|
352
|
+
overwritten or backed up by the framework.
|
|
353
|
+
- Name collisions are logged to `.baldart/skill-conflicts.json` with
|
|
354
|
+
enough context for the user to resolve them.
|
|
355
|
+
- **`createSymlink` modes** in `symlinks.js`:
|
|
356
|
+
- `safe`: refuses to overwrite a user-customised file/dir (used on fresh
|
|
357
|
+
installs).
|
|
358
|
+
- `prompt` (default): asks before backing up a customised file/dir.
|
|
359
|
+
- `force`: legacy v2.0.x behaviour (no longer used by default).
|
|
360
|
+
|
|
361
|
+
### Changed
|
|
362
|
+
|
|
363
|
+
- `npx baldart add` now runs symlink creation in `safe` mode — first-time
|
|
364
|
+
installs never silently rename user customisations.
|
|
365
|
+
- `npx baldart update` no longer issues a generic "Recreate broken symlinks?"
|
|
366
|
+
prompt that triggered the destructive path. Instead it explains exactly
|
|
367
|
+
what will happen (per-item merge, no overwrites without confirmation) and
|
|
368
|
+
prompts in `prompt` mode.
|
|
369
|
+
- `verifySymlinks()` now spot-checks `.claude/skills/` for the per-item
|
|
370
|
+
layout and reports a clear actionable warning when the legacy bulk
|
|
371
|
+
symlink is detected (`Run npx baldart update or npx baldart migrate`).
|
|
372
|
+
- `createAllSymlinks(opts)` is now `async` because some bulk-symlink
|
|
373
|
+
reconciliations may ask the user for confirmation. All callers updated.
|
|
374
|
+
|
|
375
|
+
### Fixed
|
|
376
|
+
|
|
377
|
+
- **Destructive update path on existing repos**: v2.0.0 / v2.1.0
|
|
378
|
+
`npx baldart update` could rename `.claude/skills/` to `.claude/skills.backup`
|
|
379
|
+
on existing installs without explicit user consent. The new merge strategy
|
|
380
|
+
never touches user-owned content under `.claude/skills/`.
|
|
381
|
+
|
|
382
|
+
### Migration (v1.x / v2.0.x / v2.1.0 → v2.1.1)
|
|
383
|
+
|
|
384
|
+
After updating BALDART:
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
npx baldart update # pulls v2.1.1 framework
|
|
388
|
+
npx baldart migrate # one-shot: converts skills layout, restores .backup
|
|
389
|
+
npx baldart status # confirm
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
`migrate` is idempotent — safe to re-run.
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## [2.1.0] - 2026-05-18
|
|
397
|
+
|
|
398
|
+
Minor release that closes the gap left by v2.0.0: the framework now ships the
|
|
399
|
+
**scheduled routines** that make agents like `wiki-curator` and `skill-improver`
|
|
400
|
+
actually run on a cadence. Without these schedules the auto-learning loops are
|
|
401
|
+
dormant, so every BALDART install is now prompted to configure them.
|
|
402
|
+
|
|
403
|
+
### Added
|
|
404
|
+
|
|
405
|
+
- **`framework/routines/` directory** with 6 declarative routine specs:
|
|
406
|
+
- `wiki-review` — nightly @ 02:00 UTC — drives the LLM-wiki auto-learning loop
|
|
407
|
+
- `doc-review` — nightly @ 00:00 UTC — audits doc changes, flags SSOT drift
|
|
408
|
+
- `code-review` — nightly @ 01:00 UTC — reviews last-24h commits
|
|
409
|
+
- `skill-improve` — weekly Sunday @ 02:00 UTC — refines skills/agents
|
|
410
|
+
- `ds-drift` — weekly Monday @ 03:00 UTC — design-system drift check (optional)
|
|
411
|
+
- `full-sweep` — weekly Sunday @ 03:00 UTC — full SSOT audit (optional)
|
|
412
|
+
- **3 backend adapters** (`src/utils/routine-adapters/`):
|
|
413
|
+
- `claude-code-cloud` — generates `.claude/routines/<name>.json` for RemoteTrigger
|
|
414
|
+
- `github-actions` — generates `.github/workflows/baldart-<name>.yml`
|
|
415
|
+
- `cron` — generates `scripts/routines/<name>.sh` + prints crontab line
|
|
416
|
+
- **`npx baldart routines` command** with 4 subcommands:
|
|
417
|
+
- `list` — shows status for every routine (installed / available / blocked /
|
|
418
|
+
skipped / disabled / unavailable)
|
|
419
|
+
- `install <name>` — interactive install with backend picker
|
|
420
|
+
- `disable <name>` — removes the schedule artifact and updates the lock
|
|
421
|
+
- `doctor` — verifies installed routines still have their artifacts present
|
|
422
|
+
- **Post-install / post-update wizard** — `npx baldart add` and
|
|
423
|
+
`npx baldart update` now surface newly-available routines and offer to
|
|
424
|
+
configure them right after a successful install/update. Skipped routines
|
|
425
|
+
are remembered in `.baldart/routines.lock.json` and not re-prompted.
|
|
426
|
+
- **`.baldart/routines.lock.json`** — durable record of which routines are
|
|
427
|
+
installed, their backend, since-version, and per-routine status.
|
|
428
|
+
|
|
429
|
+
### Changed
|
|
430
|
+
|
|
431
|
+
- `npx baldart add` next-steps box now includes a "Review scheduled routines"
|
|
432
|
+
step pointing to `npx baldart routines list`.
|
|
433
|
+
- `npx baldart update` "what changed" box now includes a routines review
|
|
434
|
+
pointer.
|
|
435
|
+
- Added `js-yaml@^4.1.0` as a runtime dependency for parsing routine specs.
|
|
436
|
+
|
|
437
|
+
### Notes
|
|
438
|
+
|
|
439
|
+
- Routines are **opt-in per backend**: BALDART never installs schedules
|
|
440
|
+
silently. The user picks the backend and reviews the generated artifact
|
|
441
|
+
before committing.
|
|
442
|
+
- The wizard skips routines whose `required_artifacts` are missing (e.g.
|
|
443
|
+
`wiki-review` is blocked until `docs/wiki/` exists). Run `npx baldart
|
|
444
|
+
routines install <name>` later once the artifact lands.
|
|
445
|
+
- The CLI is non-interactive when stdin is not a TTY — safe to run in CI
|
|
446
|
+
contexts (the wizard simply exits).
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## [2.0.0] - 2026-05-18
|
|
451
|
+
|
|
452
|
+
Major release distilled from ~3 months of intensive use of v1.1.0 inside a real
|
|
453
|
+
multi-merchant fidelity/loyalty platform. Introduces the **Skills** category, a
|
|
454
|
+
new **LLM Wiki Overlay methodology**, the `/codexreview` deep multi-agent code
|
|
455
|
+
review command, and a substantial rewrite of every core agent.
|
|
456
|
+
|
|
457
|
+
### Added
|
|
458
|
+
|
|
459
|
+
- **Skills category (new)**: `framework/.claude/skills/` directory with 22
|
|
460
|
+
generic, portable skills shipped out-of-the-box:
|
|
461
|
+
- Workflow skills: `new`, `prd`, `prd-add`, `bug`, `simplify`,
|
|
462
|
+
`worktree-manager`, `issue-review`, `context-primer`
|
|
463
|
+
- Code-quality skills: `skill-creator`, `find-skills`,
|
|
464
|
+
`webapp-testing`, `playwright-skill`
|
|
465
|
+
- Design skills: `frontend-design`, `ui-design`, `motion-design`,
|
|
466
|
+
`gamification-design`
|
|
467
|
+
- Product skills: `seo-audit`, `copywriting`, `api-design-principles`
|
|
468
|
+
- Knowledge skills: `doc-writing-for-rag`, `capture` (LLM wiki overlay)
|
|
469
|
+
- Integration: `kie-ai`, `remotion-best-practices`
|
|
470
|
+
- **5 new agents**:
|
|
471
|
+
- `security-reviewer` — dedicated AppSec auditor for auth/secrets/multi-tenant/infra
|
|
472
|
+
- `deep-human-insight` — psychological / sociological analysis for B2C UX
|
|
473
|
+
- `email-deliverability-architect` — transactional email design + deliverability
|
|
474
|
+
- `skill-improver` — weekly auto-improvement of skills/agents based on review/QA findings
|
|
475
|
+
- `prd-card-writer` — atomic backlog-card generation from approved PRDs
|
|
476
|
+
- `wiki-curator` — derived LLM wiki overlay maintenance (re-introduced and generalized)
|
|
477
|
+
- **`/codexreview` command** — deep multi-agent code review with mandatory
|
|
478
|
+
false-positive validation. Pools findings from `code-reviewer`,
|
|
479
|
+
`security-reviewer`, `api-perf-cost-auditor`, `doc-reviewer`, and
|
|
480
|
+
`plan-auditor` into a single ranked report with dedup and risk weighting.
|
|
481
|
+
- **`agents/llm-wiki-methodology.md`** — full methodology for building a
|
|
482
|
+
derived LLM wiki overlay: layered knowledge stack, page types, frontmatter
|
|
483
|
+
discipline, auto-learning loop (RAG telemetry → synthesis candidates →
|
|
484
|
+
`/capture` skill → new wiki pages), adoption checklist.
|
|
485
|
+
- **Post-Approval Complexity Gate** (in `coder.md`) — explicit isolation-mode
|
|
486
|
+
decision (heavy/light worktree) made by the orchestrator before spawning
|
|
487
|
+
the coder, eliminating ambiguity about who owns branch creation.
|
|
488
|
+
- **High-Risk Path Code Review trigger table** (in `plan-auditor.md`) — five
|
|
489
|
+
generic triggers that force a per-card `/codexreview` BEFORE merge.
|
|
490
|
+
- **Specialist Auto-Spawn matrix** (in `plan-auditor.md`) — auto-routes plans
|
|
491
|
+
to specialist auditors (security, api-perf, ui, ml, docs) based on domain
|
|
492
|
+
signals.
|
|
493
|
+
- **NFR enforcement framework** in `code-reviewer.md` and `new` skill —
|
|
494
|
+
generic performance / security / accessibility MUST rules with a project-
|
|
495
|
+
adaptable anti-pattern list (the "Never demote" cluster).
|
|
496
|
+
- **Findings Schema** — single YAML emit shape across all reviewing agents so
|
|
497
|
+
`/codexreview` can pool and rank findings.
|
|
498
|
+
- **YOLO MODE protocol** — explicit instruction that all Task-spawned
|
|
499
|
+
subagents must use `mode: "bypassPermissions"`.
|
|
500
|
+
|
|
501
|
+
### Changed
|
|
502
|
+
|
|
503
|
+
- **All 9 core agents heavily rewritten** based on 3 months of production use
|
|
504
|
+
in a real project:
|
|
505
|
+
- `plan-auditor.md` (+22 KB): 4 expert personas (Staff Eng / Tech Lead /
|
|
506
|
+
Security / SRE), High-Risk Path triggers, Specialist Auto-Spawn matrix,
|
|
507
|
+
multi-phase review with risk matrix, anti-patterns checklist, pre-mortem.
|
|
508
|
+
- `coder.md` (+17.6 KB): explicit build/test/lint gates, design-system
|
|
509
|
+
SSOT read protocol, conditional binary-outcome items, reuse analysis,
|
|
510
|
+
branch/worktree safety check, completion-report schema, Linked Skills.
|
|
511
|
+
- `codebase-architect.md` (+15.3 KB): Linking Protocol v1 for canonical-
|
|
512
|
+
source resolution, design-system resolution path, agent memory, retrieval
|
|
513
|
+
protocol consumption.
|
|
514
|
+
- `code-reviewer.md` (+14.3 KB): confidence-based filtering (HIGH/MED/LOW),
|
|
515
|
+
"Never demote" anti-pattern cluster, Findings Schema emission, design-
|
|
516
|
+
system compliance section, scope boundary discipline.
|
|
517
|
+
- `doc-reviewer.md` (+10.6 KB): design-system scope (when project has one),
|
|
518
|
+
SCIP-symbol code refs, drift validator suite integration.
|
|
519
|
+
- `api-perf-cost-auditor.md` (+9.2 KB): project context integration, agent
|
|
520
|
+
memory, Findings Schema, retrieval protocol consumption.
|
|
521
|
+
- `qa-sentinel.md` (+6.5 KB): clear gate-runner mandate (no AC checks, no
|
|
522
|
+
code analysis), command output management, operating modes
|
|
523
|
+
(Quick / Full / Deep), documentation coverage check.
|
|
524
|
+
- `senior-researcher.md` (+2.7 KB): retrieval-optimized report format,
|
|
525
|
+
structured reading notes, agent memory.
|
|
526
|
+
- `REGISTRY.md` (+5.4 KB): expanded to 24 agents, Model Selection Matrix,
|
|
527
|
+
QA Protocol, Domain Ownership map, doc-writing responsibility split.
|
|
528
|
+
- **REGISTRY.md** is the **single source of truth** for agent invocation
|
|
529
|
+
routing. `agents/index.md` defers to it.
|
|
530
|
+
- **`coder` vs `doc-reviewer` responsibility split** — `coder` writes only
|
|
531
|
+
minimal invariant doc stubs (API index, UI route, collection entry, env
|
|
532
|
+
var, dependency, SSOT registry); `doc-reviewer` owns full doc writing,
|
|
533
|
+
SSOT sync, and drift resolution.
|
|
534
|
+
- **Pre-commit vs Pre-PR build separation** (clarified in AGENTS.md): lint +
|
|
535
|
+
typecheck + markdownlint at every commit; full `npm run build` and test
|
|
536
|
+
suite only before opening a PR. This matches multi-hour build realities
|
|
537
|
+
in larger projects.
|
|
538
|
+
|
|
539
|
+
### Removed
|
|
540
|
+
|
|
541
|
+
- **`obsidian-sync` agent** removed from the core framework. Mirroring docs to
|
|
542
|
+
an external corpus (Obsidian / Notion / Confluence) is **project-specific**
|
|
543
|
+
and should ship as a project-local agent. The `wiki-curator` agent still
|
|
544
|
+
mentions external-vault sync as an optional coordination step.
|
|
545
|
+
- **Standalone `/qa` command file**. QA functionality remains available via
|
|
546
|
+
the `qa-sentinel` agent and the `/new` skill's Phase 3.5; invocation
|
|
547
|
+
patterns documented in REGISTRY.md § QA Protocol.
|
|
548
|
+
|
|
549
|
+
### Migration Guide (v1.1.0 → v2.0.0)
|
|
550
|
+
|
|
551
|
+
- Run `npx baldart update` from your project root. The framework files in
|
|
552
|
+
`.framework/` are auto-updated via git subtree.
|
|
553
|
+
- The new `.claude/skills/` directory will land in your project after the
|
|
554
|
+
update. Existing skills you authored locally are not touched.
|
|
555
|
+
- If you relied on the old `obsidian-sync` agent, move it to your project's
|
|
556
|
+
`.claude/agents/` (it's a project-specific concern). Update any references
|
|
557
|
+
in `AGENTS.md` to make the dependency explicit.
|
|
558
|
+
- The new `wiki-curator` agent expects a `docs/wiki/` directory and a
|
|
559
|
+
frontmatter validator. See `framework/agents/llm-wiki-methodology.md` for
|
|
560
|
+
the adoption checklist; the agent degrades gracefully if you don't ship a
|
|
561
|
+
RAG layer.
|
|
562
|
+
- Calls to `Task tool` spawning subagents must now pass
|
|
563
|
+
`mode: "bypassPermissions"` (the YOLO MODE protocol). Without this flag the
|
|
564
|
+
subagent will pause for permission prompts and break the orchestration.
|
|
565
|
+
|
|
566
|
+
---
|
|
567
|
+
|
|
568
|
+
## [Unreleased]
|
|
569
|
+
|
|
570
|
+
### Added
|
|
571
|
+
|
|
572
|
+
### Changed
|
|
573
|
+
|
|
574
|
+
### Deprecated
|
|
575
|
+
|
|
576
|
+
### Removed
|
|
577
|
+
|
|
578
|
+
### Fixed
|
|
579
|
+
|
|
580
|
+
### Security
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
## Version Format
|
|
585
|
+
|
|
586
|
+
**MAJOR.MINOR.PATCH**
|
|
587
|
+
|
|
588
|
+
- **MAJOR**: Breaking changes (incompatible API updates, directory structure changes, removed features)
|
|
589
|
+
- **MINOR**: New features (backwards compatible additions)
|
|
590
|
+
- **PATCH**: Bug fixes (backwards compatible fixes)
|
|
591
|
+
|
|
592
|
+
## Change Categories
|
|
593
|
+
|
|
594
|
+
- **Added**: New features
|
|
595
|
+
- **Changed**: Changes in existing functionality
|
|
596
|
+
- **Deprecated**: Soon-to-be removed features
|
|
597
|
+
- **Removed**: Removed features
|
|
598
|
+
- **Fixed**: Bug fixes
|
|
599
|
+
- **Security**: Security fixes
|