| created | "2025-12-16T00:00:00.000Z" |
| modified | "2026-08-07T00:00:00.000Z" |
| reviewed | "2026-08-07T00:00:00.000Z" |
| allowed-tools | Write, Bash(mkdir *), Bash(git init *), Bash(gh repo create *), Bash(pwd *), Bash(git config *), Bash(which *), SlashCommand, TodoWrite |
| args | <project-name> [project-type] [--github] [--private] |
| argument-hint | <project-name> [project-type] [--github] [--private] |
| disable-model-invocation | true |
| description | Scaffold a new project with base structure (git, README, LICENSE, CI, pre-commit). Use when starting a new project, initializing a repo, or bootstrapping Python/Node/Rust/Go. |
| name | project-init |
/project:init
When to Use This Skill
| Use this skill when... | Use project-discovery instead when... |
|---|
| Scaffolding a brand-new project from scratch (src/tests/docs, README, CI) | Working in an existing repo that already has structure |
| Bootstrapping a Python/Node/Rust/Go codebase with universal base layout | Use project-continue instead when picking up work in an established project |
| Creating a matching GitHub repository alongside the local skeleton | Use project-distill instead when extracting patterns from existing work |
Context
- Current directory: !
pwd
- Git user: !
git config user.name
gh availability is probed in the body, not here — see "GitHub CLI Availability".
Parameters
$1: Project name (required)
$2: Project type (python|node|rust|go|generic) - defaults to generic
$3: --github flag to create GitHub repository
$4: --private flag for private repository
GitHub CLI Availability
Run this check first, via the Bash tool — which gh:
| Result | Report to the user | Effect on --github |
|---|
| exit 0, prints a path | GitHub CLI: available (<path>) | repo creation proceeds |
| exit 1, no output | GitHub CLI: not installed — install from https://cli.github.com/ | skip repo creation, scaffold locally, and say so |
Report the outcome either way — the availability answer is part of the skill's
output, not an internal detail.
This probe deliberately lives in the body rather than in ## Context. which
exits 1 when the tool is absent (silently — it writes nothing to stderr), and a
non-zero exit from a Context backtick aborts the skill before its body runs, so
/project:init was unusable on exactly the fresh machine it exists for
(issue #2145). Run through the Bash tool, a non-zero exit is survivable and the
answer is still reported. A find over a fixed set of bin directories was
rejected as the alternative: it errors to stderr when a start directory is
absent (the #1482 class, so it just moves the abort) and it cannot see
installed via mise/asdf/nix/cargo, which would report a false "not installed".