changelog
Changelog
All notable changes to @aquaring/aqua-cli are documented here. The format
follows Keep a Changelog, and the project
adheres to Semantic Versioning.
[0.8.0] — 2026-07-24
Changed
- Figma access switched from the desktop MCP server to the REST API:
scripts read
FIGMA_API_TOKENfrom.env.local— no desktop app needed, fully headless. Restores true 2× reference renders (figma-screenshot.mjs [scale]works again), real override text (the MCP placeholder-text bug), raw image fills (figma-images.mjs fills), and any-file access byfileKey. Removed: the figma.mcp.jsonserver entry,figma-mcp.mjs,figma-asset.mjs, and the MCP probe hook (nowcheck-figma-api.shprobing/v1/me).section-builderfetches node data viafigma-fetch.mjs(which gains--pages/--depth). Migration: replaceFIGMA_MCP_URLwithFIGMA_API_TOKENin.env.local.
Fixed
/aqua-cli-initpreflight checks the.aqua-cli.jsoninstall manifest (was still checking the pre-rename.cpdk.json), and offers to clone the project source into a subfolder when run at a wrapper root instead of telling the user to pull the code themselves.
Docs
- New site guides: Your first project, Project rules (with AI-assisted rule-authoring examples), and a Commands reference.
[0.7.0] — 2026-07-23
Added
- Cursor as a second init target.
aqua-cli init --target=claude-code|cursor|both(or an interactive picker) installs the kit for the chosen editor(s). Cursor is copy-driven: everything undertemplates/cursor/andtemplates/common/is scaffolded to.cursor/…and the project root; no rule generation, no Cursor-specific merges this round. - Dual-scope publishing. The CLI now ships under both
@aquaring/aqua-cliand@aquaringlab/aqua-cli(GitHub Packages), via the new./make-release-aqlscript and thepackage.aquaringlab.jsonmanifest.
Changed
- Templates restructured under
templates/{common,claude-code,cursor}/;aqua-cliinstalls per selected target from there instead of a flat root payload. Payload model is now convention-driven directory copies (COPY_DIRS) plus an explicit special-file table (SPECIALS). .aqua-cli.jsonmanifest:targetsis now a keyed object (common+ each installed target, each owning itscopiedlist);mergesstays a single top-level block.uninstallis file-surgical — it removes exactly the tracked files and never deletes the.claude/or.cursor/directories..aqua-cli.map.jsonis regenerated target-keyed;package.jsonfilescollapses to["dist/", "templates/", "CHANGELOG.md"]; the repository now points ataquaringlab/lab-tool-agent-component.
Fixed
updateanduninstallno longer crash on a legacy (targetless) manifest written by an older aqua-cli — they exit cleanly asking you to re-runaqua-cli init --force.
[0.6.0] — 2026-07-23
Added
- Auto-convergence workflow —
/aqua-cli-issue+WORKFLOW.md: nospec.html, parallelsection-builderagents self-converge againstscripts/converge.mjs(SSIM diff, hard 3-iteration cap),rules-checkerconvention post-pass, single-file review viascripts/evidence-pack.mjs. Two user sittings per issue (intake, evidence review). /aqua-cli-pr <number>— review-feedback continuation: fetch PR + inline review comments, classify each item (convention fix / structural / doctrine conflict — conflicts surface to the user and amend RULES.md first), re-converge touched units, one new commit on top, PR notes + review reply./aqua-cli-verify <finding>— measurement-first triage of one manual review finding: classify real-bug vs tooling vs design-source false positive (the latter requires a two-part proof), fix real bugs with exact Figma-derived values, re-converge. Port of the retired/verify-feedbackdoctrine to the convergence workflow./aqua-cli-init(renamed from/cpdk-init) now generatesdevelopment-docs/build-card.md(≤3KB builder doctrine) and writesverification.convergeThreshold(default 0.90).
Changed
- Workflow Claude commands carry the
aqua-cli-prefix:/aqua-cli-init,/aqua-cli-issue,/aqua-cli-pr,/aqua-cli-create-issue(renamed from/cpdk-init,/issue-fast, and/create-issue). converge.mjssupports reference-less breakpoints (e.g. SP not designed yet): diffs only referenced breakpoints, still captures the other render, surfaces the skip in the evidence pack.
Removed
- The entire spec-pipeline workflow.
WORKFLOW-CORE.md,WORKFLOW-COMPONENT.md,WORKFLOW-PAGE.md,WORKFLOW-ESCALATION.md, andWORKFLOW-AI-PR.md; the old spec-pipeline/issue,/pr,/pr-review,/monitor, and/verify-feedbackcommands (replaced by theaqua-cli-*commands above); thehtml-spec-builder,html-spec-corrector,doctrine-conflict, andvisual-diffagents; thespec-batch.mjs,spec-gate.mjs,figma-html.mjs, andcontent-parity.mjsscripts and thegate-html-spec.shhook.WORKFLOW.mdis now the single workflow; the fragments it borrowed (shared-component serialization, link-URL rules, hand-off report) are inlined. Recoverable from git history if ever needed.
[0.5.1] — 2026-07-16
Changed
- Renamed the CLI and package — command
cpdk→aqua-cli; package@aquaringlab/cpdk→@aquaring/aqua-cli; home repo →aquaring/aqua-ai-develop-kit. This is a clean break: every on-disk artifact was renamed (.cpdk.json→.aqua-cli.json, theCLAUDE.mdmarkers<!-- cpdk:start/end -->→<!-- aqua-cli:start/end -->, the.gitignorecomment, and the shell-completion markers/functions). Projects initialized with the oldcpdkare not migrated — run the oldcpdk uninstall, thenaqua-cli init. - Setup docs now install the CLI with
npm install -g @aquaring/aqua-clifollowed byaqua-cli init, instead ofnpx @aquaring/aqua-cli init.
Fixed
- Generated manifest excludes
.DS_Store.
[0.5.0] — 2026-07-16
Added
cpdk updatestaleness warning —updateonly re-applies the payload bundled in the installed CLI, so a stale global install silently kept re-applying an old kit. Before the confirm prompt,updatenow queries the registry for the latest version (npm view, reusing the user's~/.npmrcauth) and, when newer, prints thenpm install -g @aquaringlab/cpdk@latestupgrade hint. Best-effort: offline / unauthenticated / timeout skip the check silently.
Changed
- Skills restructured from flat files to directory format
(
.claude/skills/<name>/SKILL.md) so they can carry supporting files.
[0.4.0] — 2026-07-16
Added
/make-releaseskill (.claude/skills/make-release.md) — the release procedure as an invocable skill: bump inference from Conventional Commits, the local gate, version/changelog/tag choreography, and the GitHub-Packages-via-tag-push publishing model./update-docsskill (.claude/skills/update-docs.md) — keepsREADME.md, the Docusaurus site underwebsite/, andCHANGELOG.mdin sync with code changes: a change→docs mapping table, thesidebars.tsregistration rule, and a mandatory site build before reporting done.
[0.3.0] — 2026-07-15
Added
.claude/agents/html-spec-builder.md— agent-driven spec generation as the PRIMARY WORKFLOW-CORE §2 path: one agent per unit authorsspec.htmldirectly from the Figma MCP data tools (get_design_context+get_metadata) under embedded fidelity rules (values only from data, load-bearing structure preserved, position from coordinates, exporter-trap reversal — e.g. stalegapnext tojustify-betweendeleted). Emits the same spec.html contract the transpiler did (dual[data-breakpoint]subtrees,data-design-width/height,data-node-id/data-name/data-component, CAVEATS header). Gate fix rounds re-dispatch the builder with the gate JSON; trust anchors are unchanged (spec-gate.mjs+ user approval — seedocs/superpowers/specs/2026-07-15-agent-spec-builder-design.md).scripts/figma-asset.mjs— host-validated single-asset downloader from the desktop MCP asset server (the builder's asset path).scripts/spec-batch.mjs— one-command Phase-5 spec batch, now in three modes:--prepare(reference exports only, before the builder wave),--gate(spec-gate existing specs vs the prepared refs),--transpile(the legacy fullfigma-html.mjssequence, kept as the fallback path). Writes a per-unit summary (figma-refs/<N>/spec-batch.json). Skips units already user-approved / implemented / verified unless--force.scripts/page-parity.mjs— one-pass Phase-6 assembly parity: the unit-parity check for every section of the assembled page in a single browser session, from a units JSON (selector +.gaterefs per section).scripts/content-parity.mjs— deterministic DOM-content diff of a built section vs its approved spec.html per breakpoint: missing/altered text lines (line breaks included), dropped repeated items,<img>count deltas — the #662-rebuild defect classes SSIM localizes but doesn't name. Runs besideunit-parity.mjsin the CORE §7 default path;manifest-update.mjsnow also requires its verdict (contentParity, MISMATCH needs acontentWaiver) beforeset-status implemented.scripts/lib/band-elements.mjs— flagged diff bands are now mapped to the DOM elements occupying them (flaggedBandElementsin the gate JSON ofspec-gate.mjs/unit-parity.mjs/page-parity.mjs): per band, thedata-node-id/data-name/class elements intersecting its y-range. A locator for the correction loop — the corrector gets "band 7 =.eventsList(node 5029:7231)" instead of a bare band index + heatmap.
Changed
- Spec generation trust root revised (WORKFLOW-CORE §2, WORKFLOW-PAGE
Phase 5): the
html-spec-builderagent is the primary generator;figma-html.mjs+html-spec-correctornarrow to the documented fallback path (the corrector never touches agent-built specs — their fix rounds re-consult Figma data via the builder).scripts/hooks/gate-html-spec.shdeny message updated; hook logic unchanged. Breaking: a barespec-batch.mjsinvocation (no mode flag) now exits 2 — use--transpilefor the old behavior;spec-batch.jsonrows recorduntranspiledas a single number instead of{pc, sp}. scripts/manifest-update.mjs—set-status <unit> implementedis now evidence-gated likeverified: it refuses unless the unit's-verify.jsonrecords the CORE §7 machine-parity run (unitParity, or aparityWaiver≥30 chars for a waived BLANK/STRUCTURAL; legacy tool records and<unitId>-css.mdunits pass). Closes the hole the #662 rebuild shipped through (8 sections at SSIM 0.20–0.86, zero parity records).scripts/lib/figma-mcp.mjs— transient MCP failures (network error, 429, 5xx) now retry with backoff (1 s / 4 s) before the hard exit.scripts/figma-html.mjs— spec asset downloads run 4-wide instead of serial.WORKFLOW-PAGE.md— Phase 5 spec batch and Phase 6 machine parity now point at the batch scripts; new Pace budgets section (≤1 h agent-time target per page, per-phase targets, fidelity-outranks-pace rule); parallel-first build default — once the spec batch is approved, all fan-out-eligible (page-local) sections dispatch as one subagent wave; inline is the fallback, and the shared-code serialization / serial-verify rules are unchanged.WORKFLOW-CORE.md— §7: SOFT parity verdicts require per-band attribution (unattributed SOFT = STRUCTURAL) and the recordedglobal_ssim ≥ 0.95bar; §8: gate output must be verifiably real tool output (rtk proxy/direct binary re-run on suspicion — the #655 faked-gate incident).
Fixed
- Payload hygiene:
.claude/settings.local.json(user-local permissions) andscripts/__pycache__/(Python bytecode) are now excluded from the copy payload /.cpdk.map.json(they were gitignored but visible to disk walks).
[0.2.0] — 2026-07-11
Added
RULES.md— the project rulebook, extracted fromCLAUDE.md, now shipped alongside theWORKFLOW-*.mdplaybooks and injected into every session via a newscripts/hooks/inject-rules.shSessionStart hook./create-issuecommand — authors component/page issues from the live template..cpdk.map.json— a generated, full listing of every file cpdk ships (directories expanded to individual files), for auditing the scaffold surface without readingsrc/payload.ts. Regenerate withnpm run map(scripts/dev/generate-cpdk-map.mjs, dev-only, excluded from the shipped payload).
Changed
CLAUDE.mdtrimmed to just the Behavioral Guidelines; project-specific doctrine now lives inRULES.md.- Workflow docs: flag PC/SP display divergence as a designer question
(critical rule 6), Phase 6.5 link-URL assignment from
site-map.json(client §10), one-commit-per-session squash policy + pre-commit image cleanup.
[0.1.0] — 2026-07-10
Initial release. Everything below is the first cut of the tool.
Added
cpdk init [--force]— installs the workflow kit into the current project: copies.claude/,scripts/,development-docs/,PROMPT.md, and theWORKFLOW-*.mdplaybooks, runs the file merges, and writes the.cpdk.jsonmanifest.--forceoverwrites existing files and skips the re-init prompt (without it, existing paths are left untouched).cpdk update— re-copies the payload and re-applies every merge idempotently, then bumpscliVersion/installedAtin the manifest.cpdk uninstall [--force]— reverts exactly what was installed, using the manifest: removes copied paths, strips theCLAUDE.mdblock, drops cpdk-added.mcp.jsonservers, removes the placeholder.env.localkey, removes the.gitignoreentry it added, and deletes.cpdk.jsonlast.cpdk completion [shell]— outputs abashorzshcompletion script (shell auto-detected from$SHELLwhen omitted); completes the subcommands and the--forceflag. No runtime dependencies.- Four reversible, idempotent merge engines:
CLAUDE.md— appends the shipped content inside a<!-- cpdk:start -->…<!-- cpdk:end -->marker block; replaces in place on update, never double-appends..mcp.json— mergesmcpServersand tracks the keys it added; uninstall removes only those, and a user's same-named server is preserved..env.local— appendsFIGMA_API_TOKENonly when absent; uninstall removes the line only if the value is still thefigd_replace_meplaceholder, so a real token is never destroyed..gitignore— ensures.env.localis ignored (creates the file if absent), keeping the Figma token out of git; uninstall removes only the entry it added and deletes the file only if it created it and nothing else remains.
.cpdk.jsonmanifest — records the installed version, copied paths, and the exact merge additions, makingupdateanduninstallprecise.- Docusaurus documentation site (
website/) — Intro, Setup, CLI Usage, What gets installed, Using the workflows, Internals, and this changelog.
Notes
- Payload documentation ships under
development-docs/(renamed fromdocs/during development to avoid clashing with the dev-onlydocs/superpowers/artifacts, which are never published). - Single-target by design: Claude Code only, installed as one cohesive kit (no per-component pick-list).