Canonical source for Claude Code skills, commands, agents, hooks, and config. Clone on any machine and run python install.py to set up symlinks.
skills/ -> ~/.claude/skills
commands/ -> ~/.claude/commands
agents/ -> ~/.claude/agents
hooks/ -> ~/.claude/hooks
config/
statusline.py -> ~/.claude/statusline-command.py
keybindings.json -> ~/.claude/keybindings.json
settings.json.example (template — copied only if settings.json is missing)
git clone https://github.com/mggarofalo/agent-skills.git ~/Source/agent-skills
cd agent-skills
python install.py
Works on macOS, Linux, Windows (PowerShell, Git Bash, WSL). Automatically installs Python agent packages via uv (falls back to pip).
The installer creates symlinks, which on Windows require one of:
- Developer Mode (recommended) — Settings > Privacy & Security > For developers > Developer Mode: On
- An elevated (admin) shell
Additionally, if you use Git Bash, set the MSYS environment variable so ln -s creates real symlinks instead of copies:
# Permanent (user-level env var — applies to all future shells)
[System.Environment]::SetEnvironmentVariable('MSYS', 'winsymlinks:nativestrict', 'User')
# Or per-session in ~/.bashrc
export MSYS=winsymlinks:nativestrict
Also ensure git is configured to preserve symlinks on clone:
git config --global core.symlinks true
Since ~/.claude/skills, commands, and agents are symlinks into this repo, any edits are already reflected here. Commit and push as normal. On other machines, git pull picks up changes automatically.
| Type | How |
|---|---|
| Skill | Create skills/<name>/SKILL.md (and optional references/ dir) |
| Command | Create commands/<name>.md |
| Agent (native) | Create agents/<name>.md |
| Agent (SDK) | Create agents/<name>/ with Python source and pyproject.toml |
| Hook | Add Python script to hooks/ and register in settings.json |
| Config | Add to config/ and update both install scripts with a new link entry |
| Skill | Description |
|---|---|
| agent-skills | Scaffold, remove, or list skills, hooks, commands, agents, and config |
| clear-writing | Plain-English writing style for reports, summaries, and guidance |
| fix-develop | Land a fix on the base branch as its own PR, then rebase and resume |
| init-repo | GitHub repo scaffolding with CI, guidance files, branch-protection rulesets, and config per language |
| owasp-top-10 | OWASP Top 10 security audit (static code and dependency scanning) |
| plane | Plane CLI reference — auto-generated, regenerate after every CLI upgrade |
| recall | Search past Claude Code session history (temporal, topic, graph) |
| reflect | Session retrospective — extract learnings, update memory and guidance files |
| resolve-conflicts | Resolve merge conflicts on a PR by rebasing, resolving per-category, and force-pushing |
| system-audit | Audit Claude Code system for staleness, redundancy, gaps, and token waste |
| work-issue | End-to-end Plane issue implementation workflow |
| Command | Description |
|---|---|
| find-bugs | Invoke the pr-bug-finder agent from Claude Code |
| Agent | Type | Description |
|---|---|---|
| pr-bug-finder | SDK (Python) | Hunter/challenger/synthesizer adversarial bug analysis |
| Hook | Event / Matches | Description |
|---|---|---|
| block-destructive-ops | PreToolUse · Bash|Read|Edit|Write |
Safety net for --dangerously-skip-permissions: blocks destructive git/filesystem/network ops, bash -c/sh -c wrapper evasion, and reads/writes of sensitive files |
| enforce-worktree-paths | PreToolUse · Read|Edit|Write|Glob|Grep |
Prevents agents in worktrees from reading/writing the original repo root |
| session-end-export | SessionEnd | Exports the session to Obsidian markdown and updates the QMD index (via the recall skill) |
| File | Description |
|---|---|
| statusline.py | Status line with git branch, worktree detection, context usage bar |
| keybindings.json | Custom Claude Code keybindings |
| settings.json.example | Template with hooks, plugins, and statusline configuration |