Skip to content
eyelockPublic

About

Harness template manager for AI coding agents. Compose skills, rules and context from any Git repo, then assemble one harness for Claude Code, Codex or Cursor.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

723 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ynh

Your name. Your AI.

brew tap eyelock/tap && brew install ynh
ynh install github.com/eyelock/ynh
ynh-guide

That gets you a guided session that teaches you ynh — and helps you create your own harness. Once you have one:

ynh install github.com/myorg/david
david

david is now a command. It knows your skills, your team's rules, your coding standards. It works on Claude today. Switch to Codex with -v codex: same harness, but Codex does not yet get everything (see Known gaps).

What this gives you

You become a command. Not "claude with some config files." A named identity that carries your entire AI working environment — tools, standards, style — all behind your name.

david                              # your configured AI
david "review this PR"             # it knows how you review
david -v codex                     # same harness, different vendor

Compose from anywhere. Cherry-pick skills from community repos, your team's private config, open-source libraries — and mix them with your own. Like a package manager for AI capabilities, backed by Git.

Known gaps in v0.16.0

ynh claims more than each vendor yet gets. In v0.16.0:

  • Codex does not yet receive commands. Hooks and session context reach it under ynh run for an accepted harness only, not under ynh agent run (Codex hook trust). Instructions (written to AGENTS.md), rules (folded into them), MCP servers, skills, agents, focuses and profiles do. Under ynh run, Codex starts in the run directory without -C, so the project's own AGENTS.md is never read.
  • Rules reach Claude Code, Codex and Copilot only by being folded into their instructions under ynh run: always on, with no path scoping.
  • OpenCode: delegates cannot run as subagents (a harness's own agents can), on_session_start does not fire, on_session_end cannot fire (OpenCode has no such event, a vendor limit), session context is not injected, and workspace folders are not granted. ynd export -v opencode drops delegates silently.
  • Cursor: workspace folders are not granted, and print mode skips before_prompt and on_stop.
  • Delegates carry only their instructions on Codex, Cursor and Copilot. On Claude Code a delegate also carries its MCP servers, not its hooks or workspace. A delegate does not run on OpenCode. "A full harness" holds for includes, not yet for delegates.
  • Resume: Cursor and Copilot refuse a prompt on resume. On Codex a resume with a prompt passes workspace folders as writable_roots, which takes effect only under the workspace-write sandbox (ynh warns on stderr otherwise; ynh does not change Codex's sandbox, and codex exec defaults to read-only).
  • Telemetry: ynh run emits none on any vendor; only ynh agent run does.
  • Project instructions (the project's own AGENTS.md or CLAUDE.md under ynh run) are unverified on every vendor except Codex, where they are not read.

These are fixed in v0.17.0 (parity) and later, except what a vendor cannot do. See ynh #679.

The 60-second version

# Install ynh
brew tap eyelock/tap && brew install ynh

# Try the ynh harness — it teaches you ynh
ynh install github.com/eyelock/ynh
ynh-guide

Inside the session, use /ynh-create-harness to build your own. Or do it manually:

# Create a harness
mkdir -p david/.agents/harness && cat > david/.agents/harness/plugin.json << 'EOF'
{"name":"david","version":"0.1.0","default_vendor":"claude"}
EOF

# Install and run
ynh install ./david
david

Add skills, agents, rules, and commands to the harness directory. Pull from Git repos. Compose across sources. Switch vendors. Delegate to team harnesses.

Why harness management?

Agent = Model + Harness. Weak results are usually harness problems, not model problems.

The term "harness" was formalized by Martin Fowler and adopted by OpenAI and Anthropic. A harness is everything in an AI coding agent except the model itself — the skills, rules, context, and constraints that shape its behavior.

ynh manages the guide layer of that harness: the proactive steering that happens before the agent acts. One harness definition, assembled for Claude, Codex, Cursor, Copilot or OpenCode. Read more in Harness Engineering.

What you can do

Build: create harnesses with skills, agents, rules, and commands. Pull artifacts from any Git repo with cherry-picking (pick). Declare hooks, MCP servers, environment-specific profiles, focuses (named prompt-and-profile bindings for repeatable runs) and sensors, the observation surfaces that loop drivers consume between agent turns. Let a harness request sibling workspace folders that you grant with an allow-list or ynh trust accept.

Refine — Scaffold with ynd create, lint and validate with ynd lint/ynd validate, compress prompts with ynd compress, preview assembled output with ynd preview, diff across vendors with ynd diff. Edit focuses, profiles, hooks, MCP servers, includes, and delegates from the CLI with ynh focus/profile/hook/mcp/include/delegate — the same surface a GUI consumer drives.

Share: export as vendor-native plugins with ynd export, or as one portable Agent Plugins package with ynd export --format agent-plugin. Build team marketplaces with ynd marketplace build. Publish to registries. Bake harnesses into Docker images for CI/CD.

Documentation

Full docs at eyelock.github.io/ynh:

License

MIT

About

Harness template manager for AI coding agents. Compose skills, rules and context from any Git repo, then assemble one harness for Claude Code, Codex or Cursor.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages