From dev
Use when bootstrapping a new project in the monorepo that needs harness structure (init.sh, verify.sh, features.json, progress.txt). Triggers when user says "set up new project", "create project", "initialize", or "bootstrap". Prevents skipping harness components, inadequate feature granularity, and non-idempotent setup scripts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev:initialize-projectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Bootstrap a new project's harness structure following the Anthropic long-running agent pattern. **Every harness component is mandatory** - no optional files, no "add later" promises.
Bootstrap a new project's harness structure following the Anthropic long-running agent pattern. Every harness component is mandatory - no optional files, no "add later" promises.
Core principle: The harness IS the product at initialization. Code can be minimal stubs, but harness files must be complete and correct.
Use this skill when:
Do NOT use for:
Every harness requires exactly four files. No shortcuts, no "later":
<project>/harness/
├── init.sh # Idempotent environment setup
├── verify.sh # Exit 0 = pass, non-zero = fail
├── features.json # Sufficient granular features (see guidelines)
└── progress.txt # Session handoff log
Missing any file = incomplete harness = blocked from feature work.
Follow this order exactly:
Create sufficiently granular features to prevent "one-shot" attempts.
Feature count guidelines:
The key principle: Features should be granular enough that agents cannot "one-shot" the entire project in a single session. If you can see yourself completing all features in one marathon session, add more granularity.
Feature structure:
[
{
"id": "F001",
"category": "infrastructure",
"description": "UV package manager installs dependencies",
"steps": ["Install UV", "Run uv sync", "Verify lockfile"],
"passes": false
}
]
Categories to cover:
Granularity test: Each feature should be completable in 1-2 hours. If it takes a day, split it.
Must be idempotent - safe to run multiple times.
#!/bin/bash
set -e
# Check preconditions
command -v uv >/dev/null 2>&1 || { echo "UV not found"; exit 1; }
# Idempotent install
if [ ! -f "uv.lock" ]; then
uv sync
else
echo "✓ Dependencies already installed"
fi
# Idempotent env file
if [ ! -f ".env" ]; then
cp .env.example .env 2>/dev/null || echo "API_KEY=" > .env
else
echo "✓ .env exists"
fi
echo "✓ <project> initialized"
Requirements:
chmod +x init.sh)No "permissive stubs" - this must have actual verification logic.
#!/bin/bash
set -e
echo "Running verification..."
# Real checks, not stubs
if [ -f "pyproject.toml" ]; then
uv run pytest tests/ || exit 1
uv run ruff check . || exit 1
else
npm test || exit 1
npm run lint || exit 1
fi
# Build check if applicable
if [ -f "tsconfig.json" ]; then
npm run build || exit 1
fi
echo "✓ All checks passed"
exit 0
Requirements:
Initialize with session zero entry:
--- Session 2026-02-16-01 ---
Agent: Claude Sonnet 4.5
Worked on: Harness initialization
Completed: Created all 4 harness files (237 features defined)
Blocked: none
Next: F001 - Infrastructure setup
Commit: init(project): harness initialization
Format requirements:
| Excuse | Reality | Counter |
|---|---|---|
| "Let's start with 10-20 features, expand later" | "Later" never comes. Match features to project scope. | Use feature count guidelines: small=20-40, medium=60-120, large=200+. If you can "one-shot" all features in one session, add more granularity. |
| "verify.sh can be a stub - we'll add tests later" | Stub verify.sh never gets real checks. | Create trivial passing test NOW. verify.sh must have real logic from day one. |
| "Init script works, don't need idempotency yet" | "Yet" = never. First run is easiest time to do it right. | Add if [ ! -f ] checks. Takes 2 minutes, prevents hours of debugging. |
| "Code stubs can be garbage at bootstrap" | Garbage foundation = garbage codebase. | Minimal ≠ garbage. Write 10 lines correctly instead of 100 lines poorly. |
| "We can add progress.txt when we start features" | Session 1 ends, Session 2 has no context. Lost work. | progress.txt is the handoff. Create it now or lose all context. |
If you're thinking any of these, you're cutting corners:
All of these mean: Slow down. Follow the checklist.
Run this mental checklist before claiming "initialization complete":
init(project): harness initializationIf any checkbox is unchecked, initialization is NOT complete.
The harness convention prevents three failure modes:
Skip any component and you lose these guarantees.
Without this discipline: Agents lose context between sessions, attempt to complete entire projects in one turn, ship broken code.
With this discipline: Each session picks one feature, makes incremental progress, leaves project in passing state. Sustainable velocity over months.
npx claudepluginhub 0xobat/claude-skills --plugin devScaffolds a new harness-managed project, migrates an existing project to harness, upgrades adoption levels, or bootstraps a project with the marketplace plugin installed. Assesses state, scaffolds/migrates, configures, validates, and instruments baselines, telemetry, and Tier-0 integrations.
Bootstraps repositories with harness engineering scaffolding: AGENTS.md orientation map, docs/ system of record, boundary tests, linter rules, CI pipeline, GC scripts. Use for new projects, agent-readiness, or architecture boundaries.
Use when ATS doc exists (or auto-skipped) but feature-list.json not yet created - scaffold project artifacts and populate features from Design §10.2