From 03728728c32381487a67d95e555795f5e6f343d6 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 7 Oct 2026 19:39:27 +0200 Subject: [PATCH] claude-code: read and remove the person's own home items through the mesh Hand-written items in an account's ~/.claude could only be removed over a shell on the machine. claude_code_home_show reads one in full (memory, ~/.claude/CLAUDE.md, included); claude_code_home_remove removes one on the person's word, with a required reason, refusing what the mesh placed and symbolic links, keeping a dated copy in the module's state and logging it. --- modules/claude-code/README.md | 10 +- modules/claude-code/cmd/claude-code/config.go | 5 +- .../cmd/claude-code/config_tools.go | 30 +- modules/claude-code/cmd/claude-code/home.go | 289 ++++++++++++++++++ .../claude-code/cmd/claude-code/home_test.go | 210 +++++++++++++ modules/claude-code/module.json | 4 +- 6 files changed, 544 insertions(+), 4 deletions(-) create mode 100644 modules/claude-code/cmd/claude-code/home.go create mode 100644 modules/claude-code/cmd/claude-code/home_test.go diff --git a/modules/claude-code/README.md b/modules/claude-code/README.md index a9ec2cb..64df747 100644 --- a/modules/claude-code/README.md +++ b/modules/claude-code/README.md @@ -70,7 +70,15 @@ operator account's own `~/.claude` on those nodes): - `claude_code_config_list`, `_show` (one registration in full), `_status` (what applies here, the plugin as written, and the home's own items — which the mesh placed, which share a name with a mesh item, which call a tool server not loaded here) and `_import` (an item of this node's home, registered at a scope; - the original stays). + the original stays); +- `claude_code_home_show` (`kind`, `name`): one item of this node's home in full — a skill, subagent, + command, output style, rule file (`instructions`), or the account's own memory `~/.claude/CLAUDE.md` + (`memory`) — and whether the mesh placed it; +- `claude_code_home_remove` (`kind`, `name`, `why`): removes one item the person made, on their word — + removing it is the person's act, and this tool is that act made explicit. `why` is required; what the + mesh placed is refused (its `_unregister` owns it), and so is a symbolic link. A copy is kept first in + the module's state, `removed-from-home//