My working setup for Claude Code. Skills, agents, hooks, slash commands, output styles, and the CLAUDE.md that ties it all together.
This repo lives at ~/Claude with its folders symlinked into ~/.claude/:
~/.claude/CLAUDE.md → ~/Claude/CLAUDE.md
~/.claude/agents/ → ~/Claude/agents/
~/.claude/commands/ → ~/Claude/commands/
~/.claude/hooks/ → ~/Claude/hooks/
~/.claude/skills/ → ~/Claude/skills/
~/.claude/output-styles/ → ~/Claude/output-styles/
Clone it, steal what's useful, make it yours.
.
├── CLAUDE.md # System prompt — personality, philosophy, workflow rules
├── agents/ # Subagent definitions (code reviewers, testers, builders, researchers)
├── commands/ # Slash commands (/remember, /resume, /plan, /diff-review, etc.)
├── hooks/ # Lifecycle hooks — session start/end, notifications, validators
│ ├── sounds/ # Audio cues for agent start/stop and alerts
│ ├── utils/ # TTS engines, LLM helpers (Anthropic, OpenAI, Ollama)
│ └── validators/ # Post-tool-use validators (ruff linter, file checks)
├── skills/ # 47 skills — from frontend design to SEO audits to API integrations
├── output-styles/ # Response format presets (bullet points, zen master, ultra-concise)
├── scripts/ # Standalone tools (committer, visual audit)
└── docs/ # Design plans and reference material
These are gitignored because they're personal or ephemeral:
| Path | Why |
|---|---|
MEMORY.md |
Persistent memory — my context, preferences, active state |
settings.json |
Claude Code settings — customize your own |
*.local.json |
Machine-specific overrides |
memories/ |
Session snapshots — what happened, decisions made |
projects/ |
Living docs for active work |
todos/ |
Task tracking |
.env |
API keys |
logs/, status_lines/ |
Runtime ephemera |
The core of the setup. Defines personality, technical philosophy (DHH-inspired simplicity), git safety rules, workflow patterns, and coding conventions. Read it — even if you don't use anything else, a well-crafted CLAUDE.md transforms the experience. BUT YOU SHOULD CUSTOMIZE THIS - it's styled for me.
Each skill is a self-contained capability Claude can invoke. Some I built, some are community skills I've adapted.
Development: frontend-design, frontend-philosophy, scaffold-astro, mcp-builder, web-artifacts-builder, systematic-debugging, playwright-skill, test-driven-development, codebase-documenter
Design: awwwards-design, mk3y-design, ui-ux-pro-max, canvas-design, visual-audit, visual-explainer
Writing & Marketing: copywriting, writing-clearly-and-concisely, doc-coauthoring, brand-identity, marketing-psychology, competitive-analysis
SEO: seo-audit, seo-competitor-analysis, programmatic-seo
Research: mckinsey-research, audit-website
Code Quality: requesting-code-review, receiving-code-review, insecure-defaults, verification-before-completion, ask-questions-if-underspecified
Workflow: brainstorming, dispatching-parallel-agents, using-git-worktrees, finishing-a-development-branch, save-money
Integrations: api-gateway (90+ third-party APIs — Slack, HubSpot, Stripe, Google Workspace, etc.), cloudflare, email-best-practices, bird (Twitter/X)
Business: bookkeeping-basics
Tooling: pdf, tmux, uv, commit, skill-creator
Subagents for parallel and specialized work:
- Code reviewers — DHH-style, React/Preact masters, Rust, component analysis
- Team — builder, validator, Next.js expert, React/TypeScript specialist
- Testers — API frontend (curl-based), API backend (pytest), test writer
- Research — system architect, docs fetcher, PRD writer, YouTube API expert, LLM/AI research
- Utilities — meta-agent (creates new agents), training data generator, Hono stack scaffolder
Python scripts (using uv inline dependencies) that fire on Claude Code lifecycle events:
- Session start/end — load context, log sessions
- Notifications — audio alerts when Claude needs input
- Validators — ruff linter runs automatically after Python file writes
- Subagent sounds — different audio cues for different agent types starting/stopping
- TTS utilities — ElevenLabs, OpenAI, Piper, pyttsx3, Qwen text-to-speech
Custom commands beyond the built-ins:
/remember /resume /plan /build /prime /diff-review /fact-check /plan-review /project-recap /web-diagram /question /memories /save-thread /sentient /reconnect and more.
Swap Claude's response format on the fly: bullet-points, ultra-concise, table-based, yaml-structured, markdown-focused, zen-master, tts-summary, genui.
Option 1: Cherry-pick what you want
Copy individual skills, agents, or hooks into your existing ~/.claude/ setup. Each piece is self-contained.
Option 2: Read and adapt
The CLAUDE.md alone is worth studying. The patterns - session memory, slash commands for workflow, lifecycle hooks, work regardless of specific implementation.
- Create your own
MEMORY.md(gitignored — this is your persistent context) - Create your own
settings.json(gitignored — configure permissions, models, MCP servers) - Create
todos/,memories/,projects/directories for your session data - Add a
.envif any hooks need API keys (TTS, etc.)
- Claude Code (obviously)
- uv — hooks use
uv run --scriptfor zero-config Python execution - PipeWire —
pw-playfor notification sounds (Linux; swap forafplayon macOS) - ruff — Python linting validator (auto-installed via
uvx)
This setup follows a few principles:
Convention over configuration. Skills, agents, and commands follow consistent structures. Adding a new one means copying a template and filling it in.
Personal over portable. The gitignored files (memory, settings, todos) are where the real value lives. This repo provides the scaffolding; your context makes it work.
Composable over monolithic. Every piece — a single skill, one hook, a slash command — works independently. Take what serves you, ignore the rest.
WTFPL. Do what the fuck you want with it.