plugins/stardust/skills/stardust/SKILL.md
Guided multi-page redesign of an existing website through a four-phase pipeline — extract (crawl and capture the current site), direct (set a visual direction), prototype (generate redesigned HTML), and migrate (emit a deployable static site). Tracks progress incrementally per page in stardust/state.json so redesigns are resumable. Delegates the per-page design craft (typography, spacing, color, layout, motion) to the impeccable skill. Use when the user wants to redesign, revamp, modernize, or restyle an existing site they can point to by URL, run the extract/direct/prototype/migrate flow, or resume a multi-page redesign. Not for designing a brand-new site from scratch or one-off single-component edits.
npx skillsauth add adobe/skills stardustInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are operating the stardust skill: a guided redesign of an existing
website. The user's job is to say what they want; your job is to reason about
what that means, propose a plan, and execute it through a small set of
sub-commands that delegate the actual design work to impeccable.
impeccable skill in any of
the standard harness directories the project uses (.claude/skills/,
.agents/skills/, .cursor/skills/, etc.). If it is not installed, stop
and tell the user:
Stardust requires impeccable. Install it from https://github.com/pbakaus/impeccable and re-run the command.
<harness>/skills/impeccable/scripts/load-context.mjs. Its JSON output
tells you whether PRODUCT.md and DESIGN.md exist at the project root
(these are the target state for stardust). Skip the loader if it already
ran in this session's history.stardust/state.json if present
(reference/state-machine.md defines the schema). Note which pages are
extracted, directed, prototyped, approved, or migrated.<harness>/skills/impeccable/scripts/command-metadata.json. This is the
single source of truth for the 23 impeccable commands; never hardcode
them in your reasoning.stardust/status.jsonl at each phase start/end, per
reference/run-status.md.Once setup is done, route on the user's input:
No argument. Render the state report described in
reference/state-machine.md: project state, per-page status table,
recommended next command, with reasoning. Do not write anything.
First word names a sub-skill. Delegate to the matching
stardust:<name> skill and pass remaining args through. The master
skill routes all sibling sub-skills:
| keyword | sub-skill | owns |
|---|---|---|
| extract | stardust:extract | crawl + capture the current site |
| direct | stardust:direct | resolve the visual direction |
| prototype | stardust:prototype | per-page redesign prototypes |
| migrate | stardust:migrate | full-site platform-agnostic static HTML |
| prepare-migration | stardust:prepare-migration | the migrate-prep cascade (prep phases, assets, dynamic-blocks gate) |
| deploy | stardust:deploy | one page → EDS blocks + DA delivery |
| rollout | stardust:rollout | whole migrated site → EDS, with coverage + delivery gates |
| diff | stardust:diff | prototype ↔ build fidelity probes (pixel + structural) |
| audit | stardust:audit | three-perspective site audit — design tensions, SEO/technical, LLM visibility — scored report + findings ledger |
| qa | stardust:qa | read-only post-deploy QA sweep of the live site — routing, fidelity, template conformance, rendering, visual regression, SEO, links, a11y, perf — findings report only, never fixes |
| uplift | stardust:uplift | one-shot presales orchestrator (3 variants) |
prototype accepts --cinematic (or --cinematic=<register>)
to layer a brand-faithful motion register on top of the static
prototype (per skills/prototype/reference/motion-registers.md).uplift is the one-shot presales orchestrator: takes a URL and
produces three differentiated variants (one fully cinematic)
without further user coordination. Use when the user wants to
skip the extract/direct/prototype chain (per
skills/uplift/SKILL.md).First word is anything else (a freeform phrase). Treat it as a
redesign intent. Load reference/intent-reasoning.md and follow the
procedure step by step. Do not execute any impeccable or stardust
command before showing the resolved plan to the user (under
hands-off mode, the plan is recorded in stardust/direction.md
instead of awaiting confirmation — see § Hands-off mode).
Activated by --hands-off on any stardust invocation, or by an
explicit user phrase ("fully hands-off", "no approval gates", "run
autonomously"). On activation, stamp state.json.handsOff: true
(schema note in reference/state-machine.md § Hands-off keys) and
append an activation line to stardust/direction.md. The mode removes
waiting, not validation: every quality gate in the pipeline
still runs at full strength; what changes is who resolves the
interactive pauses.
Under hands-off, every interactive gate across the pipeline auto-resolves:
| gate | hands-off resolution |
|---|---|
| direct clarifying questions | derive the answers from the captured evidence (stardust/current/), and state each as a named assumption in direction.md |
| prototype brief-confirmation waits | skip; proceed on the authored brief |
| prototype approval | granted by the agent's own judgment only after all quality gates pass (craft bar, validation loop, motion gates); recorded as approvedBy: "hands-off" on the page's approved history entry in state.json |
| prepare-migration phase gates | behave as --skip-confirm |
| rollout | runs full-auto end-to-end |
Defaults under hands-off (override only when the invocation says otherwise):
direction.md.direction.md.deploy § Token hygiene (#16) specifies: .gitignore must cover
.env, .env.*, and qa/ before anything is committed — in
the happy path the first commit lands at the end of the audit
phase, long before deploy's SKILL.md is ever read, and a tracked
.env poisons every later push (stardust-style e2e finding: GH013
push rejection + history rewrite at deploy time).Hard blockers remain stops. An unreachable source site, an
expired DA_TOKEN that cannot be recovered, or a signal-absent brand
surface (extract captured no usable brand signal even after a re-run)
are not judgment calls — state the blocker precisely, append
event: "blocked" to stardust/status.jsonl, and halt. Never guess
around a hard blocker.
Quality gates NEVER weaken under hands-off. Provenance validation, the validation loop, fidelity gates, delivery gates, and rollout's optimize gate all run unchanged. Hands-off changes who answers, not what must pass.
Stardust does not ship a closed intent → commands lookup. Every freeform
phrase is reasoned about in public. You must:
reference/intent-dimensions.md).reference/impeccable-command-map.md.stardust/direction.md with a stardust provenance block.Worked examples of this procedure live in reference/intent-examples.md.
Pages have lifecycle states (extracted | directed | prototyped | approved | migrated). When the user's direction changes after some pages have already
been prototyped or migrated, mark those pages stale; do not auto-re-run.
The user opts in to re-prototyping or re-migrating explicitly. Details in
reference/state-machine.md.
Stardust state lives under stardust/. Impeccable's PRODUCT.md /
DESIGN.md / DESIGN.json live at the project root and represent the
target state. The current (extracted) state lives under
stardust/current/. Full layout in reference/artifact-map.md.
Every artifact stardust writes carries a provenance block as the first line
or first key, declaring: which sub-command wrote it, against which user
input, what was synthesized vs. authored, and what other artifacts were
read. Format conventions in reference/artifact-map.md.
A multi-session stardust project benefits from a chronological journal that records the prompt history, decisions, and open questions across turns — separate from the state machine and from per-artifact provenance. State.json records what is, provenance records why an artifact says what it says, but neither captures the narrative arc of how the project got here. The journal does.
Maintain stardust/journal.md per the format in
reference/journal-format.md. On every prompt execution that resulted in
a non-trivial write (any direct, prototype, migrate, or substantial
iteration), append an entry before ending the turn.
The journal is append-only. If a prior entry turns out wrong, write a new entry that corrects it; do not edit history. This preserves the reasoning trace and lets reviewers see how decisions evolved.
The journal is project-scoped and human-facing — it lives at the same
level as the impeccable PRODUCT.md, not under stardust/current/ or
stardust/canon/. Treat it as the shared narrative layer over stardust's
state machine.
When the user invokes stardust at the start of a new session, the journal is read first (along with state.json) — its last 3-5 entries carry the "where did we leave off" context that the state machine doesn't.
Every artifact stardust writes that a human will eyeball — proposed HTML, brand-review.html, the migrated site — runs through a recursive validate- and-fix loop before being marked done. The principle: type checks and test suites verify code correctness; only browser rendering verifies feature correctness.
For HTML the user will see (prototypes, migrated pages, the brand-review HTML):
stardust/validation/<artifact>/<viewport>.png
so reviewers can compare without re-running.Per-sub-skill validation specifics live in each skill's reference docs —
notably extract/reference/playwright-recipe.md (the canonical recipe),
prototype/reference/motion-validation.md (motion-specific gates), and
prototype/SKILL.md Phases 2.5–2.8 (the critique / audit / adapt /
motion gate cascade).
stardust/direction.md instead of waiting — § Hands-off mode).--pages list is itself the confirmed scope — listed pages are never dropped; the crawler warns rather than truncates when the list exceeds --max).migrate. migrate emits
platform-agnostic static HTML; the EDS conversion and delivery are owned
by the stardust:deploy (one page) and stardust:rollout (whole site)
sub-skills, routed above.reference/intent-dimensions.md — the axes redesigns move along.reference/intent-reasoning.md — the procedure for handling a freeform phrase.reference/intent-examples.md — worked examples (8-12) of the reasoning style.reference/impeccable-command-map.md — when to reach for each of the 23 impeccable commands.reference/state-machine.md — page lifecycle, stale rules, state report format.reference/artifact-map.md — every file stardust reads or writes, with ownership and provenance shape.reference/divergence-toolkit.md — anti-mediocrity device. Default-moves list, deterministic seed, font decks, role-naming rule. Consumed by direct (when authoring target tokens) and prototype (when generating variants).reference/token-contract.md — :root CSS custom-property contract every prototype and migrated page must expose. The token interface between stardust and any downstream consumer.reference/data-attributes.md — structural data-* vocabulary applied to sections in every prototype and migrated page. The structural lingua franca between stardust sub-commands and downstream tools.reference/journal-format.md — stardust/journal.md entry format. Append-only chronological log; the shared narrative layer over the state machine.reference/run-status.md — the stardust/status.jsonl phase-transition contract every skill appends to. The deterministic progress surface for any harness.reference/learnings.md — the per-run learnings ledger contract (stardust/learnings.md). rollout's report phase writes it; plugin maintainers harvest pending entries into skill diffs.Owned by prototype/ because the cinematic feature is scoped to
prototype rendering, but cited by direct (when selecting a
register), uplift (when picking C's register), and migrate
(when copying motion assets through):
../prototype/reference/motion-registers.md — five brand-faithful motion personalities (arrival, kinetic-display, live-systems, editorial, kinetic-grid) and the selection heuristic that maps PRODUCT.md Brand Personality traits to a register.../prototype/reference/motion-stack.md — technology choice: Lenis + CSS keyframes + rAF + IntersectionObserver. Why not GSAP. Bundle policy.../prototype/reference/motion-attributes.md — data-* vocabulary the runtime consumes ([data-anim], [data-tile-anim], [data-countup], [data-flip], [data-fill], [data-split], [data-parallax]).../prototype/reference/motion-runtime.md — the canonical inline runtime script that powers every cinematic prototype.../prototype/reference/motion-validation.md § Pass 6 — cinematic-mode validation gates (Lenis boot, reduced-motion fallback, scroll-jack, three-position screenshots, register-match, motion C-cliff detector).Owned by uplift/. Cited by master routing when delegating
/stardust:uplift <URL>:
../uplift/SKILL.md — one-shot presales orchestrator: extract → tension/trait identification → 3-variant direction → prototype × 3 → open + summarize.../uplift/reference/what-if-candidates.md — catalog of 8 worked captured-trait amplification candidates that B and C select from in Phase 2b — plus its § Extension rule admitting evidence-shaped derived candidates.tools
Use the run-workflow MCP to discover, compose, execute, publish, and save Adobe Firefly workflows. TRIGGER when: user asks what actions are available, what the MCP can do, how to process images/video/3D via workflow, wants to build/run/save/publish a workflow, OR pastes any workflow/batch/execution ID. BARE ID (UUID/workflowId/batchId) = INSPECT ONLY — call inspect_run, NEVER run_workflow_submit. ALWAYS call list_actions first for capability/discovery questions. DO NOT TRIGGER for direct Firefly API calls without MCP (use firefly-api-specs).
tools
Run predefined featured workflows via run-workflow MCP. TRIGGER when user names a featured workflow (retargeting, banners at scale, localization, packaging, banner advertising, etc.) or asks to run a known marketing/production workflow. Requires run-workflow MCP. ALWAYS call get_featured_workflow before compose_workflow. DO NOT TRIGGER for custom one-off workflows with no named template — use run-workflow skill.
tools
Migrate an Adobe Commerce App Builder project from the Integration Starter Kit or Checkout Starter Kit to the new App Management approach. Run from the root of the App Builder project to be migrated. Pass --auto to skip confirmation prompts (suitable for CI or batch use) — auto mode prints a summary of all Q&A questions answered with their defaults. Pass --doc-scan-only to scan README.md and env.dist for outdated content without modifying any files. Use when the user wants to migrate an App Builder project from the Integration Starter Kit or Checkout Starter Kit to the App Management approach, or mentions upgrading their Adobe Commerce extension architecture.
development
Add or modify webhook interceptors in an Adobe Commerce app. Use when the user wants to intercept Commerce operations to validate input, append data, or modify behavior — before or after execution. Requires a base app initialized with commerce-app-init.