ai: split CLAUDE.md out from the shared conventions
Assisted-by: Claude Opus 5 via Claude Code
diff --git a/AGENTS.md b/AGENTS.md
index 7a47a24c..651d0e56 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -8,10 +8,10 @@ Key directories:
- `.config/` — app configs (aerospace, ghostty, nvim, jj, etc.)
- `.hammerspoon/` — Hammerspoon config in Fennel (`.fnl` files compiled to Lua)
-- `ai/claude/` — Claude Code settings and hooks (symlinked in as `~/.claude`)
+- `ai/claude/` — Claude Code config: `CLAUDE.md`, `rules/`, settings, and hooks (symlinked in as `~/.claude`)
- `ai/pi/` — pi agent settings and extensions (symlinked in as `~/.pi/agent`)
- `ai/skills/` — skills, shared by both agents
-- `ai/_AGENTS.md` — global agent conventions (symlinked in as `~/.claude/CLAUDE.md`)
+- `ai/_AGENTS.md` — global agent conventions shared by both agents (symlinked in as `~/.pi/agent/AGENTS.md`; `ai/claude/CLAUDE.md` imports it)
- `.ssh/` — SSH config
- `.zsh/` — Zsh config
- `src/` — git submodules (Alfred workflows, fzf-git, tpm)
diff --git a/ai/claude/.gitignore b/ai/claude/.gitignore
index 47d552b4..9dd3e1b3 100644
--- a/ai/claude/.gitignore
+++ b/ai/claude/.gitignore
@@ -2,6 +2,7 @@
*
!.gitignore
+!CLAUDE.md
!settings.json
!skills
!statusline.sh
diff --git a/ai/claude/CLAUDE.md b/ai/claude/CLAUDE.md
new file mode 100644
index 00000000..2b105a41
--- /dev/null
+++ b/ai/claude/CLAUDE.md
@@ -0,0 +1,4 @@
+Shared agent conventions — pi reads the same file. Claude-specific rules go
+below the import, or as their own file in `ai/claude/rules/`.
+
+@~/.dotfiles/ai/_AGENTS.md
diff --git a/frork/_dotfiles.fnl b/frork/_dotfiles.fnl
index a35fcacb..b170e348 100644
--- a/frork/_dotfiles.fnl
+++ b/frork/_dotfiles.fnl
@@ -25,11 +25,10 @@
(-?> dest dirname (partial #(ok :directory))))
(ok :symlink dest src))))
-(ok :symlink "~/.dotfiles/ai/claude" "~/.claude")
-(ok :symlink "~/.dotfiles/ai/_AGENTS.md" "~/.claude/CLAUDE.md")
+(ok :symlink "~/.claude" "~/.dotfiles/ai/claude")
(ok :directory "~/.pi")
-(ok :symlink "~/.dotfiles/ai/pi" "~/.pi/agent")
+(ok :symlink "~/.pi/agent" "~/.dotfiles/ai/pi")
;; moved to .config/git/config
(no :symlink :$HOME/.gitconfig :$HOME/.dotfiles/.gitconfig)