The reporting-back skill ships default shapes; an operator's adjustments to
them are preference records. Prompt-time retrieval matches the operator's
message, and a shape preference is about the reply, so those preferences were
on file and never arrived. Operator's decision (logged on #4013): the server
delivers them for a completion report, and the skill asks for every other kind.
- Completion reports (option C): closing a task with update_task runs a
kind-filtered preference search for the moment "writing the completion
report after finishing a task" and returns matches as `reply_preferences`
({id, title, statement, kind}), with a sentence added to `report_back`
naming the key. A preference says it is about completion reports through
its own when_to_apply; no tag or column. Omitted when nothing matches, and
the lookup fails open.
- Telemetry: every call logs to retrieval_logs under `report_preference`
(empty calls included; a search that never ran writes no row) and hits are
recorded surfaced. The source is ranked, so it counts toward pull-through.
The bar is the prompt arm's setting until step 6 reads this source's near
misses.
- Every other reply (option A): reporting-back gains "The operator's own
shapes come first". Before a finding, decision, handoff or "where are we",
search(content_type="rule") in the words of that moment and follow what
comes back. Registered in the ownership guard with reporting-back as owner.
- Loading reply shapes at session start (option B) was rejected: it would be
a small copy of the preloading milestone 394 retired.
Domain-neutral query (pinned); works on an install with no preferences.
Plugin version minted.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Step 3 of milestone 409 "Response shapes". Step 2's reporting-back skill
only helps if it fires, and only exists in the Claude Code plugin.
- scribe_static_context.md and using-scribe (new reflex 11) say: report back
in a shape the operator can read, placed from the `placement` block rather
than memory, and point at the reporting-back skill. using-scribe also lists
it among the sibling process-skills.
- update_task returns a one-line `report_back` cue when a task is closed
(done or cancelled). A tool response is the only surface every MCP client
sees, at the moment the report is about to be written.
- _INSTRUCTIONS takes no line: there is no budget without trading out a
session-start reflex. The decision is recorded in server.py's comment
block so it is not re-litigated blind.
- Guards: test_instruction_surfaces_agree pins the reflex and the placement
pointer on both plugin surfaces; a tool test pins the cue on closing
statuses and its absence on every other update.
Plugin version minted.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>