The Pace cookbook
Recipes, not theory. Each card combines Pace skills with Claude Code's broader features (Routines, hooks, sub-agents, plan mode, MCP connectors) and walks you through setup: install the plugins, authorize the connectors, paste the prompt, verify. One marquee recipe per team, plus shorter overview cards for adjacent workflows.
Sales
Pipeline brief on Monday. Account-prep when a meeting hits the calendar. Follow-ups drafted from the call transcript.
Monday morning pipeline brief, in your inbox by 7am
You walk in Monday with a pipeline brief already waiting in #sales-pipeline. The job runs while you sleep: /sales:pipeline-review against HubSpot, fan-out to one sub-agent per top-10 account for /sales:account-research, all rolled up into a single brief.
How to set it up
- 1
Install the sales plugin
Pick one path; both end up with the same plugin installed.
Install in Cowork ↗claude plugin install sales@pace - 2
Authorize HubSpot and Slack
The first time you run any sales skill, Claude opens an OAuth window. Sign into HubSpot, then Slack. Once per service.
- 3
Create the scheduled routine
Go to claude.ai/code/routines → New routine. Pick Schedule trigger, set it to Weekly · Monday · 06:30 in your timezone.
- 4
Paste this as the routine prompt
This is the actual prompt Claude runs each week. Edit the channel name and account count to match your team.
Run /sales:pipeline-review against HubSpot. Slice the output by deal stage. For each of the top 10 accounts by deal size, spawn a sub-agent that runs /sales:account-research with that account's name. Roll up all sub-agent findings into a single Monday morning brief: pipeline summary at the top, per-account notes underneath. Post the brief to #sales-pipeline in Slack. - 5
Click Run now to verify
The first run takes 2-3 minutes. The brief lands in
#sales-pipeline. Once you've seen it work, the routine fires every Monday at 06:30 automatically. No further action needed.
Auto-prep when a meeting lands on the calendar
The hook reads the attendee's email, runs /sales:call-prep, and drops the brief into the event description. By the time you open the meeting, the brief is already there: account history, recent activity, talking points, three questions to ask.
Draft follow-ups straight from the Zoom transcript
The hook pulls the transcript, runs /sales:call-summary to extract decisions and action items, then /sales:draft-outreach to compose the follow-up. Plan mode parks the draft for your approval. One click sends; the reply gets logged back to HubSpot, and /apollo:sequence-load can enroll the contact into a multi-touch sequence if the deal warrants it.
Marketing
Weekly campaign brief. Content drafting that knows your brand voice. Performance reports you don't have to assemble.
Weekly campaign performance digest, Fridays at 4pm
The team walks into Monday already aligned on what shipped last week and how it performed. The digest is in #marketing-weekly by Friday afternoon, pulled from Amplitude funnels and HubSpot lead sources without anyone touching a spreadsheet.
How to set it up
- 1
Install marketing + data plugins
Marketing has the report skill; data has the SQL skill it leans on.
Install in Cowork ↗npx pace-tools install marketing data - 2
Authorize Amplitude, HubSpot, and Slack
The first time you run any marketing or data skill, OAuth windows open one by one. Sign into each once. Amplitude is the analytics source; HubSpot is the CRM; Slack is where the digest lands.
- 3
Create the scheduled routine
Go to claude.ai/code/routines → New routine. Pick Schedule, set to Weekly · Friday · 16:00.
- 4
Paste this as the routine prompt
Edit the channel name and the metrics list to match your team's KPIs.
Run /marketing:performance-report covering the past 7 days. Pull funnel metrics from Amplitude (signups, activations, free-to-paid conversion) and lead-source attribution from HubSpot. Use /data:write-query if you need to grab anything the report skill doesn't have directly. Format as a Slack digest: headline numbers at the top, week-over-week deltas, top 3 campaigns by impact, anything anomalous worth a closer look. Post to #marketing-weekly. - 5
Click Run now to verify
First run takes a few minutes (it has to authenticate Amplitude on the cloud side too). The digest lands in
#marketing-weekly. Future Fridays at 16:00 are automatic.
Brand-voice gate on every external draft
Any PR that touches landing pages, blog posts, or email templates auto-runs /brand-voice:brand-voice-enforcement and posts inline comments with concrete fixes. Catches drift before it ships; pair with /marketing:draft-content when a section needs a rewrite from scratch.
Engineering
Spec → stacked PRs → review → ship, with disciplined diagnosis for hard bugs and a careful-review pass before merge. The engineering plugin's 34 skills cover the whole arc.
Spec a feature, ship it as stacked PRs
/engineering:spec walks the feature into a parent epic with ordered sub-issues, one PR each. /engineering:implement builds them in stacked branches, opening one stacked PR per sub-issue. As reviews come in, /engineering:review handles the comment queue. When an upstream PR merges, /engineering:topr rebases the next one cleanly (correctly dropping commits that squash-merged). /engineering:next resets for the next task. The whole arc lives in one disciplined flow instead of being reinvented each time. Read the workflow →
Self-review before the human gets paged
Every new PR runs an auto-review that catches naming, obvious bugs, missing tests, and convention drift. Findings post as draft comments the author can accept or dismiss before tagging a human reviewer. The human gets to focus on intent and architecture, not whitespace.
How to set it up
- 1
Install the engineering plugin
Brings
/engineering:code-reviewand 33 other skills.Install in Cowork ↗claude plugin install engineering@pace - 2
Install the Claude GitHub App on your repo
GitHub event triggers need the Claude GitHub App. The routine setup at claude.ai/code/routines prompts you to install it on the relevant repo if you haven't yet.
- 3
Create the GitHub-triggered routine
At claude.ai/code/routines → New routine. Pick GitHub event, choose your repo, event pull_request.opened. Optional filter: is draft = false so it only fires on ready-for-review PRs.
- 4
Paste this as the routine prompt
A new PR was just opened in this repo. Run /engineering:code-review on the PR's diff. Spawn one sub-agent per changed file for parallel review. Focus on: bugs, naming, dead code, weak tests, convention drift from neighboring files. Post findings as DRAFT review comments on the PR (not approvals) so the author can accept or dismiss each one before tagging a human reviewer. Skip whitespace nits. - 5
Open a test PR to verify
Make a tiny change on a branch and open a PR. Within a minute or two the routine fires and draft review comments appear on the PR. From here on, every new PR gets the same treatment.
Careful-review pass before opening the PR
Before opening a PR, /engineering:careful-review re-reads everything the session touched with fresh eyes (bugs, stale comments, dead code, weak tests) and fixes what it finds. Optionally, /engineering:codex-review runs an OpenAI Codex pass against main for an independent second opinion on P0/P1 issues. Then /engineering:ship-pr commits, pushes, and opens the PR with a proper summary and test plan. NEVER skips hooks.
Disciplined diagnosis for the bugs that hide
The bug that resists casual debugging needs a feedback loop, not more staring. /engineering:diagnose imposes the discipline: construct a fast deterministic pass/fail signal first (failing test, curl, replay, bisection harness), then bisect, hypothesise, instrument, fix, regression-test. The first phase is the entire skill; once the signal exists, the cause falls out. Read the discipline →
TDD that doesn't write crap tests
/engineering:tdd insists on vertical slices: one test → one implementation → repeat. No writing all the tests upfront ("horizontal slicing"), because that produces tests that verify shape, not behavior. Tests go through public interfaces, not internals. The bundled tdd/mocking.md, tests.md, and deep-modules.md reference files travel with the skill. Pair with /engineering:find-missing-tests for a coverage-gap survey first.
Deploy checklist that actually blocks
Your CD pipeline POSTs to the routine's /fire endpoint before the prod step. The routine runs /engineering:deploy-checklist: migrations reviewed, tests green, feature flag set, runbook linked, on-call notified. Anything missing returns a non-zero result and the pipeline halts with a Slack message explaining what's left.
Deploy checklist that actually blocks
Your CD pipeline POSTs to the routine's /fire endpoint before the prod step. The routine runs /engineering:deploy-checklist: migrations reviewed, tests green, feature flag set, runbook linked, on-call notified. Anything missing returns a non-zero result and the pipeline halts with a Slack message explaining what's left.
Incident triage that pulls the right context first
When you ack a page, run /engineering:incident-response <incident-id>. Three sub-agents fan out in parallel: recent deploys, error-rate spikes, related alerts. You get a unified timeline in 30 seconds instead of clicking through five tabs.
Data
Validated SQL against your real warehouse. Stakeholder-ready charts. Weekly metric anomalies surfaced for you.
Weekly metric anomaly digest, Mondays at 7am
Monday morning the data team walks in with a short list of metrics that moved unusually last week, the queries that surfaced them, and a candidate explanation for each. Stops anomalies from being noticed weeks late.
How to set it up
- 1
Install the data plugin
Install in Cowork ↗claude plugin install data@pace - 2
Authorize your warehouse + Slack
Snowflake / Databricks / BigQuery use Custom URL authorization : provide your account's MCP endpoint the first time Claude asks. Slack is OAuth.
- 3
Create the scheduled routine
At claude.ai/code/routines → New routine → Schedule · Weekly · Monday · 07:00.
- 4
Paste this as the routine prompt
Edit the KPI list to match your team's metrics + the channel name.
Run /data:statistical-analysis against last week's data for these KPIs: signups, activations, weekly active users, revenue, gross retention. Use /data:write-query as needed to pull the underlying numbers from the warehouse. Flag any metric that moved more than ~2 standard deviations from the trailing 8-week baseline. For each anomaly, include: the slice (segment / cohort), the SQL that surfaced it, week-over-week delta, and one candidate explanation. Post the digest to #data-weekly in Slack. - 5
Click Run now to verify
The first run may take 5+ minutes if your warehouse queries are heavy. Verify the digest format, then trust the Monday 07:00 cadence going forward.
Self-serve queries that don't lie
Anyone on the team can run /data:write-query "revenue by region for Q3, excluding refunds" and get a working query against the real schema, with the unit assumptions made explicit. Plan mode lets you sanity-check before running.
Product
Interview transcripts synthesized in one pass. Competitive scans on a cadence. Spec drafts that match house style.
User-interview synthesis at the end of every research sprint
The hardest part of user research is synthesizing 8-15 transcripts into themes without flattening the signal. Pace runs one sub-agent per transcript in parallel, then a coordinator rolls them up into a synthesis doc with quote evidence and frequency counts. A day's work becomes a 10-minute review.
How to set it up
- 1
Install the product-management plugin
Install in Cowork ↗claude plugin install product-management@pace - 2
Authorize Fireflies or Otter
Whichever transcript service you use. First time you ask Claude to read a transcript, OAuth opens. Optional: Notion or Linear if you want the synthesis doc saved there.
- 3
Open a Claude session with your interview list
No routine needed : this one is interactive (you only run it at the end of each sprint). In Claude Code or Cowork, start a new chat.
- 4
Paste this prompt with your sprint's transcript list
Run /product-management:synthesize-research against these interviews from the past sprint: - <Fireflies URL or meeting title 1> - <Fireflies URL or meeting title 2> - <...> Spawn one sub-agent per transcript to extract themes, direct-quote evidence, and friction points. A coordinator sub-agent should roll them up into a single synthesis doc: top 5 themes by frequency, supporting quotes per theme, disagreements between participants, and 3 candidate product implications. Use plan mode : show me the synthesis before saving. - 5
Review and save
Plan mode parks the draft for your review. Edit themes, push back where the AI over-synthesized, then save to wherever your team keeps research docs (Notion, Linear, Confluence).
Weekly competitive scan, ready for the team channel
A scheduled run of /product-management:competitive-brief watches the competitive set you care about, summarizes what shipped or changed, and posts a digest to #product-watch. No more "did anyone see the X launch?"
Finance
Month-end as a workflow. Variance you have to explain, surfaced before the CFO asks. Vendor contract triage that respects the playbook.
Month-end runbook, enforced
The month-end runbook fires automatically on the last business day. By the time the controller sits down, the reconciliation has run, variance vs plan is drafted, and the journal entries are queued for approval in plan mode. Half a day saved every close.
How to set it up
- 1
Install the finance plugin
Install in Cowork ↗claude plugin install finance@pace - 2
Authorize your warehouse + Microsoft 365
Snowflake / Databricks / BigQuery for the ledger pull; Microsoft 365 for Excel writeback. Custom URL prompts on first run.
- 3
Create the monthly routine
At claude.ai/code/routines, preset schedules don't include "last business day of the month." Create the routine with the closest preset, then run
/schedule updatein the CLI to set a cron expression like0 8 28-31 * 1-5(8am, last few weekdays of the month). - 4
Paste this as the routine prompt
Run the month-end close in order: 1. /finance:close-management to orchestrate the checklist. 2. /finance:reconciliation against the warehouse ledger (call out any unreconciled balance). 3. /finance:variance-analysis vs plan + prior month. 4. /finance:journal-entry-prep for any accruals or reclasses the variance analysis surfaces. Use plan mode for the journal entries : do NOT post anything to the GL automatically. The controller will review and approve each entry. Post a close-progress summary to #finance-close. - 5
Manually run for this month's close to verify
Click Run now at the end of this month. Walk through the journal entries in plan mode; approve, edit, or reject each. Once you trust the output, the routine fires on the last business day automatically.
Variance you'll have to explain, surfaced before the CFO asks
Every nightly close, the variance skill compares actuals vs plan, flags anything > 5% deviation, drafts the why, and DMs the CFO's prep channel by 7am. The morning standup starts with answers, not surprises.
Vendor contract triage with your playbook in the loop
Any new vendor contract dropped in the legal folder triggers a playbook-aware review: /legal:review-contract walks payment terms, auto-renewal language, liability caps, and data clauses; /legal:vendor-check and /operations:vendor-review add the procurement-side perspective. Findings post as a checklist. Legal + Finance both see what to fight for before the call.
Legal
NDA triage in minutes. Clause-by-clause playbook checks. Drafting that matches your standard language.
NDA triage queue
Inbound NDAs hit /legal:triage-nda first, which classifies the agreement. Standard ones get an auto-redline against your playbook; non-standard get flagged with the specific clause that needs human review. The legal queue drains 5x faster.
How to set it up
- 1
Install the legal plugin + write your playbook
The plugin ships with skills; the playbook is your team's standard positions on common clauses (e.g. mutual NDA, IP assignment, liability caps).
Install in Cowork ↗claude plugin install legal@pace - 2
Set up the playbook in a docs folder
Run
/engineering:setup-engineering-skillsonce at your repo or workspace root. It scaffoldsdocs/agents/legal-playbook.mdfor you. Drop your team's standard positions on common clauses there. The legal skills read from this on every call. - 3
Create an API-triggered routine
At claude.ai/code/routines → New routine → API trigger. After saving, click Generate token and copy both the URL and the bearer token (shown once).
- 4
Wire your inbox to POST inbound NDAs
Set up a Gmail/Outlook forwarding rule (or Zapier) that POSTs new emails with subject containing "NDA" to your routine's
/fireendpoint, with the email body in thetextfield of the JSON payload. Paste this as the routine prompt:An inbound NDA just arrived. The email body is in the incoming text field. Run /legal:triage-nda to classify it (mutual / one-way, standard / non-standard, urgency). If the triage says "standard": run /legal:review-contract with our playbook in the context. Produce a redlined version as a draft response with explanatory comments. If "non-standard": post a Slack message in #legal-queue flagging the specific clause(s) that need a human and the urgency level. Do NOT auto-redline non-standard agreements. - 5
Test with a real (sample) NDA
Forward a sample NDA to the configured address. Within a couple minutes you'll either see a redlined draft (standard) or a flag in
#legal-queue(non-standard). Once you trust the triage classifier, the queue stays drained automatically.
Operations
Weekly ops review automated. Runbook adherence enforced. Cross-team status that's never stale.
Weekly cross-team status digest
One sub-agent per department fans out and pulls progress from Linear / Slack / Notion; the coordinator rolls everything up into a single cross-team status doc by Friday afternoon. Monday standup walks in with the picture already in everyone's head.
How to set it up
- 1
Install the operations plugin
Install in Cowork ↗claude plugin install operations@pace - 2
Authorize Linear (or Jira), Slack, Notion
Whichever ones your teams actually use. OAuth opens for each on first use.
- 3
Create the scheduled routine
At claude.ai/code/routines → New routine → Schedule · Weekly · Friday · 14:00.
- 4
Paste this as the routine prompt
Edit the team list to match your org structure.
Run /operations:status-report. Spawn one sub-agent per team to pull progress signals from the last 7 days: - Engineering: closed Linear tickets, merged PRs, incidents - Product: spec updates, sprint progress - Sales: closed-won, pipeline movement (top-line) - Marketing: shipped campaigns, performance - Customer Support: ticket volume, escalations A coordinator sub-agent rolls them into one Friday digest: "what shipped" at the top, blockers + risks in the middle, next-week focus at the bottom. Post to #leadership-friday in Slack and mirror to docs.pace/status/<YYYY-MM-DD> in Notion. - 5
Click Run now to verify
Read the first digest carefully : adjust the per-team scope until the rollup matches how your org actually thinks about "progress". Once it's right, Fridays at 14:00 are hands-off.
People
Recruiting pipeline status. Interview prep that matches the role. Onboarding day-one without the checklist scramble.
Weekly recruiting pipeline digest
Hiring managers walk into Monday standup already knowing where every open req stands : candidates aging in a stage, interviews scheduled for the week, offers extended, declines. No more "where are we with X" updates.
How to set it up
- 1
Install the human-resources plugin
Install in Cowork ↗claude plugin install human-resources@pace - 2
Authorize your ATS + Slack
Whichever ATS your team uses (Ashby, Greenhouse, Lever, etc.). If your ATS doesn't have a first-party MCP server yet, see the connector docs for the Custom URL pattern. Slack is OAuth.
- 3
Create the scheduled routine
At claude.ai/code/routines → New routine → Schedule · Weekly · Monday · 08:00.
- 4
Paste this as the routine prompt
Run /human-resources:recruiting-pipeline against the ATS. For each open requisition, surface: - Stage of every active candidate - Time-in-stage (flag anyone > 10 business days) - Interviews scheduled this week (panel + candidate names) - Offers extended / accepted / declined since last week - Reqs without any candidates in pipeline ("stuck") Format as a digest grouped by hiring manager. Post to #hiring-weekly in Slack. Tag each hiring manager next to their reqs so they get a heads-up DM. - 5
Click Run now to verify
Eyeball the first digest for accuracy (does aging match what you see in the ATS?). Once you trust it, Mondays at 08:00 are automatic.
Interview prep tailored to the role and the candidate
When an interview lands on the calendar, /human-resources:interview-prep pulls the JD, candidate resume, and prior round feedback. It drops a prep brief into the event description: focus areas, suggested probing questions, and what to avoid re-asking. Panel walks in calibrated.
Customer Support
Ticket triage in real time. Macro suggestions that match your voice. Escalation routing that respects who's on-call.
Real-time ticket triage with macro suggestion
Every new ticket arrives with a pre-classified urgency, account context from HubSpot, and a draft response in the right tone for the customer segment. The agent reads the draft, makes a tweak, sends. First-response time drops; quality stays high.
How to set it up
- 1
Install the customer-support plugin
Install in Cowork ↗claude plugin install customer-support@pace - 2
Authorize Intercom (or Zendesk), HubSpot, Slack
Intercom / Zendesk for the ticket queue; HubSpot for account context; Slack for escalations.
- 3
Create an API-triggered routine
At claude.ai/code/routines → New routine → API trigger. Copy the URL + bearer token after save.
- 4
Wire Intercom (or Zendesk) to POST new conversations
In Intercom: Settings → Webhooks → New webhook, subscribe to "conversation.user.created", point at the routine URL with the bearer token. (Zendesk: Apps & Integrations → Webhooks.) Then paste this routine prompt:
A new support ticket arrived. The conversation body is in the incoming text field. 1. Run /customer-support:ticket-triage to classify urgency (P1/P2/P3) and category. 2. Pull the customer's account context from HubSpot (plan tier, recent activity, prior tickets). 3. Run /customer-support:draft-response : tone should match the segment (enterprise / SMB / free). Park the draft in the conversation as a private note for the human agent to review before sending. 4. If P1 OR enterprise tier: run /customer-support:customer-escalation to ping the on-call engineer in #support-escalations. - 5
Send a test ticket to verify
Open a test conversation in Intercom from a sandbox account. Within ~30 seconds you should see a private note with the draft response. Once the format is right, every new ticket gets the same treatment.
Productivity
Cross-app task management. End-of-day update that pulls from everywhere. Project memory that survives context switches.
Daily update that pulls itself together
End of the day, the routine assembles what you shipped (commits, tickets closed, Slack threads contributed to) and drafts a one-paragraph wrap; rolls open work into tomorrow's queue. Plan mode parks the draft for your edit before it posts to your team's standup channel. Async standups stop being a chore.
How to set it up
- 1
Install the productivity plugin
Install in Cowork ↗claude plugin install productivity@pace - 2
Authorize Slack, Linear, Notion, and GitHub
Whatever subset you use. The skill pulls signals from each, so the more sources connected the richer the wrap.
- 3
Create the scheduled routine
At claude.ai/code/routines → New routine → Schedule · Weekdays · 17:30.
- 4
Paste this as the routine prompt
Edit the channel + role-focus line to match your team.
End of day check-in. Run /productivity:update to assemble what I shipped today: commits merged, Linear tickets I moved, Slack threads I contributed substantively to, docs I edited in Notion. Then run /productivity:task-management to roll my open items into tomorrow's queue (carry forward unchecked todos, surface things I said I'd do but haven't). Draft a 3-line async standup post in our voice: "Yesterday I... Today I will... Blockers: ..." Use plan mode : show me the draft for a quick edit before posting to #async-standup. - 5
Click Run now to verify
The first run today shows you the draft format. Plan mode means you approve before it posts. Tomorrow at 17:30 it runs again automatically : you'll get a notification in the Claude app when the draft is ready for your edit.
Project memory that follows you across sessions
/productivity:start re-hydrates yesterday's context from /productivity:memory-management: open threads, the decisions you made, the things you said you'd come back to. No more spending the first 20 minutes of every session reading old messages.
Design
For frontend code design, Pace defers to impeccable. Use Pace's /design plugin for the UX-research / design-system layer; reach for impeccable when you're writing the UI code itself.
What impeccable is
Impeccable is a separate Apache 2.0 skill kit focused entirely on frontend craft for AI coding agents. One router (/impeccable) with 23 sub-commands across typography, color, layout, motion, accessibility, UX writing, design systems, and dev handoff. It runs in every harness Pace runs in (Claude Code, Cursor, Gemini CLI, Codex CLI, and 8 more).
Pace's site, build pipeline, and multi-harness install machinery were forked from impeccable; the two projects share a maintainer ethos but ship independently.
Per-PR design audit before review
Every PR touching CSS / JSX / Vue templates runs /impeccable audit against the changed files. Findings (contrast issues, anti-pattern hits from impeccable's 50+ detection rules, layout regressions) post as inline comments. Reviewers see the design diff alongside the code diff.
Polish pass on a feature branch
Before merging, run /impeccable polish on the branch. The router orchestrates typography, color, layout, and motion sub-commands; plan mode shows the diff before anything ships. The polish pass is what turns a working feature into one that feels intentional.
Cross-tool design system sync
Pace's /design plugin manages the system at the spec level (Figma tokens, contribution model, dev handoff). Impeccable's /colorize and /typeset apply those tokens in code with full understanding of how they look on screen. Use both: the design plugin sets the rules, impeccable enforces them in the codebase.
When to use Pace's /design plugin vs impeccable
Different layers of the same craft:
- Pace
/designcovers UX research, design system management, accessibility audits at the policy level, dev handoff, and research synthesis. Use it for the work a design team does. - Impeccable covers the visual + interaction craft of writing the UI code itself: typography choices, color tokens, spatial rhythm, motion design, responsive layout. Use it for the work a designer would obsess over when looking at the rendered pixels.
Most teams want both. Install impeccable alongside Pace; the Pace CLI (npx pace skills install) offers it during setup.