harness-wizard
Autonomous Agent Harness Wizard
Interactive wizard for setting up autonomous long-running agent harnesses. Creates fully-configured autonomous coding projects that can work across multiple sessions with proper state management, agent handoffs, and comprehensive testing strategies.
When to Activate
Use this skill when:
- User selected Autonomous Harness in project wizard
- Setting up greenfield projects with autonomous agents
- Creating long-running development projects
- Multi-session projects requiring state persistence
- Keywords: harness wizard, setup harness, autonomous setup, multi-session, agent harness, long-running project
Architecture Overview
MULTI-AGENT PIPELINE ARCHITECTURE
PROJECT WIZARD
│
▼
┌────────────────────────────────┐
│ /harness-setup │
│ @harness-wizard │
│ (This Skill - Configuration) │
└────────────────────────────────┘
│
▼
┌────────────────────────────────┐
│ /harness-init │
│ @harness-initializer │
│ (First Session - Task Gen) │
└────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────┐
│ DEVELOPMENT LOOP │
│ ┌─────────────────────────────────────────────────┐ │
│ │ /harness-next │ │
│ │ @harness-coder │ │
│ │ (Feature Implementation) │ │
│ └───────────────────┬─────────────────────────────┘ │
│ │ │
│ ┌──────────┴──────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ @harness-tester │ │ @harness-reviewer│ │
│ │ (Parallel Test) │ │ (Before Complete)│ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ └──────────┬──────────┘ │
│ ▼ │
│ [Update Archon] │
│ [Commit Changes] │
│ [Repeat for each feature] │
└──────────────────────────────────────────────────────┘
STATE MANAGEMENT: Archon MCP (Projects, Tasks, Documents)
Agent Pipeline Summary
| Agent | Skill | Role | When Used |
|---|---|---|---|
| Setup Agent | @harness-wizard |
Interactive configuration | Initial setup |
| Initializer | @harness-initializer |
Generate tasks from spec | First session only |
| Coder | @harness-coder |
Implement features | Every coding session |
| Tester | @harness-tester |
Run tests & verify | After implementation |
| Reviewer | @harness-reviewer |
Code quality check | Before marking complete |
Wizard Entry Points
The harness wizard can be invoked through multiple paths:
ENTRY POINTS
1. Direct Invocation:
User: "Set up autonomous harness"
→ Activates @harness-wizard
2. Project Wizard Delegation:
User selects "Autonomous Harness" in project wizard
→ @project-wizard delegates to @harness-wizard
3. Resume Mode:
User: "Resume my harness project"
→ @harness-wizard in resume mode
4. Quick Setup:
User: "Quick harness setup for [project description]"
→ @harness-wizard with smart defaults
Setup Modes
Mode 1: Full Setup (Default)
Complete interactive wizard for new projects. Ask all questions systematically through phases.
Best for:
- New greenfield projects
- Users who want full control
- Complex applications
Mode 2: Quick Setup
Minimal questions with smart defaults. Infers configuration from context.
Best for:
- Experienced users
- Existing codebases being harnessed
- Simple projects
Mode 3: Resume Mode
Continue an existing harness project. Query Archon for project state.
Best for:
- Returning to paused projects
- Session recovery
- Status checks
Full Setup Questionnaire
When running full setup, gather information in these phases:
Phase 1: Project Basics
## Harness Setup Wizard - Phase 1: Project Basics
**1. Project Name:**
What should the project be called?
> Use lowercase with hyphens (e.g., "saas-dashboard", "e-commerce-api")
> Must be valid directory name (max 64 characters)
**2. Project Description:**
Brief description of what you're building (1-3 sentences)
> This appears in Archon and README
**3. Project Type:**
What kind of project is this?
- [ ] Web Application (Frontend + Backend)
- [ ] API/Backend Only
- [ ] CLI Application
- [ ] Full-Stack with Database
- [ ] Library/Package
- [ ] Mobile App Backend
- [ ] Other: ___
**4. Working Directory:**
Where should the project be created?
> Default: current directory
> Example: E:\Repos\MyOrg\projects
**5. GitHub Repository:**
How should we handle version control?
- [ ] Create new repository
- [ ] Use existing: [URL]
- [ ] No GitHub integration (local only)
Phase 2: Technical Stack
## Phase 2: Technical Stack
**6. Primary Language:**
What programming language?
- [ ] TypeScript/JavaScript
- [ ] Python
- [ ] Go
- [ ] Rust
- [ ] Java/Kotlin
- [ ] C# / .NET
- [ ] Other: ___
**7. Framework (if applicable):**
Frontend Framework:
- [ ] React
- [ ] Vue
- [ ] Svelte
- [ ] Next.js
- [ ] Angular
- [ ] None / Other
Backend Framework:
- [ ] Express/Fastify
- [ ] FastAPI
- [ ] Gin (Go)
- [ ] Actix (Rust)
- [ ] Spring Boot
- [ ] ASP.NET Core
- [ ] None / Other
**8. Database:**
What database will you use?
- [ ] PostgreSQL
- [ ] MySQL/MariaDB
- [ ] MongoDB
- [ ] SQLite
- [ ] Supabase
- [ ] Firebase
- [ ] None / TBD
**9. Package Manager:**
Which package manager?
- [ ] npm
- [ ] yarn
- [ ] pnpm
- [ ] pip / poetry
- [ ] go mod
- [ ] cargo
- [ ] nuget
Phase 3: Agent Configuration
## Phase 3: Agent Configuration
**10. Target Feature Count:**
How many features should be generated from the spec?
> Recommended: 20-50 for medium projects
> Default: 30
> Range: 10-100
**11. Session Iteration Limit:**
Max tool calls per coding session?
> 0 = unlimited
> Default: 50
> Range: 25-200
**12. Claude Model Preference:**
Which model should the agents use?
- [ ] claude-opus-4-5-20251101
(Best for complex reasoning, architecture decisions)
- [ ] claude-sonnet-4-20250514
(Recommended - good balance of speed and capability)
- [ ] claude-haiku-3-5-20241022
(Fastest - good for quick iterations)
**13. Execution Mode:**
How will you run the agents?
- [ ] Terminal: Manual prompt execution (recommended)
- [ ] Background: Run in background process
- [ ] SDK: Python automation script
- [ ] All modes supported
Phase 4: MCP Server Configuration
## Phase 4: MCP Server Configuration
**14. MCP Servers to Enable:**
Which MCP servers should be available to agents?
Required:
- [x] Archon (State management - always required)
Recommended:
- [ ] Playwright (Browser automation for E2E testing)
- [ ] GitHub (Repository operations, PR management)
- [ ] Brave Search (Web research during development)
Optional:
- [ ] Filesystem (Enhanced file operations)
- [ ] Memory (Persistent memory across sessions)
- [ ] Sequential Thinking (Complex reasoning)
Custom:
- [ ] Other: ___ (specify MCP server name)
**15. MCP Server Configurations:**
For each selected server, provide configuration if needed:
> Most servers use defaults
> Archon requires ARCHON_URL environment variable
Phase 5: Testing Strategy
## Phase 5: Testing Strategy
**16. Testing Requirements:**
What level of testing do you want?
- [ ] Unit tests only
(Fast, isolated tests for functions/components)
- [ ] Unit + Integration tests
(Includes API and database testing)
- [ ] Full E2E with browser automation
(Complete user flow testing)
- [ ] Manual testing only
(No automated test suite)
**17. Browser Testing Tool (if E2E selected):**
- [ ] Playwright MCP (Recommended - built-in)
- [ ] Puppeteer MCP
- [ ] None / Manual browser testing
**18. Test Framework:**
Based on your language, which test framework?
TypeScript/JavaScript:
- [ ] Jest
- [ ] Vitest (recommended)
- [ ] Mocha
Python:
- [ ] pytest (recommended)
- [ ] unittest
Go:
- [ ] go test (built-in)
Rust:
- [ ] cargo test (built-in)
C# / .NET:
- [ ] xUnit (recommended)
- [ ] NUnit
- [ ] MSTest
**19. Test Coverage Target:**
Minimum code coverage percentage?
> Default: 80%
> Range: 50-100%
Phase 6: Security Configuration
## Phase 6: Security Configuration
**20. Allowed Bash Commands:**
Which commands should agents be allowed to execute?
Package Managers:
- [ ] npm, npx, yarn, pnpm
- [ ] pip, poetry, pipx
- [ ] go
- [ ] cargo
- [ ] dotnet
Version Control:
- [ ] git (all operations)
- [ ] gh (GitHub CLI)
Build Tools:
- [ ] tsc, webpack, vite, esbuild
- [ ] make, cmake
Test Runners:
- [ ] jest, vitest, mocha
- [ ] pytest
- [ ] go test
- [ ] cargo test
- [ ] dotnet test
Database Commands:
- [ ] psql, mysql, mongosh
- [ ] prisma, drizzle, typeorm
Container Commands:
- [ ] docker, docker-compose
**21. Denied Commands (Security):**
Commands that should NEVER be executed:
- [x] rm -rf (recursive delete)
- [x] sudo (elevated privileges)
- [x] curl/wget (arbitrary downloads)
- [x] eval, exec (arbitrary code execution)
- [ ] Custom: ___
**22. Filesystem Restrictions:**
How should file access be restricted?
- [ ] Restrict to project directory only (recommended)
- [ ] Allow parent directory access
- [ ] Allow home directory access
- [ ] No restrictions
**23. Secret Handling:**
How should secrets/credentials be managed?
- [ ] Environment variables only (recommended)
- [ ] .env file support
- [ ] Secret manager integration (AWS/Azure/GCP)
- [ ] No secrets needed
Phase 7: Session Handoff Configuration
## Phase 7: Session Handoff Configuration
**24. Handoff Document Location:**
Where should session notes be saved?
> In addition to Archon, a local file can be maintained
- [ ] .harness/session-notes.md (default)
- [ ] docs/session-notes.md
- [ ] No local file (Archon only)
**25. Context Preservation:**
What should be included in handoffs?
- [x] Tasks completed this session
- [x] Current task in progress
- [x] Test results summary
- [x] Blockers and issues
- [ ] Full git diff summary
- [ ] Files modified list
- [ ] Decisions made
- [ ] Questions for next session
**26. Auto-Commit Configuration:**
Should agents automatically commit changes?
- [ ] Yes, commit at end of each session (recommended)
- [ ] Yes, commit after each feature completion
- [ ] No, manual commits only
**27. Commit Message Style:**
What commit message format?
- [ ] Conventional Commits (feat:, fix:, etc.)
- [ ] Simple descriptive
- [ ] Include task ID reference
Phase 8: Application Specification
## Phase 8: Application Specification
**28. Application Specification:**
Provide a detailed description of the application to build.
Include:
- Core features and functionality
- User flows and interactions
- Data models and relationships
- Authentication requirements
- Third-party integrations
- UI/UX requirements (if applicable)
- API endpoints needed
- Performance requirements
- Scalability considerations
**Tip:** The more detailed the spec, the better the generated features.
Aim for 500-2000 words for best results.
You can provide:
- [ ] Inline specification (type/paste here)
- [ ] File path to existing spec document
- [ ] URL to specification (will be fetched)
Harness Configuration Generation
After gathering all questionnaire responses, generate the .harness/ directory structure:
Directory Structure
.harness/
├── config.json # Main harness configuration
├── prompts/
│ ├── initializer.md # Feature breakdown prompt template
│ ├── coder.md # Implementation prompt template
│ ├── tester.md # Testing prompt template
│ └── reviewer.md # Review prompt template
├── templates/
│ ├── feature-task.md # Task description template
│ ├── session-notes.md # Handoff template
│ └── test-report.md # Test results template
└── state/
├── current-session.json # Active session state
└── history/ # Session history archive
└── .gitkeep
config.json Structure
Generate the main configuration file:
{
"harness_version": "2.0.0",
"created_at": "[ISO_TIMESTAMP]",
"updated_at": "[ISO_TIMESTAMP]",
"project": {
"name": "[PROJECT_NAME]",
"description": "[PROJECT_DESCRIPTION]",
"type": "[PROJECT_TYPE]",
"path": "[FULL_PATH]",
"archon_project_id": "[ARCHON_ID]",
"github_repo": "[GITHUB_URL_OR_NULL]"
},
"tech_stack": {
"language": "[LANGUAGE]",
"framework": {
"frontend": "[FRONTEND_FRAMEWORK_OR_NULL]",
"backend": "[BACKEND_FRAMEWORK_OR_NULL]"
},
"database": "[DATABASE_OR_NULL]",
"package_manager": "[PACKAGE_MANAGER]",
"test_framework": "[TEST_FRAMEWORK]"
},
"agents": {
"initializer": {
"max_features": 30,
"model": "claude-sonnet-4-20250514",
"prompt_template": ".harness/prompts/initializer.md"
},
"coder": {
"iteration_limit": 50,
"model": "claude-sonnet-4-20250514",
"prompt_template": ".harness/prompts/coder.md",
"one_feature_per_session": true
},
"tester": {
"parallel": true,
"model": "claude-sonnet-4-20250514",
"prompt_template": ".harness/prompts/tester.md",
"run_after_implementation": true
},
"reviewer": {
"model": "claude-sonnet-4-20250514",
"prompt_template": ".harness/prompts/reviewer.md",
"run_before_complete": true,
"block_on_critical": true
}
},
"mcp_servers": {
"required": ["archon"],
"enabled": ["archon", "playwright", "github"],
"configurations": {
"archon": {
"url": "${ARCHON_URL}"
},
"playwright": {
"headless": true
}
}
},
"testing": {
"strategy": "unit_integration",
"coverage_target": 80,
"browser_tool": "playwright",
"test_commands": {
"unit": "npm test",
"integration": "npm run test:integration",
"e2e": "npx playwright test",
"all": "npm run test:all"
},
"require_passing_before_complete": true
},
"security": {
"allowed_commands": [
"npm", "npx", "node",
"git", "gh",
"tsc", "vite", "esbuild",
"jest", "vitest"
],
"denied_commands": [
"rm -rf",
"sudo",
"curl",
"wget",
"eval"
],
"filesystem_restricted": true,
"project_root_only": true,
"env_file_support": true
},
"handoffs": {
"auto_commit": true,
"commit_style": "conventional",
"local_notes_path": ".harness/state/session-notes.md",
"include_in_handoff": [
"tasks_completed",
"current_task",
"test_results",
"blockers",
"decisions"
],
"archon_session_document": true
},
"status": "initializing"
}
Prompt Templates
Generate agent-specific prompt templates:
.harness/prompts/initializer.md
# Harness Initializer Prompt
You are the initializer agent for the [PROJECT_NAME] harness project.
## Your Mission
Read the application specification and generate detailed feature tasks in Archon.
This is the FIRST session - you set up everything for the coding agent.
## Project Context
- **Project**: [PROJECT_NAME]
- **Archon Project ID**: [ARCHON_PROJECT_ID]
- **Type**: [PROJECT_TYPE]
- **Stack**: [LANGUAGE] / [FRAMEWORK]
- **Database**: [DATABASE]
## Application Specification
[FULL_APP_SPEC_HERE]
## Your Tasks
1. Read and analyze the specification thoroughly
2. Break down into [MAX_FEATURES] detailed feature tasks
3. Create tasks in Archon with proper priority ordering
4. Set up project directory structure
5. Initialize development environment
6. Create clean handoff for coding agent
## Task Creation Guidelines
- Each task = 30 min to 4 hours of work
- Include acceptance criteria
- Include test steps
- Order by dependencies (high priority first)
- Group by feature tag
## Use the harness-initializer skill for full protocol.
.harness/prompts/coder.md
# Harness Coding Prompt
You are the coding agent for the [PROJECT_NAME] harness project.
## Your Mission
Continue development from the previous session. Implement ONE feature per session
and maintain clean handoffs via Archon.
## Project Context
- **Project**: [PROJECT_NAME]
- **Archon Project ID**: [ARCHON_PROJECT_ID]
- **Stack**: [LANGUAGE] / [FRAMEWORK]
## Session Protocol
1. **Orient** - Read Archon session notes and current state
2. **Verify** - Run tests to confirm existing features work
3. **Implement** - Complete ONE task from highest priority TODO
4. **Test** - Coordinate with harness-tester skill
5. **Review** - Coordinate with harness-reviewer skill (if enabled)
6. **Handoff** - Update Archon and commit changes
## Constraints
- Max iterations: [ITERATION_LIMIT]
- Testing required: [TESTING_STRATEGY]
- Auto-commit: [AUTO_COMMIT]
## Use the harness-coder skill for full protocol.
.harness/prompts/tester.md
# Harness Testing Prompt
You are the testing agent for the [PROJECT_NAME] harness project.
## Your Mission
Run comprehensive tests and report results to Archon.
## Testing Strategy: [TESTING_STRATEGY]
### Test Commands
- Unit: `[UNIT_TEST_COMMAND]`
- Integration: `[INTEGRATION_TEST_COMMAND]`
- E2E: `[E2E_TEST_COMMAND]`
### Coverage Target: [COVERAGE_TARGET]%
### Browser Testing
- Tool: [BROWSER_TOOL]
- Headless: true
## Protocol
1. Identify test scope (specific feature or full suite)
2. Run appropriate tests
3. Collect and analyze results
4. Report to Archon task
5. Block completion if tests fail
## Use the harness-tester skill for full protocol.
.harness/prompts/reviewer.md
# Harness Review Prompt
You are the code review agent for the [PROJECT_NAME] harness project.
## Your Mission
Review code changes before features are marked complete.
Ensure quality, security, and architectural consistency.
## Review Checklist
### Code Quality
- [ ] Functions are focused (single responsibility)
- [ ] Variable names are meaningful
- [ ] Proper error handling
- [ ] No debug statements or TODOs
### Architecture
- [ ] Follows existing patterns
- [ ] Correct layer placement
- [ ] No circular dependencies
### Security
- [ ] No hardcoded secrets
- [ ] Input validation present
- [ ] SQL injection prevention
- [ ] Authentication checks
### Testing
- [ ] Tests exist for new functionality
- [ ] Edge cases covered
- [ ] No tests removed
## Verdicts
- **APPROVED**: Ready to complete
- **CHANGES_REQUESTED**: Address findings
- **BLOCKED**: Critical issue, cannot complete
## Use the harness-reviewer skill for full protocol.
Project Generation Workflow
After collecting all questionnaire responses, execute this workflow:
Step 1: Create Archon Project
# Create the project in Archon
project = manage_project("create",
title="[PROJECT_NAME]",
description="""[PROJECT_DESCRIPTION]
Harness Type: Autonomous Coding Agent
Project Type: [PROJECT_TYPE]
Stack: [LANGUAGE] / [FRAMEWORK]
Created: [TIMESTAMP]""",
github_repo="[GITHUB_URL_OR_NONE]"
)
PROJECT_ID = project["project"]["id"]
Step 2: Store Configuration Documents in Archon
# Store harness configuration as Archon document
manage_document("create",
project_id=PROJECT_ID,
title="Harness Configuration",
document_type="guide",
content=HARNESS_CONFIG_JSON,
tags=["harness", "config", "settings"]
)
# Store application specification
manage_document("create",
project_id=PROJECT_ID,
title="Application Specification",
document_type="spec",
content={
"specification": "[FULL_APP_SPEC]",
"version": "1.0",
"created_at": "[TIMESTAMP]",
"last_updated": "[TIMESTAMP]"
},
tags=["harness", "spec", "requirements"]
)
# Create session notes document
manage_document("create",
project_id=PROJECT_ID,
title="Session Notes",
document_type="note",
content={
"sessions": [],
"current_focus": None,
"blockers": [],
"next_steps": ["Run harness-initializer to begin"],
"decisions": [],
"last_updated": "[TIMESTAMP]"
},
tags=["harness", "handoff", "session", "tracking"]
)
Step 3: Create META Task
# Create META task for session tracking
manage_task("create",
project_id=PROJECT_ID,
title="META: Session Tracking & Handoffs",
description="""This task tracks session-level progress and handoffs.
## Current Session Status
- Session: Not started
- Agent: None
- Status: Awaiting initialization
## Instructions
Update this task at the END of each session with:
1. What was completed
2. Current task being worked on
3. Any blockers or issues
4. Context for next session
## Progress
- Total Tasks: Pending initialization
- Completed: 0
- Remaining: TBD
## DO NOT mark this task as done - it's for tracking only.""",
status="doing",
task_order=100,
feature="Meta",
assignee="Session Tracker"
)
Step 4: Create Initialization Task
# Create initialization task
manage_task("create",
project_id=PROJECT_ID,
title="Initialize project and generate feature tasks",
description="""First session initialization task.
## Tasks
1. Read Application Specification from Archon documents
2. Analyze and break down into [MAX_FEATURES] feature tasks
3. Create tasks in Archon with proper priorities
4. Create project directory structure
5. Initialize git repository
6. Set up development environment
7. Run init.sh / init.ps1
8. Verify environment works
9. Update Session Notes document
10. Commit initial structure
## Guidelines
- Each feature task: 30 min to 4 hours of work
- Include acceptance criteria
- Include test verification steps
- Order by dependencies (foundation first)
- Group related tasks by feature tag
## Output
- All tasks created in Archon
- Project structure ready
- Clean handoff for coding agent""",
status="todo",
task_order=99,
feature="Setup",
assignee="Initializer Agent"
)
Step 5: Create Local Project Files
Create the following files in the project directory:
.harness/config.json
(Use the generated config.json structure from above)
init.sh (Linux/Mac)
#!/bin/bash
set -e
echo "======================================"
echo "Initializing [PROJECT_NAME] harness..."
echo "======================================"
# Create directory structure
echo "Creating directory structure..."
mkdir -p src tests docs .harness/state/history
# Initialize git if not already done
if [ ! -d ".git" ]; then
echo "Initializing git repository..."
git init
# Create .gitignore
cat > .gitignore << 'GITIGNORE'
# Dependencies
node_modules/
__pycache__/
*.pyc
venv/
.venv/
# Environment
.env
.env.local
.env.*.local
# Build
dist/
build/
*.egg-info/
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
# Test coverage
coverage/
.coverage
htmlcov/
# Harness local state
.harness/state/current-session.json
.harness/state/history/*
!.harness/state/history/.gitkeep
# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
GITIGNORE
fi
# Framework-specific initialization
[FRAMEWORK_INIT_COMMANDS]
# Verify setup
echo ""
echo "Verifying setup..."
[VERIFICATION_COMMANDS]
echo ""
echo "======================================"
echo "Environment ready!"
echo "======================================"
echo ""
echo "Next steps:"
echo " 1. Use harness-initializer skill to generate tasks"
echo " 2. Or use harness-coder skill for coding sessions"
echo ""
echo "Archon Project ID: [PROJECT_ID]"
init.ps1 (Windows)
# Harness initialization script for Windows
$ErrorActionPreference = "Stop"
Write-Host "======================================"
Write-Host "Initializing [PROJECT_NAME] harness..."
Write-Host "======================================"
# Create directory structure
Write-Host "Creating directory structure..."
New-Item -ItemType Directory -Force -Path src, tests, docs, ".harness\state\history" | Out-Null
# Initialize git if not already done
if (-not (Test-Path ".git")) {
Write-Host "Initializing git repository..."
git init
# Create .gitignore
@"
# Dependencies
node_modules/
__pycache__/
*.pyc
venv/
.venv/
# Environment
.env
.env.local
.env.*.local
# Build
dist/
build/
*.egg-info/
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
# Test coverage
coverage/
.coverage
htmlcov/
# Harness local state
.harness/state/current-session.json
.harness/state/history/*
!.harness/state/history/.gitkeep
# Logs
*.log
npm-debug.log*
"@ | Out-File -FilePath .gitignore -Encoding utf8
}
# Framework-specific initialization
[FRAMEWORK_INIT_COMMANDS_PS1]
# Verify setup
Write-Host ""
Write-Host "Verifying setup..."
[VERIFICATION_COMMANDS_PS1]
Write-Host ""
Write-Host "======================================"
Write-Host "Environment ready!"
Write-Host "======================================"
Write-Host ""
Write-Host "Next steps:"
Write-Host " 1. Use harness-initializer skill to generate tasks"
Write-Host " 2. Or use harness-coder skill for coding sessions"
Write-Host ""
Write-Host "Archon Project ID: [PROJECT_ID]"
.harness/SKILLS.md
# Harness Skills Reference
This project uses the autonomous agent harness system.
## Skill Pipeline
Setup: @harness-wizard (You are here - done) ↓ Init: @harness-initializer (First session only) ↓ Loop: @harness-coder (Every coding session) ↓ ↓ │ @harness-tester (Parallel testing) │ @harness-reviewer (Before completion)
## Quick Commands
| Command | Skill | Purpose |
|---------|-------|---------|
| `/harness-init` | harness-initializer | First session setup |
| `/harness-next` | harness-coder | Continue development |
| `/harness-test` | harness-tester | Run test suite |
| `/harness-review` | harness-reviewer | Code review |
| `/harness-status` | (manual) | Check Archon status |
## Session Workflow
### First Session
- Use @harness-initializer
- It will:
- Read the app specification
- Generate feature tasks
- Set up project structure
- Create handoff for coder
### Coding Sessions
- Use @harness-coder
- It will:
- Load previous session state
- Verify existing features
- Implement ONE feature
- Run tests
- Get review (if enabled)
- Update Archon
- Commit and handoff
## Archon Quick Reference
```python
# Get project status
find_tasks(filter_by="project", filter_value="[PROJECT_ID]")
# Get session notes
find_documents(project_id="[PROJECT_ID]", query="Session Notes")
# Update task status
manage_task("update", task_id="...", status="doing")
manage_task("update", task_id="...", status="done")
Configuration
See .harness/config.json for full configuration.
Key settings:
- Max features: [MAX_FEATURES]
- Iteration limit: [ITERATION_LIMIT]
- Model: [MODEL]
- Testing: [TESTING_STRATEGY]
- Auto-commit: [AUTO_COMMIT]
### Step 6: Framework-Specific Setup
Based on the selected tech stack, add framework-specific files:
#### TypeScript/JavaScript + React/Next.js
```json
// package.json additions
{
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"test": "vitest",
"test:integration": "vitest run --config vitest.integration.config.ts",
"test:e2e": "playwright test",
"test:all": "npm run test && npm run test:integration && npm run test:e2e",
"lint": "eslint . --ext .ts,.tsx",
"type-check": "tsc --noEmit"
}
}
Python + FastAPI
# pyproject.toml additions
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"pytest-cov>=4.0",
"pytest-asyncio>=0.21",
"httpx>=0.24",
"ruff>=0.1",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
[tool.ruff]
line-length = 100
select = ["E", "F", "I", "N", "W"]
Step 7: Display Setup Summary
## Harness Setup Complete!
### Project Created
| Field | Value |
|-------|-------|
| **Name** | [PROJECT_NAME] |
| **Type** | [PROJECT_TYPE] |
| **Location** | [FULL_PATH] |
| **Archon ID** | [PROJECT_ID] |
| **GitHub** | [GITHUB_URL_OR_LOCAL] |
### Technical Stack
| Component | Selection |
|-----------|-----------|
| **Language** | [LANGUAGE] |
| **Frontend** | [FRONTEND_FRAMEWORK] |
| **Backend** | [BACKEND_FRAMEWORK] |
| **Database** | [DATABASE] |
| **Test Framework** | [TEST_FRAMEWORK] |
### Agent Configuration
| Setting | Value |
|---------|-------|
| **Max Features** | [MAX_FEATURES] |
| **Iteration Limit** | [ITERATION_LIMIT] |
| **Model** | [MODEL] |
| **Testing Strategy** | [TESTING_STRATEGY] |
| **Coverage Target** | [COVERAGE_TARGET]% |
| **Auto-Commit** | [AUTO_COMMIT] |
### MCP Servers Enabled
[LIST_OF_MCP_SERVERS]
### Files Created
[PROJECT_NAME]/ ├── .harness/ │ ├── config.json │ ├── prompts/ │ │ ├── initializer.md │ │ ├── coder.md │ │ ├── tester.md │ │ └── reviewer.md │ ├── templates/ │ └── state/ ├── .gitignore ├── init.sh / init.ps1 └── [FRAMEWORK_FILES]
### Archon Resources Created
- Project record
- Harness Configuration document
- Application Specification document
- Session Notes document
- META tracking task
- Initialization task
---
## Next Steps
### Option 1: Initialize Now (Recommended)
Use the `@harness-initializer` skill to:
- Generate feature tasks from your specification
- Set up the development environment
- Create the first handoff
### Option 2: Manual Start
1. Run the init script: `./init.sh` or `.\init.ps1`
2. Then use `@harness-initializer`
### Option 3: Quick Resume Command
Use harness-initializer skill to begin project initialization
---
**Tip**: The initializer will read your app specification and create all feature
tasks. This typically takes 5-15 minutes depending on specification complexity.
Quick Setup Mode
For quick setup, use these defaults and only ask essential questions:
Smart Defaults
defaults:
feature_count: 30
iteration_limit: 50
model: claude-sonnet-4-20250514
testing_strategy: unit_integration
coverage_target: 80
browser_tool: playwright
execution_mode: terminal
auto_commit: true
commit_style: conventional
filesystem_restricted: true
Quick Setup Questions (Minimum)
Only ask for:
- Project name
- Project description
- Application specification
Infer everything else from:
- Existing files in directory (package.json, requirements.txt, etc.)
- README.md content
- Git configuration
- Directory structure
Detection Logic
def detect_stack(project_path):
"""Detect tech stack from existing files."""
stack = {}
# Check for Node.js/TypeScript
if exists("package.json"):
pkg = read_json("package.json")
stack["language"] = "typescript" if exists("tsconfig.json") else "javascript"
# Detect framework
deps = {**pkg.get("dependencies", {}), **pkg.get("devDependencies", {})}
if "next" in deps:
stack["framework"] = "next.js"
elif "react" in deps:
stack["framework"] = "react"
elif "vue" in deps:
stack["framework"] = "vue"
# Detect test framework
if "vitest" in deps:
stack["test_framework"] = "vitest"
elif "jest" in deps:
stack["test_framework"] = "jest"
# Check for Python
elif exists("pyproject.toml") or exists("requirements.txt"):
stack["language"] = "python"
if exists("pyproject.toml"):
pyproject = read_toml("pyproject.toml")
deps = pyproject.get("project", {}).get("dependencies", [])
if "fastapi" in str(deps):
stack["framework"] = "fastapi"
elif "flask" in str(deps):
stack["framework"] = "flask"
stack["test_framework"] = "pytest"
# Check for other languages...
return stack
Resume Mode
For resume mode, follow this protocol:
Step 1: Detect Harness Project
# Check for harness configuration
cat .harness/config.json
If found, extract archon_project_id.
Step 2: Query Archon for Current State
# Get project details
project = find_projects(project_id=archon_project_id)
# Get all tasks
tasks = find_tasks(filter_by="project", filter_value=archon_project_id)
# Get session notes
notes = find_documents(
project_id=archon_project_id,
query="Session Notes"
)
# Compute statistics
total_tasks = len([t for t in tasks if t["feature"] != "Meta"])
done_tasks = len([t for t in tasks if t["status"] == "done"])
doing_tasks = len([t for t in tasks if t["status"] == "doing"])
todo_tasks = len([t for t in tasks if t["status"] == "todo"])
Step 3: Display Resume Summary
## Harness Project Resume
### Project: [PROJECT_NAME]
**Archon ID**: [PROJECT_ID]
**Path**: [PROJECT_PATH]
### Progress
| Status | Count | Percentage |
|--------|-------|------------|
| Done | [DONE] | [DONE_PCT]% |
| In Progress | [DOING] | - |
| Todo | [TODO] | - |
| **Total** | **[TOTAL]** | - |
### Current State
**Last Session**: [LAST_SESSION_DATE]
**Last Agent**: [LAST_AGENT]
**Last Task Completed**: [LAST_TASK_TITLE]
### Current Task (In Progress)
[CURRENT_TASK_DETAILS_IF_ANY]
### Next Task (Highest Priority TODO)
[NEXT_TASK_DETAILS]
### Blockers
[ANY_BLOCKERS_FROM_SESSION_NOTES]
---
## Resume Options
1. **Continue Development**
Use `@harness-coder` to continue with the next task
2. **View All Tasks**
Query: `find_tasks(filter_by="project", filter_value="[PROJECT_ID]")`
3. **Check Session Notes**
Query: `find_documents(project_id="[PROJECT_ID]", query="Session Notes")`
4. **Run Status Report**
Detailed breakdown of all features and their status
Error Handling
If Archon is Unavailable
## Warning: Archon MCP Server Not Accessible
The harness requires Archon for state management. Please ensure:
1. Archon MCP server is running
2. MCP configuration includes Archon
3. ARCHON_URL environment variable is set
### Check MCP Status
Run `/mcp` to see connected servers.
### Setup Instructions
See: https://github.com/archon-ai/archon-mcp
### Options
- [ ] Retry connection
- [ ] View Archon setup instructions
- [ ] Exit wizard
If Project Already Exists
## Warning: Harness Configuration Already Exists
Found existing `.harness/config.json` in this directory.
### Existing Project Details
- **Name**: [EXISTING_PROJECT_NAME]
- **Archon ID**: [EXISTING_PROJECT_ID]
- **Created**: [CREATED_DATE]
### Options
1. **Resume Existing Project** (Recommended)
Use `@harness-coder` to continue development
2. **Create in Subdirectory**
Create new harness in `./[NEW_PROJECT_NAME]/`
3. **Overwrite Configuration** (Destructive)
Delete existing harness config and start fresh
WARNING: This does NOT delete Archon project data
4. **Cancel Setup**
Exit wizard without changes
If GitHub Creation Fails
## Warning: GitHub Repository Creation Failed
Error: [ERROR_MESSAGE]
### Possible Causes
- Not authenticated: Run `gh auth login`
- Organization access denied
- Repository name already exists
- Rate limit exceeded
### Options
1. **Retry with Different Name**
Try a different repository name
2. **Use Existing Repository**
Provide URL to existing repository
3. **Continue Without GitHub**
Proceed with local-only setup
(Can add GitHub later)
Best Practices
For Effective Harness Projects
-
Detailed Specifications The more detail in the app spec, the better the generated tasks. Aim for 500-2000 words covering all features.
-
Start Small Begin with 20-30 features. Add more later if needed. Overly large task lists can be overwhelming.
-
Incremental Development The harness works best with one feature per session. Resist the urge to do multiple features at once.
-
Testing is Critical E2E testing catches bugs that unit tests miss. Don't skip the tester agent.
-
Clean Handoffs Always end sessions cleanly with proper Archon updates. The next session depends on accurate state.
-
Trust the Pipeline Let the testing and review skills do their jobs. Don't bypass them to move faster.
-
Review Decisions Document architectural decisions in session notes. Future sessions need this context.
Common Pitfalls to Avoid
| Pitfall | Why It's Bad | What to Do |
|---|---|---|
| Skipping initialization | Coder has no tasks | Always run initializer first |
| Vague specifications | Tasks are unclear | Write detailed specs |
| Too many features | Overwhelming, never finish | Start with 20-30 |
| Bypassing tests | Bugs accumulate | Let tester run |
| Ignoring reviews | Technical debt grows | Address findings |
| Not updating Archon | State becomes stale | Always update handoffs |
| Manual commits | Inconsistent history | Use auto-commit |
Integration with Project Wizard
When activated from the project wizard (@project-wizard), this skill:
- Receives pre-gathered basic project information
- Skips Phase 1 questions (already answered)
- Continues from Phase 2 (Technical Stack)
- Adds harness-specific configuration to existing project
Handoff Protocol from Project Wizard
# Project wizard passes context like:
project_context = {
"name": "...",
"description": "...",
"type": "...",
"path": "...",
"github_repo": "...",
"language": "...", # May be pre-selected
"framework": "...", # May be pre-selected
}
# Harness wizard uses this and asks for remaining info
Session State Management
Current Session State File
.harness/state/current-session.json:
{
"session_number": 5,
"started_at": "2025-01-15T09:30:00Z",
"agent": "harness-coder",
"task_id": "task-uuid-here",
"task_title": "Implement user authentication",
"iteration_count": 23,
"status": "in_progress",
"checkpoints": [
{
"time": "09:35:00",
"action": "Started implementation"
},
{
"time": "10:15:00",
"action": "Core auth logic complete"
}
]
}
Session History Archive
.harness/state/history/session-{N}.json:
Archive completed sessions for reference. Useful for debugging or understanding project evolution.
Version History
| Version | Date | Changes |
|---|---|---|
| 2.0.0 | 2025-01 | Complete rewrite with full wizard phases |
| 1.0.0 | 2024-12 | Initial harness wizard implementation |
Related Skills
| Skill | Purpose |
|---|---|
@project-wizard |
Parent wizard that may delegate here |
@harness-initializer |
First session task generation |
@harness-coder |
Main development loop |
@harness-tester |
Test execution and reporting |
@harness-reviewer |
Code review before completion |
@autonomous-agent-harness |
Reference architecture documentation |
Quick Reference Card
HARNESS WIZARD QUICK REFERENCE
SETUP MODES
-----------
Full Setup Complete questionnaire (new projects)
Quick Setup Smart defaults (existing codebases)
Resume Mode Continue existing project
KEY CONFIGURATION
-----------------
Max Features: 20-50 recommended
Iteration Limit: 50 default (0=unlimited)
Model: claude-sonnet-4 (default)
Testing: unit+integration (default)
Coverage: 80% target
ARCHON RESOURCES CREATED
------------------------
- Project record
- Harness Configuration document
- Application Specification document
- Session Notes document
- META tracking task
- Initialization task
LOCAL FILES CREATED
-------------------
.harness/config.json Main configuration
.harness/prompts/*.md Agent prompt templates
.harness/state/ Session state tracking
init.sh / init.ps1 Environment setup
NEXT STEPS AFTER SETUP
----------------------
1. Run init script
2. Use @harness-initializer
3. Then use @harness-coder for each session
More from housegarofalo/claude-code-base
mqtt-iot
Configure MQTT brokers (Mosquitto, EMQX) for IoT messaging, device communication, and smart home integration. Manage topics, QoS levels, authentication, and bridging. Use when setting up IoT messaging, smart home communication, or device-to-cloud connectivity. (project)
22home-assistant
Ultimate Home Assistant skill - complete administration, wireless protocols (Zigbee/ZHA/Z2M, Z-Wave JS, Thread, Matter), ESPHome device building, advanced troubleshooting, performance optimization, security hardening, custom integration development, and professional dashboard design. Covers configuration, REST API, automation debugging, database optimization, SSL/TLS, Jinja2 templating, and HACS custom cards. Use for any HA task.
6testing
Comprehensive testing skill covering unit, integration, and E2E testing with pytest, Jest, Cypress, and Playwright. Use for writing tests, improving coverage, debugging test failures, and setting up testing infrastructure.
5power-automate
Expert guidance for Power Automate development including cloud flows, desktop flows, Dataverse connector, expression functions, custom connectors, error handling, and child flow patterns. Use when building automated workflows, writing flow expressions, creating custom connectors from OpenAPI, or implementing error handling patterns.
5mobile-pwa
Build Progressive Web Apps with offline support, push notifications, and native-like experiences. Covers service workers, Web App Manifest, caching strategies, IndexedDB, background sync, and installability. Use for mobile-first web apps, offline-capable applications, and app-like experiences.
5svelte-kit
Expert guidance for SvelteKit 2 with Svelte 5 runes, server-side rendering, and modern patterns. Covers $state, $derived, $effect, form actions, load functions, and API routes. Use for SvelteKit applications, Svelte 5 runes, and full-stack Svelte development.
5