Roster
Browse the docs

Writing a charter

The one file nothing can generate for you, and the shape that has worked.

The charter is the personality. It decides what a staff member does when nobody is watching, what it refuses, and what it escalates.

roster will not write it for you. That is not a missing feature. A generated charter produces a generic agent, and a generic agent produces work that is competent-looking and about nothing in particular, which takes longer to notice than no work at all.

Write it with your own AI

Write the charter, on that staff member's card on the Staff screen, does the whole round trip. It copies a brief with every file it refers to already inside it, so a chat window with no filesystem is as useful as an agent standing in the repo. Paste the reply back into the box and you get a diff and a save button, never a silent write.

It runs about 19,000 characters, on purpose: one paste into a large-context model beats six rounds of it asking for files it will never get.

The peers' charters are in there, along with org/business.md and the shared operating layer. That is the part that matters most, because without them the model writes a second copy of whoever it was shown. The brief then interviews you, drafts from your answers, and tells you what it cut and why.

So is a worked example, when one fits. A staff member whose handle or role reads as one of the ten roles below gets the matching example inside the brief, labelled as a model for the shape and not content to copy. The copy-a-prompt panel has a picker to choose another or none; in a terminal it is --example <handle> or --example none. It is still a brief you answer: the interview comes first, and nothing in the charter should come from the example rather than from you.

From a terminal, the same brief:

roster brief charter <handle>            # or: roster brief charter cto | pbcopy

In Claude Code, cd <staff-dir> && claude then /charter runs the same text, because roster hire generates the slash command from it. There is nothing agent-specific in any of it.

What goes in it, and what does not

Only the difference. The shared half already exists in org/: how anyone here operates, how we write, the guardrails everyone is bound by. All of it is composed into the prompt above the charter. Restating any of it wastes context on every run of every day and creates two places to change one rule.

If a sentence would be true of every staff member you will ever hire, it belongs in org/.

The shape that has worked

Who I am. One paragraph. What this role is for, in this business specifically.

The mission. The single thing this staff member optimises. If a decision does not serve it, it is somebody else's decision.

How I work, that others here do not. The habits particular to this role.

Decision rights. What it decides alone, what it proposes and waits on, what it never touches. Be specific. A vague boundary is one that gets crossed at 07:00 with nobody awake.

Guardrails on top of the org's. Only the additions.

Where the rest of it lives. Point at memory/INDEX.md, log/decisions.md, the pinned status issue, and the surfaces the manifest declares.

Worked examples

Ten, for an invented company called Acme. The handle in brackets is the one --example takes.

Example What they do
CTO (cto) Builds the product: fixes, features and tests, as pull requests.
CMO (cmo) Posts, SEO, copy and launch plans, as drafts to approve.
Head of Support (support) Answers issues, writes help docs, and turns user reports into bugs.
Product Manager (pm) Turns ideas and user feedback into clear specs and a ranked backlog.
Designer (designer) Improves the product's look and usability, with accessibility fixes, as pull requests.
QA Engineer (qa) Tests the product, finds bugs, and writes clear reproductions and tests.
DevOps Engineer (devops) Keeps CI, deploys and dependencies healthy, and patches security updates.
Technical Writer (writer) Writes and keeps up the docs, guides and changelog.
Data Analyst (analyst) Reads the numbers and writes a short weekly report on what changed.
Community Manager (community) Answers discussions, welcomes contributors, and drafts release announcements.

They are examples to adapt, not templates to fill in. Read them for what a finished charter covers and how specific it gets, then write your own about your business. A charter copied from one of these describes Acme. The brief carries the matching one for you; these links are for reading them first.

Things worth being concrete about

  • Escalation. Name the label and the mechanism, not the sentiment. "Open an issue labelled decision, assigned to @you" beats "check with the founder".
  • What it must not do. Money, legal, anything touching a real person's data. Say it here even if org/guardrails.md covers it, if this role gets closer to the line than others.
  • What good output looks like for this role. A CTO's and a CMO's differ, and the shared voice file cannot know that.

Keep it agreeing with the manifest

Health, and roster lint, fail if the charter and staff.yaml disagree. The manifest is the machine-readable half of the same document: handle, schedule, peers, surfaces, identities. If the charter says it reviews pull requests on the product repo, works_in had better include it.

It is not finished

The charter is the file most worth revisiting. When a run does something you did not want, the question is usually not "what went wrong in that run" but "what does the charter not say".

Edit this page on GitHub