A harness for AI coding agents that provides context engineering patterns, commands, and configurations. Clone this repo and instantly configure your AI agent tooling with battle-tested prompts, agents, and workflows.
- OpenCode (opencode.ai) - Supported ✓
- Claude Code (code.claude.com) - Supported ✓
- Gemini CLI (ai.google.dev/gemini-cli) - Supported ✓
- Cursor - Not planned yet
- Windsurf - Not planned yet
- GitHub Copilot CLI - Not planned yet
- GNU Stow - Symlink farm manager
# macOS
brew install stow
# Ubuntu/Debian
sudo apt install stow
# Fedora
sudo dnf install stow
# Arch
sudo pacman -S stow# Clone the repository
git clone https://github.com/adrielp/ai-engineering-harness.git
cd ai-engineering-harness
# Install for OpenCode
./setup.sh opencode # Install OpenCode configuration
./setup.sh opencode --dry-run # Preview changes
# Install for Claude Code
./setup.sh claude # Install Claude Code configuration
./setup.sh claude --dry-run # Preview changes
# Install for Gemini CLI
./setup.sh gemini # Install Gemini CLI configuration
./setup.sh gemini --dry-run # Preview changes
# Install all three tools
./setup.sh all # Install OpenCode, Claude Code, and Gemini CLI
./setup.sh all --dry-run # Preview changes
# To update after pulling changes
./setup.sh opencode --restow # Update OpenCode
./setup.sh claude --restow # Update Claude Code
./setup.sh gemini --restow # Update Gemini CLI
./setup.sh all --restow # Update all three
# To remove symlinks
./setup.sh opencode --delete # Remove OpenCode symlinks
./setup.sh claude --delete # Remove Claude Code symlinks
./setup.sh gemini --delete # Remove Gemini CLI symlinks
./setup.sh all --delete # Remove all symlinksThis will symlink:
opencode/→~/.config/opencode/(for OpenCode)claude/→~/.claude/(for Claude Code)gemini/→~/.gemini/(for Gemini CLI)
GNU Stow is the preferred method for managing configuration symlinks because:
- Non-destructive: Creates symlinks without modifying original files
- Reversible: Easy to enable/disable configurations
- Version control friendly: Your configs live in a git repo
- Package-based: Multiple tools can be managed independently
- Battle-tested: Used by dotfile managers for decades
Located in opencode/ (symlinked to ~/.config/opencode/):
Specialized sub-agents for different tasks:
codebase_analyzer- Analyzes implementation details and traces data flowcodebase_locator- Finds files and components by feature/topiccodebase_pattern_finder- Discovers similar implementations and patternsthoughts_analyzer- Extracts insights from research documentsthoughts_locator- Discovers documents in the thoughts/ directoryweb_search_researcher- Researches information from web sources
Custom slash commands for workflows:
/create_plan- Create detailed implementation plans interactively/implement_plan- Execute approved plans phase by phase/validate_plan- Verify implementation against plan specifications/research_codebase- Conduct comprehensive codebase research/commit- Create well-structured git commits/debug- Investigate issues during manual testing/debug-k8s- Debug Kubernetes clusters (prefers K8s MCP when available)/init_harness- Initialize harness in a repository (also available as skill)
Auto-triggered behaviors based on context:
init_harness- Initializes the harness in any repository (/init_harness)git-commit-helper- Creates well-structured commits when you say "commit these changes"pr-description-generator- Generates comprehensive PR descriptions following templatesexperimental-pr-workflow- Formalizes experimental work into proper tickets and PRs
Located in claude/ (symlinked to ~/.claude/):
Specialized subagents that Claude delegates to (same as OpenCode agents):
codebase_analyzer- Analyzes implementation details and traces data flowcodebase_locator- Finds files and components by feature/topiccodebase_pattern_finder- Discovers similar implementations and patternsthoughts_analyzer- Extracts insights from research documentsthoughts_locator- Discovers documents in the thoughts/ directoryweb_search_researcher- Researches information from web sources
Skills that extend Claude's capabilities (commands + auto-triggered skills):
Manual Skills (invoke with /skill-name):
/commit- Create well-structured git commits/debug- Investigate issues during manual testing/debug-k8s- Debug Kubernetes clusters (prefers K8s MCP when available)/create_plan- Create detailed implementation plans from tickets/implement_plan- Execute approved plans phase by phase/validate_plan- Verify implementation against plan specifications/research_codebase- Conduct comprehensive codebase research/init_harness- Initialize harness in a repository
Auto-Triggered Skills:
git-commit-helper- Triggers when you say "commit" or similarpr-description-generator- Triggers when creating pull requestsexperimental-pr-workflow- Formalizes experimental work
Located in gemini/ (symlinked to ~/.gemini/):
Specialized agents for different tasks:
codebase_analyzer- Analyzes implementation details and traces data flowcodebase_locator- Finds files and components by feature/topiccodebase_pattern_finder- Discovers similar implementations and patternsthoughts_analyzer- Extracts insights from research documentsthoughts_locator- Discovers documents in the thoughts/ directoryweb_search_researcher- Researches information from web sources
Manual slash commands (TOML format):
/create_plan- Create detailed implementation plans/implement_plan- Execute approved plans/validate_plan- Verify implementation/research_codebase- Comprehensive codebase research/commit- Create well-structured git commits/debug- Investigate issues/debug_k8s- Debug Kubernetes clusters/init_harness- Initialize harness
Auto-triggered skills:
git_commit_helper- Triggers when committing changespr_description_generator- Triggers when creating PRsexperimental_pr_workflow- Formalizes experimental work
Quick reference of all commands/skills across tools:
| Command | OpenCode | Claude Code | Gemini CLI | Purpose |
|---|---|---|---|---|
/init_harness |
✓ | ✓ | ✓ | Initialize harness in repository |
/create_plan |
✓ | ✓ | ✓ | Create implementation plan from ticket |
/implement_plan |
✓ | ✓ | ✓ | Execute approved plan |
/validate_plan |
✓ | ✓ | ✓ | Verify implementation |
/commit |
✓ | ✓ | ✓ | Create well-structured commits |
/debug |
✓ | ✓ | ✓ | Investigate issues |
/debug-k8s |
✓ | ✓ | ✓ | Debug Kubernetes clusters |
/research_codebase |
✓ | ✓ | ✓ | Comprehensive codebase research |
Note: All tools now use /init_harness (snake_case) for consistency.
The thoughts/ directory implements the context engineering pattern:
thoughts/
├── shared/ # Team-wide documents
│ ├── tickets/ # Feature requests, bug reports, tasks
│ ├── plans/ # Implementation plans
│ └── research/ # Research documents and investigations
├── global/ # Cross-repository concerns
└── {username}/ # Personal notes (create your own)
├── tickets/
└── plans/
The harness implements a structured workflow for AI-assisted development:
After installing the harness, initialize any repository with:
For OpenCode:
cd your-project
opencode
# Initialize the harness (creates AGENTS.md and thoughts/ structure)
/init_harnessFor Claude Code:
cd your-project
claude
# Initialize the harness (creates CLAUDE.md and thoughts/ structure)
/init_harnessFor Gemini CLI:
cd your-project
gemini
# Initialize the harness (creates GEMINI.md and thoughts/ structure)
/init_harnessThis will:
- Run
/initto generateAGENTS.md(OpenCode),CLAUDE.md(Claude Code), orGEMINI.md(Gemini CLI) with codebase context - Create the
thoughts/directory structure - Add a ticket template for consistent task definitions
- Create a Ticket - Define what needs to be built in
thoughts/shared/tickets/ - Create a Plan - Use
/create_plan thoughts/shared/tickets/PROJ-001.mdto generate a detailed implementation plan - Implement - Use
/implement_plan thoughts/shared/plans/feature-name.mdto execute the plan - Validate - Use
/validate_planto verify the implementation - Commit - Use
/committo create well-structured commits
For OpenCode:
# Initialize the harness in a new repo
/init_harness
# Create an implementation plan from a ticket
/create_plan thoughts/shared/tickets/PROJ-001-add-feature.md
# After plan approval, implement it
/implement_plan thoughts/shared/plans/add-feature.md
# Validate the implementation
/validate_plan thoughts/shared/plans/add-feature.md
# Commit the changes
/commitFor Claude Code:
# Initialize the harness in a new repo
/init_harness
# The remaining commands are the same
/create_plan thoughts/shared/tickets/PROJ-001-add-feature.md
/implement_plan thoughts/shared/plans/add-feature.md
/validate_plan thoughts/shared/plans/add-feature.md
/commitFor Gemini CLI:
# Initialize the harness in a new repo
/init_harness
# The remaining commands are the same
/create_plan thoughts/shared/tickets/PROJ-001-add-feature.md
/implement_plan thoughts/shared/plans/add-feature.md
/validate_plan thoughts/shared/plans/add-feature.md
/commitCreate new .md files in opencode/agents/ with:
---
name: my-custom-agent
description: What this agent does and when to use it.
---
[Agent system prompt here]Create new .md files in opencode/commands/ with the command prompt.
Create new .md files in claude/agents/ with:
---
name: my-custom-agent
description: What this subagent does and when to use it.
---
[Subagent system prompt here]Create a new directory in claude/skills/ with a SKILL.md file:
---
name: my-skill
description: What this skill does
disable-model-invocation: true # For manual-only skills
---
[Skill instructions here]Create your own directory under thoughts/:
mkdir -p thoughts/$(whoami)/{tickets,plans}Contributions welcome! See CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a ticket in
thoughts/shared/tickets/ - Use
/create_planto design your changes - Implement and validate
- Submit a pull request
Apache 2.0 - See LICENSE for details.