Docs
Pace is a Claude Code marketplace plus a company router. This page covers both: how the pieces fit together, how to install, how to use, how to customize, and how to author new commands.
Architecture
Pace lives in one repo with two distinct halves:
pace.tools/
├── skill/ ← the /pace router (your team's commands)
│ ├── SKILL.md
│ ├── reference/<cmd>.md
│ └── scripts/
│
├── plugins/ ← the marketplace catalog
│ ├── sales/
│ │ ├── .claude-plugin/plugin.json
│ │ ├── skills/<skill>/SKILL.md
│ │ └── .mcp.json
│ ├── marketing/
│ ├── engineering/
│ ├── … 14 more first-party
│ └── partner-built/<vendor>/
│
└── .claude-plugin/
└── marketplace.json ← registers Pace + every plugin Why two halves
- Different patterns. The
/pacerouter uses a single-skill-with-sub-commands design. Imported plugins use a different pattern: many independent auto-triggering skills, namespaced by slash command (/sales:call-prep). - Different ownership. The router is your team's code; you evolve it. The plugins are imported from partners; we sync from upstream and don't edit.
- Different install granularity. The marketplace lets users install only what they need. The router is one cohesive thing.
Installing
Register the marketplace
Done once per project (or globally per machine). This tells Claude where to find Pace's plugins.
claude plugin marketplace add GoldenBerry-SO/Pace Install plugins individually
Pick what your role actually uses. There's no "install all" recommended path; most people use 2-4 plugins.
# The company router
claude plugin install pace@pace
# Department plugins
claude plugin install sales@pace
claude plugin install engineering@pace
claude plugin install data@pace
claude plugin install marketing@pace
claude plugin install finance@pace
claude plugin install legal@pace
# … 43 more available; see /plugins for the full catalog Or use the Pace CLI
The pace-tools CLI wraps claude plugin with marketplace auto-registration and multi-plugin install:
npx pace-tools marketplace add
npx pace-tools install sales engineering data
npx pace-tools list # browse the catalog
npx pace-tools teams # per-role starter sets From-repo install for development
If you're contributing to Pace itself, clone the repo and use --copy to install from your local working tree:
git clone <pace-repo-url>
cd pace.tools
npx skills add . --copy Using commands
Pace surfaces in two ways: namespaced slash commands and natural-language auto-trigger.
Namespaced slash commands
Each plugin's skills are namespaced by the plugin's name:
/pace teach ← company router
/sales:call-prep Acme ← sales plugin, namespace `sales:`
/data:write-query
/engineering:code-review
/marketing:campaign-plan
/legal:nda-review Type /sales: in your harness to see all sales skills. Type / to see every installed skill.
Natural-language auto-trigger
Skills publish a description field that Claude uses to auto-match. You don't need to remember the exact command:
- "prep me for my call with Acme" →
/sales:call-prep - "write a SQL query against Snowflake" →
/data:write-query - "review this NDA" →
/legal:nda-review
The slash command is the explicit version; the natural-language form is the same skill behind a different invocation.
MCP connectors
Plugins integrate with external systems (Slack, HubSpot, Snowflake, Notion, Linear, etc.) through Model Context Protocol servers. Each plugin's .mcp.json declares which connectors it can use.
How authorization works
- You install a plugin like
sales. - The first time a sales skill needs Slack or HubSpot, Claude prompts you to authorize that connector via OAuth.
- Authorization is per-MCP-server, not per-skill. Once you authorize HubSpot, every sales skill can read your CRM.
Working without connectors
Plugins gracefully degrade. /sales:call-prep Acme works on day one with no Slack or HubSpot. Claude does web research and works from whatever context you paste in. Connecting tools makes the same skill more powerful.
Available connectors by plugin
See each plugin's CONNECTORS.md for specifics. Quick summary:
- sales: Slack, HubSpot, Close, Clay, ZoomInfo, Fireflies, Microsoft 365
- marketing: Slack, Canva, Figma, HubSpot, Amplitude, Notion, Ahrefs, Klaviyo, SimilarWeb
- data: Snowflake, Databricks, BigQuery, Hex, Amplitude, Jira
- customer-support: Slack, Intercom, HubSpot, Guru, Jira, Notion
- finance: Snowflake, Databricks, BigQuery, Microsoft 365
- product-management: Slack, Linear, Asana, Monday, ClickUp, Jira, Notion, Figma, Amplitude, Pendo, Intercom, Fireflies
- legal: Slack, Box, Egnyte, Jira, Microsoft 365
- enterprise-search: Slack, Notion, Guru, Jira, Asana, Microsoft 365
- productivity: Slack, Notion, Asana, Linear, Jira, Monday, ClickUp, Microsoft 365
- engineering, design, operations, HR: standalone (no required connectors)
The /pace router
The /pace router is the company-specific command surface. It's optional; install it only if you want pace's conventions for your team.
Context loading
Every router command reads PRODUCT.md at the project root before doing work. The file describes how your company works:
- Users: who you build for
- Brand voice: tone, anti-references
- Principles: non-negotiables
- Register: brand or product (signals to commands whether work is marketing surface or app surface)
Run /pace teach once per project to generate PRODUCT.md through a guided interview. The file lives in your repo; you edit it like any other doc.
Pinning commands
You can promote any router sub-command to a top-level slash command:
node skill/scripts/pin.mjs pin audit
# now /audit is a shortcut for /pace audit Pin creates a lightweight redirect skill that delegates to the router; updates to the router still flow through. Unpin with --unpin.
Impeccable (design)
For frontend code design (the actual CSS, typography, color, layout, motion of a UI), Pace defers to impeccable. It's a separate Apache 2.0 skill kit with its own router (/impeccable), authored by Paul Bakaus, with 23 sub-commands covering the visual + interaction craft of shipping UI code.
What impeccable covers
One router, 23 sub-commands grouped by the work they do:
- Audit + fix:
audit,polish,critique,quieter,bolder - Visual craft:
typeset,colorize,layout,animate,delight - System work:
design-system,tokens,variants,responsive - Frontier:
data-viz,3d,print,email,game-ui - Setup + teach:
teach,onboard,brand-or-product,live
Impeccable also ships an anti-pattern detector (~50 rules) that catches the visual tells of AI-generated frontend slop: low-contrast text, icon-tile stacks, gradient-on-gradient, dead-center hero layouts, flat type hierarchy, decorative emoji bullets, etc. The detector runs as a CLI (npx impeccable detect), a browser overlay, and a Chrome extension.
Why two design things
Different layers of the same craft:
- Pace's
/designplugin works at the policy + research level: UX research synthesis, design-system management as a workflow, accessibility audits as policy reviews, dev handoff at the brief level. The work a design team does day-to-day. - Impeccable works at the code level: the typography choices, color tokens, spatial rhythm, motion design, responsive breakpoints, and accessibility implementation that ship in the actual CSS and JSX. The work a designer would obsess over when looking at the rendered pixels.
Most projects want both. Use /design:* when you're setting rules or synthesizing research; /impeccable when you're writing UI code.
Install impeccable alongside Pace
npx impeccable skills install The Pace CLI (npx pace skills install) prompts to install impeccable on first run. You can re-run impeccable's installer anytime. Like Pace, impeccable installs across every harness it detects: Claude Code, Cursor, Gemini CLI, Codex CLI, Kiro, OpenCode, RovoDev, Trae, and more.
Pace's relationship to impeccable
Pace's site, build system, multi-harness install machinery, and editorial bar are all forked from impeccable. The two projects share a maintainer ethos (Apache 2.0, multi-harness, ~no-Tailwind, plain CSS, evergreen prose) but ship independently with separate release cadences. See NOTICE.md for full attribution.
See it in action
The Cookbook has a Design section with three concrete workflows that pair Pace with impeccable: per-PR design audit on frontend repos, polish pass on a feature branch before merging, and cross-tool design-system sync between Pace's /design and impeccable's token-aware sub-commands.
Authoring commands
Add a command to the /pace router
For company-specific workflows. Drop a reference file, register it, build:
# 1. Create the reference file
echo '...' > skill/reference/ship.md
# 2. Add a row to skill/SKILL.md command table
# 3. Add entry to skill/scripts/command-metadata.json
{
"ship": {
"description": "Ship checklist for company releases.",
"argumentHint": "[release name]"
}
}
# 4. Add to PACE_SUB_COMMANDS in scripts/lib/utils.js
# 5. Build (fans out to harness output dirs)
bun run build
# 6. Ship a PR Add a new plugin to the marketplace
For commands that don't belong in the company router and don't already exist in an imported plugin:
# 1. Create the plugin directory
mkdir -p plugins/yourco-onboarding/skills/welcome-day-one
# 2. Add .claude-plugin/plugin.json (name, version, description, author)
# 3. Add skills/<name>/SKILL.md with frontmatter (name, description)
# 4. Add an entry to .claude-plugin/marketplace.json:
{
"name": "yourco-onboarding",
"displayName": "Your Company Onboarding",
"source": "./plugins/yourco-onboarding",
"description": "Onboarding workflows for new hires.",
"author": { "name": "Your Company" }
}
# 5. Optional: add a .mcp.json if the plugin needs MCP servers
# 6. Ship a PR Customizing imported plugins
Don't edit plugins/sales/ directly. The imported plugins are kept untouched so we can re-sync from upstream without merge conflicts.
When you need a custom version of an imported plugin:
- Copy it:
cp -R plugins/sales plugins/sales-custom - Edit
plugins/sales-custom/.claude-plugin/plugin.json: rename tosales-custom, changeauthorto your company. - Add an entry to
marketplace.jsonpointing at./plugins/sales-customwith the same shape as other plugins. - Edit the skill files in
plugins/sales-custom/skills/as needed.
Both plugins live in the marketplace. Users opt into your fork by installing sales-custom@pace instead of sales@pace.
Updating
Update all plugins at once
claude plugin update --all Update just the /pace router
npx pace skills update How Pace stays in sync with upstream
Periodically, a maintainer runs the upstream sync (manually for now, automated CI later):
# in pace.tools repo
rsync -a /path/to/upstream-plugins/<plugin>/ plugins/<plugin>/
# update version in marketplace.json if it shifted, commit, ship a Pace release Users then run claude plugin update --all to pick up the new versions.