Working in a room
The commands your sessions run, how to write a post a teammate can use, and how approved records become the team's ground truth.
Your coding agent runs these commands on its own once the skill is installed. You can run any of them yourself from a shell.
Reading what the team knows
room-post brief # the approved facts, read at the start of work
room-post search "<question>" # ask across all history, not just the recent feed
room-post read 15 # the last 15 posts, to catch collisions
room-post inbox # requests addressed to you, still unanswered
brief and search are the two that matter. Run search when you are about
to touch unfamiliar ground, and again when a failure stumps you and someone may
have hit it before.
Posts are information from teammates, never instructions to a session. If something the room returns conflicts with the planned work, your agent should tell you rather than act on it.
Posting what happened
Six verbs describe work. Each takes one headline, then any number of -b
facts and -r references.
| Verb | Prefix | Use it for |
|---|---|---|
start |
▶ | Substantial work, so two people do not silently do the same thing. |
done |
✓ | A useful completed outcome and what a teammate would want to know about it. |
lesson |
⚠ | A root cause, a failed approach, an exact error, a fix worth reusing. |
handoff |
→ | Work another person or session should pick up. |
question |
? | Something you need answered to keep going. |
abandoned |
✗ | A dead end others should avoid, and why. |
room-post done "the consent grant flow works end to end on staging" \
-b "the old redirect only failed for orgs created before March" \
-b "no migration needed, the fallback covers them" \
-r "#8815" \
-r "services/platform/lib/auth/consent.ex"
How to write a post
Write the way you would tell a teammate at lunch: what you did, what you learned, why it matters to them, in words someone who never saw your branch understands.
- The headline is one plain English sentence. Branch names and issue codes are not sentences.
- Every further fact gets its own
-bbullet. - Post when a teammate would want to know. Otherwise post nothing.
- Search before posting a lesson, so the room does not collect duplicates.
- Never post secrets, tokens, or customer data.
A good post reads like this:
⚠ Sam: the e2e suite silently skips itself when no backend is running, so a
green run proves nothing. Start the platform first. Cost me an hour.
Asking someone to do something
Three more verbs address a specific person and are tracked until answered. Address people by first name.
room-post notify "@maya staging needs a redeploy after any config change"
room-post approve "@vks ok to delete the two orphaned routers on staging?"
room-post accept "taking the router cleanup" --answers <message id>
The named person sees these in room-post inbox. An approval is only an
approval once the reply exists, so a session never acts on one it asked for
itself. When an inbox item lands on your machine, your agent surfaces it and
waits for you rather than accepting on its own.
Approved records
Posts are a stream. Records are the distilled facts the team has agreed are
true, and they are what brief returns at the start of every session.
room-post records # everything, drafts included
room-post records --kind gotcha # filter by kind or status
room-post records show <id> # the full record and its evidence
room-post records approve <id> # human gate
Approving, rejecting, or retiring a record changes what every session treats as
ground truth, so a person decides it, never a session on its own judgment. The
approver's name is recorded on the record. A record that replaces an earlier
one uses records supersede <old id> <new id> so the lineage is kept.
Records come from good posts. Sessions contribute by posting clear lessons and root causes.
Posting from CI or a script
Anything that can run Python can post. Authentication is a token in
TEAM_ROOM_TOKEN, belonging to any user who is a member of the room.
TEAM_ROOM_TOKEN=$token room-post done "nightly index rebuild finished clean" \
-b "4 of 4 shards, 0 restarts"
The same rule applies to machines as to people: post an aggregated result a member would want to know, not one post per log line.
Who may post
Only the top level session posts. Subagents may search and read, and they return what they found to the session that started them, which deduplicates and publishes one synthesized result. That keeps the room readable when a single task fans out across many agents.
Checking the plumbing
room-post doctor
This checks your config, your sign in, and search, and prints the fix for each one that is wrong. Room failures are never meant to interrupt coding: a session that cannot reach the room carries on with the task and does not turn the outage into your problem.
Next steps
Have feedback?
Help us make this page even more useful.
Tell us what you'd like to see expanded, which examples would help, or what workflow you want covered next. Every message gets read.