Roles
A role is a file. It sets how gatto behaves, which checks it has to satisfy, and what it is supposed to be doing. Three of them ship, and you can read or change any of them in Notepad.
A role really is just a file
Roles live in ~\.gatto\roles\, one small JSON file each. Switching role
is /role coder in a session, and gatto swaps the instructions it is
working under.
The clearest proof that a role is nothing more than a file is the default one. Here is
generalist.json, complete:
Empty, on purpose. The generalist is gatto with nothing added — no extra instructions, no extra checks. Everything the other two do, they do by putting something in that file.
The three that ship
generalist
The default, and the one you get if you never think about roles at all. It reads files, writes them, searches, runs commands, and answers questions. Use it for anything that is not specifically writing code or specifically thinking a problem through.
coder
Wears the visor. Its file turns on checkpoints — before it commits anything to version control, gatto stops, shows you the commit and the current state of your working folder, and waits. That pause cannot be granted permanently; it asks every time.
Its instructions push it towards implementing what was already decided rather than redesigning it: read the plan first, work in small steps, run the tests, and never say something passes without having watched it pass.
oracle
The one in the pointed hat. It is for research, specifications, plans and working out what is actually wrong — and it does not implement. Ask the oracle what to do; ask the coder to do it.
Its file turns on two checks the others do not have: one that pushes back when it states something it has not read, and one that asks it to say where a claim came from.
The three share one body deliberately. They differ where the role differs — the coder's eyes, the oracle's hat — because three unrelated cats would read as three mascots rather than one cat wearing a role.
architect
A fourth role is planned, for the shape of a system rather than its code: the decisions that are expensive to reverse, the boundaries between parts, and what should not be built at all. Coming soon.
Changing one, or writing your own
Open any of the files in ~\.gatto\roles\ and edit it. A role file can
add instructions to what gatto is told, turn checkpoints on, switch checks on, set which model that
role uses, and adjust how adventurous the model's answers are.
Adding a new one is the same thing under a new name: put architect.json
in that folder and /role architect will find it. Nothing has to be
registered, compiled or restarted — the folder is the list.
The manual's roles section lists every key a role file can carry, and the checks the oracle turns on.