/harness-mint
Scaffold a custom AI agent harness via `metaharness new {name} --template {id} --host {id}`. Use when the user wants a new standalone harness. Dry-run unless --confirm is passed, and refuses to write inside the calling repo.
Claude Code
$ npx -y skills add ruvnet/ruflo --skill harness-mint --agent claude-code
Codex
$ npx skills add ruvnet/ruflo --skill harness-mint -a codex -y
Cursor
$ npx skills add ruvnet/ruflo --skill harness-mint -a cursor -y
Gemini CLI
$ npx skills add ruvnet/ruflo --skill harness-mint -a gemini-cli -y
GitHub Copilot
$ npx skills add ruvnet/ruflo --skill harness-mint -a github-copilot -y
OpenCode
$ npx skills add ruvnet/ruflo --skill harness-mint -a opencode -y
Windsurf
$ npx skills add ruvnet/ruflo --skill harness-mint -a windsurf -y
SKILL.md
harness-mint.SKILL.mdname: harness-mint
description: Scaffold a custom AI agent harness via `metaharness new {name} --template {id} --host {id}`. Use when the user wants a new standalone harness. Dry-run unless --confirm is passed, and refuses to write inside the calling repo.
argument-hint: "--name <id> --template <vertical:coding|minimal|…> [--host claude-code|codex|…] [--target /abs/path] [--confirm] [--format table|json]"
allowed-tools: Bash
disable-model-invocation: trueThe 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)
1. **Dry-run by default.** Without `--confirm`, the script prints what it would do and exits 0 without touching disk. 2. **Refuses project root.** If `--target` resolves 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). 3. **Refuses existing target.** Won't overwrite — must scaffold into a non-existent dir. 4. **Subprocess + 60s timeout.** No library import, no in-process execution. The mint stays sandboxed from ruflo's runtime.
Algorithm
Implementation: [`scripts/mint.mjs`](../../scripts/mint.mjs).
1. Validate `--name`, `--template`. Default `--host` to `claude-code`. 2. Resolve `--target` (default: temp dir). 3. Run safety checks (no project-root writes; target must not exist). 4. Without `--confirm`: emit dry-run plan, exit 0. 5. With `--confirm`: shell `npx 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.
Read more
name: harness-mint
description: Scaffold a custom AI agent harness via `metaharness new {name} --template {id} --host {id}`. Use when the user wants a new standalone harness. Dry-run unless --confirm is passed, and refuses to write inside the calling repo.
argument-hint: "--name <id> --template <vertical:coding|minimal|…> [--host claude-code|codex|…] [--target /abs/path] [--confirm] [--format table|json]"
allowed-tools: Bash
disable-model-invocation: trueThe 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)
1. **Dry-run by default.** Without `--confirm`, the script prints what it would do and exits 0 without touching disk. 2. **Refuses project root.** If `--target` resolves 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). 3. **Refuses existing target.** Won't overwrite — must scaffold into a non-existent dir. 4. **Subprocess + 60s timeout.** No library import, no in-process execution. The mint stays sandboxed from ruflo's runtime.
Algorithm
Implementation: [`scripts/mint.mjs`](../../scripts/mint.mjs).
1. Validate `--name`, `--template`. Default `--host` to `claude-code`. 2. Resolve `--target` (default: temp dir). 3. Run safety checks (no project-root writes; target must not exist). 4. Without `--confirm`: emit dry-run plan, exit 0. 5. With `--confirm`: shell `npx 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.
📖 RuFlo Explained — Build an AI Team That Plans, Remembers, Tests, and Improves A 14-chapter guide: from the basic idea to a first useful task, then memory, agent teams, plugins, cost and verification. Agent = Model + Harness.
Other skills on ruflo.
More skills from other plugins.
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
bmad
Answers BMad questions and recommends the next skill from what is installed. Use when the user asks bmad for help, what to do…
Questions about harness-mint.
- Which coding agents can use harness-mint?
- harness-mint installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

