New-client setup runbook#
Phase numbers map to lifecycle.
1. Scaffold
- Create the repo from the starter's GitHub template. Leave
starterVersioninpackage.jsonexactly as inherited — it records the baseline this build was cut from and is never bumped in a client repo (structure.git). - Update
package.jsonnameand README; confirm the structure.gate scripts. - Fill in
src/data/site.ts(name, url, description, ogImage, logo, socials).astro.config.mjsreads the URL from it (seo.identity). The domain can stay the placeholder while previewing — the build warns, and checklist.pre-launch is what blocks on it at cutover. - Add host config for the chosen target (deploy.static). Add
public/_headersand, for a migration,public/_redirects. - Flip
public/robots.txtfrom the blocked starter default to the allow policy commented directly beneath it, and set theSitemap:host (seo.ai-crawlers). The starter shipsDisallow: /because a template shouldn't be crawled; a client site must not. Checksrc/pages/404.astrois in place. - Add
.envkeys; commit.env.example(structure.env). Write the per-client agent brief (structure.agent-brief). - Set up preview/staging protection now, not at launch (seo.staging).
2. Design-system intake
- Fill every
--color-*role inglobal.css@theme, for every theme the project ships. Add brand-named accents separately; map--color-intentto the primary. - Decide the theme set and register the
@custom-variants. - Set per-client decisions (tokens.per-client): radius stance, depth, accents.
- Wire fonts (perf.fonts); set
--font-heading/-sans/-mono. Tune the fluid type clamps. 11b. AnswerDESIGN.md. It ships as prompts, not content — work through every one, record the decisions from steps 8–11 with the reasoning behind them, and delete each prompt as you replace it. Write project rules normatively ("never…") rather than descriptively ("cards have…"). No values, and no repeating house rules fromdocs/rules/(tokens.design-doc).
3. Componentize
- Build pages from starter primitives; keep
components/flat. New components → templates template + checklist.component. - Keep the full starter component set — don't delete unused components (principles, principle 10). Production stays lean via route gating and tree-shaking. Remove only deprecated or broken code.
4. Content & SEO
- Define collections in
content.config.ts(lean;reference()taxonomies;image()for content images). Keep the content-source seam (content.source-seam). - Author
lib/schema.tsgraphs; passjsonLdfrom pages. - Set per-page
title/description/image/noindex. Extend the sitemap filter.
5. Optimize & QA
- Import images via
astro:assets; measure against perf.budgets budgets. - Run checklist.page, checklist.seo and checklist.a11y on every template.
6. Launch
- Run checklist.pre-launch. Deploy to the chosen production host. Verify production. Hand off.