Add a custom PM tool
How to make pair work with a PM tool or code host it does not support yet, what an adapter must provide, the steps, and a minimal example.
pair ships adapters for GitHub Projects, Linear, Azure DevOps and the filesystem. For another tool you declare it in your adoption files and, for the delivery cycle, add one adapter file.
What an adapter must provide
- State mapping: your board's states mapped to the five canonical macrostates in
## State Mapping(canonical states, Adoption settings). A state you leave out is ignored; closure without completion is neverDone. - Write-issue and read contract: skills create and update cards through
/pair-capability-write-issueand read them back. The tool needs a CLI or API that can create, read, update and comment on a card. - Code host split: a tracker that hosts no repositories declares a separate
code-host(Code host vs PM tool). - The cycle's PM and code-host adapter: the delivery cycle (
/pair-workflow-cycle,pair-cli run) talks to the tool through eight methods:readCard,prHead,upsertComment,concludeCheck,setPrState,merge,closeAndCascade, and the derivedcardHash. The contract is the adapter extension guide in the Knowledge Base.
Steps
- Declare the tool in
.pair/adoption/tech/way-of-working.md, and thecode-hostunder## Git Workflowif the tool hosts no code. - Map your states in
## State Mapping. - Document the tool in a
<id>-implementation.mdguide beside the shipped ones: CLI setup and how authentication works (the adapter never stores credentials). - For the delivery cycle, add
scripts/host/<id>.mjsto every workflow skill, with the eight methods, tests against a stub CLI, then regenerate the mirrors. Registration is the file itself.
Without step 4 the skills still work through the guide; the cycle stops with host-unsupported naming the missing adapter, and never falls back to GitHub.
Minimal example
In your assistant: edit the file as above, or /pair-capability-setup-pm. With /pair-assistant (optional, Claude Code): ask it to set the PM tool or the state mapping; it delegates to /pair-capability-setup-pm (how it writes).