diff --git a/officer.dev/CLAUDE.md b/officer.dev/CLAUDE.md index 8007bac..16d060c 100644 --- a/officer.dev/CLAUDE.md +++ b/officer.dev/CLAUDE.md @@ -55,10 +55,17 @@ This file captures the **cross-cutting operational reality** that neither of tho process that runs `claude` was spawned by the main server, so PM2's tree-kill took it down every time. A restart now costs the agent a socket reconnect, not the session, and output produced while officer is down survives — the sidecar writes to `chat_session_events` itself. There is no `officer-claude`. -- **Officer is THIRTEEN PM2 entries here today** (verified 2026-08-23 by `bun run docs:check`, which fails - if this drifts): `officer`, `officer-anthropic-proxy`, `officer-atelier`, `officer-browser`, - `officer-caldav`, `officer-claude-code`, `officer-email`, `officer-marketplace`, `officer-notify`, - `officer-oas`, `officer-offscale`, `officer-opencode`, `officer-pty`. +- **Officer is TWENTY-SIX PM2 entries here today** (verified 2026-08-27 by `bun run docs:check`, which + fails if this drifts): the five core processes — `officer`, `officer-anthropic-proxy`, + `officer-claude-code`, `officer-opencode`, `officer-pty` — plus `officer-notify`, `officer-marketplace`, + `officer-oas`, and one per installed plugin. + + It was thirteen this morning. **Nothing about the platform changed**: all 21 plugins were installed on + this machine so the marketplace UI had something real to render. That is the paragraph below working + exactly as written, not an exception to it. + + It was fifteen on 2026-08-25; `officer-minesweeper` and `officer-transcribe` were uninstalled since, + which is the point of the paragraph below rather than an exception to it. **This number tracks PLUGIN INSTALLS, not platform releases.** It went to fourteen when Minesweeper was installed and back to thirteen when it was removed, with no platform change either time — installing a @@ -246,6 +253,16 @@ actually reset at the providers — it is the only record of which ones. ## Working agreement +- **Delegate the writing.** When a feature is agreed and what remains is typing — a change repeated + across many files, translations, a form, a migration over a list of call sites — hand it to a cheaper + agent, keep working, and review the DIFF when it returns. The owner's architecture, somebody else's + typing, your review in the middle. This is the default here, not a per-task decision, and it does not + need asking for. Read `capabilities/skills/delegating/SKILL.md` before writing the brief: an agent that + has to ask a question has already cost more than it saved. **Pick the cheapest model that will get it + right** — Haiku for mechanical, Sonnet by default, Opus only when the work still holds a decision, which + usually means the brief needs finishing rather than a bigger model. Do NOT delegate anything where a + wrong guess is quiet and expensive — permission checks, credentials, anything that deletes — because reviewing + those properly costs as much as writing them. - **Fix what you find.** If a defect is diagnosed and you know the fix, apply it — don't stop to ask. The owner retests immediately and restarts cost nothing. Still ask when it's a genuine product decision rather than a defect, when it widens scope, or when it's hard to reverse.