yaah generates configuration for four coding agents from a single Go codebase. One command per agent, every repo, same result.
The Problem
Coding agent configuration is scattered everywhere. Settings live in JSON files, skills are markdown in random directories, hooks are shell scripts wired by hand, MCP servers need manual JSON entries. Multiply that by the number of repos and agents you use. Good luck keeping any of it consistent.
Features
yaah ships with batteries included. Turn off what you don't need.
Generate config for Claude Code, OpenCode, Codex CLI, and GitHub Copilot CLI from one codebase. Each gets files in its native format.
Linting (golangci-lint, ruff, prettier, tsc, biome, rustfmt), command guard, secret scanner, comment checker, and session logger out of the box.
Compose handlers into sequential pipelines. Chain secret scanning with remediation advice, or build custom workflows with OnBlock, OnError, and Transform.
Built-in MCP server exposes yaah tools (secret scanning, linting, command checking) directly to your coding agent via stdio. Auto-discovered via .mcp.json.
33 skills organized by category, tags, risk level, and bundles. Search, filter, and discover skills via yaah skills CLI. Extend with external registries.
12 agents: executor, librarian, reviewer built in, plus 9 remote agents for AI engineering, security, code review, DevOps, SRE, and performance benchmarking.
Go (gopls), Python (pyright), TypeScript, and C# language servers enabled through the official Claude Code marketplace. yaah doctor checks binaries exist.
Every tool call, blocked command, file modification, and security finding is logged to a per-session JSON file. Full audit trail across all sessions.
Interface + registry pattern throughout. Implement hooks.Handler, mcp.Provider, skills.Skill, or agents.Agent and register it. Same pattern everywhere.
How It Works
Use the Go library to pick exactly what you need, or just use the built-in defaults.
One command creates config for all four agents. Target a specific agent with --agent.
Each agent gets files in its native format. Start a coding session and everything works.
Multi-Agent
Each agent gets config in its native format with per-agent adaptations.
| Agent | Settings | MCP | Hooks | Skills | Agents |
|---|---|---|---|---|---|
| Claude Code | .claude/settings.json |
.mcp.json |
embedded in settings | .claude/skills/ |
.claude/agents/ |
| OpenCode | opencode.json |
embedded ("mcp" key) |
.opencode/plugins/yaah.js |
.opencode/skills/ |
.opencode/agents/ |
| Codex CLI | .codex/config.toml |
embedded ([mcp_servers]) |
.codex/hooks.json |
.agents/skills/ |
not supported |
| Copilot CLI | none | .copilot/mcp-config.json |
.github/hooks/hooks.json |
.github/skills/ |
.github/agents/ |
Install
macOS and Linux
brew install dirien/tap/yaah
Requires Go 1.21+
go install github.com/dirien/yet-another-agent-harness/cmd/yaah@latest
CLI Reference