Install
/plugin marketplace add em-jones/ems-harnessRun inside Claude Code, then install plugins from it. Check the repo's README before you run it.
Plugins 1
After adding the marketplace, install one with /plugin install <name>@ems-dev-harness.
- 1emsRun, inspect, and watch ems harness pipelines from Claude Code slash commands.
/plugin install ems@ems-dev-harness
Files
ems-dev-harness
Improvements to review
- Extend with
qualityagent-
ponytail - sonar/similar
-
- Extend
scoutwitharchitectcompanion agent-
understand-everything -
treesitter-mcp(maybe overlap withunderstand-everything) -
backstagemcp -
aimee(per:Stacking NeuralMind + Headroom + Ponytail)
-
The reliability layer for agent-authored pull requests/local develompent. It turns a clearly
scoped td task into a reviewed PR with evidence, and makes the next run
better when this one fails.
Humans steer. Agents execute. The harness is the product; target-repo code is the output. When agents struggle, fix the harness.
The stack is modern: Effect for types/errors/IO, the Claude Agent SDK as
the default agent runtime, LangGraph for the pipeline graph, and @effect/cli for
the CLI. See CONTEXT.md for the full design and vocabulary.
Core Loop
ems run --task td-1234 --repo-path ../target-repo
The pipeline runs deterministic phases — the LLM does the work inside each phase, TypeScript decides which phase runs next:
scout → implement → verify → review → quality → close → retrospective
Every run is event-sourced: an append-only JSONL log under
<target-repo>/.ems/<task-slug>/ is the source of truth, and reduceEvents
reconstructs PipelineState, so runs resume after a crash. Evidence gates
(tested, manual-tested, reviewed) must pass before the closer opens a PR.
Architecture
| Layer | Package |
|---|---|
| Domain model + contract | @ems/core — Effect Schema, typed errors, Runtime tag |
| Pipeline | @ems/orchestration — event log, router, evidence gates, LangGraph |
| Default runtime | @ems/agent-claude — Claude Agent SDK |
| Provider adapters | @ems/agent-{claude,pi,openrouter,copilot} |
| Task store | @ems/task-management-td — td CLI as an Effect service |
| CLI | apps/cli — the ems binary (@effect/cli) |
| Surfaces | @ems/plugin-{pi,opencode,vscode,copilot-cli,claude} |
Every provider adapter implements one interface — AgentRuntime.spawn — and
provides it as an Effect Layer for the Runtime service tag. The pipeline
asks for Runtime; --runtime claude|pi|openrouter|copilot picks the adapter.
CLI
ems run --task <td-id> [--repo-path <path>] [--runtime <r>] [--model <m>] [--merge]
# --merge: closer merges into the base branch
# locally (git) instead of opening a PR
ems status <td-id> # projected pipeline state
ems watch <task-slug> # tail the event log
ems mark-tested <td-id>
ems mark-reviewed <td-id> --critical 0
ems init # write ~/.config/ems/config.json
Surfaces
The harness is exposed through five editor/agent integrations, each
delegating to the ems CLI: a pi tool set, an opencode plugin, a
VS Code extension (command palette), a copilot-cli MCP bridge, and a
Claude Code plugin (/ems-run, /ems-status, /ems-watch slash commands).
Development
This is a Vite+ (vp) + Bun workspace.
vp install # after pulling vp check # fmt + lint + typecheck (whole repo) vp run -r test # all package tests vp run -r build # build all packages
Per package: bun run check and bun run test.
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "ems-dev-harness",
"description": "Local marketplace for the ems agent harness — surfaces the ems Claude Code plugin (/ems-run, /ems-status, /ems-watch).",
"owner": {
"name": "Em Jones",
"url": "https://github.com/emjonesdev"
},
"plugins": [
{
"name": "ems",
"description": "Run, inspect, and watch ems harness pipelines from Claude Code slash commands.",
"source": "./packages/plugin-claude",
"category": "workflow"
}
]
}Facts
- Kind
- Marketplace
- Repo
- em-jones/ems-harness
- Group
- Uncategorized
- Stars
- 0
- Marketplace name
- ems-dev-harness
- Owner
- Em Jones
- License
- Apache-2.0
- Language
- TypeScript
- Created
- 2026-06-25
- Last push
- 2026-06-25
- Plugins
- 1
- 1obra/superpowersobra/superpowersAn agentic skills framework & software development methodology that works.297.9k
- 2affaan-m/everything-claude-codeaffaan-m/ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.277.5k
- 3anthropics/skillsanthropics/skillsPublic repository for Agent Skills180.6k
- 4f/prompts.chatf/prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.172.7k
- 5anthropics/claude-codeanthropics/claude-codeClaude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.150.3k
- 6nextlevelbuilder/ui-ux-pro-max-skillnextlevelbuilder/ui-ux-pro-max-skillAn AI skill that provides design intelligence for building professional UI/UX across multiple platforms.135k