star.toml
One file marks a directory as a template. It can be as rich or as empty as you like — an empty
star.toml is a valid zero-config template whose name falls back to the directory name.
Full example
[template]
name = "rust-cli" # optional; defaults to directory name
author = "jingus" # optional
description = "My awesome Rust CLI template" # optional
init-message = """ # optional; printed after `star use`
Hope you enjoy my template! Use `nix develop` to enter the dev shell!
God bless!
"""
[star]
version = "0.0.1" # optional; future compatibility gate
ignore = ["target", "*.log", "secrets/"] # optional; extra ignore globs
[template] fields
| Field | Type | Default | Purpose |
|---|---|---|---|
name |
string | directory name | The template’s discoverable name (star use <name>) |
author |
string | — | Shown in listings; free-form |
description |
string | — | One-liner shown in listings and disambiguation prompts |
init-message |
string | — | Printed after a successful star use — setup hints live here |
[star] fields
| Field | Type | Default | Purpose |
|---|---|---|---|
version |
string | — | Informational for now; will gate backward-incompatible schema changes |
ignore |
array of globs | [] |
Extra ignores, matched relative to the template root — layered on top of .gitignore. See ignore semantics |
Design decisions
- Both tables are optional. Lowering the cost of “just mark this directory as a template” is the whole point of the format.
star.tomlfiles are never materialized — they are star metadata, not project files, at any depth. A template that wants to generate a template writes the file under a different name and renames it in whatever hook it ships.#star-ignoreon the first line marks the directory as not a template. Use cases: example manifests in docs, fixtures under test, a template for authoring templates. First line only — the check stays O(1).[star] versionis a compatibility gate in waiting. When the schema ever gains a backward-incompatible change, the version decides the behavior so old checkouts keep scaffolding identically.