botfile: manage AI agent skills and instructions
botfile
dotfiles for your agents' skills and instructions
botfile · explain
youwhat is botfile?
botfile<br>botfile is a CLI for managing AI-agent components (skills and instructions).
It reads a config.toml that declares local source directories and which agents should receive their components. It then fans out, creating symlinks from those sources into each agent's native config paths.
youwhy would I use it?
botfile<br>Use botfile if you have user-scoped agent components (like skills or instructions) you use across projects, teams, agents, or devices.
Good fit:
your agent components are user-scoped, used across projects
you use multiple agents
you use multiple machines
your team wants to share standard skills and instructions
agents create useful skills locally and you want to adopt them into a repo
Probably not worth it:
your agent components are project-scoped
you use one agent on one machine
So: yes for managing portable skills and instructions; no if you only need a one-off local setup.
youwhich agents are supported?
botfile<br>Seven, each for both skills and instructions:
claude-code
codex-cli
copilot-cli
copilot-vscode
crush
opencode
pi.dev
youcan I let my agent manage my botfiles with botfile?
botfile<br>Yes. botfile's CLI can respond with structured JSON that makes it easy for an agent to use; the advanced section shows the setup.
you
Prompt
prompt your agentcopy
Fetch https://botfile.org/agents.html (curl or wget) and follow it to<br>install botfile and manage skills and instructions I can share privately<br>with different agents across devices, or publicly with my team.
Install botfile
install · macOS / Linuxcopy
curl -fsSL https://botfile.org/install.sh | sh
install · Windows (PowerShell)copy
# symlink creation needs Developer Mode enabled
irm https://botfile.org/install.ps1 | iex
Create a skill, share it with your agents
Start simple. Keep a skill in a dotfiles repo and let botfile symlink it<br>into the agents you use. Here a meow skill in<br>~/botfiles/personal goes to both Claude Code and Codex.
create a skillcopy
mkdir -p ~/botfiles/personal/cats/skills/meow<br>cat > ~/botfiles/personal/cats/skills/meow/SKILL.md
Tell botfile where the source is and which agents get it. botfile reads<br>config.toml from ~/.config/botfile/:
add the personal botfilecopy
mkdir -p ~/.config/botfile<br>cat > ~/.config/botfile/config.toml
Apply it. One source file becomes a symlink in each agent's native path:
botfile sync
$ botfile sync<br>create ~/.agents/skills/meow -> ~/botfiles/personal/cats/skills/meow<br>create ~/.claude/skills/meow -> ~/botfiles/personal/cats/skills/meow<br>note skills for [codex-cli] also reach [copilot-cli copilot-vscode crush opencode pi.dev] via ~/.agents/skills (selection personal)
synced: 2 operation(s) applied
Claude Code reads ~/.claude/skills/; Codex reads the<br>cross-agent ~/.agents/skills/ pool, which the note flags is<br>shared with the other terminal agents. botfile installs symlinks, not<br>copies, so editing the source file is live through every agent at once.
Import skills from a team repo
Your team keeps shared skills and instructions in a git repo. Clone it,<br>declare it as a second source, and select it for your agents. botfile does<br>the symlinks; git does the fetching. As a stand-in for the team repo, use<br>botfile_example, the example source tree that ships in<br>botfile's own repo:
clone the team repocopy
git clone https://github.com/listfold/botfile ~/botfiles/botfile
The example is a source tree with the<br>// grammar, two<br>plugins here. The team standards live in standards; the<br>botfile plugin waits for the<br>advanced section:
~/botfiles/botfile/examples/botfile_example
botfile/<br>skills/bootstrap-botfile/SKILL.md<br>standards/<br>skills/echo/SKILL.md<br>instructions/no-em-dashes.md
Declare the example as a second source, named botfile, next<br>to the personal one, and select its standards plugin for three<br>agents; a selection can name a whole source, one plugin, or one component.<br>Your config.toml now has both sources:
~/.config/botfile/config.tomlcopy
[[sources]]<br>name = "personal"<br>location = "~/botfiles/personal"
[[selections]]<br>source = "personal"<br>agents = ["claude-code", "codex-cli"]
[[sources]]<br>name = "botfile"<br>location = "~/botfiles/botfile/examples/botfile_example"
[[selections]]<br>source = "botfile"<br>plugin = "standards"<br>agents = ["claude-code", "codex-cli", "copilot-vscode"]
Then apply it. The team's echo skill and<br>no-em-dashes instruction land at each agent's native path:
botfile sync
$ botfile sync<br>create ~/.agents/skills/echo -> ~/botfiles/botfile/examples/botfile_example/standards/skills/echo<br>create ~/.claude/rules/no-em-dashes.md -> ~/botfiles/botfile/examples/botfile_example/standards/instructions/no-em-dashes.md<br>create ~/.claude/skills/echo -> ~/botfiles/botfile/examples/botfile_example/standards/skills/echo<br>create ~/.codex/AGENTS.md ->...