{
  "markdown": "# Claude Code + Codex Setup\n\nPortable, version-controlled configuration for **Claude Code** and **OpenAI Codex**. Fork it, customize it, sync it across machines.\n\n## Quick Start\n\n```bash\ngit clone https://github.com/petekp/claude-code-setup.git\ncd claude-code-setup && ./setup.sh\n```\n\nThat's it. Both tools now use this repo's skills and scripts.\n\n## How It Works\n\nThe setup script symlinks this repo into `~/.claude/`:\n\n```\n~/.claude/\n├── skills/    → <repo>/skills/\n├── scripts/   → <repo>/scripts/\n├── settings.json → <repo>/settings.json\n├── statusline-command.sh ← <repo> (copied)\n│\n~/.mcp.json    → <repo>/.mcp.json\n```\n\nEdit files in either location — they're the same files. Commit and push to sync across machines.\n\n### Which Skills Are In This Repo\n\n`skills/` mixes directories authored here with symlinks to skills installed\nelsewhere, mostly by [skills.sh](https://skills.sh) into `~/.agents/skills`.\n\nOnly the real directories are committed. A symlink stores just its target, and\nthose targets are absolute paths under one machine's home directory — committing\nthem would give anyone cloning this repo a dangling link to a directory they\ndon't have. The linked skills and their sources are recorded in\n[SKILLS.md](SKILLS.md) instead, so the set can be rebuilt elsewhere.\n\nRun `./scripts/gen-skills-manifest.sh` after adding or removing a skill to\nregenerate `SKILLS.md` and `skills/.gitignore`.\n\n### Codex Skill Syncing\n\nSkills 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.\n\n### MCP Servers\n\nClaude Code reads MCP servers from `~/.mcp.json` (symlinked). Codex reads them from `~/.codex/config.toml` (manually managed).\n\n## Fork and Customize\n\n1. Fork this repo on GitHub\n2. Clone your fork and run `./setup.sh`\n3. See [FORKING.md](FORKING.md) for customization guidance\n\n## Syncing\n\n```bash\n# Push changes\ngit add -A && git commit -m \"Update config\" && git push\n\n# Pull on another machine\ngit pull && ./setup.sh\n```\n\n## Undo\n\n```bash\n./setup.sh --undo\n```\n\nRemoves symlinks and restores backed-up directories.\n\n## Reference Files\n\nSome files aren't symlinked — they're templates or references for manual setup. See [templates/README.md](templates/README.md) for details.\n\n## Troubleshooting\n\n**Skills/commands not appearing in Claude Code?**\n1. Check symlinks: `ls -la ~/.claude/skills`\n2. Validate frontmatter: `./scripts/validate.sh`\n3. Restart Claude Code\n\n**Skills not appearing in Codex?**\n1. Check symlinks: `ls -la ~/.codex/skills`\n2. Verify the skill isn't in `codex-exclude`\n3. Start a Claude Code session (the sync hook runs on SessionStart), or run `./scripts/sync-codex-skills.sh` directly\n\n**Permission denied?**\n```bash\nchmod +x setup.sh && ./setup.sh\n```\n\n**Preview before running?**\n```bash\n./setup.sh --dry-run\n```\n\n**Windows?**\nUse WSL or set up symlinks manually.\n\n## License\n\nMIT\n",
  "bytes": 3124,
  "sha": "727f1284d786211d86faf1d20c06b6dd4ff7f688107e089a5ee6541bb1b3cb13",
  "repo_slug": "petekp/claude-code-setup",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_petekp_claude_code_setup_development_age_45f6a8a0/readme"
}