How configuration works
Astro Stack collects your project, styling/tooling, content, feature, deployment, developer-experience, and summary choices into one validated configuration. It validates that configuration before resolving features or writing files.
Selections are additive: a project receives only the files, configuration, and dependencies required by the choices you make.
Project and developer experience
Your project selection controls the name, output directory, starter page structure, package manager, and whether Git is initialized. The generator never replaces an existing directory or user-owned file.
Optional agent instructions add versioned AGENTS.md for Codex and CLAUDE.md for Claude. Optional editor integrations add:
- VS Code or Cursor:
.vscode/settings.jsonand.vscode/extensions.json, with recommendations only for selected tooling. - Zed:
.zed/settings.jsonwith the selected formatting behavior.
Styling and tooling
Vanilla CSS and Tailwind each create src/styles/global.css with the same starter visual baseline for typography, spacing, navigation, and a centered content width. The choice changes the authoring experience, not the initial design. Tailwind also adds the Tailwind v4 Vite plugin and its required development dependencies. Documentation pages deliberately do not import this stylesheet so they remain semantic and unthemed.
ESLint, Prettier, and Biome each add only their own configuration, scripts, and development dependencies. Their commands stay separate: lint for ESLint, format and format:check for Prettier, and check and format:biome for Biome.
Content
Choosing none adds no generic starter content. Markdown, MDX, and Content Collections each create src/content.config.ts plus a starter post under src/content/posts, using Astro’s built-in glob() loader. MDX additionally installs and configures Astro’s official MDX integration. Blog and Documentation instead generate their required blog or docs collection and reject an explicit Content setup to prevent conflicting content structures.
CMS
Pages CMS requires file-backed content. It can edit a generic Markdown, MDX, or Content Collections setup, plus the collections built into Blog and Documentation projects. Selecting it creates .pages.yml and public/images/.gitkeep, with collection paths and fields matched to the selected content.
The CMS configuration preserves unmanaged frontmatter keys. Markdown bodies use the rich-text editor, while MDX bodies use the MDX code editor. Uploaded media is stored in public/images and referenced through /images. No Pages CMS package is added to the generated project.
Forms
Both Resend and webhook forwarding generate src/pages/api/contact.ts and require a server-capable deployment.
- Resend adds the
resendruntime dependency and documentsRESEND_API_KEY,RESEND_FROM_EMAIL, andRESEND_TO_EMAILin.env.example. - Webhooks documents
WEBHOOK_URLin.env.example. It is read only on the server so the destination stays private.
Deployment
Static output is explicit and adds no deployment dependency. Vercel, Netlify, and Cloudflare add their official Astro adapters and use server output. Cloudflare also includes Wrangler, which its adapter requires.
Deploy by connecting the generated repository to the selected host, or by using that host’s CLI after building the project.
Command surface
Every generated project documents its exact dev, build, preview, and typecheck commands. Selected quality tools add their related health commands. The generated README and completion message use the package manager you selected.