Creates a .project/ folder with pre-structured docs (design, planning, quality) plus optional AGENTS.md and CHANGELOG.md. Built for people using AI-assisted dev tools (Cursor, Claude, Copilot) who want consistent project documentation in every repo—no more manually recreating the same structure.
Disclaimer: Built for personal use; contributions welcome.
- Quick start
- Installation
- Updating
- Example
- Usage
- Commands
- Help
- Version
- What It Creates
- Config
- Development
- Requirements
- Contributing
- License
cd your-project
npx @lelborn/scaf-cli init
# Choose "Everything" at the promptnpm install -g @lelborn/scaf-cliThis exposes the scaf command globally.
Or run without installing:
npx @lelborn/scaf-cli initGlobal install:
npm install -g @lelborn/scaf-cli@latestnpx: Use npx @lelborn/scaf-cli@latest init to run the latest version.
Check version: scaf --version or npm list -g @lelborn/scaf-cli
The CLI checks npm for updates when you run it. If a newer version exists, you'll see a notification.
mkdir my-project
cd my-project
npx @lelborn/scaf-cli initPrompts you'll see:
- How would you like to scaffold? — Choose "Everything" or "Pick and choose"
- Everything — Installs full
.project+AGENTS.md+CHANGELOG.md - Pick and choose — Multiselect: design/, planning/, quality/, AGENTS.md, CHANGELOG.md
Result (everything):
my-project/
├── .project/
│ ├── design/
│ ├── planning/
│ ├── quality/
│ └── README.md
├── AGENTS.md
└── CHANGELOG.md
scaf init [path] [options]| Option | Description |
|---|---|
-p, --path <dir> |
Target directory (alternative to positional path). Creates parent directories if they don't exist. |
-f, --force |
Recreate .project if it already exists |
-y, --yes |
Skip prompts, scaffold full .project only (no AGENTS.md, CHANGELOG.md). Fails if .project exists unless --force is used. |
-r, --refresh |
Replace existing .project with fresh templates. Prompts for confirmation unless --force. |
-d, --dry-run |
Show what would be created without writing. Shows created vs skipped (already exists). |
# Create .project in current directory (interactive prompts)
scaf init
# Create .project in a specific directory
scaf init ./my-repo
scaf init --path ./my-repo
# Non-interactive: scaffold only, no prompts
scaf init -y
# Recreate .project if it exists
scaf init --force
# Refresh .project with latest templates (prompts for confirmation if .project exists)
scaf init --refresh
# Refresh without confirmation
scaf init --refresh --forcescaf list # List available templates and sections
scaf init --help # Init optionsExample output for scaf list:
.project sections:
design/ — Architecture, brand guidelines, tech stack, technical design
planning/ — Content strategy, product requirements, project spec, roadmap
quality/ — Accessibility, legal requirements, security, testing
Root files:
AGENTS.md — AI agent instructions
CHANGELOG.md — Version history (Keep a Changelog format)
scaf --help
scaf init --helpscaf --versionEach file is a template with placeholder sections. Replace placeholders with project-specific content as you develop.
| Section | Purpose |
|---|---|
| design/ | Architecture, brand guidelines, tech stack, technical design |
| planning/ | Content strategy, product requirements, project spec, roadmap |
| quality/ | Accessibility, legal requirements, security, testing |
.project/
├── design/
│ ├── architecture.md
│ ├── brand-guidelines.md
│ ├── tech-stack.md
│ └── technical-design.md
├── planning/
│ ├── content-strategy.md
│ ├── product-requirements.md
│ ├── project-spec.md
│ └── roadmap.md
├── quality/
│ ├── accessibility.md
│ ├── legal-requirements.md
│ ├── security.md
│ └── testing.md
└── README.md
AGENTS.md— in project root (template: build/test commands, code style, project structure, gotchas)CHANGELOG.md— in project root (template: Keep a Changelog format)
Choose "Everything" to install both, or "Pick and choose" to select individually.
Place .scafrc (JSON) or scaf.config.js in the target directory to customize. Paths are relative to the directory containing the config file.
| Option | Description |
|---|---|
agentsFile |
Root filename for agent instructions. Use to rename the file (e.g. agents.md instead of AGENTS.md). |
templatesPath |
Path to custom templates, relative to the config directory. |
Required layout for custom templates:
{templatesPath}/project/— must containdesign/,planning/,quality/,README.md{templatesPath}/AGENTS.md,{templatesPath}/CHANGELOG.md— for root files
Example .scafrc:
{
"agentsFile": "agents.md",
"templatesPath": "./.scaf-templates"
}Clone the repo and run locally:
git clone https://github.com/lelborn/scaf-cli
cd scaf-cli
npm install
npm linkThen run scaf init from any directory to test.
- Node.js >= 18.0.0
Contributions are welcome. See CONTRIBUTING.md for guidelines.
If this tool is useful to you, consider supporting me on Ko-fi.