Changelog
Entries grouped by date, newest first. d2c-docs tracks upstream
d2c-ai/d2c. When upstream ships
a CHANGELOG.md, this page will migrate to fetching from it; until
then it is hand-authored here.
2026-04-20 — Flow parity, auth handling, and a leaner skill surface
A two-part release. First half hardened d2c-build-flow until it matched
d2c-build's discipline mechanisms one-for-one. Second half cut the JS
surface from 25 scripts to 9 by replacing deterministic helpers with
explicit SKILL.md prose — the skill is now prompt-first as Anthropic's
Skills convention intends.
d2c-build-flow parity work
- Phase 1.5 — Flow-level intake. The flow now asks the standard six
/d2c-buildintake questions once upfront (with context-based skip rules) plus a new mobile-design question that collects all per-step mobile Figma URLs in one pass. Answers bundle into aflow_intakeblock and propagate to every per-page dispatch — replacing the silent hardcoded defaults that shipped earlier. - Stepper-step delegation to
/d2c-build. Each step body is now a standalone/d2c-builddispatch withwhat: "component", output atapp/<group_route>/steps/Step<N>.tsx. The orchestrator imports each step and wiresonNext/onBackvia a documented prop contract. Result: every step body passes through the same six non-negotiables as a route page. - Unified Playwright flow-walker. One spec walks the entire loaded
path (visit start → screenshot → click Next → screenshot → click
Next…), pixel-diffs each step against its Figma export, and
auto-fixtures
validate: formsteps from the IR. Replaces N independentpage.goto(URL)runs. Persists user-supplied fixture values to<run-dir>/flow/walker-fixtures.jsonwith user-wins semantics so reruns don't re-prompt. - Per-step Phase 5 audit. Stepper-group virtual pages now audit every emitted file (orchestrator + state context + per-step bodies) instead of once on the virtual page.
flow-decisions-lock.json. Per-decision lock file withlocked → failed → re-lockedlifecycle. Phase 3 / 4 / 5 retries cannot silently change a flow-level choice (mode, shell, project_conventions, stepper_groups, per-page route / layout / mobile_variant, per-edge source / trigger / condition).validate-flow-graph.js --verify-lockenforces it.- Bucket F-Flow honor checks. Five-bucket Phase 5 enforcement on files the flow emits directly (orchestrator, state context, shared layout, nav-smoke spec, walker spec). Catches orchestration-layer drift the per-page audit can't see.
- Walker discipline ports. Phase 4a now ports d2c-build's snapshot/ revert/plateau/oscillation logic and adds a checkpoint resume mechanism so an interrupted walker doesn't have to restart from scratch.
- Auth handling (both skills). New Phase 4.0d (build) and Phase
4a.0b (flow) detect
next-auth/clerk/supabase/middleware, identify gated routes, and branch onhas_api_calls. UI-only flows get a public-route bypass snippet; flows with APIs requireD2C_TEST_USER/D2C_TEST_PASSWORDin.env.localand the walker logs in via Playwright'sstorageState. - Failure-mode catalogue enrichment. Every flow failure-mode entry
now carries
Lock impactandRelated rulefields plus anti-rationalization callouts on trap candidates — matching d2c-build's catalogue discipline.
Lean skill surface (25 → 9 scripts)
A skill is supposed to be prompt-first — markdown that teaches the agent to use its existing tools (Bash, Read, Edit, Glob, Grep). Code is the exception, not the rule. The previous shape leaned too heavily on JS helpers. Cut 16 scripts and their tests; replaced with explicit SKILL.md prose.
The 9 remaining scripts are where code is genuinely necessary:
- Pixel math + browser control (3):
pixeldiff.js,phase4-login.js,screenshot-with-auth.js. - Schema validation + grammar parsing (4):
validate-ir.js,parse-structured-input.js,validate-flow-graph.js,parse-flow-prompt.js. - Atomic hashed lock (1):
write-flow-lock.js. - Init only (1):
detect-conflicts.js.
The cut surfaces (mode detection, shell detection, conventions, walker fixtures / snapshots / checkpoint / preflight, auth detection, validate-honor-flow, render-flow-diagram, format-frame-picker, nav-autofix-plan, pick-link-target, flow-reuse-metric, diff-flow-graph) are now SKILL.md sections with explicit Bash one-liners and reasoning rules. Schemas stay as documentation contracts.
2026-04-15 — Docs site launch
- Landing page. Five-skill bento grid, animated pixel-diff demo in the hero, framework strip, source-of-truth callout.
- Skill reference pages (
/skills/init,/skills/build,/skills/build-flow,/skills/audit,/skills/guard) sourced live from upstream viafetchUpstream(). Six framework guides under/skills/build/<framework>. - Install guide at
/installcovering plugin, npm-skills, and manual install paths. - Reference section added:
- FAQ — comparisons with Locofy / Anima / Builder.io / Figma Dev Mode.
- Token schema — shape of
design-tokens.json, the contract the five skills share. - Skill flags — every
--flagacross all five skills, extracted live from the upstream SKILL.md files. - Plugin manifest — annotated
.claude-plugin/plugin.json. - Troubleshooting — per-skill failure modes and fixes.
- Resilience:
fetchUpstream()falls back topublic/snapshots/when GitHub is unreachable. A "cached" pill surfaces next to the View source link on any page served from a snapshot.- Nightly snapshot refresh workflow opens a PR when upstream
moves (
.github/workflows/refresh-snapshots.yml). - On-demand revalidation endpoint at
POST /api/revalidatefor the upstream → docs webhook (see setup doc for the d2c-ai/d2c side).
- Test harness: Vitest wired up with lib-level coverage for the
markdown pipeline, URL builders, snapshot-fallback resilience, and
skill-flag extraction. GitHub Actions runs
lint,test, andbuildon every PR. - Dev-only a11y checker:
@axe-core/reactwired viasrc/components/axe-dev.tsx; production builds strip the check.