Installs into .claude/skills of the current project.
Are you the author of Catcher?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/autonomous-ai-catcher)
---
name: catcher
description: Shape a Jev Catcher session (fall time, glove reach, field width), then verify Jev catches the slow pop flies and drops the fast ones.
---
# Catching the field
The skill for building `catcher.json` pieces. On the left, Jev is the fielder guarding the outfield:
balls pop up at random spots and fall, and every tick Jev reads the glove's position and the next
ball's landing spot and slides the glove to catch it. A catch needs the glove under the ball when it
lands **within reach** of the landing spot; otherwise the ball drops.
The difficulty **falls** to two dials:
- **`fallTicks`** — how many ticks a ball takes to come down. This is the main dial. Fewer ticks
means the ball drops faster, leaving Jev less time to cross the field — so at low `fallTicks` Jev
physically can't get there in time and the drops pile up.
- **`gloveReach`** — how close the glove must be to the landing spot to make the catch (the reach
radius). Tighter reach means Jev has to be precise, not just near.
Crank `fallTicks` down (or shrink `gloveReach`) and Jev's glove can't keep up and it leaks balls;
the honest physical slew limit is the difficulty, not random noise. This is the general recipe for
this harness: **make the ball fall too fast to chase, and Jev's misses read as Jev's limit.**
## Craft
- **Curate a catching mood.** Default `fallTicks` ~`10` (reach `1.6`) is crisp and frequently clean.
Drop `fallTicks` to `7` and Jev leaks; to `5` or below it's a rain of drops. Raise `fallTicks` to
`13+` for a leisurely, near-perfect session.
- **Tension by reach.** A tight `gloveReach` (`0.5`, say) makes Jev read the landing spot *exactly*
— it starts to miss when the ball comes in hot. A wide one is forgiving.
- **Write a distinct style line.** "Read the sound off the bat and burst to the spot" plays very
differently from "glide, don't sprint — always keep some glide in reserve." Jev will visibly
field differently.
Do NOT just ship the template. Every `catcher.json` you publish should be its own session with a
deliberate, testable difficulty.
Validate with `node "$JEV_DSH/toolchain/check.mjs"`. The real test is the fielding: does Jev catch
the full session at a calm fall, and leak when you speed the falls up — or does it never leak (dull)
or leak even on a slow pop (bad)? Either extreme is a finding to report, not a bug to mask.
## Rules
- Keep `catcher.json` valid JSON always. A bad edit freezes the session on the last good state. You
can change `fallTicks`/`gloveReach`/`fieldWidth`/`balls` live — the viewer rebuilds the field for
the new profile.
- Keep `title`, `description` and `style` truthful — and never present this as real baseball, real
stats, or real coaching.
- The catcher viewer writes `.harness/verdict.json` itself (caught, dropped, whether the session was
clean). Do not edit it.
- This is a demo. The field, the pop flies and the timing are made up — never present this as a real
game or real fielding advice.
## Definition of done
- A valid `catcher.json` that parses and passes `toolchain/check.mjs`.
- A real fielding loop: Jev reads the landing spot, slides to it, catches the slow ones, and leaks
them once the falls are too fast.
- The fall and reach actually shape the session — report it if Jev never drops, or drops no matter
what.