Andre Albuquerque's personal Claude config.
This repo holds the global rules, agents, and skills I want Claude to use across every project, on every machine. Install it once per laptop, pull updates as the config evolves.
It's published openly in case the patterns are useful to others — fork it, lift pieces, or use it as a reference for your own setup.
When you install this repo, three things end up symlinked into your ~/.claude/ directory:
CLAUDE.md— the operating system. Default behavior, planning rules, agent strategy, output discipline. Applied to every Claude Code session you run, in any repo.agents/— specialized subagents (@pm,@implementer,@reviewer,@qa,@researcher). Claude routes work to them based on task shape.skills/— slash-commands you can invoke directly (/plan,/fix,/deploy, etc.) for specific lifecycle moments.
Because these live globally in ~/.claude/, they apply to every project you open with Claude Code — not just one repo. Per-repo CLAUDE.md files (when they exist) layer on top of this global config.
git clone git@github.com:AndreAlbuquerque/claude-config.git ~/claude-config
cd ~/claude-config
./install.shThat's it. The installer symlinks files into ~/.claude/, so future updates flow live — usually no need to re-run install.sh after a git pull. Re-run it only when new skill or agent files are added (so they get linked).
To update:
cd ~/claude-config && git pull && ./install.shinstall.sh is non-destructive:
- Existing
~/.claude/CLAUDE.md(if it's a real file, not a symlink) gets backed up toCLAUDE.md.bakbefore being replaced with the symlink. - Personal skills or agents already in
~/.claude/skills/<name>/or~/.claude/agents/<name>.mdare preserved — the installer skips any name that already exists as a real file. To switch to the shared version, delete the local one and re-run.
So you can keep personal experiments alongside this config. They don't collide.
Two layers of config:
Global (this repo, lives at ~/.claude/)
House rules, agents, and skills that apply to every project.
Per-repo (lives at <repo>/.claude/ and <repo>/CLAUDE.md)
Project-specific context: tech stack, deploy process, repo-specific rules. Use /bootstrap (described below) to scaffold this in a fresh repo.
When Claude is working in a repo, it sees both — global first, then repo-local on top. Repo-local wins on conflicts.
The default flow for any non-trivial task:
You ask Claude to do something
↓
Claude routes to @pm (auto, per CLAUDE.md)
↓
@pm classifies: SINGLE / BATCH / EPIC / DIRECT
↓
@pm hands off to a specialist with a self-contained brief:
├── @researcher — discovery, options, framing
├── @implementer — bounded code changes
├── @qa — acceptance criteria, release safety
└── @reviewer — architecture audit, deep review
↓
Specialist returns its output contract
↓
@pm names the next command (e.g. /test, /deploy)
@pm is auto-invoked. The specialists run on its handoff. You don't usually call them by name unless you want to skip triage.
@pm is not invoked for: pure conversation, clarifying questions about Claude's own prior output, follow-ups inside an already-active workflow.
All agents enforce output contracts — a structured block they must emit before exiting. This keeps handoffs clean and prevents "running commentary with no result."
| Agent | When to use | Stops at |
|---|---|---|
@pm |
First touch for any non-trivial task. Classifies and routes. | Naming the specialist + handoff brief |
@researcher |
Unclear problem, options analysis, codebase discovery, decision framing | Recommendation + next owner |
@implementer |
Bounded code changes, bug fixes, small features with clear scope | Implementation or implementation brief |
@qa |
Acceptance criteria, user journey validation, release readiness | Validation boundary + checklist |
@reviewer |
Architecture audit, large refactors, security/performance review | Review + recommended remediation |
All agents have scope-drift guardrails: if the work shifts out of their lane, they hand back to @pm instead of overreaching. They also have soft tool-call budgets to prevent endless exploration.
Three groups: lifecycle (day-to-day work), orchestration (@pm's mirror), and meta (managing the system itself).
| Command | What it does |
|---|---|
/plan |
Execution-ready plan: goal, assumptions, scope, milestones, risks, acceptance criteria |
/research |
High-level concept research: best practices, failure patterns, recommendation |
/fix |
Minimal safe patch: failing behavior → root cause → smallest fix → risks → tests |
/test |
Regression-preventing tests: happy path + 2 edge cases + 1 failure case |
/qa |
Product QA checklist: user journeys, functional + non-functional checks, release safety |
/deep-review |
Full audit (architecture, code quality, tests, performance). Use only for large features, refactors, or security/performance work |
/deploy |
Safe feature-branch deploy: commit → branch → preflight (TS compile) → push → open PR. Never auto-merges. |
/merge |
Safe PR merge: pre-merge gate → squash merge → cleanup → migration check (Supabase). Manual trigger only. |
| Command | What it does |
|---|---|
/pm |
Same triage logic as @pm, but invoked manually. Use when you want explicit orchestration on a list of tasks. |
| Command | What it does |
|---|---|
/bootstrap |
Scaffolds per-repo Claude OS structure (CLAUDE.md, .claude/skills/, standards, registries) in a new repo. Run once per project. |
/improve |
Promote durable patterns into CLAUDE.md or skills. Shows diff before applying. |
The global CLAUDE.md enforces these defaults across every session. Highlights:
Default behavior Smallest correct change. No unnecessary abstraction. Explicit over clever. Minimal diffs.
Planning Small changes → implement directly. Multi-layer or architecture → propose a short plan first. Max one clarification question if blocked.
Quality after changes List what could break. Suggest tests. Suggest monitoring or rollback. Reproduce bugs via test before fixing when feasible.
Supabase
If the CLI is linked, Claude runs migrations directly via supabase db push --linked. Always shows the migration plan first. Production data changes get row counts before push. If CLI isn't linked, hands back to user.
Deep review escalation
/deep-review is not the default. Use it only for: large features (> 5 files or multiple domains), refactors, security-sensitive code, or performance-sensitive paths.
Output discipline Concise structured headers. No long explanations unless asked. Stop when objective is complete. After code changes: briefly state files changed and why.
The full CLAUDE.md is the source of truth. This summary just exists so you don't have to read it every time.
- Create
skills/<skill-name>/SKILL.md - Use the YAML frontmatter convention from existing skills:
name: <skill-name> description: <one line — when should Claude use this> disable-model-invocation: <true|false> allowed-tools: <comma-separated list> argument-hint: [<what the skill expects>] - Body: short, structured. Process steps, output format, stop condition. Look at
skills/plan/SKILL.mdas the canonical minimal example. - Run
./install.shto symlink the new skill into~/.claude/skills/.
Don't duplicate CLAUDE.md rules inside skills. Skills should focus on their specific output protocol.
- Create
agents/<agent-name>.md - Frontmatter:
name: <agent-name> description: <one line — when @pm or the user should route work here> tools: <comma-separated> model: <sonnet | opus | haiku> maxTurns: <integer> memory: <project | session> - Body must include:
- Execution guardrails — output contract, scope-drift handoff rules, tool budget
- What you own — the lane
- Core behavior — numbered steps
- Decision principles — the bias
- Output contract — the structured block this agent emits
- Stop conditions
- Update
@pm's routing rules if the new agent should be auto-routed to. - Run
./install.sh.
Match the structure of existing agents. Consistency across agents is what makes the system predictable.
| Change | Where |
|---|---|
| New global house rule | CLAUDE.md |
| New reusable workflow | New skill |
| New specialist role | New agent |
| Repo-specific tech stack, deploy steps, conventions | That repo's local CLAUDE.md (use /bootstrap) |
| One-off project decision | Don't put it here. Notion or a repo ADR. |
A skill or agent isn't being invoked.
Run ls -la ~/.claude/skills/ and ls -la ~/.claude/agents/ — should show symlinks pointing into ~/claude-config/. If a name you expect isn't there, you probably have a personal version that's blocking it. Delete the personal one and re-run ./install.sh.
CLAUDE.md changes don't seem to apply.
Confirm ~/.claude/CLAUDE.md is a symlink (ls -la ~/.claude/CLAUDE.md). If not, re-run ./install.sh — it backs up the existing file and replaces it with the symlink.
Shared as-is, no warranty. Fork freely. If you adapt something, no attribution needed — but a link back is appreciated.