Opinionated Claude Code configuration that actually works. Custom skills, hooks, settings, and MCP servers — clone it, symlink it, stop suffering.
Shared configuration files for Claude Code. Clone this repo and symlink the files into ~/.claude/ to set up a new machine quickly.
├── .claude-plugin/ # Claude Code plugin manifest — makes this repo an installable plugin
│ ├── plugin.json
│ └── marketplace.json
├── CLAUDE.md # Project-level instructions
├── settings.json # Claude Code settings (model, hooks, permissions, etc.)
├── .mcp.json # MCP server configuration
├── commands/
│ └── statusline-command.sh
├── hooks/
│ ├── post-edit-check.sh
│ └── README.md
└── skills/
└── * # All skills, including /install for à la carte setup
Prerequisites: nvm must be installed. The setup script installs the pinned node version (see .nvmrc) automatically.
-
Clone the repo
git clone <repo-url> ~/dev/farty-bobo
-
Run the setup script
cd ~/dev/farty-bobo ./setup.sh
The script will:
- Create
~/.claudeif needed - Symlink all config files and directories into
~/.claude - Symlink
claude_desktop_config.jsoninto Claude Desktop's config dir (macOS) - Create
.envfrom.env.sampleif it doesn't exist - Install the pinned node version via nvm and symlink it to
~/.local/bin
- Create
-
Fill in
.envopen .env # or edit with your preferred editorEach variable is documented with inline comments in
.env.sample. If you re-runsetup.shafter agit pull, check.env.samplefor any new keys and add them manually to.env. -
Ensure
~/.local/binis on your PATH (if the script warns about it)echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
-
Restart Claude Desktop for MCP server changes to take effect.
-
Verify
ls -la ~/.claude/settings.json ~/.claude/CLAUDE.md ~/.claude/.mcp.json ~/.claude/commands ~/.claude/hooks
Each entry should show
->pointing to the repo paths.
- Edit files in this repo, then
git commitandgit push— changes propagate to every machine viagit pull. - To override settings on a single machine without affecting the repo, remove the symlink for that file and create a local copy instead.
MCP servers are configured per-project via a .mcp.json file at the repo root — not globally. This means servers only load when Claude Code is running inside the relevant repo, so env vars and credentials don't need to be available everywhere.
Use the /add-mcp-server skill to add an MCP server to any project. It will:
- Create or update
.mcp.jsonat the project root - Use
${VAR_NAME}syntax for secrets (Claude Code expands these at runtime) - Add missing env vars to
.envand ensure.envis gitignored - Keep
.mcp.jsonsafe to commit
| Server | Install | Notes |
|---|---|---|
| dbt-mcp | uvx dbt-mcp |
Requires dbt installed via pipx. Env vars: DBT_PROJECT_DIR, DBT_PATH, plus project-specific DB credentials. |
| redshift | uvx awslabs.redshift-mcp-server |
Env vars: AWS_PROFILE, AWS_REGION. |
| Langfuse | HTTP/SSE — https://us.cloud.langfuse.com/api/public/mcp |
Auth header: Authorization: Basic ${LANGFUSE_BASE_64_TOKEN}. See docs. Alternatively, use langfuse-cli as a skill: npx langfuse-cli get-skill. |
Don't want to clone the whole thing? Use the farty-bobo plugin to selectively install any skill, hook, or command onto your machine.
Run these two commands in Claude Code:
/plugin marketplace add fartybobo/farty-bobo
/plugin install farty-bobo@farty-bobo
Restart Claude Code, then run:
/farty-bobo:install
It will show you the full catalog, let you pick what you want, download it to the right places, and for hooks ask whether to register them globally or scoped to the current project.