deploy
Originally fromrailwayapp/railway-skills
Installation
SKILL.md
stardust:deploy — prototypes → EDS/AEM
When to use
The user has:
- Per-page styled HTML prototypes — one file per page, each carrying its own CSS. Accept any of these shapes:
- Single-file with inline
<style>and:roottokens + semantic<section class="…">(e.g. stardust output, or claude-design "Stardust"/Mobirise/Relume-style pages). Easiest — convert directly. - External per-page
.css(the<style>lives in a sibling stylesheet). Read the linked CSS the same way you'd read an inline<style>. <x-dc>document-content with everything inline-styled (per-elementstyle="…"). Harder — you must lift inline styles into a scoped block stylesheet.- React/JSX prototypes (an HTML shell that mounts
.jsxcomponents at runtime). Pre-render to static HTML first (run it, or screenshot + read the JSX to reconstruct the DOM); you cannot decorate a shell that has no server-rendered<main>. The prototypes typically live understardust/prototypes/**or asamples/<Name>/folder — don't hard-code the path; discover them.
- Single-file with inline
- An EDS project at the repo root —
blocks/,styles/,scripts/,head.html, plus existing blocks (fragment,section-metadata). If the project is vanillaaem-boilerplaterather than the AuthorKit runtime this skill assumes, run the Runtime bootstrap below first. - A goal to convert: prototypes → authorable EDS blocks + EDS content pages under
content/**.
If the user has prototypes but no EDS scaffolding, stop and ask whether to bootstrap. If they have EDS but no prototypes, this skill doesn't apply.
Runtime bootstrap (vanilla aem-boilerplate targets)
This skill's runtime is the AuthorKit runtime (ak.js page boot, postlcp.js static header/footer fragments, body.session font gating, decorateSession()). The conversion steps below assume those files exist. They are NOT in this skill folder — they live in the canonical AuthorKit repo (github.com/aemsites/author-kit). (The sanitise.js DA-write helper is bundled with this skill at skills/deploy/scripts/sanitise.js; it is not part of the ported runtime.)