harness-alchemist
One scaffold, five agent harnesses — portable coding-agent plugins for Claude Code, Codex, OpenCode, Antigravity, and DeepSeek Harness.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 23, 2026
- Updated
- Aug 24, 2026
Introduction
The universal scaffold for coding-agent plugins. One repository, five harnesses, skills that own their runtime.
Follow @haochuanzero on X for updates · Start from the one-page tour.
Harness Alchemist scaffolds one TypeScript plugin repository that installs natively into Claude Code, Codex/ChatGPT, OpenCode, Google Antigravity, and DeepSeek Harness/Cordis. Product skills ship behavioral .mjs/.py script twins; every harness entrypoint is a thin adapter that delegates to them.
Install
npm install -g harness-alchemist
# or run it without installing:
npx harness-alchemist@latest create my-plugin --help
Requires Node.js 22.20+ (Bun 1.2+ also supported). Zero runtime dependencies.
Quick start
npx harness-alchemist@latest create my-plugin \
--description "What the plugin does" \
--author "Example Team" \
--repository example/my-plugin
cd my-plugin && npm install && npm run verify
Creation only writes to a missing or empty destination. The generated project passes its own gate out of the box: TypeScript checks, runtime delegation tests, scaffold validation, and an npm-payload audit.
What you get
| Surface | Purpose |
|---|---|
skills/<name>/ | Agent Skills spec skill with .mjs/.py script twins under scripts/ and a tool-contract reference |
src/opencode.ts | OpenCode plugin registering tools that spawn the skill scripts |
src/deepseek.ts + cordis.patch.yml | Cordis function plugin providing a service over the same scripts |
.claude-plugin/, .codex-plugin/, .agents/plugins/, plugin.json | Native manifests for Claude Code, Codex, and Antigravity marketplaces |
.agents/skills/develop-<name>/ | Repository-maintenance skill so agents can develop the project recursively |
.github/workflows/ | CI plus tag-triggered publish (vX.Y.Z → verify → npm provenance) |
Supported harnesses
Install paths below are verified against real CLIs before shipping in the template.
| Harness | Skills | Runtime | Install |
|---|---|---|---|
| Claude Code | bundled natively | — | claude plugin install <name>@<marketplace> |
| Codex/ChatGPT | bundled natively | — | codex plugin add <name>@<marketplace> |
| OpenCode | via ~/.agents/skills/ | npm package hooks | "plugin": ["<package>"] in opencode.json |
| Google Antigravity | nested bundle | — | agy plugin validate . && agy plugin install . |
| DeepSeek Harness | profile filesystem roots | Cordis service plugin | dsh plugin --profile demo add <package-or-path> |
Skill script contract
Product skills own their logic; adapters never do.
echo '{"request": "hello"}' | node skills/<name>/scripts/main.mjs
# {"ok":true,"plugin":"my-plugin","echo":{"request":"hello"}}
- One JSON object on stdin, one JSON result plus newline on stdout.
- Non-zero exit with a stderr diagnostic on failure.
scripts/main.pyis a stdlib-only behavioral twin ofscripts/main.mjs.
Validation tiers
npm run validate always enforces Agent Skills frontmatter compliance, SKILL.md reference resolution, and twin parity. With the optional pyodide devDependency installed, Python entrypoints are additionally compiled and smoke-executed inside a WebAssembly CPython sandbox — no native Python required.
Release automation
# bump package.json version, then:
npm run sync && npm run verify && git commit -am "Release vX.Y.Z" && git push
git tag vX.Y.Z && git push origin vX.Y.Z # publishes automatically