Five monkeys (working names — they may change): map, unleash, nasty, explore, mcp. Modes are what they do on the tile they are standing on. Fog is how hungry they are to go there, and which mode they pick once they arrive. Inspect (HTML, axe, layout, testability) runs on whoever lands — it is not a monkey and not a mode. Catalog: issue-classes.md. Fog ledger and hunger: fog.md. Host-LLM MCP: mcp.md.
Parallel runs merge into one clickmonkey/map.json. Rings on the dashboard
are live units. map, unleash, and nasty each have their own last-land clock
per page. explore and mcp do not — they still show as different live letters
(e / c) when they stand on the same page. Spec and typed tests are
run modes (s / t live letters) and share one coverage pip s
(fog.spec) — not a hunt job. How to read haze, pips, and
rings: map.md.
| Monkey | Command | Does |
|---|---|---|
| map | clickmonkey map |
Unseen doors, then rooms this map run has not stood on recently. Never fill or submit. |
| unleash | clickmonkey unleash |
Pathfind to mapped forms this job has not filled recently (not page land), fill, submit. --form clients_new pins one page, retries Save, stops when submit leaves. |
| nasty | clickmonkey nasty |
Same hunt on the nasty form-work clock — forms unleash already filled still look hungry. Junk payloads. Site you own. unleash --nasty is the same call. |
| explore | clickmonkey explore |
One charter. Unattended LLM. Not a soak. Needs brain. |
| mcp | clickmonkey mcp |
Host LLM walks (explore_start …), then freeze/replay a spec. Not clickmonkey explore. mcp.md. |
Self-logout is a harness miss, not a product finding. map / unleash / nasty / explore / mcp goto the leash url and run intro again (up to three tries) instead of hunting open from the login room.
Spec (clickmonkey spec / MCP spec_save / spec_run) and typed tests
(clickmonkey emit / brain: test) are run modes, not monkeys. They show
live letters s / t and stamp the shared s coverage pip on land
(not unleash/nasty hunger). Spec is frozen fences, still a real walk. Replay is comparison vs a report. Ghost rooms stay on the map until
clickmonkey pages (checkbox; --drop for scripts). Recommend only with a 404 in broken.json plus no live inbound door.
False-positive findings in a report are clickmonkey prune (rewrites that
findings.md and records dismissed.json). That is not map GC.
Do not add list or tab as a sixth monkey. Lists, tabs, empty states, and layout bugs are modes or loot on the tile. Fog on the monkey sends a walker there; fog on the mode picks what they do.
unleash, nasty, explore, and mcp pick a mode from the current view. Wizard locks while
the stepper is up. Other modes that apply compete by least-recent stamp
on that page (UNLEASH_MODES in src/brains/walker-mode.ts). Nav is the
fallback when nothing else applies. Equal fog keeps the table order (form
before list before tab before dialog before empty).
| Mode | When | Legal moves |
|---|---|---|
| wizard | Body fields + Next/Continue, and it is not a list pager | Fill empties, then Next/Continue. No sidebar hop, no form hunt, until Finish/Save or the stepper is gone. |
| form | Body fields + submit/save/create | Burst-fill empties (ordered date ranges; listed pickers take a listed option or a short search probe, never Faker/catalog; one table row on batch/submit, never header/select-all or a grid of cell checkboxes), then submit (or rarely dismiss). Do not fill one field and leave. A listed chip already tried this stay is not retried while empty. After Save succeeds or hits the retry cap, hunt the next form — do not refill. List search/*_filter_* / *_list_status* / period switchers and Add/Create that opens a dialog are not this. |
| list | Filters/sort/search/rows/pager (score ≥ 2) | Sample each chrome kind once, then a row. Can share a surface with a form; the staler mode wins. Pagination is list chrome, not wizard Next. |
| tab | Tab / tablist controls | Form hunt if a mapped form is reachable (same as list/nav); otherwise click a tab. After tabs are exhausted, hunt then hop. |
| dialog | Mapped dialog opener on the page (not already inside a dialog) | Click an opener this run has not stood in. unleash skips Archive/Delete confirms and hunts the next form after Edit. nasty still opens those confirms. Form/wizard take over once a form dialog is open. |
| empty | Empty-state CTA (“Create your first …”), search not active | Click the empty-state action. |
| nav | Nothing else applies | Stay clicks or hop. map also uses nav-shaped clicks to lift fog. |
Wizard vs list: Previous+Next with other list chrome is a pager. Next on a stepper with fields is wizard. Last wizard step (Save, no Next) falls through to form.
Not modes: empty-required (a playbook), replay, prune, inspect.
Fog is hunger: who goes to a room, and which mode they run once there.
Unexplored doors, stale job clocks, and stale modes. Clocks live on the
sitemap page (page.fog in map.json) — wipe them with
clickmonkey fog --reset without losing rooms. Formula, vision skip,
and how to schedule jobs: fog.md.