skills/init/SKILL.md
Initialize the gig system in any project. Discovers context, scaffolds .gig/, proposes first milestone. Universal entry point.
npx skillsauth add gregrossdev/gig gig:initInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Check if .gig/ already exists in the current project root.
If present:
Reinitialize check: If user args contain "reinitialize" or "reinit", delete .gig/ and proceed to Step 1.
MVP check: If user args contain "mvp", store as MVP flag. Proceed through normal init flow — the flag only affects routing after approval.
Otherwise, check if .gig/ needs upgrading:
.gig/.gig-version (if missing, treat as 0.0.0).${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json ("version" field).~/.claude/templates/gig/.gig-version if it exists, otherwise use 0.0.0..gig-version is missing or does not match current (any difference triggers upgrade):
${CLAUDE_PLUGIN_ROOT}/upgrade.sh via Bash.~/.claude/upgrade.sh exists, run it via Bash. Otherwise, fall back to inline upgrade logic:
~/.claude/templates/gig/..gig/iterations/ directory if missing.STATE.md: | **Phase** → | **Iteration**; | Phase | → | Iteration |ROADMAP.md: ## Phases → ## Iterations; ## Upcoming Phases → ## Upcoming Milestones; ## Upcoming Iterations → ## Upcoming MilestonesISSUES.md: archived with their phase → archived with their iteration; **Phase:** → **Iteration:**ARCHITECTURE.md: Phase-based versioning → Iteration-based versioning; MINOR = phase number → MINOR = iteration number.gig/.gig-version./gig:status to see current state." STOP..gig-version exactly matches current gig version:
/gig:status to see current state." STOP.If NOT present: Proceed to Step 1.
.gig/ directory..gig/iterations/ directory (for completed iteration archives)..gig/:
${CLAUDE_PLUGIN_ROOT}/templates/gig/ (plugin install), then ~/.claude/templates/gig/ (script install)..gig/.gig-version with the current gig version:
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json ("version" field).~/.claude/templates/gig/.gig-version if it exists, otherwise write 0.0.0 as a placeholder..gig/ from templates."Create minimum documentation in the project root if not already present:
README.md — If missing, create with:
# {Project Name}, ## Overview, ## Getting Started, ## Usage, ## LicenseCHANGELOG.md — If missing, create with Keep a Changelog format:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
LICENSE — If missing, ask: "What license? (MIT, Apache-2.0, ISC, or skip)"
Article template — If the project type (detected in Step 2 below) is content, offer: "This looks like a content project. Want an Article template? (yes/no)"
${CLAUDE_PLUGIN_ROOT}/templates/project/ or ~/.claude/templates/project/) to the project root.Say: "Scaffolded project documentation: {list of created files}." If all already exist: "Project documentation already present — skipped."
Note: Step 1b runs after Step 2 (Detect Project Type) so that the content-type Article offer is informed by detection. However, README.md, CHANGELOG.md, and LICENSE scaffolding does not depend on project type — these are created for all projects.
Scan the current directory to classify:
| Check | Signal |
|-------|--------|
| .git/ exists | Git repository |
| package.json, Cargo.toml, pyproject.toml, go.mod, deno.json | Package manager |
| src/, lib/, app/ directories | Source code present |
| Makefile, Dockerfile, docker-compose.yml | Build/deploy tooling |
| test/, tests/, __tests__/, spec/ | Test infrastructure |
Classify as:
Additionally, classify the project type based on detection signals:
| Signals | Type |
|---------|------|
| Express, Next.js, React, Vue, Angular, HTML files, frontend frameworks | webapp |
| FastAPI, Flask, Hono, API routes, no frontend assets | api |
| bin/ directory, CLI flags, commander, yargs, clap, argparse | cli |
| Exports-focused, index.ts/index.js, no app entry point, published package | library |
| .md files as primary content, no source code directories | content |
| No signals (new empty project) | unknown |
Record the detected type in .gig/ARCHITECTURE.md Overview section by adding:
**Type:** {webapp | api | cli | library | content | unknown}
For new projects with no signals, set type to unknown — the MVP interview will inform it later.
After detection, run Step 1b (Scaffold Project Documentation) before proceeding to Step 3.
If new project: Skip to Step 4.
If existing project: Launch 2 Explore agents in parallel (Agent tool, subagent_type "Explore"). Pick the 2 most relevant:
Hard cap: 2 parallel agents maximum. If all 3 are needed, run 2 first, then the third.
Synthesize findings from all agents into a unified Discovery Report before presenting to the user. The user sees one coherent project assessment, not separate agent outputs.
The Discovery Report is internal context — findings are used directly in Steps 4-5, not written to a file.
If new project:
Leave .gig/ARCHITECTURE.md as the blank template. User fills during gig:gather.
If existing project:
Update .gig/ARCHITECTURE.md with discovered context:
Mark uncertain sections with [needs confirmation].
If .git/ does NOT exist and the project is new:
git init..gitignore if not present — include .gig/, .claude/, and common ignores for the detected stack
(e.g., node_modules/, dist/, .env, *.sqlite for Node; target/ for Rust; etc.)..gig/ files and .gitignore.chore: initialize projectIf .git/ already exists:
.gig/ and .claude/ are in .gitignore — if not present, append them to the file (create .gitignore if it doesn't exist)..gig/ or .claude/ files — they are local session state.Reference: .gig/GIT-STRATEGY.md for full branch/commit/tag conventions.
Add gig workflow rules to the project's .claude/CLAUDE.md so they apply when Claude Code runs in this project.
Locate RULES.md:
${CLAUDE_PLUGIN_ROOT}/docs/RULES.md~/.claude/templates/gig/RULES.md~/.claude/templates/gig symlink to find the repo root, then read docs/RULES.md relative to it. If ~/.claude/templates/gig is a symlink, resolve it and look for ../docs/RULES.md relative to the symlink target.Create .claude/ directory in the project root if not present.
Check for existing gig rules: If .claude/CLAUDE.md exists and contains # --- gig workflow rules ---, remove the section between the markers (inclusive) first. This ensures idempotent updates.
Append gig rules to .claude/CLAUDE.md (create the file if it doesn't exist):
# --- gig workflow rules ---
{contents of RULES.md}
# --- end gig workflow rules ---
Say: "Added gig workflow rules to .claude/CLAUDE.md."
Based on discovery, propose the first milestone:
For new projects:
0.1.0For existing projects:
0.1.0 - 0.3.00.4.0 - 0.6.00.7.0 - 0.9.0Hard rule: NEVER propose v1.0.0 or higher. Stays 0.x.y until user explicitly declares v1.0.
Update .gig/ROADMAP.md:
Update .gig/STATE.md:
0.0.1IDLE.claude-plugin/plugin.json exists in the project, read its version field. Otherwise set to —.Add bootstrap entry to Batch History:
| 0.0.1 | 0 | Project discovery & scaffold | PLANNED | done | {today} |
Present to the user:
Project initialized (new project).
Milestone: {name} v{version} — {description}
Project initialized (existing project).
Discovery summary:
Stack: {languages, frameworks}
Structure: {brief layout}
Patterns: {architecture style}
Tests: {framework, coverage}
Architecture populated: .gig/ARCHITECTURE.md
Milestone: {name} v{version} — {description}
Reasoning: {why this version}
Then say:
Approval required. Review the initialization above.
- Approve — reply "approve" to lock in the milestone and proceed.
- Adjust version — propose a different version number.
- Adjust milestone — change the name or description.
- Review architecture — I'll show the full ARCHITECTURE.md for review.
After approval, {if new project or MVP flag: "MVP product discovery" | else: "milestone spec elicitation"} will begin automatically.
STOP. Do not create iterations. Do not make decisions. Wait for approval.
/gig:milestone with the mvp argument. This triggers the MVP Product Discovery flow in the milestone skill's create flow. Do NOT stop or ask the user to run a separate command./gig:milestone create flow's Step 3a.3 (Load Project Context) and Step 3a.4 (Elicitation). The milestone skill accepts IDLE status, so this transition works seamlessly. Do NOT stop or ask the user to run a separate command.tools
Show current state and suggest the ONE next action to take.
testing
Deep-dive a topic using subagents. Feeds findings into decisions or working memory.
testing
Create milestones with spec elicitation, complete milestones, manage ROADMAP.md, tag releases.
tools
Create structured lesson plans for learning new concepts or following courses.