Reference

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 /pace router 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

  1. You install a plugin like sales.
  2. The first time a sales skill needs Slack or HubSpot, Claude prompts you to authorize that connector via OAuth.
  3. 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 /design plugin 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 Use cases 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:

  1. Copy it: cp -R plugins/sales plugins/sales-custom
  2. Edit plugins/sales-custom/.claude-plugin/plugin.json: rename to sales-custom, change author to your company.
  3. Add an entry to marketplace.json pointing at ./plugins/sales-custom with the same shape as other plugins.
  4. 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.