Skip to content
Back to skills

Duel

ASecurity

Stage and verify Jev-on-Jev Reversi duels in OpenHarness's viewer, where Jev plays both sides and a third Jev referees.

  • 1,124 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsbashnodeapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add autonomous-ai/openharness --skill duel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Duel?

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

Security grade badge for Duel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/autonomous-ai-duel/badge)](https://www.skillsdirectory.com/skills/autonomous-ai-duel)

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: jev-duel
description: Stage and verify Jev-on-Jev Reversi duels in OpenHarness's viewer, where Jev plays both sides and a third Jev referees.
---

# Jev Duel matchmaking

Jev Duel shows a live Reversi board: Jev (TypeSafe's System One model) plays both sides, one move
each turn, and a third Jev referees every move. The agent stages `battle.json` — the two rivals'
personalities, the referee's focus, the show.

## The loop

1. Update `battle.json` (two rivals with clashing personalities). The viewer watches it and reframes
   both Jevs live — no restart, no second server.
2. `node "$JEV_DSH/toolchain/check.mjs"` verifies the workspace's `battle.json` is valid and
   reports the verdict. Run it before you call a duel done.
3. Watch the board. Do the personalities actually fight? Greed grabs center flips; patience takes
   corners. If their play looks identical, sharpen the personalities.

## Reading Jev

The viewer shows each side "thinking" (blinking), the move it makes, and the referee's per-move
call (`strong · aggressive/quiet · decided`). The drama is the *contrast*: two distinct Jevs on one
board. A corner-taker and a flip-grabber will visibly differ; two identical prompts will not.

## Verifying a duel

`node "$JEV_DSH/toolchain/check.mjs"` returns non-zero when `battle.json` is invalid (bad size,
missing rivals). It doesn't replace watching the game: confirm the board fills, turns alternate, and
a winner or draw eventually appears.

## Driving Jev yourself

`toolchain/jev.mjs` exports a small client. Example (from the workspace) — audition personalities
with the referee before you stage the duel:

```bash
node --input-type=module -e '
import { evaluate, jev } from "$JEV_DSH/toolchain/jev.mjs";
const res = await evaluate({
  state: "A greedy Reversi player who grabs center flips vs a patient corner-taker.",
  questions: {
    clash: jev.score({0:"boring",1:"fun",2:"electric"}, "How much would these two personalities clash on a board?"),
    fair: jev.noul("Is this a fair, winnable matchup for either side?"),
  },
});
console.log(JSON.stringify(res.answers, null, 2));
'
```

Without `TYPESAFE_API_KEY` this uses the deterministic mock; set the key to hit live Jev.

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…