The 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.
Source: ruvnet/ruflo → plugins/ruflo-metaharness/skills/harness-mint/SKILL.md