When asked to understand this repository:
- Read
.agent-context/current/00_START_HERE.mdfirst. - Follow the read order defined in that file.
- Use the structured files if present for task routing, grouped reporting, and stop conditions.
- Only open project files when the context pack identifies a specific target.
Naming convention: Use
chorus agent-context ...commands. Legacy npm wrappers (npm run agent-context:*) are still available in this repo.
chorus agent-context init
# ...fill template sections...
chorus agent-context sealThis project is wired for cross-agent coordination via chorus.
Provider snippet: .agent-chorus/providers/gemini.md.
When a user asks about another agent's activity ("What is Claude doing?", "Compare Codex and Gemini outputs"), run Chorus commands first and answer with evidence from session output rather than reasoning.
chorus read --agent <agent> [--id=<id>] [--cwd=<path>] [--chats-dir=<path>] [--last=<N>] [--json] [--include-user] [--tool-calls] [--format=<json|markdown>] [--metadata-only] [--audit-redactions]
chorus summary --agent <agent> [--cwd=<path>] [--format=<json|markdown>] [--json]
chorus timeline [--agent <agent>]... [--cwd=<path>] [--limit=<N>] [--format=<json|markdown>] [--json]
chorus list --agent <agent> [--cwd=<path>] [--limit=<N>] [--json]
chorus search <query> --agent <agent> [--cwd=<path>] [--json]
chorus compare --source <agent[:id]>... [--cwd=<path>] [--json]
chorus diff --agent <agent> --from <id1> --to <id2> [--cwd=<path>] [--json]
chorus send --from <agent> --to <agent> --message <text> [--cwd=<path>]
chorus messages --agent <agent> [--cwd=<path>] [--clear] [--json]
chorus checkpoint --from <agent> [--cwd=<path>] [--message=<text>] [--json]When asked to inspect, compare, diff, or summarize agent activity:
- Prefer direct evidence from
choruscommands before reasoning. - Scope reads to the current project with
--cwdunless the user says otherwise. - Default to the latest session when the user does not specify one.
- Interpret session-timing phrasing consistently:
- "current" / "latest" -> newest session
- "past session" / "previous session" -> one session before newest
- "last N sessions" -> newest N (includes latest)
- "past N sessions" -> N sessions before latest (excludes latest)
- explicit ID/substring ->
chorus read --id <substring>
- Ask for a session ID only after an initial fetch fails.
- If evidence is missing, report what is missing rather than guessing.
- Return results first; minimize process narration.
Gemini does NOT have Claude Code's SessionEnd hook. State only reaches
other agents when this session explicitly checkpoints, so treat standup
and conclude as manual rituals.
chorus messages --agent gemini --cwd <project-path> --jsonAdd --clear after you act on the messages so the same notes don't
resurface next session.
Broadcast state to every other agent:
chorus checkpoint --from gemini --cwd <project-path>Call it at end-of-phase, before stepping away, or after landing a change
another agent might build on. checkpoint is idempotent and no-ops
silently when .agent-chorus/ is absent, so unconditional calls are
safe. Pass --message "..." to override the auto-composed git-state
body.
For addressed notes rather than broadcasts:
chorus send --from gemini --to claude --message "API schema ready for review" --cwd <project-path>Full protocol and end-to-end scenarios:
docs/session-handoff-guide.md.
Recent Gemini CLI builds store session state as protobuf (.pb) under
~/.gemini/<profile>/conversations/. Chorus reads JSONL at
~/.gemini/tmp/<hash>/chats/session-*.json and does NOT yet parse the
protobuf form.
If chorus read --agent gemini returns NOT_FOUND and names "protobuf
(.pb)" in the error message, use one of:
chorus read --agent gemini --chats-dir /path/to/jsonl-export— points Chorus at a known-good JSONL directory.export CHORUS_GEMINI_TMP_DIR=/path/to/jsonl-root— overrides the default discovery root for a long-running shell.- Write a JSONL stub by hand at
~/.gemini/tmp/<sha256-of-cwd>/chats/stub.jsonwithsessionIdand amessagesarray. Seedocs/session-handoff-guide.md"Scenario 4" for the exact recipe.
Full .pb parsing is tracked as a separate enhancement.
Every cross-agent claim should include:
- Which source session was read.
- What evidence supports the claim.
- Any uncertainty, missing source, or scope mismatch.
The exact phrase "chorus trash-talk" (and only that phrase) triggers a
roast of active agents. This must never be triggered by similar phrases,
paraphrases, or partial matches.