Claude Code plugin & /pair-assistant
What the pair marketplace plugin installs, how to add, update and remove it, and what /pair-assistant can do, install, update, run CLI jobs and configure pair, and how it writes.
The pair Claude Code plugin is an optional alternative to typing pair-cli yourself. The CLI stays the default path (Quickstart); the plugin gives Claude Code users one skill, /pair-assistant, that runs the CLI for you and helps you configure pair.
Source:
packages/knowledge-hub/dataset/plugin/skills/pair-assistant/SKILL.md
What the plugin installs
One skill: /pair-assistant. claude plugin details pair@pair reports Skills (1), Agents (0), Hooks (0), MCP servers (0), LSP servers (0). The full skill catalog never ships in the plugin: the CLI writes it into your repository (.claude/skills/), so no skill name resolves from two sources and the plugin can stay installed next to a CLI install. The channel overview shows where it sits among the install channels.
Add, update, remove
- Smaller clone:
/plugin marketplace add foomakers/pair --sparse .claude-plugin packages/knowledge-hub/dataset/pluginlimits the checkout to the two directories that matter. - The cache is disposable: Claude Code copies the plugin into
~/.claude/plugins/cacheand/plugin updatereplaces it wholesale. Nothing you own lives there; the skill writes into your repository. - No version is pinned, so an update always fetches the current skill.
Capability menu
Ask /pair-assistant what it can do and it lists two things.
CLI jobs (options always read from pair-cli --help, never from a list in the skill):
install,updatekb-info,kb-validate,kb-verifypackage,scaffold-kbupdate-link,validate-configkb-cache,tokens
Each CLI command names its request in a "Via" line.
Configuration areas: autonomy, cycle hooks, blocking severities, Publish-PR hooks, workflow profiles, kept registries (skipRegistries), format-check-command, worktree-setup-command, review enforcement and identity, coverage guardrail, PR states, PM tool and State Mapping, Definition of Ready/Done, process profile, risk matrix and tag projection, harness and model policy, quality gates and branch protection, package-local adoption, template overrides, and a full adoption pass.
Figure: every area the assistant can write has one owning file and one validator; the assistant never writes outside this table.
How to ask
| You say | It routes to |
|---|---|
| "let green cards go up to merge" | ## Autonomy in tech/automation.md (merge), see autonomy gates |
| "add a pre-verify hook that runs the tests" | ## Cycle Hooks in tech/automation.md |
| "use profile X for the review" | workflowProfiles in pair.config.json |
| "keep my own AGENTS.md" | update --skip-registries agents, persisted as skipRegistries |
| "map not-planned to Done" | ## State Mapping, through /pair-capability-setup-pm |
| "switch the harness to pi" | /pair-capability-setup-harness |
| "update pair" | pair-cli update (honours skipRegistries, prints the skip line) |
| "how many tokens are my pair files" | pair-cli tokens |
How it writes
-
It shows the diff (file, section, before, after) and asks. It writes only after an explicit yes.
-
It validates first, on a temporary copy, with the cycle scripts the CLI installed in
.claude/skills/pair-workflow-cycle/scripts/:autonomy-policy.mjs resolvecycle-hooks.mjs loadblocking-severities.mjs readworkflow-profile.mjs resolve
A non-zero result or HALT stops with the script output; nothing is written. Scripts missing: it offers
updatefirst. -
It writes through the owner:
/pair-capability-record-decisionfor adoption files, or the section-owning skill (/pair-capability-setup-pm,-setup-harness,-setup-gates,/pair-process-bootstrap). It never edits adoption files itself.pair.config.jsonis not an adoption file:workflowProfilesis a shown edit plus an ADL via record-decision. -
A malformed config stops it: it shows the script output and offers a fix; it never writes over a broken file. An area outside the menu is reported as such, never invented.
Requests the skill cannot map to a command or area are answered from your own .pair/llms.txt,
naming the file used. It never runs a bare npx pair-cli (an unrelated package of that name exists on npm).