mirror of
https://github.com/qwibitai/nanoclaw.git
synced 2026-06-04 10:14:47 +08:00
871bfa1809
Claude Code's @-import directive only follows paths inside the project memory tree (cwd + ancestors). Both `@/workspace/global/CLAUDE.md` and `@../global/CLAUDE.md` are silently ignored because `/workspace/global` is outside `/workspace/agent` (the cwd). The import line is parsed but the content is never loaded — validated with a sentinel passphrase test against a live container. Fix: drop a `.claude-global.md` symlink into each group's dir pointing at `/workspace/global/CLAUDE.md`. The link path is absolute on container terms (dangling on host, valid via the /workspace/global mount) and the symlink file itself is inside cwd, so Claude's @-import is happy. The group's CLAUDE.md imports via `@./.claude-global.md`. - src/group-init.ts: initGroupFilesystem now drops the symlink (idempotent, uses lstat so existsSync doesn't trip on the dangling target on the host). Default CLAUDE.md body uses `@./.claude-global.md`. - scripts/migrate-group-claude-md.ts: creates the symlink for existing groups and rewrites any broken `@/workspace/global/CLAUDE.md` or `@../global/CLAUDE.md` import line to `@./.claude-global.md`. - groups/main/CLAUDE.md: migration rewrote the import. Validated: live container with the symlinked import correctly surfaces global CLAUDE.md content (passphrase `quinoa-submarine-42` added to global, retrieved via claude -p, removed). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>