Skip to content

Move all agent config into a publishable ooloth/agents repo #173

Description

@ooloth

Current state

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

Out of scope

  • The references/standards/ rename and uphold-invariantsuphold-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
  • 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

  1. Run symlinks — expect ~/.agents/{standards,skills}, ~/.claude/*, ~/.codex/*, and
    ~/.config/pi/agent/* to all resolve into ~/Repos/ooloth/agents/
  2. 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
  3. Open a new Claude Code session and list available skills — expect the same set as before
    the migration, with none missing
  4. Open pi and confirm its AGENTS.md resolves — expect the shared instructions to load, via
    a harness-neutral path rather than a claude/ one
  5. Run update — expect ooloth/agents to pull, then symlinks to be recreated, in that order
  6. 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
  7. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions