Guide · Agent skill
How to use the Drive MiMo Test Harness agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The drive-mimo skill teaches an AI agent to start a separate MiMoCode (mimo) process and control it, either as a headless command that prints JSON events or as an interactive terminal session run through tmux. It is written for developers and maintainers who are testing or debugging the MiMoCode repository itself. After this guide you will know what the skill does, how to install it, how to phrase a request that triggers it, and which safety settings to check before running it.
Quick start
- 1Download and unzip. Download the drive-mimo ZIP from this page and unzip it.
- 2Place the folder. Move the drive-mimo folder into ~/.claude/skills/ or a project's .claude/skills/, or upload it under Settings → Capabilities → Skills.
- 3Check prerequisites. Confirm mimo or bun is installed, and that tmux and jq are available for the modes you need.
- 4Make a natural request. Describe the MiMoCode test you want, such as a headless JSON check or a tmux TUI check.
- 5Isolate the run. Set a fresh MIMOCODE_HOME and use a throwaway workspace for each run.
- 6Validate the evidence. Check the process exit code and parse the JSON events with jq rather than reading output by eye.
What is an agent skill and what does drive-mimo do?
An agent skill is a folder containing a SKILL.md file with instructions that an AI agent loads when a request matches the skill's description. The skill gives the agent a method to follow rather than a new program to run by itself.
drive-mimo covers two interfaces for driving another mimo process. The headless interface uses mimo run with --format json and produces parseable JSONL events, which suits scripted tasks, CI and event validation. The TUI interface runs mimo in tmux, which suits interactive flows, permission dialogs, keybindings and visual regression. The skill's core principle is that every run produces parseable evidence rather than relying on someone reading the output.
- Headless: scripted tasks, CI checks, JSON event validation
- TUI in tmux: interactive flows, permission dialogs, keybindings, visual regression
- Launch either an installed mimo binary or a dev build run from source with bun dev
Install the drive-mimo skill from the ZIP
Download the drive-mimo ZIP from this page and unzip it. For a personal install, place the drive-mimo folder in ~/.claude/skills/. For a single project, place it in that project's .claude/skills/ folder instead.
If you use the Claude apps, you can instead upload the skill under Settings → Capabilities → Skills.
- Personal: ~/.claude/skills/drive-mimo/
- Project only: .claude/skills/drive-mimo/ inside your project
- Claude apps: Settings → Capabilities → Skills, then upload
Check the prerequisites before you start
The skill needs a mimo binary on your PATH, or bun plus the mimocode repository for dev mode. TUI mode needs tmux. The JSON validation examples use jq, and the wait-for-text.sh helper needs bash. If these are missing, the workflow will fail, so check them first.
- mimo binary on PATH, or bun and the mimocode repo for dev mode
- tmux for TUI mode
- jq for the JSON validation examples
- bash for scripts/wait-for-text.sh
which mimo || echo "mimo not found on PATH"
which bun || echo "bun not found — needed for dev mode"
which tmux || echo "tmux not found — install it for TUI mode"Trigger the skill with a natural request
The skill loads when your request is about developing or testing the MiMoCode repository and driving another mimo process. Name the thing you want checked and the interface if it matters. Ask for a headless run when you want JSON output, and ask for a tmux session when you need to see the interactive UI or a dialog.
Do not use this skill for ordinary coding tasks inside MiMoCode. The skill's own description says it should not be used for that.
- "Run mimo headless on this test prompt and check the JSON for a write tool call."
- "Start the mimo TUI in tmux and confirm the permission dialog appears."
- "Debug my local mimocode build by running bun dev against this prompt."
Run headless mode and validate the JSON
Headless runs write one JSON object per line. Each event has a type, a timestamp, a sessionID and a payload nested under part for most events. Completion is signalled by the process exit code, not by a stream event. A tool_use event appears once per tool when it completes or errors, and its result sits inside part.state.
Reasoning events appear only when --thinking is passed. Use the exit code and jq checks to confirm results.
- --format json: structured JSONL events to stdout
- --dangerously-skip-permissions: auto-approve all permissions
- --dir: working directory; --model, --session, --continue and --file are also available
MIMOCODE_HOME=$(mktemp -d) mimo run \
--format json \
--dangerously-skip-permissions \
--dir "$WORKSPACE" \
< "$PROMPT" > /tmp/mimo-out.jsonl 2>&1
EXIT=$?
[ $EXIT -eq 0 ] || echo "FAIL: exit $EXIT"
jq -e 'select(.type=="tool_use") | .part.tool=="write"' /tmp/mimo-out.jsonl >/dev/null || echo "FAIL: write tool not called"Drive the TUI in tmux
For interactive testing, the skill starts mimo inside a detached tmux session with an isolated MIMOCODE_HOME and MIMOCODE_PURE set to true. The workspace is a positional argument, not a --dir flag. It then waits for the input prompt using the scripts/wait-for-text.sh helper, which you can call from the skill directory.
The prompt placeholder is localized, so the skill matches stable markers instead of a fixed English string.
- MIMOCODE_HOME: required, fresh mktemp -d per run
- MIMOCODE_PURE=true: disables external plugins
- MIMOCODE_DISABLE_GIT=true: skips git operations when the workspace is not a real repo
MHOME=$(mktemp -d)
WORKSPACE=$(mktemp -d)
SESSION="mimo-drive-$$"
tmux new-session -d -s "$SESSION" -x 120 -y 30 \
"MIMOCODE_HOME=$MHOME MIMOCODE_PURE=true mimo $WORKSPACE; sleep 999"
bash scripts/wait-for-text.sh -t "$SESSION:0.0" -p "$PROMPT_RE" -T 15Use dev mode to debug mimocode from source
When you are changing mimocode's own code, run from the repository root with bun dev instead of the mimo binary. It runs packages/cli/src/index.ts directly, so local edits apply on the next launch with no build step. Every flag and tmux technique is the same; substitute bun dev for mimo.
If MIMOCODE_HOME is not set, dev mode uses a repo-local .dev-home directory, so set it to a fresh temporary directory for isolated runs.
- Run from the repo root; bun dev is the same as bun run dev
- Headless: bun dev run --format json --dangerously-skip-permissions
- TUI: bun dev <workspace>
What people use it for
- Scripted behaviour tests that run mimo run --format json and assert a specific tool was called
- CI-style checks that fail when the JSON event stream contains error events
- Interactive TUI tests in tmux that confirm a permission dialog or keybinding works
- Visual regression checks of the TUI captured in a tmux pane
- Debugging a local MiMoCode build by running bun dev against a test prompt
Frequently asked questions
How do I install the drive-mimo agent skill?
Download the drive-mimo ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder. You can also upload it in the Claude apps under Settings → Capabilities → Skills.
What do I need installed to use drive-mimo?
You need a mimo binary on your PATH, or bun plus the mimocode repository for dev mode. TUI mode requires tmux, the JSON examples use jq, and the wait-for-text.sh helper requires bash.
Is drive-mimo free and what is its licence?
The source repository lists the licence as MIT. The source does not describe pricing, so check the repository for any terms beyond the licence.
Does drive-mimo use the network?
The listing says it does not use the network. It does run scripts, specifically scripts/wait-for-text.sh, so review the scripts before running them.
Can drive-mimo damage my MiMo config or session data?
It can if used carelessly. Always set a fresh MIMOCODE_HOME for each run and use a throwaway workspace so your own config, memory and session database are not touched.
Is drive-mimo the same as using MiMoCode normally?
No. The skill is for testing and debugging the MiMoCode repository and driving separate mimo processes. It explicitly says not to use it for ordinary MiMoCode task execution.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
Use drive-mimo if you contribute to the MiMoCode repository and need repeatable behaviour, integration or visual regression tests, or want to check JSON event output in CI. Skip it if you only want to use MiMoCode for everyday coding, or if you do not have tmux, bun or mimo installed.
Download the skill