Initialize the gig system in any project. Discovers context, scaffolds .gig/, proposes first milestone. Universal entry point.
From gignpx claudepluginhub gregrossdev/gigThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Benchmarks web page Core Web Vitals/bundle sizes, API latency under load, build times; detects regressions via before/after PR comparisons.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
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 older than current:
${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 IterationsISSUES.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 matches current 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 3 Explore agents in parallel (Agent tool, subagent_type "Explore"), one per profile:
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/CLAUDE.md." and skip this step.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: "spec elicitation"} will begin automatically.
STOP. Do not create iterations. Do not make decisions. Wait for approval.
/gig:spec with the mvp argument. This triggers the MVP Product Discovery flow in the spec skill. Do NOT stop or ask the user to run a separate command./gig:spec Step 2 (Load Project Context) and Step 3 (Elicitation). The spec guard check accepts IDLE status, so this transition works seamlessly. Do NOT stop or ask the user to run a separate command.