Skip to content
Back to skills

Mimo Code

ASecurity

Use when delegating a coding task to mimo (the mimo CLI / Xiaomi opencode fork) — offloading implementation to mimo, resuming a mimo session, or running work on a chosen provider/model. Triggers on "/mimo-code", "run mimo", "delegate to mimo", "resume the mimo session", "offload this to mimo".

  • 43 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added August 30, 2026
ai-agentsgit

Works with

  • cli

Security analysis

A100/100

Scanned August 30, 2026

npx -y skills add onsails/skills --skill mimo-code --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mimo Code?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mimo Code
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/onsails-mimo-code/badge)](https://www.skillsdirectory.com/skills/onsails-mimo-code)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mimo-code
description: Use when delegating a coding task to mimo (the mimo CLI / Xiaomi opencode fork) — offloading implementation to mimo, resuming a mimo session, or running work on a chosen provider/model. Triggers on "/mimo-code", "run mimo", "delegate to mimo", "resume the mimo session", "offload this to mimo".
argument-hint: "[<provider/model>] [variant] [task | resume]"
---

# mimo-code

## Overview
Delegate a write-capable coding session to `mimo`, staying the conductor. Heavy
work and tokens move to mimo; you orchestrate and review the diff.

## When to use
- The user invokes `/mimo-code [provider/model] [variant] <task>` or asks to run/resume mimo.
- A prior mimo session needs continuation (it asked something or was cut off).

## The rule that shapes everything
**Never run mimo in the main thread.** ALWAYS dispatch the `mimo-delegate` subagent
(model sonnet) so the live NDJSON stream and any blocking stay out of the main
context. You only ever receive its distilled summary.

## Parse the invocation
Raw slash-command arguments: `$ARGUMENTS`

Interpret as `[provider/model] [variant] <task>` (empty when triggered by description match rather than `/mimo-code` — then read intent from the user's message):
- A leading `xxx/yyy` token → model. A following `minimal|low|medium|high|max` → variant.
- The rest is the task; `resume`/`continue` → resume the recorded session (see Resume). Natural-language requests map the same way.

## Resolve the model — ASK, do not default (only when no model was given, fresh runs only)
1. **Gather options via the `mimo-resolve` subagent** (model sonnet). It runs the
   `resolve-models` launcher and returns the authenticated provider∩model `options`
   and `variants` — keeping the catalogue output out of the conductor's context.
   Empty options (no authenticated provider) → STOP and tell the user to run
   `mimo providers login`.
2. Using the returned `options` (the authenticated intersection — count **models**,
   not providers):
   **Exactly one usable model** → auto-pick (asking is pointless). **≤4** → one
   AskUserQuestion listing them. **>4** (the common real case — a single provider can
   expose *dozens*) → **narrow, never dump**: AskUserQuestion the **provider** first
   (the authenticated set is small), then AskUserQuestion **≤4 models** for that
   provider — lead with `mimo-resolve`'s recommended id, and rely on the auto-added
   **Other** free-text for the long tail. One authenticated provider offering several
   models is still "more than one" → ASK; "low-risk"/"mechanical"/cost or proactivity
   never justify a silent pick, and printing the whole catalogue for the user to
   retype an id verbatim is the anti-pattern to avoid.
3. **Ask effort/variant** with a **≤4 menu** — AskUserQuestion caps at 4 options, so
   you **cannot** list all five variants + a default. Offer `default` (omit `--variant`)
   plus a few variants, **each with a one-line description** (`default` is the safe
   recommendation for a one-shot delegation); `minimal`/`medium` reach via **Other**.

The conductor does the asking/auto-pick itself — `mimo-resolve` only gathers,
never asks.

## Pick a handle — unique per delegation
Generate a UNIQUE slug per fresh delegation: a task-derived stem **plus a short
random suffix**, e.g. `json-logger-a1b2` (`[a-z0-9_-]`). The handle is the registry
key (`<handle>.sessionid`/`.lock`/`.ndjson`); a unique handle is what keeps parallel
or repeated runs from clashing. Record the handle you used — resume reuses THAT exact
handle, never a freshly re-derived bare slug.

## Dispatch
Dispatch `mimo-delegate` with: `handle`, `cwd` (absolute), `model`/`variant` (fresh
only), the `prompt`, and `mode: fresh`. (The subagent resolves the launcher path
itself.) Relay its summary; never echo raw NDJSON.

## Resume
Re-dispatch `mimo-delegate` with the SAME handle, `mode: resume`, and the
continuation prompt. Do NOT re-ask for a model (the session remembers it). The
launcher resumes by recorded session id — never `--continue`.

## Parallel runs
Concurrent tasks → distinct handles, one `mimo-delegate` each (dispatch in one
message to run in parallel). Concurrent **write** tasks → give each its own git
worktree under `.worktrees/` and pass it as `cwd`; the registry is safe regardless,
but two mimos editing one tree is a workspace hazard.

## Common mistakes (counters to real failures)
| Tempting move | Why it's wrong |
|---|---|
| "Asking the model is annoying — just default / omit `-m`." | The user wants to choose. Resolve the intersection and ASK (unless exactly one usable). Silent defaults are a violation, not a convenience. |
| Bare task-slug handle (`json-logger`) | Two runs of the same task collide on the lock/state. Always add a unique suffix. |
| Skipping effort selection | Offer a ≤4 variant menu (`default` that omits `--variant`, + a few with one-line descriptions; `minimal`/`medium` via Other). |
| Dumping the whole model list for the user to type an id (when >4) | Narrow provider-first: ASK the provider, then ≤4 of its models (recommended id first, Other for the tail). Never a wall of ids to retype. |
| Running mimo inline to "keep it simple" | Pollutes the main context. Always the subagent. |
| Resuming with `--continue` | Attaches to "the last session" → cross-task pollution. Resume is by recorded session id only. |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.