TODO.md had reached 1050 lines and 72 open items across 28 sections, read mostly on a phone. It is now a directory: todo/<theme>/<item>.md, one card per file, with frontmatter carrying id, status, created date and order, and the prose body copied across verbatim. TODO.md becomes a generated index (bun run todo:index). Dates: where an item's prose stated one it is used; otherwise its old section's; otherwise 2026-08-20, floored at the day before the split rather than invented. date_source records which. Shaped for a two-way Kanban board, filed as todo/tooling — a card is a file, id is the identity, frontmatter is the machine's half and the body is the owner's. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
29 lines
1.5 KiB
Markdown
29 lines
1.5 KiB
Markdown
---
|
|
id: affordances/no-way-to-see-which-affordances-are-reaching
|
|
title: "No way to see which affordances are reaching your agents, or to turn one off"
|
|
theme: affordances
|
|
status: open
|
|
created: 2026-08-21
|
|
date_source: stated
|
|
order: 1
|
|
---
|
|
|
|
**No way to see which affordances are reaching your agents, or to turn one off.** They are global:
|
|
`affordanceBlock()` reads every file under `capabilities/affordances/` and is called with no user
|
|
context (`claude-manager.ts:582`), so every account gets every one, in every conversation.
|
|
|
|
That is fine while they are uncontroversial and stops being fine immediately after. "Wait for the
|
|
question" was written to one owner's taste on 2026-08-21 — probably what most people want, and
|
|
nobody has asked anyone. An affordance nobody can see and nobody can decline is a preference
|
|
imposed as a fact.
|
|
|
|
Wants: a settings screen listing every affordance with its name, description, where it came from
|
|
(`officer/core` versus a plugin) and its body, plus a per-user toggle. Storage is one table keyed
|
|
on user and the affordance's namespaced id. The work is threading a userId into `affordanceBlock`,
|
|
which today takes only a root path.
|
|
|
|
Two things to decide when it is built rather than now: whether a plugin can ship an affordance that
|
|
is off by default, and whether disabling one should be visible to the agent at all — an agent told
|
|
"this client renders images" behaves differently from one told nothing, and a THIRD state, "you
|
|
were told not to", is a different thing again.
|