Introduction

A language-agnostic project scaffolder. You point it at a template, it asks for the template's params, renders a project tree, and runs the template's hooks
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; spin owns 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 new works offline.
  • Search templates in registered registries and pinned templates without a network round-trip.
  • Run a registry of your own by pointing spin registry add at a git repo or local directory.
  • Write a template with spin init and 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.