Portable, version-controlled configuration for Claude Code and OpenAI Codex. Fork it, customize it, sync it across machines.
git clone https://github.com/petekp/claude-code-setup.git
cd claude-code-setup && ./setup.shThat's it. Both tools now use this repo's skills and scripts.
The setup script symlinks this repo into ~/.claude/:
~/.claude/
├── skills/ → <repo>/skills/
├── scripts/ → <repo>/scripts/
├── settings.json → <repo>/settings.json
├── statusline-command.sh ← <repo> (copied)
│
~/.mcp.json → <repo>/.mcp.json
Edit files in either location — they're the same files. Commit and push to sync across machines.
skills/ mixes directories authored here with symlinks to skills installed
elsewhere, mostly by skills.sh into ~/.agents/skills.
Only the real directories are committed. A symlink stores just its target, and those targets are absolute paths under one machine's home directory — committing them would give anyone cloning this repo a dangling link to a directory they don't have. The linked skills and their sources are recorded in SKILLS.md instead, so the set can be rebuilt elsewhere.
Run ./scripts/gen-skills-manifest.sh after adding or removing a skill to
regenerate SKILLS.md and skills/.gitignore.
Skills are symlinked individually into ~/.codex/skills/ (Codex doesn't support directory-level symlinks) by scripts/sync-codex-skills.sh, which runs automatically on every Claude Code session start. Add a name to codex-exclude to skip a skill that conflicts with a Codex built-in or shows up as a duplicate; the file is currently empty, so everything syncs.
Claude Code reads MCP servers from ~/.mcp.json (symlinked). Codex reads them from ~/.codex/config.toml (manually managed).
- Fork this repo on GitHub
- Clone your fork and run
./setup.sh - See FORKING.md for customization guidance
# Push changes
git add -A && git commit -m "Update config" && git push
# Pull on another machine
git pull && ./setup.sh./setup.sh --undoRemoves symlinks and restores backed-up directories.
Some files aren't symlinked — they're templates or references for manual setup. See templates/README.md for details.
Skills/commands not appearing in Claude Code?
- Check symlinks:
ls -la ~/.claude/skills - Validate frontmatter:
./scripts/validate.sh - Restart Claude Code
Skills not appearing in Codex?
- Check symlinks:
ls -la ~/.codex/skills - Verify the skill isn't in
codex-exclude - Start a Claude Code session (the sync hook runs on SessionStart), or run
./scripts/sync-codex-skills.shdirectly
Permission denied?
chmod +x setup.sh && ./setup.shPreview before running?
./setup.sh --dry-runWindows? Use WSL or set up symlinks manually.
MIT