write down what today left unfinished

three, so none of it is re-derived:

agents-md-remaining — the five doc pairs landed; the runtime writers did not,
and that half is BROKEN rather than untidy. commanders, bots and plugin chats
write CLAUDE.md, opencode reads only AGENTS.md, so a commander run under
opencode is briefed with nothing and nothing reports it. names the three writers
by file. the 21 plugin repos are marked as the owner's to lead — not to sweep
unprompted.

marketplace-browse-by-tag — data layer done, UI not started. carries the two
questions that decide the shape: "All" as default, and whether the detail
replaces the grid or sits beside it, which is master-detail vs list-then-page and
contradicts how the screen is deliberately built today.

calendar-skill-never-used-by-an-agent — every recipe was run BY HAND and works;
no agent has ever read the skill and acted on a sentence. those are different
claims and only one of them is tested.
This commit is contained in:
2026-08-27 07:04:05 +00:00
parent a865bcfdfc
commit 5d51212cca
3 changed files with 106 additions and 0 deletions
@@ -0,0 +1,48 @@
---
id: docs-conventions/agents-md-remaining
title: 'AGENTS.md sweep — what is left after the static docs landed'
theme: docs-conventions
status: open
created: 2026-08-27
date_source: stated
order: 2
---
**The five platform doc pairs are done** (`2360a3ef`, corrected by `a865bcfd`). AGENTS.md holds the
content, CLAUDE.md points at it, `docs:check` reads AGENTS.md. Verified byte-identical per pair.
What is not done, in the order it costs:
## 1. Runtime writers still produce CLAUDE.md only — this one is BROKEN, not untidy
opencode discovers `AGENTS.md` and nothing else. Verified in the binary:
`H.up({targets:["AGENTS.md"], start, stop})` is its sole target. So every brief the platform writes at
runtime is **unread** when the session is opencode — the agent is not misconfigured, it simply knows
nothing, and nothing reports it.
| writer | file it writes | who is briefed with nothing |
| --- | --- | --- |
| `api/command-hq/directory.ts` → `createCommanderDirectory()` | `commanders/<id>/CLAUDE.md` | a commander run under opencode |
| `api/bots/brief.ts` → `ensureBotsBrief()` | `bots/CLAUDE.md` | every bot |
| `api/chat/websocket.ts` → `installPluginChatBrief()` | `<plugin-chats>/CLAUDE.md` and the email account dir | plugin chats, email chats |
Commanders can already run under opencode, so this is live. The fix is small — write both names, or write
AGENTS.md and leave a CLAUDE.md pointer — but it is code, and a wrong guess silently un-briefs a running
agent.
`scripts/backfill-commander-credentials.ts` appends to EXISTING commander files and will need the same
treatment or it will edit a file nothing reads.
## 2. The 21 plugin repos have neither file
**The owner is leading this one** (2026-08-27) — do not sweep it unprompted. It is authoring rather than
moving text: an AGENTS.md for a plugin has to say something true about that plugin, and there are 21 of
them. Wait for the shape he wants before writing any.
`PLUGIN.md`, present in most of them, is a different document and stays untouched.
## 3. Out of scope, recorded so it is not re-derived
- `~/.claude/CLAUDE.md` — the owner's own, hand-maintained, Claude-specific by its path.
- Per-commander files are operational state authored by the commander, not documentation — but see 1,
they still have to be DISCOVERABLE by both harnesses.