Fast Preset Astro Setup
Fast Preset Conventions
These rules hold across every Fast Preset skill. Other skills assume them - do not deviate.
- Source of truth:
BRIEF.md at the repo root. fast-brief writes it; every other skill reads it as step one.
- Files organized per page. UI primitives live in
src/components/; prototype data lives in src/data/. Single-page prototypes stay flat (src/components/*.astro, src/data/*.json). The moment a second page is added, each page gets its own folder (src/components/<page>/, src/data/<page>/); anything used by more than one page moves to src/components/shared/ / src/data/shared/. Promote to shared/ on the second use, not before. Pages compose components; props mirror the JSON shape they render.
- Colors: DaisyUI semantic tokens only (
bg-primary, text-error, bg-base-100/200/300, text-base-content, etc.). Never raw Tailwind palette colors (bg-blue-500, text-red-600).
- Variants: the same purpose uses the same DaisyUI variant everywhere. Every primary CTA is
btn-primary. Every success notice is alert-success.
- Assumption tags: uncertainty stays tracked, not rendered. In
BRIEF.md prose, every claim ends in [verified], [assumed], or [unsure] with a reason. In src/data JSON, records derived from [assumed] or [unsure] brief items carry _assumed: true (optionally _source: "brief §X") so they stay findable for the designer and so fast-review can collect them as talking points. The prototype UI itself stays clean - do not render badges, borders, or any other visible tell. The prototype is a design artifact, not a confidence dashboard; assumptions are surfaced in the share conversation, not on the surface.
BRIEF.md dependency: none. fast-astro runs before BRIEF.md exists. If BRIEF.md is already present, leave it untouched.
Workflow
Inspect the repo. If it is already an Astro project, normalize it instead of recreating it.
If no Astro project exists, run the official Astro scaffold in the current directory:
npm create astro@latest ./ -- --template minimal --yes --install
Install the required packages:
npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest @lucide/astro@latest
Write the scaffold files exactly as specified in references/scaffold.md (astro.config.mjs, src/styles/global.css, src/data/config.json, src/layouts/Layout.astro, src/pages/index.astro, .gitignore).
Use the user's requested project name for siteName when clear from the prompt (e.g. "fast-astro Project Name" → "Project Name"); otherwise use "Fast Preset".
Keep Astro's scaffolded files (including public/favicon.svg) intact unless they conflict with setup.
Run npm run build as a sanity check when possible. Do not start the dev server - the next skill (or the designer) will do that.
BRIEF.md does not exist yet at this stage - fast-brief writes it. Do not stub it from fast-astro. If BRIEF.md already exists, leave it untouched.
Required Stack
- Astro for project structure and pages
- Tailwind CSS via
@tailwindcss/vite
- DaisyUI via a configured
@plugin "daisyui" { themes: light --default, dark --prefersdark; } block in src/styles/global.css (mandatory, not optional)
@lucide/astro for icons
- JSON files in
src/data for editable prototype data
Expected Result
package.json
astro.config.mjs
.gitignore
src/
data/config.json
layouts/Layout.astro
pages/index.astro
styles/global.css
Guardrails
- No single-file HTML/CSS/JS prototypes unless the user explicitly asks for a throwaway file.
- DaisyUI is not optional.
- Do not remove files created by the official Astro scaffold unless they conflict with setup.
- No React, Vue, Svelte, backends, databases, or auth unless the user explicitly needs them.
- Do not invent a custom scaffold when Astro can create it.
- Keep this skill boring. Product-specific structure belongs to the next skills (fast-brief, then fast-data and fast-prototype).
Output Standard
Report what was created or normalized, the commands run, and point to fast-brief as the next skill. Do not claim a dev-server URL unless it is visible in the terminal output.
1---2name: fast-astro3description: Scaffold or normalize a Fast Preset Astro prototype - latest Astro, Tailwind CSS, DaisyUI, @lucide/astro, a default layout, index page, and src/data/config.json. Use when starting a new coded prototype repo or when an existing repo is missing the Fast Preset base.4---56# Fast Preset Astro Setup78## Fast Preset Conventions910These rules hold across every Fast Preset skill. Other skills assume them - do not deviate.1112- **Source of truth:** `BRIEF.md` at the repo root. fast-brief writes it; every other skill reads it as step one.13- **Files organized per page.** UI primitives live in `src/components/`; prototype data lives in `src/data/`. Single-page prototypes stay flat (`src/components/*.astro`, `src/data/*.json`). The moment a second page is added, each page gets its own folder (`src/components/<page>/`, `src/data/<page>/`); anything used by more than one page moves to `src/components/shared/` / `src/data/shared/`. Promote to `shared/` on the second use, not before. Pages compose components; props mirror the JSON shape they render.14- **Colors:** DaisyUI semantic tokens only (`bg-primary`, `text-error`, `bg-base-100`/`200`/`300`, `text-base-content`, etc.). Never raw Tailwind palette colors (`bg-blue-500`, `text-red-600`).15- **Variants:** the same purpose uses the same DaisyUI variant everywhere. Every primary CTA is `btn-primary`. Every success notice is `alert-success`.16- **Assumption tags:** uncertainty stays tracked, not rendered. In `BRIEF.md` prose, every claim ends in `[verified]`, `[assumed]`, or `[unsure]` with a reason. In `src/data` JSON, records derived from `[assumed]` or `[unsure]` brief items carry `_assumed: true` (optionally `_source: "brief §X"`) so they stay findable for the designer and so `fast-review` can collect them as talking points. The prototype UI itself stays clean - do not render badges, borders, or any other visible tell. The prototype is a design artifact, not a confidence dashboard; assumptions are surfaced in the share conversation, not on the surface.1718**BRIEF.md dependency:** none. fast-astro runs before `BRIEF.md` exists. If `BRIEF.md` is already present, leave it untouched.1920## Workflow21221. Inspect the repo. If it is already an Astro project, normalize it instead of recreating it.232. If no Astro project exists, run the official Astro scaffold in the current directory:2425 ```bash26 npm create astro@latest ./ -- --template minimal --yes --install27 ```28293. Install the required packages:3031 ```bash32 npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest @lucide/astro@latest33 ```34354. Write the scaffold files exactly as specified in `references/scaffold.md` (astro.config.mjs, src/styles/global.css, src/data/config.json, src/layouts/Layout.astro, src/pages/index.astro, .gitignore).365. Use the user's requested project name for `siteName` when clear from the prompt (e.g. "fast-astro Project Name" → `"Project Name"`); otherwise use `"Fast Preset"`.376. Keep Astro's scaffolded files (including `public/favicon.svg`) intact unless they conflict with setup.387. Run `npm run build` as a sanity check when possible. Do not start the dev server - the next skill (or the designer) will do that.3940`BRIEF.md` does not exist yet at this stage - fast-brief writes it. Do not stub it from fast-astro. If `BRIEF.md` already exists, leave it untouched.4142## Required Stack4344- Astro for project structure and pages45- Tailwind CSS via `@tailwindcss/vite`46- DaisyUI via a configured `@plugin "daisyui" { themes: light --default, dark --prefersdark; }` block in `src/styles/global.css` (mandatory, not optional)47- `@lucide/astro` for icons48- JSON files in `src/data` for editable prototype data4950## Expected Result5152```text53package.json54astro.config.mjs55.gitignore56src/57 data/config.json58 layouts/Layout.astro59 pages/index.astro60 styles/global.css61```6263## Guardrails6465- No single-file HTML/CSS/JS prototypes unless the user explicitly asks for a throwaway file.66- DaisyUI is not optional.67- Do not remove files created by the official Astro scaffold unless they conflict with setup.68- No React, Vue, Svelte, backends, databases, or auth unless the user explicitly needs them.69- Do not invent a custom scaffold when Astro can create it.70- Keep this skill boring. Product-specific structure belongs to the next skills (fast-brief, then fast-data and fast-prototype).7172## Output Standard7374Report what was created or normalized, the commands run, and point to fast-brief as the next skill. Do not claim a dev-server URL unless it is visible in the terminal output.