New config state: one key per registration, mesh.<kind>.<name>, node.<node>.<kind>.<name>, home.<node>.<kind>.<name>; item and files in one value, max 256 KiB. Every node watches it (like servers) and renders what applies.
Where things land: skills, agents, commands, hooks, output styles → plugin nox-mesh in /etc/claude-code/marketplace/ (written whole: staged, swapped in as root, only when it differs; written before the settings that enable it); settings → managed-settings.json (managed_settings setting < mesh < node, objects merged, lists joined, under the mesh's keys incl. extraKnownMarketplaces + enabledPlugins); instructions → sections after the mesh's CLAUDE.md text; home scope → ~/.claude/{skills,agents,commands,output-styles,rules}, recorded in home-placed.json, never touching a path the person made, leaving hand-changed files alone.
27 new tools: claude_code_<kind>_list/register/unregister for skill, agent, command, hook, output_style, instructions; claude_code_settings_get/set/clear; claude_code_permission_add/remove; claude_code_config_list/show/status/import.
Tests: every row of ADR 0216's checks (each kind lands in its place; mesh/node/home scopes over two nodes; the mesh's keys cannot be set or replaced; settings layering and list joining; home ownership incl. a hand-changed file; size and shape refusals; import and stale detection), plus the manifest lists exactly the tools served and the tree comparison. go vet, gofmt clean; module check with the controller from current main: ok, 35 tools, state servers, holdings, config.
Rollout plan: g14 first, register one mesh skill, confirm a new session offers nox-mesh:<name>, then the other nodes.
Builds hq ADR 0216 / to-be 36 §8.
- New `config` state: one key per registration, `mesh.<kind>.<name>`, `node.<node>.<kind>.<name>`, `home.<node>.<kind>.<name>`; item and files in one value, max 256 KiB. Every node watches it (like `servers`) and renders what applies.
- Where things land: skills, agents, commands, hooks, output styles → plugin `nox-mesh` in `/etc/claude-code/marketplace/` (written whole: staged, swapped in as root, only when it differs; written before the settings that enable it); settings → managed-settings.json (`managed_settings` setting < mesh < node, objects merged, lists joined, under the mesh's keys incl. `extraKnownMarketplaces` + `enabledPlugins`); instructions → sections after the mesh's CLAUDE.md text; home scope → `~/.claude/{skills,agents,commands,output-styles,rules}`, recorded in `home-placed.json`, never touching a path the person made, leaving hand-changed files alone.
- 27 new tools: `claude_code_<kind>_list/register/unregister` for skill, agent, command, hook, output_style, instructions; `claude_code_settings_get/set/clear`; `claude_code_permission_add/remove`; `claude_code_config_list/show/status/import`.
Tests: every row of ADR 0216's checks (each kind lands in its place; mesh/node/home scopes over two nodes; the mesh's keys cannot be set or replaced; settings layering and list joining; home ownership incl. a hand-changed file; size and shape refusals; import and stale detection), plus the manifest lists exactly the tools served and the tree comparison. `go vet`, gofmt clean; `module check` with the controller from current main: ok, 35 tools, state servers, holdings, config.
Rollout plan: g14 first, register one mesh skill, confirm a new session offers `nox-mesh:<name>`, then the other nodes.
Skills, subagents, commands and hooks had no machine-wide place, so they were
copied into homes by hand and drifted. Each is now registered once through the
module's tools, kept in its config state, and written per node: the plugin in
the managed directory, settings and instructions in the managed files, or the
account's own directory, touching only what the module placed. hq ADR 0216.
Review of the nox-mesh plugin: a watch hands over what is there, not what
went, so the view is pruned to the state's keys before it starts; the
watches and the tools render one at a time, as the home's record is read
and written whole; the register answer names how an item is offered.
Refuse paths with empty, dot or parent segments and a file that is also a
directory; take an item only when its key says what it is; write the view
under its lock; expand nodes all and check node names; merge the plugin's
entries into the operator's own; render every file past one that fails;
in the home, never take over the person's file, never write through a
symbolic link, keep a deleted file deleted, keep the kind's directory; and
refuse settings that would deny the console or the marketplace.
Deliverynovox/mesh-catalog@54ba97f9010e — held since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.
Delivery plan — builds claude-code → ace, g14, novox, shanks; no bus step
tier 0: claude-code
ace: receives claude-code
g14: receives claude-code
novox: receives claude-code
shanks: receives claude-code
claude-code keeps data (ADR 0233): what it holds is backed up before it moves
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#52 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@54ba97f9010e` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds claude-code → ace, g14, novox, shanks; no bus step
- tier 0: claude-code
- ace: receives claude-code
- g14: receives claude-code
- novox: receives claude-code
- shanks: receives claude-code
- claude-code keeps data (ADR 0233): what it holds is backed up before it moves
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#52 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Builds hq ADR 0216 / to-be 36 §8.
configstate: one key per registration,mesh.<kind>.<name>,node.<node>.<kind>.<name>,home.<node>.<kind>.<name>; item and files in one value, max 256 KiB. Every node watches it (likeservers) and renders what applies.nox-meshin/etc/claude-code/marketplace/(written whole: staged, swapped in as root, only when it differs; written before the settings that enable it); settings → managed-settings.json (managed_settingssetting < mesh < node, objects merged, lists joined, under the mesh's keys incl.extraKnownMarketplaces+enabledPlugins); instructions → sections after the mesh's CLAUDE.md text; home scope →~/.claude/{skills,agents,commands,output-styles,rules}, recorded inhome-placed.json, never touching a path the person made, leaving hand-changed files alone.claude_code_<kind>_list/register/unregisterfor skill, agent, command, hook, output_style, instructions;claude_code_settings_get/set/clear;claude_code_permission_add/remove;claude_code_config_list/show/status/import.Tests: every row of ADR 0216's checks (each kind lands in its place; mesh/node/home scopes over two nodes; the mesh's keys cannot be set or replaced; settings layering and list joining; home ownership incl. a hand-changed file; size and shape refusals; import and stale detection), plus the manifest lists exactly the tools served and the tree comparison.
go vet, gofmt clean;module checkwith the controller from current main: ok, 35 tools, state servers, holdings, config.Rollout plan: g14 first, register one mesh skill, confirm a new session offers
nox-mesh:<name>, then the other nodes.Delivery
novox/mesh-catalog@54ba97f9010e— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds claude-code → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.