Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add kelp/agent-plugins/plugin install pairWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kelp/agent-plugins/pair)<a href="https://agentmods.dev/skills/kelp/agent-plugins/pair"><img src="https://agentmods.dev/badge/skills/kelp/agent-plugins/pair/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kelp/agent-plugins/pair"><img src="https://agentmods.dev/badge/skills/kelp/agent-plugins/pair.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00108 | $0.03349 |
| Opus 5.5 | $0.00043 | $0.01340 |
| Sonnet 5.5 | $0.00022 | $0.00670 |
| Haiku 4.5 | $0.00011 | $0.00335 |
Grade A, and why
pair scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 352 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/pair
Pair programming with a persistent navigator. The current session drives: edits files, runs tests. The named harness (Codex, Grok, or Claude) navigates: reviews, critiques, suggests, in a read-only session, with full memory.
You cannot pair with yourself. If the user names the current harness, refuse and ask for a different one. Default navigator is Codex.
The wrapper
All partner traffic goes through:
node "${CLAUDE_PLUGIN_ROOT}/scripts/pair.mjs" <cmd> [flags]
Commands: start, send, list, end,
design-register, design-agree, design-amend,
review-start, review-complete, override-cap,
judge, snapshot. macOS and Linux only: the wrapper relies on
POSIX process groups to terminate the partner tree and
fails fast elsewhere. start and send read the prompt
from stdin; send requires
--kind design|review|freeform (freeform is uncounted).
Both print JSON with threadId, lastMessage, and
errors. State lives in ~/.claude/pair/pairs.json
(schema v2; v1 files migrate automatically). An existing
~/.claude/codex-pair/pairs.json is still read.
Always pass prompts via stdin from a temp file, never as
a shell-interpolated argument and never as a heredoc:
diffs contain quotes, backticks, $(...), and can even
contain your heredoc delimiter (this repo's own docs do),
which would truncate the prompt and feed the remainder to
the shell. Write the prompt with the Write tool, then:
node "${CLAUDE_PLUGIN_ROOT}/scripts/pair.mjs" send \
--label <label> --kind <design|review|freeform> \
< "<prompt-file>"
Quote every interpolated path. Labels are validated by the wrapper (letters, digits, dot, dash, underscore only); pick labels that fit.
Run long partner turns in the background. send for
a review or design round takes minutes; run it as a
background task and keep working (write the next test,
prep the next change) until the completion notification,
then read the output file and relay the verdict. The
wrapper streams one [codex] ... line per partner
action to stderr, so tailing the task output file shows
live progress; read the tail, not the whole file, when
peeking mid-run. Never
have two in-flight sends for the same label: turns on
one thread are strictly serial. Short turns (status-like
questions) can stay foreground.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +13 lines · -10 tokens per session d610d5ca5cfc
- 1mo ago First seen · 339 lines · 118 tokens per session scan A c45fc15fee38
pair is a skill published in the GitHub repository kelp/agent-plugins (2 stars, last pushed 1mo ago), licensed MIT. It adds 108 tokens to every session and 3,349 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
code-review
Review code for actionable defects. Correctness is the core; performance and security are optional sub-cases of the same engine. Anchors on agreements between participants across a boundary, forces a violating execution, and refutes every candidate before reporting. Use when asked to review changes, find bugs, audit a…
intended-vs-implemented
The method for finding the gap between what a system is supposed to do and what the code actually does — the class of bug generic scanners miss because they have no model of intent. Defines what counts as documented intent, what counts as implementation evidence, which mismatches matter, and how to avoid hand-wavy…
council
Compare independent opinions from several models or contexts without inflating agreement. Use when: wanting a second opinion or debate, or summarizing several reviewers' results.
craft-goal
Draft or lint a bounded long-running goal prompt with a finish line and hard limits. Use when: selected by name; one change goes to Plan.
plan
Shape a request into one end-to-end slice with observable behavior; review write scope and reversible decisions. Use when: planning, breaking down or scoping a change.
review
Give advisory feedback on a plan, design or code change. Use when: asked for an opinion or a look-over, even informally. Not for acceptance; use Validate.