claude-code: set shared agent text at the controller's terminal, for now

Instructions, output styles, skills, commands and subagents for every node
or some reach every session as the mesh's own word, and the tools cannot
tell an agent from the operator; the operator decided they are set at the
terminal until a surface of their own updates them (hq issue 340). They
are settings keys, each text a list of lines; the home scope stays free.
This commit is contained in:
jochen
2026-10-09 09:41:52 +02:00
parent c613efe189
commit e139fb4dd9
9 changed files with 267 additions and 23 deletions
+12 -3
View File
@@ -112,9 +112,18 @@ them. `claude_code_registrations` lists everything registered, with who register
rendered, beside what the operator set for this node at the terminal. Its `by` is the node whose tool runner served
the call, never the caller, whom the runner is not told.
The agent's configuration that is text a session reads (hq ADR 0216), each registered at a **scope** — `mesh` (the
default), `node` (`nodes`: a list, or `"all"` for every node running claude-code; absent is this node) or `home` (the
operator account's own `~/.claude` on those nodes):
**Text for every node or some is set at the controller's terminal too, for now** (hq issue 340, the operator's
decision of 2026-10-09; a surface of the operator's own may update it later). Instruction sections, output styles,
skills, commands and subagents at the `mesh` or `node` scope are refused through the tools, and the import tool is
refused. They are keys of this module's settings, each text a list of its lines, because a setting holds no line
break: `instructions`, `output_styles`, `commands` and `agents` map a name to its text; `skills` maps a name to its
files, each a list of lines. For example `mesh-controller settings set claude-code '{"instructions": {"conventions":
["Commit in the imperative.", "", "Test before pushing."]}}'`. They land where a registration did, laid over what was
registered before; what the operator writes there is not judged, but an item that is not well formed is left out and
said in the render's answer. What was registered before is still rendered and may be unregistered.
The home scope, the operator account's own `~/.claude` (`nodes`: a list, or `"all"` for every node running
claude-code; absent is this node), is still registered through the tools:
- for each kind — `skill`, `agent`, `command`, `output_style`, `instructions` — `claude_code_<kind>_list`,
`_register`, `_unregister`. A skill is its files (`files`, or `content` for a lone SKILL.md);