Redesign an existing website to make it better. Built on top of impeccable.
71
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
The contract the two scripts maintain. Design rationale is in
notes/rollout/PLAN.md; this doc is the runtime behaviour.
stardust/rollout/)| File | Writer | Contract |
|---|---|---|
rollout.json | inventory + blocks + update-coverage + verify | target + DA config + lastRun counts |
coverage/pages.json | inventory (rows) + update-coverage/verify (delivery) | one row per migrated page |
coverage/templates.json | inventory + roll-up writers | pages grouped by templateId + roll-ups |
coverage/blocks.json | blocks (rows) + update-coverage (delivery) | one row per distinct block (dedup unit) |
plan.json | plan | dedup-driven delivery order + per-page convert/reuse |
optimize/findings.json | optimize + findings + autofix | multi-source quality findings (detect→fix→verify) |
optimize/scorecard.json | optimize + findings + autofix | per-layer health + overall + history |
site/{sitemap.xml,robots.txt,manifest.json} | assemble | site-level artifacts |
dashboard/{index.html,data.json} | dashboard | self-contained progress view + snapshot |
rollout writes nothing outside this directory. stardust/migrated/,
state.json, and the rest of the agnostic core are read-only inputs.
┌──── migrate emits page ────────────────────────┐
▼ │
content-pending ──► pending ──► converting ──► deployed ──► verified ──────────► stale
▲ ▲ │ │
│ └─ inventory │ │
│ seeds new └──► failed ──(retry)──► converting … │
│ │
└─ inventory seeds (archetypes-only mode, no migrated HTML yet) │
stale/failed pages are re-picked by the next Phase B pass ◄──┘state.json in archetypes-only mode;
no migrated HTML exists yet. Block code is live (deployed via the archetype);
the document push is deferred to the content track. Advances automatically to
pending when migrate emits the page's HTML and inventory is re-run. Not
a failure — these pages are tracked, not lost.content-pending.deploy is mid-flight on this page.about:error).error carries the reason. Non-fatal to the run.migrate re-emitted the page (its
sourceHash changed). Needs re-delivery.Two further per-page fields make delivery quality auditable; both are independent
of delivery.status:
delivery.type — page | fragment | index. Drives what "renders
correctly" means: a fragment has no <h1>, an index is JSON with rows.
verify.mjs infers it from the path when unset and reports the distribution;
a one-size <h1> check false-fails fragments without it.fidelityTier — archetype | sibling | thin (+ archetypeSource,
gatesPassed[]), set by migrate from the render branch
(migrate/reference/fidelity-tiers.md). Records how much QA the page carries:
archetype is craft-gated once per template; sibling is a canon-fork that
inherits that structure and re-checks only content + media + the delivery
contract; thin is a bodyless/PDF page rendered gracefully.The dashboard surfaces the tier distribution alongside status, so
"92/92 deployed" cannot hide "1 craft-gated, 91 ungated clones". Many
unique/thin pages where one template was expected signals a missing
archetype — prototype it, then re-fork its siblings.
On every inventory.mjs run:
sourceHash is recomputed from its migrated HTML bytes (migrated
pages) or from state.json[].currentStatePath content (content-pending pages).pages.json:
delivery is preserved verbatim.deployed,verified} → status becomes
stale (delivered URL retained); otherwise the prior status is kept.content-pending and migrated HTML now exists → status
advances to pending and sourceHash is recomputed from the HTML bytes.content-pending (if sourced from
state.json only) or pending (if migrated HTML is present).slug (from the _meta.json sidecar, else derived from the
delivered path, else from state.json[].slug). The assets/ bundle is never
inventoried.pending ──► converted ──► deployed ──► verified
▲ (the distinct block is converted ONCE, on its
└─ blocks.mjs conversion point in plan.json; siblings reuse it)blocks/<edsBlockName>/) or fragment exists.blocks.mjs is idempotent: a block already past pending keeps its status and
edsBlockName; only still-pending blocks get a freshly derived name.
plan.mjs guarantees each distinct module block is converted on exactly one
page (the first in delivery order that uses it). Per page it emits:
convert[] — blocks introduced here → deploy creates them;reuse[] — blocks already converted → deploy's Step-7 brief reuses them by
edsBlockName, never recreating.Chrome (header/nav/footer) is not per-page; it's listed once under
plan.json.fragments and delivered as the authored /nav + /footer documents
(published content, on the roster like any page).
verify.mjs flips delivered pages to verified or failed based on: reachable
(HTTP 200 / file present), no about:error in the body, and every internal
href="/…" resolving to a known delivered path. Offline --root <dir> mode maps
each delivered path back to a file for testing against a local export.
open ──(no longer detected, in scope)──► fixed ──(regression)──► open
│ ▲
├──(human)──► accepted / wontfix (never auto-reopened) │
└────────────────────── still detected ─────────────────────────┘optimize.mjs is the delivery-quality gate. It writes optimize/findings.json
(append-only runs[] + status-tracked findings[]) and optimize/scorecard.json
(per-layer 0–100, null for unassessed judgment layers, + history[]). The gate
exits non-zero while any open P1 is in scope; fixability routes the fix
(platform-migration → rollout re-deploys; design-pass → upstream; out-of-scope →
informational). See checks.md for the catalog.
update-coverage.mjs, inventory.mjs, blocks.mjs, and verify.mjs all
re-derive, from the per-unit rows:
{ verified, deployed, pending } in templates.json;lastRun.pages + lastRun.blocks counts in rollout.json.So the counts never drift from the per-unit truth — they are always recomputed, never incremented.
.tessl-plugin
skills
audit
reference
deploy
diff
direct
extract
migrate
prepare-migration
prototype
replica
reskin
rollout
stardust
uplift
reference