About harness-mint
harness-mint is a ruflo skill for creating a new harness directory tree with metaharness. It defaults to a dry run and uses safety checks to avoid writing into the current project or overwriting an existing target.
Key features
- 01Dry-run unless explicitly confirmed
- 02Blocks writes inside the current project
- 03Refuses existing target directories
- 04Supports named templates and hosts
Use cases
- 01Preview a harness scaffold before creating it
- 02Create a harness in a new directory outside the current project
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill harness-mintAfter installing, type/harness-mintin Claude Code to confirm it loaded.
Details
From the project READMEThe one write-capable skill in the plugin. Every other skill is
pure-read. This one calls metaharness new, which writes a new
directory tree.
Safety (load-bearing)
- Dry-run by default. Without
--confirm, the script prints what it would do and exits 0 without touching disk. - Refuses project root. If
--targetresolves to the current working directory OR any path inside it, the script errors out with exit 2. Target must be an absolute path OUTSIDE the calling repo (default is a fresh/tmp/ruflo-mint-<ts>-<name>/dir). - Refuses existing target. Won't overwrite — must scaffold into a non-existent dir.
- Subprocess + 60s timeout. No library import, no in-process execution. The mint stays sandboxed from ruflo's runtime.
Algorithm
Implementation: scripts/mint.mjs.
- Validate
--name,--template. Default--hosttoclaude-code. - Resolve
--target(default: temp dir). - Run safety checks (no project-root writes; target must not exist).
- Without
--confirm: emit dry-run plan, exit 0. - With
--confirm: shellnpx metaharness new <name> --template <id> --host <id> --target <abs> --yes.
Templates
minimal, vertical:coding, vertical:devops, vertical:support,
vertical:legal, vertical:research, vertical:trading, vertical:health,
vertical:education, vertical:sales, vertical:business,
vertical:crm, vertical:marketing, vertical:advertising,
vertical:ai, vertical:agentics, vertical:ruview, vertical:gaming,
vertical:repo-maintainer, vertical:exotic.
Hosts
claude-code, codex, pi-dev, hermes, openclaw, rvm,
copilot, opencode, github-actions.
Example dry-run
$ node scripts/mint.mjs --name my-harness --template vertical:coding --host claude-code
# harness-mint (dry-run)
- action: metaharness new
- name: my-harness
- template: vertical:coding
- host: claude-code
- target: /tmp/ruflo-mint-1718560000-my-harness
- confirm: false
- willWrite: false
Re-run with `--confirm` to actually scaffold.
Why dry-run by default
Ruflo's behavioral rules say "executing actions with care" — destructive
or repo-touching actions need confirmation. The dry-run output makes the
WHAT visible before the WHEN. A human sees target, decides, then
adds --confirm if happy.