Claude Code skills for AI-assisted development.
Four steps to get started:
# 1. Clone the repo
git clone git@github.com:nickmeinhold/claude-skills.git
# 2. Symlink skills to Claude Code (from repo root)
cd claude-skills
ln -s "$(pwd)/skills" ~/.claude/skills
# (or, if you already have your own ~/.claude/skills dir:
# ln -s "$(pwd)"/skills/* ~/.claude/skills/)
# 3. Install the helper-script symlinks into ~/.claude/scripts
# (github-app-token.sh + the /consolidate scripts). Idempotent — re-run
# after any pull that adds or moves a script. REQUIRED on every fresh clone.
bash scripts/install-symlinks.sh
# 4. Add the App credentials to your main Claude env, ~/.claude/.env
# (get the values from the team lead). Append to an existing env, or seed
# a new one from the template:
cat .env.example >> ~/.claude/.env
# then edit ~/.claude/.env and fill in the real valuesWhere things live: secrets go in
~/.claude/.env(your single env file) and the helper scripts are symlinked into~/.claude/scripts/byinstall-symlinks.sh. (Pre-2026-06-19 this repo used a separate~/.claude-skills/dir for both — that's been retired.)
Then install the reviewer GitHub Apps on your repos (one-time per repo):
That's it. Skills are now available as /pr-review, /ship, /cage-match, etc.
Why symlink? Claude Code looks for skills in ~/.claude/skills/ (each skill is a <name>/SKILL.md directory). Symlinking means git pull updates skills instantly.
Want to use /ship, /pr-review, or /cage-match on your own repos? You'll need to register your own GitHub Apps to act as reviewers.
git clone git@github.com:nickmeinhold/claude-skills.git
cd claude-skills
ln -s "$(pwd)/skills" ~/.claude/skills
bash scripts/install-symlinks.sh # symlinks github-app-token.sh into ~/.claude/scriptsGo to GitHub Settings > Developer Settings > GitHub Apps and create two Apps:
| App | Purpose | Example name |
|---|---|---|
| Claude reviewer | /pr-review, /ship, /cage-match |
my-claude-reviewer |
| Gemini reviewer | /cage-match (optional) |
my-gemini-reviewer |
For each App:
- Permissions:
Pull requests: Read & Write - Webhooks: Disable (uncheck "Active")
- OAuth / Device flow: Disable
- Install target: Any account
After creating each App, note the App ID from the App's settings page.
On each App's settings page, click Generate a private key. Then base64-encode it:
base64 -i your-app.pemCopy the output — you'll need it for .env. Delete the .pem files after encoding.
Credentials live in your main Claude env file. Append to an existing
~/.claude/.env, or seed a new one from the template:
cat .env.example >> ~/.claude/.envFill in the 4 required values:
MAXWELL_APP_ID=<your Claude reviewer App ID>
MAXWELL_PRIVATE_KEY_B64=<base64-encoded private key>
KELVIN_APP_ID=<your Gemini reviewer App ID>
KELVIN_PRIVATE_KEY_B64=<base64-encoded private key>bash scripts/install-symlinks.sh from Step 1 already symlinked
github-app-token.sh into ~/.claude/scripts/. The skills call it there to
generate short-lived installation tokens from your App credentials at runtime —
no separate step needed.
For each App, visit:
https://github.com/apps/<your-app-slug>/installations/new
Select the repos you want the reviewer to have access to.
Required for /cage-match (the Gemini/Kelvin reviewer). See Gemini CLI docs for installation.
| Skill | Description |
|---|---|
/ship |
Commit, push, create PR, review, and merge |
/pr-review <pr> |
Code review as MaxwellMergeSlam [bot] (Claude) |
/cage-match <pr> |
Three-way adversarial review: Maxwell [bot] (Claude) vs Kelvin [bot] (Gemini) vs Carnot (Codex/GPT) |
/review-respond |
Address PR review comments |
/pm |
Project management (issues, boards) |
/research |
Deep research with web search |
/slides |
Generate Google Slides |
Add CLAUDE_PM_PAT to your .env (PAT for claude-pm-enspyr account).
Requires Google OAuth setup - see .env.example for details.
If you have ENSPYR_ADMIN_PAT, /ship will automatically configure branch protection. Only needed by repo admins — team members and external users don't need this.
MIT