Introduction
spin new myapp https://github.com/example/go-cli-template.git
spin opens a two-step interactive form: first it asks for the template's params, then it shows you every hook the template will run so you can review and choose Run / Skip / Cancel before any shell commands execute.
A template is any directory with a spin.toml manifest and a _base/ tree. Templates can target any language, framework, or build tool. spin only handles load, prompt, render, and hooks.
Why spin?
Most scaffolders are tied to one ecosystem: cargo new for Rust, create-next-app for Next.js, create-vue for Vue. spin is different. It does not care what your template produces. It gives template authors one portable format and gives users one command for every project.
- One CLI for every stack. Go, Rust, TypeScript, Python, static sites, libraries - anything that fits in a directory.
- Templates are external. No embedded defaults, no framework bias. The author owns the template;
spinowns the pipeline. - Offline-friendly. Pin a template once, scaffold from it forever without a network round-trip.
- Composable registries. Share templates through git-backed registries and discover them with
spin search.
What you can do
- Scaffold a project from a git URL, local path, pinned template, or registry shorthand.
- Pin templates locally so
spin newworks offline. - Search templates in registered registries and pinned templates without a network round-trip.
- Run a registry of your own by pointing
spin registry addat a git repo or local directory. - Write a template with
spin initand publish it as a normal git repo.
Install
curl -sSfL https://spincli.pages.dev/install.sh | sh
or with Go
go install github.com/sam0uly/spin@latest
Requires git on $PATH for cloning git URLs and registries.
--param, --print-params, --print-hooks, and --dry-run flags let you automate
scaffolding in scripts and CI without the interactive form.