AI Tooling¶
Home / Onboarding / AI Tooling
Everyone at Anvil works with Claude Code. This page gets your install "locked in" — the same skills and MCP connectors the rest of the team runs — so your agent can file Linear issues, read Slack, review diffs, and talk to our infrastructure out of the box.
Do this once, on the machine where you run Claude Code. Budget about 15 minutes, most of it browser logins.
One command does most of it
The anvil-co/agent-skills repo ships a bootstrap.sh that installs every shared skill and registers our HTTP MCP servers. The manual steps below are the same thing, spelled out.
Quick start¶
First install Claude Code (skip if you already have it):
Then clone the shared tooling repo and run the bootstrap:
git clone https://github.com/anvil-co/agent-skills.git ~/src/agent-skills
cd ~/src/agent-skills
./bootstrap.sh
bootstrap.sh links all shared skills into ~/.claude/skills, registers the team's
MCP servers at user scope, and installs the team's Claude Code plugins (see
Plugins below). It's idempotent — re-run it any time. Keep skills
current with git pull in that repo (they're symlinked, so a pull is all it takes).
Then finish the two things a script can't do for you: authenticate the MCP servers and enable the claude.ai Connectors (both below).
Agent skills¶
Skills are reusable playbooks your agent loads on demand. Ours live in
anvil-co/agent-skills; bootstrap.sh
(or ./install.sh on its own) makes all of them available in every repo.
| Skill | What it does |
|---|---|
linear-create-issue |
Create a Linear issue interactively — team, project, labels, assignee, priority. |
linear-issue-from-session |
Turn the current coding session into a Linear issue — drafts the ticket from what you did, then prompts for assignee / project. |
linear-link-pr |
Match a GitHub PR to its Linear issue and link them; optionally advance the issue's status. |
linear-triage |
Find and update existing Linear issues: reassign, reprioritize, relabel, move — one at a time or in a batch. |
meeting-to-issues |
Turn a meeting (Granola notes/transcript) into Linear issues for the action items, and optionally post a summary to Slack. |
review-all |
Run the full suite of review skills over one change in a single pass. |
review-comments |
Review code comments for staleness, redundancy, and long-term maintainability. |
review-contracts |
Review changed public APIs, types, and data models for contract quality. |
review-conventions |
Review a change for adherence to the codebase's idioms and naming. |
review-docs |
Review prose docs against a diff; flag stale docs and missing changelog entries. |
review-structure |
Review a change for reuse, duplication, and right-sized abstraction. |
review-tests |
Review tests for long-term value; flag brittle tests and untested behavior. |
skill-creator |
Scaffold a new skill following this repo's conventions. |
install-skill |
Install / vendor / remove skills conversationally (drives install.sh). |
upload-artifact |
Publish a local Claude artifact into the docs repo and open a PR. |
pr-describe |
Write or refresh a PR description from the branch diff, following the repo's template and linking the Linear issue. |
pr-address-comments |
Get a PR unblocked — work through review threads and failing CI, apply fixes, reply per thread. |
release-notes |
Draft release notes / changelog from merged PRs since the last release. |
standup |
Summarize your recent Linear + GitHub activity into a standup update. |
new-repo-bootstrap |
Scaffold a repo's Claude baseline — CLAUDE.md, scoped settings, .mcp.json, the @claude review workflow. |
mcp-builder |
Guide for building high-quality MCP servers (Python FastMCP or TypeScript SDK). |
webapp-testing |
Test a local web app with Playwright — verify UI, capture screenshots, read console logs. |
Invoke a skill by describing the task, or explicitly with /<skill-name>.
Write your own
Found yourself explaining the same procedure to your agent twice? That's a
skill. Use skill-creator to scaffold one; if it's broadly useful, PR it into
agent-skills so the whole team gets it.
MCP connectors¶
MCP (Model Context Protocol) servers are what let Claude Code reach our tools — Linear, Slack, our databases, our deploys. They connect two ways, and every engineer should have both sets.
Registered from the CLI¶
bootstrap.sh adds these at user scope (available in every repo). Most are
remote HTTP servers; Chrome DevTools runs locally over stdio. To do it by hand:
# remote HTTP servers
claude mcp add --scope user --transport http linear https://mcp.linear.app/mcp
claude mcp add --scope user --transport http vercel https://mcp.vercel.com
claude mcp add --scope user --transport http supabase https://mcp.supabase.com/mcp
claude mcp add --scope user --transport http github https://api.githubcopilot.com/mcp
claude mcp add --scope user --transport http sentry https://mcp.sentry.dev/mcp
claude mcp add --scope user --transport http context7 https://mcp.context7.com/mcp
claude mcp add --scope user --transport http cloudflare-docs https://docs.mcp.cloudflare.com/mcp
claude mcp add --scope user --transport http cloudflare-bindings https://bindings.mcp.cloudflare.com/mcp
claude mcp add --scope user --transport http cloudflare-observability https://observability.mcp.cloudflare.com/mcp
# local stdio server (needs Node + Chrome — see prerequisites below)
claude mcp add --scope user chrome-devtools -- npx -y chrome-devtools-mcp@latest
| Server | Powers |
|---|---|
| Linear | Issue tracking — the linear-* and meeting-to-issues skills. |
| Vercel | Frontend deploys, build logs, runtime errors. |
| Supabase | Application database / backend. |
| GitHub | Repos, PRs, issues, Actions from the agent. |
| Sentry | Errors, issues, and traces from production. |
| Context7 | Up-to-date library / framework docs pulled into context. |
| Cloudflare Docs | Search Cloudflare's docs from the agent. |
| Cloudflare Bindings | Manage Workers resources — KV, R2, D1, Hyperdrive. |
| Cloudflare Observability | Query Workers logs and analytics. |
| Chrome DevTools | Drive a real Chrome — inspect, profile, and debug the browser. |
After adding, authenticate the ones that use OAuth (Linear, Vercel, Supabase, GitHub, Sentry, Cloudflare) once each — Context7 and Chrome DevTools need no auth:
Prerequisites for Chrome DevTools
The chrome-devtools server launches through npx, so it needs Node.js ≥ 20.19
and Chrome installed. Install per OS:
bootstrap.sh warns (it won't fail) if either is missing, with the right
command for your OS.
Enabled in the claude.ai UI¶
Slack and Google Workspace are claude.ai-native Connectors — you toggle them on once at claude.ai/customize/connectors and they ride along in Claude Code whenever you're signed in with your claude.ai account (not an API key).
| Connector | Powers |
|---|---|
| Slack | Read channels and threads; post summaries (meeting-to-issues writes here). |
| Google Workspace | Gmail, Calendar, and Drive — the SSO backbone from Accounts & Access. |
| CRM (Twenty) | Our company rolodex at crm.anvil.co — hiring, investors, vendors, customers. |
| Granola | Meeting notes and transcripts — pairs with meeting-to-issues. |
Optional, role-dependent
Depending on what you work on, you may also connect Gusto (payroll), Carta (cap table), or Brex (expenses). Enable these the same way, from the Connectors page.
Plugins¶
Plugins bundle hooks, commands, and skills into an installable package. bootstrap.sh
installs the team's set; today that's one:
- caveman — a token-saver that makes the agent answer in tight, filler-free "caveman" style, keeping code, commands, and errors exact. Cuts output tokens (~65% by the author's measure) on every reply. MIT; needs Node ≥ 18. It auto-activates on Claude Code.
Install by hand (same as the bootstrap):
Toggle it with /caveman (levels: lite / full / ultra), or say "normal mode" to turn
it off for a session.
Running multiple agents — herdr¶
herdr is a terminal-based agent multiplexer — a tmux alternative built for AI coding agents — that we use to run several Claude Code / Codex sessions side by side in one terminal, with persistent, remote-accessible panes so work keeps running after you disconnect (handy when you SSH into your Linux dev server). bootstrap.sh installs it.
Verify your setup¶
claude mcp list # every server with its status (connected / needs auth / failed)
claude plugin list # installed plugins (caveman should appear)
Inside a Claude Code session:
/mcp— interactive panel to check and authenticate servers/status— confirms which account is being billed (see the billing SOP below)
You're locked in when claude mcp list shows Linear, Vercel, and Supabase
connected, the Connectors page shows Slack and Google Workspace on, caveman
shows in claude plugin list, and your skills appear when you type /.
Tuning your Claude¶
Beyond skills and MCP, a few settings make the agent noticeably better. All are optional, but the team leans on them.
- Project memory (
CLAUDE.md) — a file at a repo's root that Claude reads on every session. Put build/test commands, conventions, and gotchas there so you don't repeat them. Personal, cross-repo notes go in~/.claude/CLAUDE.md. - Settings & permissions (
~/.claude/settings.json) — pre-approve the tools and commands you trust so you stop clicking "allow", set your default model, and wire up hooks. Project overrides live in.claude/settings.json. - Hooks — shell commands that fire on events (session start, before/after a tool runs). Use them for notifications, logging, or guardrails.
- Subagents — spin up focused agents for search, review, or parallel work so the main session's context stays clean.
- Plan mode — for anything non-trivial, let the agent plan before it edits.
- Model & effort — pick the model per task with
/model; reserve the heaviest models for the hardest reasoning.
Know what you're billing
Claude Code bills against either your subscription plan or an Anthropic
API key — never both, and there's no automatic fallback. A stray
ANTHROPIC_API_KEY silently overrides your plan. Read the
Claude Code Plan vs. API Billing SOP and check
/status if you're unsure which you're on.