design: plugin capabilities are loaded in place, not copied
capabilities/ is meant to be forked — core's work plus the owner's, and nothing else. Four publishers copy plugin files into it at install, so a fork accumulates files it did not author with nothing on disk saying which. On this machine skills/email-db/ and extensions/ are sitting untracked in that repository right now, and there is no good answer: commit them and the fork carries another plugin's work, leave them and git status is permanently noisy. Copying is wrong a second way that has nothing to do with git. A copy goes stale — plugins:update pulls new plugin code while the copied capability keeps describing the old one — and a copy survives plugins:disable, so a disabled plugin's skill stays in the agent's index. So the platform reads them where they are: the capabilities directory, plus each installed and enabled plugin's own. Nothing is copied, and nothing needs a namespace to stay apart because separate directories already do that structurally rather than by convention. Four bugs stop existing: forks stay clean, capabilities update with the plugin, disable actually disables, and uninstall needs no cleanup — so there is no list of filenames to get wrong and delete the owner's work with. Deletes all four publishers when built, including api/tasks/publish.ts from earlier today, superseded before it shipped anywhere. app-store/assets stays — those are images served over HTTP, and the copy is what makes them reachable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
@@ -537,6 +537,10 @@ explaining why it was safe.
|
||||
- `docs/editor-buffer-corruption.md` — an open bug with a trap set for it: background-job output appearing
|
||||
inside a file open in the editor. Read it BEFORE investigating a report of that, and before re-testing
|
||||
anything it already rules out
|
||||
- `docs/plugin-capabilities.md` — **designed, not built**: a plugin's tasks, skills and affordances are
|
||||
READ where they live, never copied into `capabilities/`. Why copying breaks a forkable repository, why it
|
||||
goes stale on update and survives a disable, and why separate directories beat namespaced paths —
|
||||
a namespace makes provenance readable, separate directories make it structural
|
||||
- `docs/filesystem-quotas.md` — **planned, not done**: the host-side half of per-user and per-team storage
|
||||
limits. Why the kernel has to enforce it rather than the platform (members have `terminal` and can write
|
||||
past anything we count), why `usrquota`+`grpquota` and not project quotas, and the one thing easiest to
|
||||
|
||||
Reference in New Issue
Block a user