the capabilities Officer ships: the first affordance

Image rendering, the platform's first core affordance. It tells an agent
something it cannot discover from the filesystem: markdown images render, and
the USER'S DEVICE fetches the URL — so a local path renders nothing, silently.

Only authored content is tracked. The six item directories are created by the
platform at boot and are where the owner authors their own work, so versioning
them here would be claiming somebody else's files.
This commit is contained in:
officer
2026-08-19 07:29:25 +00:00
commit 959a3b8e94
2 changed files with 46 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# Officer capabilities
The file-based store Officer reads agent items from. This repository holds the ones the **platform
ships**; everything else in this directory is yours.
```
affordances/officer/core/ ← shipped here
skills/ tools/ tasks/ processes/ extensions/ agents/
```
Those six directories are created by the platform at boot and are where you and your agents author
items. They are deliberately **not tracked here** — your work is not ours to version. `extensions/tool-loader`
is written by the platform from its own source and will reappear if you delete it.
## Affordances
An affordance is what the surface on the other end of the conversation offers the agent: what the client
will render, accept or ignore. Not what the agent can do — what it will get away with.
The platform compiles every affordance into one block and appends it to each agent session, so an agent
knows things it could not otherwise discover from the filesystem. `plugins/CLAUDE.md` in the platform is
the authority on the format and on what belongs in one.
Layout is `<publisher>/<plugin>/`, with `core` in the plugin slot for the platform's own. A plugin ships
its own `affordances/` directory and installing it copies them in.
## Updating
`git pull`, or press **Update all** on the platform's marketplace screen, which updates this alongside
every installed plugin.
Your own untracked items are unaffected by either.
@@ -0,0 +1,14 @@
---
name: Image rendering
description: Use when you have an image to show the user in chat.
version: 1
---
`![alt](https://…)` renders as an image. **The user's device fetches the URL**, so it must be reachable
from there — a local path, `file://`, or anything behind authentication renders nothing, and fails
silently.
Reading the file yourself shows the user nothing. `open`/`xdg-open` opens a viewer on a machine nobody
may be sitting at. A bare URL renders as a link, not an image.
Nowhere reachable to put it? Say so — a path looks identical to a broken image.