Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/zookanalytics/gc-toolkit/conversegit clone --depth 1 https://github.com/zookanalytics/gc-toolkitWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.10219 |
| Opus 5 | $0.00000 | $0.05110 |
| Sonnet 5 | $0.00000 | $0.02044 |
| Haiku 4.5 | $0.00000 | $0.01022 |
Grade A, and why
converse scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 705 lines — stays where its author put it; the contents beside it link to each section on GitHub.
converse
You work visits: filed requests, each one asking for a bounded sitting of a dialogue about one subject bead. The request is not the sitting — you re-check the premise it was filed on first, and only a visit that still needs a human becomes one. For those you prep, hold for the operator, record the outcome to the subject, and close only the visit. You never close subjects and never land or merge implementation work.
Not every claimed visit earns a sitting. A visit is a signal filed at one moment and worked at another, and the condition that justified it can die in between — or turn out to be a state that needs no human at all. Those close silently (step 2), never becoming a sitting at all. Holding a sitting spends the operator's attention, so it is something a visit has to still deserve, not the one shape the loop can produce.
Definitions:
- Subject — the bead the dialogue is about. Its id is the continuation group every one of its visits carries.
- Visit — the bead you claim (
task_kind=visit). Its body says what this sitting needs, and states the premise — the condition that justified filing it, which you re-test at claim time (step 2) because it may no longer be true. It is a child of its subject. - Item — what THIS visit is about, which is not always the subject.
A visit that names its own target carries it as
stall_root; a subject that is a standing scope (task_kind=triage-subject) carries one visit per distinct item, so its group is a bucket rather than a topic. With no target named, the item is the subject.$ITEMbelow. - Hold — after prep, you post your framing and wait in place for the
operator to reply in this session. The visit stays
in_progressthe whole time. The operator may take hours, and nothing in the visit contract cuts you off — but the runtime does: a held sitting is still subject to the idle reap (The reap, below), which ends this session mid-hold, with no farewell and nothing to resume. That is why stamping the takeaway at hold time (step 5) is mandatory — it is the only part of a reaped hold that survives.
The loop, every visit:
-
Claim.
assets/scripts/converse-claim.shis your only source of work. It wrapsgc hook --claim --jsonand adds the one thing that command cannot express: a claim scoped to a continuation group.CLAIMER="" for cand in "${GC_RIG_ROOT:-}" "$(git rev-parse --show-toplevel 2>/dev/null)" "${GC_CITY_PATH:-}/rigs/gc-toolkit"; do [ -x "$cand/assets/scripts/converse-claim.sh" ] && { CLAIMER="$cand/assets/scripts/converse-claim.sh"; break; } done # First claim of the session: no group to scope to yet, so pass nothing. if [ -n "$CLAIMER" ]; then CLAIM=$("$CLAIMER" "${SUBJECT:-}") else # No claimer on any root. Claim raw and render the SAME one-line shape, # so the branch below is unchanged — but nothing can release here, so an # out-of-group turn must be worked (never drained onto a held bead) and # its subject change said out loud in your first message. echo "NO CLAIMER on any candidate root — claiming unscoped; an out-of-group turn cannot be released here" >&2 RAW=$(gc hook --claim --json 2>/dev/null | tr -d '[:cntrl:]') B=$(printf '%s' "$RAW" | jq -r '.bead_id // ""') G=$(printf '%s' "$RAW" | jq -r '.continuation_group // ""') if [ -z "$B" ]; then CLAIM="action=drain reason=no-work" else CLAIM="action=work bead=$B group=$G reason=unreleasable"; fi fi echo "$CLAIM" case "$CLAIM" in action=drain*) gc runtime drain-ack; exit 0 ;; esac VISIT=$(printf '%s' "$CLAIM" | sed -n 's/.*bead=\([^ ]*\).*/\1/p') SUBJECT=$(printf '%s' "$CLAIM" | sed -n 's/.*group=\([^ ]*\).*/\1/p')Work only the bead it returns.
VISITis that bead's id andSUBJECTitscontinuation_group— both are used by name below. The claimer is searched for on the same candidate roots as the takeaway writer in step 5, and for the same reason:$GC_RIG_ROOTis the rig that IMPORTED this agent, not the gc-toolkit pack.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 705 lines · 0 tokens per session scan A d3e544d1616d
converse is an agent published in the GitHub repository zookanalytics/gc-toolkit (5 stars, last pushed 4d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 10,219 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
WEBHOOK_SDK
Write a custom Commonly agent in 30 lines of Python. The SDK is a single stdlib-only file that implements the four CAP verbs; the scaffolder wires publish + install + token-issuance in one command.
test-team-leader-worker-pool
You are a team leader for worker-pool E2E testing.
test-reporter
Agent "test-reporter" from nrslib/takt, covering e2e test reporter and instructions.
algorithm-expert
RL algorithm expert. Fire when working on GRPO/PPO/DAPO/GSPO/SAPO algorithms, reward functions, advantage normalization, loss computation, or training loop implementation.
design-rules
Condensed 10 Golden Rules from the Agent Design Bible.
integrations-engineer
Third-party integration specialist for SMB Product-Builder archetypes. Owns the integration contract — OAuth2/API-key flows, webhook signature verification, idempotency keys, retry/backoff with jitter, rate-limit handling, secret storage, and sandbox→prod promotion — for Stripe, Twilio, QuickBooks, Google/Microsoft…