Third bin in the scaffolding family. One command produces a complete
site repo:
npx cms-create-site <slug>
# → site-<slug>/{package.json, vite.config.js, amplify.yml, .nvmrc,
# .gitignore, .env.example, README.md, CLAUDE.md, site/...}
The CLAUDE.md template is the centerpiece — every scaffolded site
gets a "where things go" navigation table covering content,
components, themes, extensions, locales, and pages, plus the
lockfile/npm-version rules. Future Claude sessions opening any
@koehler8/cms-based site repo will immediately have the right
mental model.
The home page ships with bundled Header + Hero + Footer +
placeholder copy so `npm run dev` produces a live page right after
scaffolding.
Scaffold internals:
- runScaffold accepts kind: 'site' alongside theme and extension.
Default target is <cwd>/site-<slug>/ (matches the conventional
koehler8/site-<slug> repo naming).
- collectTemplateFiles now only skips OS junk (.DS_Store, Thumbs.db,
.git). Dotfiles like .nvmrc, .gitignore, .env.example are
intentional template content and need to be copied.
Tests: 5 new specs covering site scaffold (336/336 passing).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>