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
Flow run by stardust:direct when invoked with --add-variant <name>: extend the active direction with an additional variant
expression, without re-resolving the direction itself.
When the user has already approved (or rendered) variant A and
asks for B / C / etc. as alternatives, --re-direct is too
heavy: it replaces the active direction, re-runs Phase 1
reasoning, and stale-flags every approved or migrated page
against the prior direction. The user is not changing
direction — they are extending it with additional variant
expressions of the same direction. --add-variant <name> is the
incremental-extension flow.
When --add-variant <name> is passed:
direction.md Active
section is missing, refuse — there is no direction to extend.direct/SKILL.md § Phase 2.5; if it already exists, the
add-variant pass reads it as input and does not regenerate.direction.md.DESIGN-<name>.md — Stitch frontmatter + 6 canonical
sections, inheriting every token that doesn't change
for this variant.DESIGN-<name>.json — sidecar with extensions
(divergence, componentStyle, voice, iaPriorities).
When variant A has been written as the unsuffixed
DESIGN.{md,json} (single-variant flow), upgrade A's files
to the suffixed form (DESIGN-A.{md,json}) and leave the
unsuffixed files in place as backward-compatible aliases
pointing at A — migrate and prototype continue to
resolve the unsuffixed form to A.direction.md under the existing
Active section, titled ## Variant <name>, recording: the
variant's role (faithful / amplified-trait), the captured
trait being amplified (when applicable), the system-level
deviations from variant A, the IA-priority audit (must
match A's audit — variants cannot opt out of preservation
under Mode A), and a one-line thesis.direction.* block.
The active direction has not changed; the direction file's
resolvedAt / phrase / directionFile fields stay untouched.
Pages already in prototyped / approved / migrated
states are not stale-flagged — adding a variant is
additive, not a re-direction. State.json gains a
direction.variants[].<name> entry (per
state-machine.md's multi-variant additions) recording the
new variant's id and DESIGN files.--add-variant <name> infers a parent from the slot name:
A, B, C, ...): parent is the
active direction (the resolved direction in direction.md).
The variant inherits from the active direction's resolved seed.A1, A2, B3, C2...):
parent is the variant whose id is the letter prefix (A1 → A,
B3 → B). The variant is a surface fork of its parent
per reference/multi-variant.md § Surface forks of
role-differentiated variants. The
parent must already exist; if not, refuse and recommend adding
the parent first (--add-variant B before --add-variant B3).Inheritance chains under reimagined mode:
A → active-direction — A inherits from the resolved direction.B → active-direction — B inherits from the resolved direction;
its captured trait is declared in its shape brief.B3 → B → active-direction — B3 inherits from B (parent surface
fork); B's captured trait + role propagate, B3 declares its
surface tuning.Record the chain in direction.md's per-variant section as
Inheritance chain: <child> → <parent> → <root>. Stardust
state.json records the parent in
direction.variants[].parentVariant (per
stardust/reference/state-machine.md § Variants block).
When writing DESIGN-<name>.{md,json}, fields fall into three
categories:
| inherit-as-is | inherit-then-extend | variant-local |
|---|---|---|
colors (palette) — Mode A pin | componentStyle — base treatment from A; variant adds variant-local component overrides keyed by data-variant="<name>" | narrative.northStar — per-variant thesis |
typography family / scale — Mode A pin | extensions.divergence.brand_faithful_inversions[] — A's list is the floor; variant may add inversions that follow from its amplified trait | narrative.overview, narrative.keyCharacteristics — written against the variant's role |
rounded, spacing — site-wide tokens | extensions.iaPriorities[] — same audit as A; cannot opt out under Mode A | voice.examples.do/dont — variant may amplify a captured voice register A didn't lean on |
extensions.colorMeta, typographyMeta, breakpoints | narrative.rules[] — A's house standards inherit; variant adds its own | extensions.divergence.seed.anchors[] — variant may add a captured trait as the anchor for its amplified-trait role |
extensions.systemComponentRoles (abstract roles) | The variant-id stamp in _provenance |
Variants cannot:
Surface-fork-specific rules (when parent is a letter-prefix variant like B → B3):
extensions.capOverrides[]
with a one-sentence rationale citing a captured-source basis.When the user's add-variant request would violate one of the
forbidden rules, refuse with the same § Failure modes (c) hard
rule conflict pattern: name the conflict, propose targeted
alternatives (rebrand mode via --rebrand, or a Mode A
expression that fits within the pins).
direct --add-variant B complete
==============================
Variant role: one captured trait amplified — editorial confidence
Captured trait: caption-band typography + named-driver portraits
Inheritance: palette, typography, rounded, spacing inherited from A
Variant-local: narrative.northStar, voice DOs (eyebrow voice expanded),
componentStyle.heroOverlay (variant override)
IA-priority audit: matches A — commercial-conversion + crisis-affordance preserved
Wrote:
DESIGN-B.md, DESIGN-B.json (alongside DESIGN-A.{md,json})
stardust/direction.md (appended ## Variant B section)
State:
pages unchanged (no stale flags — add-variant is additive)
direction.variants[]: A + B
Next: $stardust prototype <slug> --variant B$stardust direct first.<name> already exists. Refuse — pass --re-direct
and re-resolve the variant explicitly if a refresh is wanted,
or pick a different name (variants are case-sensitive; B and b
are distinct entries but discouraged for clarity)..tessl-plugin
skills
audit
reference
deploy
diff
direct
extract
migrate
prepare-migration
prototype
replica
reskin
rollout
stardust
uplift
reference