From 959a3b8e9494940b012a5d8a0ddbbf986a151167 Mon Sep 17 00:00:00 2001 From: officer Date: Wed, 19 Aug 2026 07:29:25 +0000 Subject: [PATCH] the capabilities Officer ships: the first affordance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- README.md | 32 +++++++++++++++++++++ affordances/officer/core/image-rendering.md | 14 +++++++++ 2 files changed, 46 insertions(+) create mode 100644 README.md create mode 100644 affordances/officer/core/image-rendering.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..36a5bda --- /dev/null +++ b/README.md @@ -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 `//`, 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. diff --git a/affordances/officer/core/image-rendering.md b/affordances/officer/core/image-rendering.md new file mode 100644 index 0000000..7dbd826 --- /dev/null +++ b/affordances/officer/core/image-rendering.md @@ -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.