You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agent config can't be shared or published without exposing all of ooloth/dotfiles, and
harness-neutral content is only reachable through a Claude-specific path. 104 config files
live under tools/{claude,codex,gemini,pi}/config/, 99 of them under claude/. The
harness-neutral parts are already consumed by other harnesses — tools/claude/link.bash:9-11
links references/ and skills/ into ~/.agents as well as ~/.claude — and tools/pi/link.bash:19 reaches into tools/claude/config/CLAUDE.md to build pi's AGENTS.md, because the shared instruction file has no harness-neutral home.
Ideal state
ooloth/agents is a standalone repo holding every agent config file, clonable and usable
on its own without ooloth/dotfiles
Harness-neutral content lives at agents/standards/ and agents/skills/ and links to ~/.agents/
Harness-specific config lives in per-harness subdirectories — agents/claude/, agents/codex/, agents/gemini/, agents/pi/ — each linking to that harness's own
config directory
Shared instruction files are referenced from a harness-neutral path; no link script
reaches into another harness's directory to find one
ooloth/dotfiles contains no agent config, only tools/agents/{install,link,update}.bash
to clone, symlink, and pull the repo
symlinks and update behave the same from the user's point of view — no new commands to
remember, no manual clone step
Installing and upgrading the agent binaries themselves stays in ooloth/dotfiles
Making the repo public, choosing a license, or writing a README aimed at other people —
this issue only makes publishing possible
Moving Brewfiles, update.bash, shell.zsh, or uninstall.bash for the agent binaries;
installing a tool is a dotfiles concern, configuring it is not
Changing the contents of any config file — relocation only
Starting points
tools/claude/link.bash — the eight symlinks that move, including the two into ~/.agents
tools/pi/link.bash — the cross-harness reach into tools/claude/config/CLAUDE.md
tools/neovim/install.bash — the existing pattern for a tool folder that clones and
manages a second repo
QA plan
Run symlinks — expect ~/.agents/{standards,skills}, ~/.claude/*, ~/.codex/*, and ~/.config/pi/agent/* to all resolve into ~/Repos/ooloth/agents/
Run find ~/.claude ~/.agents ~/.codex ~/.config/pi/agent -type l ! -exec test -e {} \; -print
— expect no output; any line is a dangling symlink left behind by the move
Open a new Claude Code session and list available skills — expect the same set as before
the migration, with none missing
Open pi and confirm its AGENTS.md resolves — expect the shared instructions to load, via
a harness-neutral path rather than a claude/ one
Run update — expect ooloth/agents to pull, then symlinks to be recreated, in that order
Move ~/Repos/ooloth/agents aside and run update again — expect the repo to be re-cloned
before symlinking. Dangling links here mean the clone step runs too late and needs to be a
priority file in features/update/tools.bash
Clone ooloth/agents alone into a scratch directory — expect a self-contained config tree
with no references to $DOTFILES
Done when
All agent config lives in ooloth/agents, and ooloth/dotfiles holds nothing agent-related
beyond the tools/agents/ scripts that clone, link, and update it.
Current state
Agent config can't be shared or published without exposing all of
ooloth/dotfiles, andharness-neutral content is only reachable through a Claude-specific path. 104 config files
live under
tools/{claude,codex,gemini,pi}/config/, 99 of them underclaude/. Theharness-neutral parts are already consumed by other harnesses —
tools/claude/link.bash:9-11links
references/andskills/into~/.agentsas well as~/.claude— andtools/pi/link.bash:19reaches intotools/claude/config/CLAUDE.mdto build pi'sAGENTS.md, because the shared instruction file has no harness-neutral home.Ideal state
ooloth/agentsis a standalone repo holding every agent config file, clonable and usableon its own without
ooloth/dotfilesagents/standards/andagents/skills/and links to~/.agents/agents/claude/,agents/codex/,agents/gemini/,agents/pi/— each linking to that harness's ownconfig directory
reaches into another harness's directory to find one
ooloth/dotfilescontains no agent config, onlytools/agents/{install,link,update}.bashto clone, symlink, and pull the repo
symlinksandupdatebehave the same from the user's point of view — no new commands toremember, no manual clone step
ooloth/dotfilesOut of scope
references/→standards/rename anduphold-invariants→uphold-standards(Rename invariants skills to standards and move the folder to tools/agents/ #172) — independent, and can land before or after this; whichever runs second inherits
the other's paths
this issue only makes publishing possible
update.bash,shell.zsh, oruninstall.bashfor the agent binaries;installing a tool is a dotfiles concern, configuring it is not
Starting points
tools/claude/link.bash— the eight symlinks that move, including the two into~/.agentstools/pi/link.bash— the cross-harness reach intotools/claude/config/CLAUDE.mdtools/neovim/install.bash— the existing pattern for a tool folder that clones andmanages a second repo
QA plan
symlinks— expect~/.agents/{standards,skills},~/.claude/*,~/.codex/*, and~/.config/pi/agent/*to all resolve into~/Repos/ooloth/agents/find ~/.claude ~/.agents ~/.codex ~/.config/pi/agent -type l ! -exec test -e {} \; -print— expect no output; any line is a dangling symlink left behind by the move
the migration, with none missing
AGENTS.mdresolves — expect the shared instructions to load, viaa harness-neutral path rather than a
claude/oneupdate— expectooloth/agentsto pull, then symlinks to be recreated, in that order~/Repos/ooloth/agentsaside and runupdateagain — expect the repo to be re-clonedbefore symlinking. Dangling links here mean the clone step runs too late and needs to be a
priority file in
features/update/tools.bashooloth/agentsalone into a scratch directory — expect a self-contained config treewith no references to
$DOTFILESDone when
All agent config lives in
ooloth/agents, andooloth/dotfilesholds nothing agent-relatedbeyond the
tools/agents/scripts that clone, link, and update it.