A portable collection of reusable Claude Code configurations for consistent AI-assisted development across devices and projects.
.
├── commands/ # Slash commands (.md files)
├── skills/ # Skills for specialized tasks
├── hooks/ # Hook configurations (pre/post tool execution)
├── templates/ # CLAUDE.md templates for different project types
├── guardrails/ # Safety and constraint configurations
├── mcp-servers/ # MCP server configurations
├── statusline/ # Custom statusline script and settings
└── install.sh # Installation script
./install.sh --all./install.sh --commands # Just slash commands
./install.sh --skills # Just skills
./install.sh --hooks # Just hooks
./install.sh --guardrails # Just guardrailsCopy desired configurations to your ~/.claude/ directory:
cp -r commands/* ~/.claude/commands/
cp -r skills/* ~/.claude/skills/Custom commands invoked with /command-name in Claude Code:
/review- Code review with security focus/test-plan- Generate comprehensive test plans/refactor- Suggest refactoring improvements/explain- Deep code explanation/commit- Smart commit message generation/pr- Pull request description generator/debug- Systematic debugging assistant/docs- Documentation generator/perf- Performance analysis
Specialized capabilities for domain-specific tasks:
Language skills (global reference guides for idiomatic code):
rust- Error handling, async/Tokio, clippy, ownership patternstypescript- Strict mode, type utilities, async patterns, toolingpython- Type hints, uv/ruff, async, pytest, dataclasses, FastAPIreact- Hooks patterns, component design, state management, performancego- Error handling, interfaces, concurrency, context, table-driven testsbash- Safe scripting, quoting, traps, idempotency, portability
Workflow skills:
code-review- Thorough code review with checklistsecurity-audit- Security vulnerability scanningapi-design- REST/GraphQL API design assistancedatabase- Schema design and query optimizationtesting- Test writing and coverage analysisgit-workflow- Branching strategies and git operationsgsd-methodology- Get-Shit-Done workflow methodologyfable- Fable-class working discipline (outcome-first output, finish-the-turn autonomy) for smaller models
Event-driven automations:
pre-commit-lint- Run linters before commitspost-edit-format- Auto-format after editsnotification- Desktop notifications on completion
Project-specific CLAUDE.md files:
typescript-node- Node.js/TypeScript projectspython-fastapi- Python FastAPI projectsreact-frontend- React/Next.js frontendsrust-cli- Rust CLI applicationsgo-service- Go microservicesmonorepo- Monorepo configurations
Safety constraints and boundaries:
no-secrets- Prevent committing sensitive datastyle-enforcement- Enforce coding standardsscope-limits- Restrict file/directory accessconfirmation-required- Require confirmation for destructive ops
Model Context Protocol server configurations:
github- GitHub integrationfilesystem- Extended file operationsdatabase- Database connectionscustom- Template for custom servers
Custom statusline script that displays session info in the Claude Code terminal:
👤 kreber[a1b2c3d4] | 🤖 Claude Sonnet 4.6 | 📊 [==== ] 21% | 42k/200k | 🪙 $0.13 | 🌿 main | ✏️ +12 -3 | 📁 my-project
See statusline/README.md for installation and customization details.
/review src/auth/login.ts
Create a project-specific setup by combining templates:
# For a TypeScript API project
cat templates/typescript-node/CLAUDE.md > ./CLAUDE.md
cat guardrails/no-secrets.md >> ./CLAUDE.mdEach component is designed to be:
- Standalone - Works independently
- Composable - Combine multiple configs
- Customizable - Edit to fit your needs
Add your own configurations:
- Create the config file in the appropriate directory
- Follow the naming convention:
kebab-case.md - Include a header comment explaining the purpose
This repo is designed to be the shared, sanitized superset of Claude Code configs across multiple devices (e.g., a work laptop and a personal laptop). Two scripts handle the bidirectional flow:
┌────────────────────────┐
│ ~/.claude/ (device) │
└──────┬──────────▲──────┘
│ │
/sync-from-global ./install.sh
(sanitize → repo) (repo → ~/.claude/)
│ │
▼ │
┌────────────────────────┐
│ claude-code-configs │
│ (shared via git) │
└────────────────────────┘
Pulls your global ~/.claude/ configs into the repo, stripping work-specific content (LinkedIn plugins, Captain MCP, work email, internal URLs). Two-pass with diff review — see skills/sync-from-global/SKILL.md.
Important: this is additive, never destructive.
- Pass 2 only copies staged files into the repo. It does not delete.
- Files that exist in the repo but not in this device's
~/.claude/are listed under "Repo-only" in the pass 1 summary and are left untouched on apply. - This means each device contributes its slice of generic skills to the union; nothing gets removed when another device syncs.
Pushes the repo's configs into a device's ~/.claude/:
# On a new device
git clone <this-repo> ~/claude-code-configs
cd ~/claude-code-configs && ./install.sh --all
# Or use symlinks so `git pull` instantly updates ~/.claude/ — recommended
./install.sh --symlink --all- Pick a primary "writer" device — the one where new configs evolve fastest. For most people this is the work laptop.
- On the writer device: when you've added/refined skills globally, run
/sync-from-global→ review the diff → commit → push. - On reader devices: install with
./install.sh --symlink --all. After that,git pullis enough — your~/.claude/updates instantly via symlinks. - For per-device customizations: use
*.local.mdand*.local.jsonfilenames — these are gitignored, so they stay on the device that needs them. - Conflict prevention: avoid editing
~/.claude/<file>directly on a "reader" device. Edit the repo file instead, push, then pull on the writer.
/sync-from-global should run when there's drift to capture, not on a fixed schedule:
- Event-based (primary): after you install a new plugin globally, get a plugin update that adds new skills, or notice you've been editing skills directly in
~/.claude/instead of in the repo. - Periodic safety net (every few weeks): even if you don't think anything's drifted, it's worth a pass to catch things you forgot about — plugin auto-updates, skills you tweaked in passing. Pass 1 is cheap (it stages and shows a diff; if nothing meaningful changed, you skip pass 2). Treat it like
git fetchfor your global state. - Don't over-run it: weekly is fine, daily is overkill. The two-pass review takes ~5 minutes once you know the workflow; running it constantly produces more noise than signal.
If /sync-from-global consistently produces no meaningful changes, that's a signal you're doing the right thing — editing the repo first and letting install.sh push out, instead of editing ~/.claude/ directly.
Not recommended. Unlike an Obsidian vault (mostly stable text content), ~/.claude/ is a runtime data directory: activity.db, history.jsonl, sessions/, paste-cache/, statsig/, projects/ all change constantly and would create endless merge conflicts. Plus, work-device ~/.claude/ contains internal plugins and settings that shouldn't go to a personal/public remote. The two-script flow above keeps the sanitized, sharable parts in git and the runtime/work-specific parts on each device where they belong.
MIT - Use freely across personal and professional projects.