Initialize a new repository with standard scaffolding - git, gitignore, CLAUDE.md, justfile, mise, and beads. Use when starting a new project or setting up an existing repo for Claude Code workflows.
Scaffold a new or existing repository with standard project infrastructure.
**Related skills:**
Creates universal scaffolding that works across all project types:
| File | Purpose |
|------|---------|
| `.gitignore` | Standard ignores + language-specific patterns |
| `CLAUDE.md` | Project conventions for Claude Code |
| `justfile` | Build system skeleton |
| `.mise.toml` | Tool version pinning (empty, ready for `mise use`) |
| `.beads/` | Issue tracking database |
| `.envrc.example` | Environment variable template |
```
1. Gather context (language, project type)
2. Create scaffolding
3. Initialize beads
4. Point to language skill for next steps
```
---
Before scaffolding, clarify:
1. **Project language(s)**: Go, Rust, TypeScript, Python, or multi-language?
2. **Project type**: Library, CLI, web app, API, monorepo?
3. **Existing files**: Is this a fresh repo or adding to existing code?
Use AskUserQuestion if unclear from context.
---
```bash
git init
```
Each language skill provides a comprehensive `.gitignore` in its `references/` directory. These include common patterns (`.env`, `.envrc`, `.DS_Store`, `Thumbs.db`, IDE files) plus language-specific ignores.
**Copy from the appropriate language skill:**
| Language | Source |
|----------|--------|
| Go | `go-pro/references/gitignore` → `.gitignore` |
| Rust | `rust-pro/references/gitignore` → `.gitignore` |
| TypeScript | `typescript-pro/references/gitignore` → `.gitignore` |
| Python | `python-pro/references/gitignore` → `.gitignore` |
**For multi-language repos:** Start with the primary language's gitignore, then merge patterns from others as needed.
**Minimal fallback** (if language skill unavailable):
```gitignore
.env
.env.local
.env.*.local
.envrc
.DS_Store
Thumbs.db
.idea/
.vscode/
dist/
build/
target/
node_modules/
__pycache__/
```
---
Create project conventions file for Claude Code:
```markdown
Brief description of what this project does.
```bash
just setup # First-time setup
just check # Run all quality gates
```
```
Keep it minimal initially. Add conventions as they emerge.
---
```just
default:
@just --list
setup:
mise trust
mise install
@echo "Ready. Run 'just check' to verify."
check:
@echo "Add fmt, lint, test recipes"
clean:
@echo "Add clean commands"
```
For language-specific recipes, see:
---
Create empty `.mise.toml` ready for tool pinning:
```toml
[tools]
```
---
```bash
bd init -q
```
This creates `.beads/` directory with issue tracking database.
For teams, consider:
---
Create `.envrc.example` (committed) as template for `.envrc` (gitignored):
```bash
if command -v mise &> /dev/null; then
eval "$(mise hook-env -s bash)"
fi
```
---
After scaffolding, point user to language-specific setup:
| Language | Next Step |
|----------|-----------|
| Go | Invoke **go-pro** skill, run `go mod init`, copy `.golangci.yml` |
| Rust | Invoke **rust-pro** skill, run `cargo init`, copy `clippy.toml` |
| TypeScript | Invoke **typescript-pro** skill, run `npm init` |
| Multi-language | Follow each lang skill for respective packages |
---
```bash
git init
bd init -q
mise use just@latest
```
For monorepos, the root gets:
Each package gets:
Leave a review
No reviews yet. Be the first to review this skill!