Install
openclaw skills install @xiaoba-dev/rotifer-arenaBenchmark Rotifer Genes against each other in the Arena — import from ClawHub / local / scratch, compile, match opponents, run Arena evaluation, and produce a Markdown report with F(g) fitness and V(g) security grades. Invoke explicitly to compare or benchmark Rotifer Genes. Do NOT use for general benchmarking, load testing, or comparing anything that is not a Rotifer Gene or Agent.
openclaw skills install @xiaoba-dev/rotifer-arenaOne Skill covering Gene/Genome/Agent comparison across all scenarios.
This Skill requires the Rotifer CLI:
npx @rotifer/playground --version
Or use the MCP Server for IDE integration:
{
"mcpServers": {
"rotifer": {
"command": "npx",
"args": ["@rotifer/mcp-server"]
}
}
}
This Skill wraps Rotifer Protocol's core value — objective, quantifiable capability evaluation — into a one-click workflow. Users don't need to understand Gene, Arena, or F(g) concepts upfront; the Skill introduces them naturally during execution.
Cross-platform: This SKILL.md runs in any AI development environment that supports Skills/Agents.
Understand user intent through conversation and determine the evaluation mode:
| User signal | Mode | Action |
|---|---|---|
| "Evaluate the X skill from ClawHub" | ClawHub migration evaluation | rotifer wrap <name> --from-clawhub <slug> |
| "Compare my two implementations" | Local comparison | Confirm both Gene names, skip to Phase 3 |
| "I have a Skill I want to test" | Skill import evaluation | rotifer wrap <name> --from-skill <path> |
| "Help me build a XX scenario" | Scenario scaffolding | Guide Gene creation (rotifer init or manual phenotype) |
If the user doesn't specify a domain: auto-read from phenotype.json, or guide the user to choose.
rotifer compile <gene-name>
Output guidance based on fidelity result:
Priority order:
rotifer arena list --domain <domain>Opponent selection requires user confirmation — show candidate F(g) and fidelity.
rotifer vg <path-to-gene-a>
rotifer vg <path-to-gene-b>
rotifer arena submit <gene-a>
rotifer arena submit <gene-b>
rotifer arena list --domain <domain>
rotifer vg is where the report's V(g) column comes from — it scans a Gene's
code and returns a grade of A–D, or ? when there is no src/ to read (a
pure-prompt Skill earns ?, which is not a failing grade and should be
reported as "no code to scan"). Without this step there is no V(g) to put in
the table, and a guessed one is worse than an absent one.
To watch the ranking settle after both submissions rather than re-running
arena list:
rotifer arena watch <domain> # live; Ctrl+C to stop
rotifer arena watch all --interval 10000
It marks each change as new / improved / dropped / eliminated, which is what the report's "← new entry" markers are describing.
If both Genes are already published to Cloud, two further commands add adoption data the Arena does not measure:
rotifer compare <gene-a> <gene-b> # 2–5 published Genes, by reputation and downloads
rotifer stats <gene-ref> # download history: 7d / 30d / 90d / all time
Keep the two kinds of comparison apart in the report. rotifer compare ranks
by reputation and downloads — how much the ecosystem uses something. The
Arena run measures F(g) — how well it performs. A Gene can lead on one and
trail on the other, and saying which is which is the point of the report.
Collect evaluation results for both Genes.
Output the full report in the conversation (rendered Markdown).
Append at the end: > Reply "save" to write the report to arena-reports/.
When the user replies "save", write to <project>/arena-reports/<date>-<gene-a>-vs-<gene-b>.md.
Say what "save" does when you offer it — it creates a file in their project,
under arena-reports/, creating that directory if it is missing. The report is
shown in full in the conversation first, so saving is a choice rather than the
only way to read it. Never write it without being asked.
Report format requirements:
> blockquote with one-sentence summary of winner and key dataarena list, V(g) from rotifer vg, downloads from rotifer stats. Leave a cell empty and say why rather than estimating it←Report structure (output directly in conversation):
# <scenario> Comparison: <Gene A> vs <Gene B>← marks new entries)Generated on YYYY-MM-DD · @rotifer/playground@X.Y.Z · Mode: deterministic estimationUser: Evaluate the web-search skill from ClawHub in the Rotifer ecosystem
Skill execution:
1. rotifer wrap clawhub-web-search --from-clawhub web-search -d search
2. rotifer compile clawhub-web-search
3. Auto-discover same-domain opponent: genesis-web-search (Native, F(g)=0.9470)
4. rotifer arena submit clawhub-web-search
5. Generate comparison report
User: Compare my particle-brute and particle-spatial — which is better?
Skill execution:
1. Confirm both Genes exist with phenotype.json
2. rotifer arena submit particle-brute
3. rotifer arena submit particle-spatial
4. rotifer arena list --domain sim.particle
5. Generate comparison report
User: Help me build a quantitative strategy comparison scenario
Skill execution:
1. Guide user to define domain (e.g. quant.strategy)
2. Guide creation of two Gene phenotype.json files (Strategy A vs Strategy B)
3. If compilable source exists, compile to WASM
4. rotifer arena submit both Genes
5. Generate scenario comparison report
rotifer.json (if not, guide rotifer init)npm i -g @rotifer/playground, or invoke it as npx @rotifer/playgroundrotifer doctor passes — compiling to Native WASM needs esbuild and javy, and
without them rotifer compile fails in a way that reads like a code errorIt has no code of its own — it tells your assistant which rotifer commands to
run. That is why its manifest declares process execution, filesystem read/write
and outbound network access: every one of those is the CLI acting, not this
Skill.
| Runs | The rotifer CLI (@rotifer/playground), fetched from npm if not installed. |
| Reads | Genes and Agent definitions in the current project workspace. |
| Writes | Only what the commands below write — Genes into the project's genes/, Agent definitions into .rotifer/agents/. Nothing outside the project. |
| Sends | Cloud registry and Arena queries, to the public Rotifer API. Your code is not uploaded unless you run rotifer publish yourself. |
Commands that install, publish or overwrite are proposed for your approval first, never run silently.
| Skill | Relationship |
|---|---|
gene (dev module) | Route here when users need to create a Gene from scratch |
gene (migration module) | Route here when the report recommends a fidelity upgrade |
gene (audit module) | Suggest running when the report shows low security scores |