Every architectural decision lives as a plain markdown file under decisions/ in the repo. Frontmatter holds the metadata; the body has the context, the call, the reasoning, and the consequences. The repo is the source of truth — this page is the index.
-
Tool-build patterns codified into Bob's skill after the May 11-12 manual session
A two-day manual build session (May 11-12) shipped 35 calc.net-gap tools without using Bob — author writing widgets and seeds by hand at ~15-20 min/tool. The session surfaced six patterns that would have caught Bob and produced wrong or buggy output if Bob had run the same queue
2026-05-12-tool-build-session-learnings
-
Each agent gets its own Slack App (multi-tenant, single Worker)
Phase 1 shipped with a single Slack App (@Router). Path A — virtual sub-agents routed through the Router — would scale to N agents with one app, but you can't DM @Steph directly: you always go through @Router steph .... That's a friction tax and it dilutes the "agents as characte
2026-05-11-per-agent-slack-apps
-
Agents share work via three artifact tools backed by the tasks table
After PR #8 (dispatch) shipped, the obvious next gap was agent-to-agent handoff. If Daniel DM'd Kai "spec a kpa-to-psi converter", Kai would reply with a spec in Slack — but the spec only existed as Slack message text. Bob (next DM later) couldn't read it. The team had brains and
2026-05-11-agent-tool-use-artifacts
-
Agents get roles, bios, and public profile pages at /agents/<handle>
The Agent OS architecture says each agent should eventually earn its own public surface — DM handle, profile page, X account, newsletter. Phase 1 shipped the DM handles (each agent has a Slack App). Public profile pages are the next layer of "agents as characters" and they're the
2026-05-11-agent-public-profiles
-
Agent profile pages are public, Twitter-handle-style URLs, and exclude internal infra
The first version of /agents/<handle> (shipped earlier today) leaked internal information onto a public page: Slack bot user IDs, Slack app IDs, archetype names like qa and spec-writer, trust levels, instructions on how to DM the bot in Slack. None of that belongs on a page a fir
2026-05-11-agent-profile-redesign
-
Agents get a fetch_url tool backed by Jina AI Reader
After PR #167 (artifact tools), the obvious limitation was that agents couldn't reference external sources. Kai could write a spec from her training knowledge — but Daniel often points her at a specific competitor URL and asks "spec a tool like this one." Today she'd say "I can d
2026-05-11-agent-fetch-url-tool
-
Agent dispatch uses Claude Haiku 4.5 with prompt caching
PR #8 closes the original "operate from your phone" loop: DM @Bob → Worker reads Bob's skill from Supabase → calls Anthropic API → posts Bob's reply in-thread. The model choice and cost shape needed locking in.
2026-05-11-agent-dispatch-haiku
-
Sequential PR batches must regenerate auto-generated files in a single bulk PR, not per-tool
The overnight 19-tool build (2026-05-08 → 2026-05-09) opened 19 Bob PRs (#136–#154) plus 7 Simon translation PRs (#155–#161). Every Bob PR touched two auto-generated files — src/lib/tools-data.generated.ts (catalog mirror) and the per-locale slug-mapping rows — and every Simon PR
2026-05-09-overnight-batch-merge-patterns
-
Agent OS build starts with the data plane (tasks / events / decisions / agents tables)
The /agent-os page now describes the full architecture across 17 sections (5 layers, 4 memory types, 4-phase roadmap). Phase 1 of the build has roughly 10 components — Slack workspace, bot identities, Supabase tables, decision broadcaster, router bot, webhook receivers, workflow
2026-05-08-agent-os-build-starts