mantle-starters

Public monorepo of mantle starter templates.
This repo is consumed by the create-mantle scaffolder tarball attached
to each GitHub release. End users usually should not clone this repo
directly: they start from
the Mantle landing page, paste the
generated prompt into Claude Code / Cursor / Codex, and the install Skill
in aotter/mantle invokes
the release tarball. The scaffolder downloads a tagged tarball of this
repo, merges _common/ + <archetype>/ + optional theme overlays into
the user's empty directory, then initializes their own Git repo.
Premium / per-customer starters live in the private sibling
aotter/mantle-starters-premium.
That repo mirrors _common/; sync strategy is TBD.
How to install
Recommended path:
- Open the Mantle landing page.
- Pick an archetype, optional theme, and optional feature overlays.
- Paste the generated prompt into Claude Code / Cursor / Codex.
That route runs the mantle install Skill, which interviews the user for brand, locales, audience, and deployment intent before invoking the scaffolder.
Direct scaffolder call
The agent-driven flow (paste the landing prompt into Claude Code /
Cursor / Codex) is the recommended path because the install Skill
interviews the user for brand / locales / audience before running the
command. If you're already past the interview or testing this repo and want to invoke the
scaffolder directly, the command shape is:
npx https://github.com/aotter/mantle-starters/releases/download/v0.0.11-alpha.17/aotter-create-mantle.tgz <archetype> \
--project-name "<my-site>" \
--brand "<My Brand>" \
--description "<one-line site description>" \
--locales "en,zh-TW" \
--github-owner "<your-github-login>" \
--summary "<install-moment marker>"
# optional: --theme <theme> (l4-minimal-ink | l4-editorial-warm | l4-editorial-journal | l4-playful-pop)
# optional: --feature <feature> (repeat or comma-separate; e.g. contact, customer-account)
Use a versioned release URL while Mantle is on alpha prereleases. GitHub's
/releases/latest/ endpoint ignores prereleases, so it returns 404 when
there is no stable release yet.
<archetype> is one of: presence, publication, intake,
transaction, blank. The CLI fetches sources.json at runtime,
downloads the matching starter tarball, merges _common/ +
<archetype>/ + selected feature overlays + optional themes/<theme>/,
fills {{BRAND}} / {{LOCALES}} / {{DESCRIPTION}} placeholders,
runs git init + pnpm install, and prints RUN_NOTES JSON. After it
returns, cd <my-site> and follow that directory's own README for the
local-dev Quickstart.
For SDK/runtime internals, release policy, and agent skills, go back to
aotter/mantle. This repo is
only the starter source and scaffolder implementation.
Layout
mantle-starters/
├── _common/ ← shared backbone, merged into every install
│ ├── AGENTS.md.template ← cross-tool agent entry
│ ├── mantle/
│ │ └── site.md.template ← Mantle's semantic layer
│ └── .gitignore.template
├── presence/ ← landing-page / brand-presence starter
├── publication/ ← owner-published-content starter
├── intake/ ← publication + structured `leads` Schema
├── transaction/ ← small catalog + cart + order workflow
├── reservation/ ← roadmap note; routes to intake for v0.1
├── community/ ← roadmap placeholder
├── membership/ ← roadmap placeholder
├── blank/ ← headless API + MCP starter
├── themes/ ← theme overlays (artist-designed; v0.0.9+)
└── sources.json ← archetype + feature + theme dispatch
Each archetype has its own top-level directory, but _common/ is the
shared backbone. The pattern is intentionally shadcn-like: common
primitives and workflow scripts live once, while each archetype keeps
its domain-specific composition readable and forkable.
Provisioning Backbone
Every active archetype receives the shared _common/scripts/provision.mjs
runner during scaffolding and exposes:
pnpm run provision:plan
pnpm run provision:up