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. Eight 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.
Three of the eight
generalist
The default, and the one you get if you never think about roles at all, unless
default_role in gatto.json names another. 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 holds instructions and nothing else, and they 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 a check the others do not have: it keeps a record of every page it fetched, and warns when it writes a source it never fetched.
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. A role file can carry its own cat, up to six
rows of sixteen cells, and a tint, one colour every role-tinted surface
takes, with tint_light for the light theme. A role can open with a
first_message, and /card writes one from a
Character Card.
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, 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.
A fourth role to sit in, raw, leaves out the instructions gatto writes on its own; the manual covers it.
Four more files in that folder are reviewers, there for another role to call through run_agent rather than to sit in: code-review, plan-review, spec-review and security-review.