M
McBrideMusings/kennel
Route directories to coding-agent profiles and share skills and instructions across Claude Code, Codex and Pi
在 GitHub 查看 ↗链接已于 2026-11-14 核查 · HTTP 200 · 打开的是厂商自己的官网
安装与配置
取自该仓库的安装命令
go install github.com/McBrideMusings/kennel@latest
解析自我们于 2026-11-13 抓取的该仓库 README;我们未执行过。
这条是仓库自己写的安装方式,不是 MCP 客户端配置,所以不生成 JSON。
配置项的键名以你的客户端为准:客户端与 CLI
- ★ 数取值
- 0 ★ · McBrideMusings/kennel · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
- 收录与活跃
- 收录于 2026-11-14 · 最近见到 2026-11-14 · 共见到 1 次 · 被 1 个来源列出
- 评分构成
- 综合分 103 · 1 个来源 · repo
- 安装
go install github.com/McBrideMusings/kennel@latest
常见问题(答案都来自我们的记录)
怎么安装?
该仓库给出的安装命令是
go install github.com/McBrideMusings/kennel@latest。我们的记录里它是仓库自己提供的;不保证在你的客户端上直接可用。它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
McBrideMusings/kennel;我们收录于 2026-11-14;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。# kennel
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Routes directories to profiles for coding-agent CLIs. A profile gives each tool its own home
directory, and with it its own login, so claude and codex started anywhere under ~/Work
use the work accounts while everything else uses the personal ones.
Each CLI reads its home from one environment variable, read once at startup:
| Tool | Variable | Default home |
| Claude Code | CLAUDE_CONFIG_DIR | ~/.claude |
| Codex | CODEX_HOME | ~/.codex |
| Pi | PI_CODING_AGENT_DIR | ~/.pi/agent |
A shell hook (zsh, bash or fish) runs kennel env on every cd and exports or unsets those
variables for the new directory, so a CLI started from that shell, or from anything it
launches, gets the right home. bash has no directory-change hook, so kennel init bash wraps
cd, pushd and popd (leaving alone any you already define as functions) and checks
$PWD from PROMPT_COMMAND for every other way of changing directory.
## Install
sh
go install github.com/McBrideMusings/kennel@latest # or go install . in a checkout
echo 'command -v kennel >/dev/null && eval "$(kennel init zsh)"' >> ~/.zshrc
# bash: echo 'command -v kennel >/dev/null && eval "$(kennel init bash)"' >> ~/.bashrc
# fish: echo 'command -q kennel; and kennel init fish | source' >> ~/.config/fish/config.fish
## Config
~/.config/kennel/config.toml (KENNEL_CONFIG_DIR moves the directory):
toml
[tools.claude]
# env = "CLAUDE_CONFIG_DIR" built in for claude, codex and pi; set it to override
base = "~/.claude"
shared = ["skills", "CLAUDE.md", "settings.json"]
[tools.codex]
base = "~/.codex"
shared = ["skills", "AGENTS.md", "config.toml"]
[profiles.personal] # no homes: every tool uses its default
[profiles.work]
claude = "~/.claude-work"
codex = { home = "~/.codex-work", shared = ["skills"] }
base and shared are required for every tool. env is required only for a tool
kennel has no built-in variable for.
A tool left out of a profile gets its variable unset, so it runs on its default home.
shared names items inside base. kennel link creates each profile home and
symlinks every shared item in it back to the base, so skills, instructions and settings
are edited once. Everything not shared stays per profile: the login and the account's
own state.
A profile's tool is a home path, which links the tool's shared items, or a table with
home and its own shared, which replaces the tool's list for that home: above,
~/.codex-work links only skills and keeps its own AGENTS.md. When an item leaves the
list a home uses, kennel link and kennel doctor report its link to the base as
unshared and exit 1; kennel never removes it, so delete it by hand to give the profile
its own copy.
## Shares
An optional [shares] table links one tool's files into another tool's home. Nothing is
shared until you add an entry; with none, every share command does nothing.
toml
[shares.instructions] # a file share: one real file, linked from each path
source = "~/.claude/AGENTS.md"
links = ["~/.codex/AGENTS.md", "~/.pi/agent/AGENTS.md"]
[shares.skills] # a folder share: one link per named item
source = "~/.claude/skills"
into = "~/.agents/skills"
items = ["diagnose", "research"]
A share has source and either links or into and items, never both. Each item is one
directory, and with it its own login, so claude and codex started anywhere under ~/Work
use the work accounts while everything else uses the personal ones.
Each CLI reads its home from one environment variable, read once at startup:
| Tool | Variable | Default home |
| Claude Code | CLAUDE_CONFIG_DIR | ~/.claude |
| Codex | CODEX_HOME | ~/.codex |
| Pi | PI_CODING_AGENT_DIR | ~/.pi/agent |
A shell hook (zsh, bash or fish) runs kennel env on every cd and exports or unsets those
variables for the new directory, so a CLI started from that shell, or from anything it
launches, gets the right home. bash has no directory-change hook, so kennel init bash wraps
cd, pushd and popd (leaving alone any you already define as functions) and checks
$PWD from PROMPT_COMMAND for every other way of changing directory.
## Install
sh
go install github.com/McBrideMusings/kennel@latest # or go install . in a checkout
echo 'command -v kennel >/dev/null && eval "$(kennel init zsh)"' >> ~/.zshrc
# bash: echo 'command -v kennel >/dev/null && eval "$(kennel init bash)"' >> ~/.bashrc
# fish: echo 'command -q kennel; and kennel init fish | source' >> ~/.config/fish/config.fish
## Config
~/.config/kennel/config.toml (KENNEL_CONFIG_DIR moves the directory):
toml
[tools.claude]
# env = "CLAUDE_CONFIG_DIR" built in for claude, codex and pi; set it to override
base = "~/.claude"
shared = ["skills", "CLAUDE.md", "settings.json"]
[tools.codex]
base = "~/.codex"
shared = ["skills", "AGENTS.md", "config.toml"]
[profiles.personal] # no homes: every tool uses its default
[profiles.work]
claude = "~/.claude-work"
codex = { home = "~/.codex-work", shared = ["skills"] }
base and shared are required for every tool. env is required only for a tool
kennel has no built-in variable for.
A tool left out of a profile gets its variable unset, so it runs on its default home.
shared names items inside base. kennel link creates each profile home and
symlinks every shared item in it back to the base, so skills, instructions and settings
are edited once. Everything not shared stays per profile: the login and the account's
own state.
A profile's tool is a home path, which links the tool's shared items, or a table with
home and its own shared, which replaces the tool's list for that home: above,
~/.codex-work links only skills and keeps its own AGENTS.md. When an item leaves the
list a home uses, kennel link and kennel doctor report its link to the base as
unshared and exit 1; kennel never removes it, so delete it by hand to give the profile
its own copy.
## Shares
An optional [shares] table links one tool's files into another tool's home. Nothing is
shared until you add an entry; with none, every share command does nothing.
toml
[shares.instructions] # a file share: one real file, linked from each path
source = "~/.claude/AGENTS.md"
links = ["~/.codex/AGENTS.md", "~/.pi/agent/AGENTS.md"]
[shares.skills] # a folder share: one link per named item
source = "~/.claude/skills"
into = "~/.agents/skills"
items = ["diagnose", "research"]
A share has source and either links or into and items, never both. Each item is one
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/mcbridemusings-kennel/)
- 来源
- github · https://github.com/McBrideMusings/kennel
- 按领域浏览
- 开源项目
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。