← Back to Blog

Your Skill Has a Ceiling You Don't Know About

Turn any ClawHub Skill into a Gene, compile it, and let Arena score it. Five minutes to find your ceiling.

Your Skill Has a Ceiling You Don't Know About

You've built a Skill. It runs. It works. Your users like it.

But here's a question you probably haven't been able to answer: how good is it, really?

Not "does it complete the task" — you already know that. But compared to every other approach to the same problem, where does your Skill actually land? Is it in the top 10%? The bottom half? Would a different implementation handle edge cases better?

Without a competitive evaluation system, you genuinely don't know. Your Skill has a ceiling — and you can't see it.

That's exactly the gap Rotifer's Gene + Arena system is built to close.

From Skill to Gene in Three Commands

A Gene is a Skill that has been compiled to WebAssembly IR, given a machine-readable phenotype manifest, and registered in the Rotifer ecosystem. The process takes about five minutes.

Install the Rotifer CLI — it's a single npm package:

npm install -g @rotifer/playground

Wrap an existing ClawHub Skill into a Gene scaffold with one command:

rotifer wrap --from-clawhub <your-skill-name>

This creates a local Gene directory with your Skill's code and a generated phenotype.json describing its inputs, outputs, and declared domain. Review it — the domain tag matters for Arena matchmaking.

Compile the Gene source to WebAssembly IR:

rotifer compile ./genes/<your-skill-name>/

The compiler validates your phenotype and emits a portable WASM binary:

✓ Validated phenotype.json
✓ Compiled to WASM IR (42.3 KB)
✓ Content hash: a7f3c2...
  → ./genes/<your-skill-name>/dist/gene.wasm

If compilation fails, the error is almost always a missing dependency declaration in phenotype.json or a function signature the WASM compiler can't handle. The error message tells you exactly which line.

Submitting to Arena

Submit the compiled Gene to Arena for competitive evaluation:

rotifer arena submit ./genes/<your-skill-name>/dist/gene.wasm

Arena runs your Gene against standardized task scenarios in its declared domain, scores it on fitness F(g), and assigns an Elo rating based on head-to-head performance against other Genes.

Check where you landed:

rotifer arena list --domain <your-domain>
RANK  GENE                     ELO    F(g)   FIDELITY
 1    contract-analyzer-v2     1847   0.91   Native
 2    file-desensitizer        1782   0.87   Native
 3    your-skill-name          1651   0.74   Wrapped   ← you
 4    law-site-crawler         1598   0.71   Hybrid

Now you know. Your Skill is good — 0.74 fitness, rank 3 in its domain. But you can also see exactly what rank 1 is doing differently, and F(g) = 0.91 is a concrete target to beat.

What the Score Actually Means

The fitness score F(g) is not a rating someone gave your Skill. It's computed from real task execution: correctness on held-out scenarios, robustness under edge inputs, resource efficiency. No subjectivity.

This changes how you think about improvement. Instead of guessing what to optimize, you can:

  1. Look at which task scenarios your Gene failed
  2. Compare your phenotype against the top-ranked Gene in your domain
  3. Make a targeted change, recompile, resubmit
  4. Watch F(g) move

Iteration with a fitness signal is fundamentally different from iteration without one. You stop guessing and start engineering.

Fidelity: The Next Level

You'll notice rank 1 and 2 are Native fidelity — compiled directly to WASM with no API wrapper. Your wrapped Skill is Wrapped fidelity, which means there's a layer of overhead and potential failure points between the Gene interface and your actual logic.

If you want to close the gap, the path is rotifer wrap → optimize → rotifer compile → resubmit. The Rotifer CLI has a migration guide for Wrapped → Native if you want to go all the way.

But you don't have to. A well-tuned Wrapped Gene at 0.85 fitness beats a poorly implemented Native Gene at 0.72 every time.

Try It Yourself

The whole flow — wrap, compile, submit, check — takes under ten minutes for a Skill you've already built.

npm install -g @rotifer/playground
rotifer wrap --from-clawhub <your-skill-name>
rotifer compile ./genes/<your-skill-name>/
rotifer arena submit ./genes/<your-skill-name>/dist/gene.wasm
rotifer arena list

If you share your Arena screenshot — your Gene name, domain, and ranking — we want to see it. The ecosystem is only as interesting as the Genes in it.

Your Skill has a ceiling. Now you have the tools to find it.