// Automatically detects new project initialization, collaborates with user on project planning, and sets up the appropriate tech stack with matching skills and agents. Use when starting a new project, creating a new repository, or working in an empty/minimal directory that needs project structure.
| name | project-init |
| description | Automatically detects new project initialization, collaborates with user on project planning, and sets up the appropriate tech stack with matching skills and agents. Use when starting a new project, creating a new repository, or working in an empty/minimal directory that needs project structure. |
| type | domain |
| enforcement | suggest |
| priority | high |
| keywords | new project, start project, initialize project, project setup, empty directory, tech stack |
| patterns | (start|create|init|setup|initialize).*?(project|repo|repository), new.*?(project|repo) |
This skill automates project setup through collaborative planning. It detects when you're starting a new project, identifies the tech stack, presents skill and agent recommendations, collaborates with the user on the project plan, then initializes the appropriate project structure with matching skills and agents.
Activate this skill when:
Do NOT activate for:
Check for new project indicators:
Directory Analysis
# Check if directory is empty or minimal
ls -la
# Look for existing project files
find . -maxdepth 2 -name "go.mod" -o -name "package.json" -o -name "Cargo.toml" -o -name "pyproject.toml" -o -name "pom.xml"
Detection Criteria
Determine the tech stack through:
Common stacks:
CRITICAL: Before initializing anything, collaborate with the user on the project plan.
Present stack-specific recommendations
Based on identified stack, suggest:
Stack-specific recommendations:
Go Projects:
go-tdd (required), go-lint (golangci-lint), go-api (REST API patterns)go-test-agent (runs tests on file changes), go-doc-agent (generates godoc)Node.js/TypeScript:
node-tdd (Jest/Vitest), typescript-lint (ESLint/Prettier), node-api (Express/Fastify patterns)test-watch-agent, bundle-analyzer-agentPython:
python-tdd (pytest), python-lint (black/ruff/mypy), python-api (FastAPI patterns)pytest-watch-agent, coverage-reporter-agentRust:
rust-tdd, rust-clippy, rust-api (axum/actix patterns)cargo-watch-agent, clippy-agentAsk user for preferences using AskUserQuestion tool
Present 2-4 questions about:
Create a plan summary
📋 Project Plan: <project-name>
Stack: <language/framework>
Type: <project-type>
Skills to create:
- <skill-1> - <purpose>
- <skill-2> - <purpose>
Agents to consider:
- <agent-1> - <purpose>
- <agent-2> - <purpose>
Project structure:
- <directory-tree>
Next steps:
1. Initialize project structure
2. Create/activate skills
3. Set up tooling
Get explicit approval before proceeding
Initialize the project based on identified stack:
# Initialize Go module
go mod init <module-name>
# Create standard directories
mkdir -p cmd pkg internal
# Create .gitignore
cat > .gitignore << 'EOF'
# Binaries
*.exe
*.dll
*.so
*.dylib
bin/
dist/
# Test coverage
*.out
coverage.html
# IDE
.idea/
.vscode/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
EOF
Skills to create/activate:
go-tdd - Test-driven development for Go# Initialize npm project
npm init -y
# Install TypeScript if needed
npm install -D typescript @types/node
# Create tsconfig.json for TypeScript
npx tsc --init
# Create standard directories
mkdir -p src tests
# Create .gitignore
npx gitignore node
Skills to create/activate:
node-tdd - Test-driven development with Jest/Vitesttypescript-lint - TypeScript linting and formatting# Initialize with pyproject.toml
cat > pyproject.toml << 'EOF'
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "project-name"
version = "0.1.0"
description = ""
requires-python = ">=3.8"
dependencies = []
[project.optional-dependencies]
dev = ["pytest>=7.0", "black", "ruff"]
EOF
# Create standard directories
mkdir -p src tests
# Create .gitignore
cat > .gitignore << 'EOF'
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
.env
.pytest_cache/
.coverage
htmlcov/
dist/
build/
*.egg-info/
EOF
Skills to create/activate:
python-tdd - Test-driven development with pytestpython-lint - Black, ruff, mypy integration# Initialize Cargo project
cargo init
# Cargo.toml and standard structure created automatically
# Update .gitignore (cargo init creates one)
Skills to create/activate:
rust-tdd - Test-driven development with Rustrust-clippy - Clippy integrationAfter initializing the project structure, create recommended skills and agents.
Check existing skills
ls .claude/skills/
For each recommended skill:
If skill exists (e.g., go-tdd):
If skill doesn't exist:
.claude/skills/skill-creator/scripts/init_skill.sh <skill-name> --path .claude/skills
go-tdd → Test-driven development with go testpython-tdd → Test-driven development with pytestnode-tdd → Test-driven development with Jest/VitestCollaborative approach:
Create agents using agent-creator guidance (no scripts needed - just Write tool).
ALWAYS create orchestrator agent first - required for every project.
The orchestrator coordinates all work and delegates to specialists. Customize nickname based on user's personality preference:
Nickname suggestions:
---
name: orchestrator
description: (<emoticon>) <Nickname> - The task coordinator who gathers info and delegates execution
model: sonnet
color: cyan
---
You are <Nickname>, the project orchestrator.
[Customize prompt based on personality: Friendly, Professional, Analytical, Quirky]
- Core behavior: Gather context, never execute changes, always delegate
- Communication style: Match user's preference
For each additional recommended agent:
Determine agent details collaboratively:
go-test-runner)Create agent file at .claude/agents/<agent-name>.md:
---
name: <agent-name>
description: <when and why to use this agent>
model: <haiku|sonnet|opus>
color: <blue|green|red|yellow|purple|orange|pink|gray|cyan>
tools: <optional comma-separated list>
---
<System prompt with personality applied>
Stack-specific agent examples:
Go projects:
go-test-runner (green, haiku) - Runs go test on changesgo-linter (yellow, haiku) - Runs golangci-lintcode-reviewer (blue, sonnet) - Reviews Go code qualityNode.js/TypeScript:
vitest-runner (green, haiku) - Runs Vitest teststype-checker (yellow, haiku) - Runs tsc --noEmitbundle-analyzer (yellow, sonnet) - Analyzes bundle sizePython:
pytest-runner (green, haiku) - Runs pytest with coverageruff-linter (yellow, haiku) - Runs ruff lintermypy-checker (yellow, haiku) - Type checking with mypyRust:
cargo-test-runner (green, haiku) - Runs cargo testclippy-linter (yellow, haiku) - Runs clippycargo-auditor (red, sonnet) - Security auditAgent creation is fully collaborative:
Provide user with summary:
✅ Project initialized: <stack-name>
✅ Created: <list of files>
✅ Activated skills: <list of skills>
Next steps:
- <stack-specific getting started tips>
.
├── go.mod
├── .gitignore
├── README.md
├── cmd/
│ └── app/
│ └── main.go
├── pkg/
│ └── (shared libraries)
└── internal/
└── (private code)
.
├── package.json
├── tsconfig.json
├── .gitignore
├── README.md
├── src/
│ └── index.ts
└── tests/
└── index.test.ts
.
├── pyproject.toml
├── .gitignore
├── README.md
├── src/
│ └── package_name/
│ └── __init__.py
└── tests/
└── test_package.py
.
├── Cargo.toml
├── .gitignore
├── README.md
└── src/
└── main.rs
User mentions new project OR directory is empty/minimal
↓
Is stack explicitly stated?
├─ YES → Proceed to planning phase
└─ NO → Can stack be inferred from context?
├─ YES → Confirm with user, then plan
└─ NO → Ask user about stack preference
↓
Present skill & agent recommendations for stack
↓
Ask user preferences (project type, skills, agents, tooling)
↓
Create plan summary
↓
Get user approval for plan
↓
Initialize project structure
↓
Create/activate skills
↓
Create agents if requested
↓
Confirm completion with user
This skill works together with:
skill-creator: For creating custom skills tailored to the stack
init_skill.sh script to scaffold new skillsagent-creator: For creating project-specific agents
Workflow integration:
For projects with multiple languages (e.g., Go backend + TypeScript frontend):
backend/, frontend/For monorepo setups:
This skill doesn't require bundled resources - all initialization is done through direct commands and file generation.