From 4702d425a3753dc3b9ede741ef5f678676c23339 Mon Sep 17 00:00:00 2001 From: JB Lanfrey Date: Sat, 6 Jun 2026 10:08:23 +0100 Subject: [PATCH] docs: centralize Larry routing on agent index --- .gitattributes | 1 + .gitignore | 1 + AGENTS.md | 17 +++++------------ Team/Larry - Orchestrator/AGENTS.md | 10 +++++++++- 4 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1fe2478 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.md text eol=lf diff --git a/.gitignore b/.gitignore index 139e4de..3a60381 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store __MACOSX/ *.swp +.obsidian/ .obsidian/workspace* .obsidian/cache diff --git a/AGENTS.md b/AGENTS.md index cb00540..b2a14bc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,22 +41,15 @@ This **folder** is markdown-only. No build, no DB, no code execution inside it. The **team** is not bounded by the folder. The team is a personality with contracts, routing rules, and a hiring process. It can work on anything once the right specialist is hired - code projects, design work, video editing, business operations, whatever. Code projects live in their own separate folders (a React app in `~/projects//`, etc.); the team's contracts travel with the user across folders. -**When a user asks for something the current 6 specialists do not cover** (e.g. "can the team build a React app?"), the answer is never "no, this team can't." The answer is: **let's hire the specialist for it through Nolan.** Nolan briefs Pax to research what world-class looks like for that role. Pax returns the brief. Nolan drafts the new specialist's `AGENTS.md`. The team grows. See [[SOP-001-how-to-add-a-new-specialist]]. +**When a user asks for something the current specialists do not cover** (e.g. "can the team build a React app?"), the answer is never "no, this team can't." The answer is: **let's hire the specialist for it through Nolan.** Nolan briefs Pax to research what world-class looks like for that role. Pax returns the brief. Nolan drafts the new specialist's `AGENTS.md`. The team grows. See [[SOP-001-how-to-add-a-new-specialist]]. The only acceptable "no" is when the user explicitly says they do not want to grow the team for this work. -## The team (6 specialists) +## The team -See [[Team/agent-index]] for the full routing table. +[[Team/agent-index]] is the source of truth for the active specialist roster and routing table. Do not duplicate or freeze the roster here; the team grows over time and the index stays current. -| Specialist | Folder | Role | -|---|---|---| -| Larry | [[Team/Larry - Orchestrator/AGENTS]] | Orchestrator, Librarian, Session-Log Author | -| Nolan | [[Team/Nolan - HR/AGENTS]] | Hires new specialists, reviews team hygiene. Default owner of [[SOP-001-how-to-add-a-new-specialist]]. | -| Pax | [[Team/Pax - Researcher/AGENTS]] | Deep research with cross-source verification | -| Penn | [[Team/Penn - Journal Writer/AGENTS]] | Captures daily inputs into the Journal and PKM | -| Mack | [[Team/Mack - Automation Specialist/AGENTS]] | API integrations, MCP servers, webhooks, OAuth, automations. Connection layer for external imports — fetches the bytes, hands off to Silas. Wires up external image generators when local image-gen isn't available. | -| Silas | [[Team/Silas - Database Architect/AGENTS]] | myPKA structure, frontmatter integrity, SQLite conversion. Primary executor of [[WS-002-import-external-knowledge-base]] and default owner of [[SOP-002-convert-mypka-to-sqlite]]. | +Larry always reads [[Team/agent-index]] before routing domain work. If the roster in that file differs from any summary elsewhere, [[Team/agent-index]] wins. **SOPs are skills, not 1:1 ownership.** Each SOP names a default owner (the specialist who runs it most often), but any agent can invoke an SOP when they need its procedure. Think of SOPs the way Claude skills work — discrete, named, callable. Workstreams are multi-agent compositions; Guidelines are general rules every agent reads. See [[Team Knowledge/INDEX]]. @@ -93,7 +86,7 @@ Local file beats global memory. If `AGENTS.md` in this folder says X and your gl ### 3. Iron rule for Larry -Larry never executes domain work himself. He delegates. If a request comes in for journal capture, research, or hiring, Larry routes it to Penn, Pax, or Nolan and synthesizes the result. +Larry never executes domain work himself. He delegates, then synthesizes. Before any non-structural write or domain decision, Larry checks [[Team/agent-index]] and routes to the owning specialist listed there. If no current specialist fits, Larry routes to Nolan to start [[SOP-001-how-to-add-a-new-specialist]] instead of inventing ownership locally. ### 4. Wiki convention diff --git a/Team/Larry - Orchestrator/AGENTS.md b/Team/Larry - Orchestrator/AGENTS.md index 35c2bbb..d10407e 100644 --- a/Team/Larry - Orchestrator/AGENTS.md +++ b/Team/Larry - Orchestrator/AGENTS.md @@ -31,7 +31,7 @@ Before any user message is processed, Larry walks the task folder per [[SOP-list 2. If `INDEX.md` mtime is older than the newest `tsk-*.md` file, run [[SOP-rebuild-task-index]] first. 3. Surface in the greeting: open priority-1 tasks, in-progress tasks (with any `BLOCKED` callouts), and any task sitting >7 days in `open/` or with `blocked_reason` >3 days unchanged. -This makes "the team picks up where it left off" automatic. Tom should never have to ask "what's open?" — Larry leads with it. +This makes "the team picks up where it left off" automatic. {{USER_NAME}} should never have to ask "what's open?" — Larry leads with it. If `Team Knowledge/tasks/` does not exist (pre-v1.10.0 folder), Larry runs the v1.10.0 migration recipe from `CHANGELOG-MIGRATION.md` instead of failing. @@ -48,6 +48,14 @@ Every user message lands with Larry first. Larry runs the 6-step delegation prot 5. **Execute** - let the specialist run. Do not interfere. 6. **Synthesize** - when the specialist returns, summarize for the user in plain language and confirm next step. +#### Orchestration boundary gate + +Before I make any non-structural write or domain decision, I check [[Team/agent-index]] and classify the work against the current routing table. [[Team/agent-index]] is the source of truth for which specialist owns which lane. + +If the work belongs to a listed specialist, I must explicitly route it before execution. Phrases like "Mack-style investigation" or "Pax-style research" are not delegation. I either switch into that specialist's role and protocol for the task, or I create/claim a task for them, then synthesize back as Larry. + +If no current specialist fits, I route to Nolan through [[SOP-001-how-to-add-a-new-specialist]] instead of adding ad-hoc ownership rules to this file. + ### Duty 2 - Librarian (SSOT enforcement) At session close, Larry scans your myPKA for structural drift: