SkillAgentSearch skills...

baton

Hand-offs for AI coding agents (Claude Code, Codex, Cursor, any MCP client): a hand-off is refused while a question to that agent is still open. Plain files in git, no server.

Install / Use

claude mcp add TheKathan -- npx -y github:TheKathan/baton

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

77/100

Supported Platforms

Claude Code
Claude Desktop
Cursor
OpenAI Codex

Tags

Our assessment of baton

baton scores 77/100 on our quality scale, 3677th of 4,589 Development & Engineering skills we index.

Its MCP Server is 6.5 KB long, split into 7 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
29/30
Structure
16/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 2 days ago, so baton is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

baton compared with similar skills

All 4 of these similar skills score higher than baton; compare them before choosing.

SkillScoreStarsUpdatedFormat
baton (this skill)by TheKathan7732d agoMCP Server
taste-skillby Leonxlnx100101.4k2d agoCLAUDE.md
Agent-Reachby Panniantong100101.2ktodayCLAUDE.md
headroomby headroomlabs-ai10077.6k1d agoCLAUDE.md
ai-job-searchby ai-job-search-dev10063.9k2d agoCLAUDE.md

Frequently asked questions

How do I install baton?
Run claude mcp add TheKathan -- npx -y github:TheKathan/baton. The install tabs above show the steps for each supported agent.
Which AI agents does baton work with?
It is written for Claude Code, Claude Desktop, Cursor and OpenAI Codex, as a MCP Server file. Other agents that read the same format can often use it too.
Is baton safe to use?
It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is baton still maintained?
The repository was last updated 2 days ago, so baton is actively maintained.
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/TheKathan/baton/main/assets/banner-dark.svg"><img alt="baton: hand-offs for AI agents that build software together" src="https://raw.githubusercontent.com/TheKathan/baton/main/assets/banner-light.svg" width="720"></picture></p> <p align="center"> <a href="https://github.com/TheKathan/baton/actions/workflows/test.yml"><img alt="tests" src="https://github.com/TheKathan/baton/actions/workflows/test.yml/badge.svg"></a> <a href="https://pypi.org/project/baton-handoff/"><img alt="PyPI" src="https://img.shields.io/pypi/v/baton-handoff"></a> <img alt="license" src="https://img.shields.io/github/license/TheKathan/baton"> <img alt="Python 3.11+" src="https://img.shields.io/badge/python-%E2%89%A5%203.11-3776AB"> <img alt="dependencies: none" src="https://img.shields.io/badge/dependencies-none-brightgreen"> </p>

Your AI agents can't say "done" while another agent's question is still open.

baton is a shared board in your repo where coding agents ask questions, agree on contracts and hand work over. It checks every entry when it is written and keeps the record in git, so you review it in the pull request. One CLI, plain files, no server, any agent that runs a shell.

Try it in one command: uvx baton-handoff demo

<p align="center"><img alt="Two real coding agents from different vendors share one baton board. Codex, as frontend, asks backend which route serves the health check (Q-001). Claude Code, as backend, runs baton handoff and is refused because Q-001 is unanswered; it reads the question, answers and closes it, and the hand-off goes through as H-002 without --force. A live board along the bottom shows each entry as it is written. Captioned; the agents' output is unchanged" src="https://raw.githubusercontent.com/TheKathan/baton/main/assets/agent-demo.gif" width="800"><br><sub>Two real agents, unscripted: Codex asks, Claude Code is refused until it answers, and the live board records it all.</sub></p>

Try it in 60 seconds

With baton installed, paste this into a terminal. It replays the recording in a scratch folder:

mkdir baton-try && cd baton-try && git init -q
baton init --roles frontend,backend,qa
baton post Q --as frontend --to backend --title "Which route serves health?" "For the status page."
baton handoff --as backend --phase S1-A --state DONE --to qa --title "S1-A backend" "Health endpoint done."
baton reply Q-001 --as backend --close "Use GET /api/health."
baton handoff --as backend --phase S1-A --state DONE --to qa --title "S1-A backend" "Health endpoint done."

The first hand-off is refused (answer first: baton show Q-001, then baton reply …) and nothing is written; after the reply it goes through as H-002. Or just run baton demo for a narrated replay on a temporary board; without installing anything, uvx baton-handoff demo.

Why baton

  • No half-done hand-offs. An agent can't report done while a question to it is still open.
  • Decisions don't get lost. Questions, contracts, decisions and blockers are typed entries in git, readable by humans and reviewable in a PR.
  • Cheap to read. Each agent sees only what is new for it: a few thousand tokens, not the whole board.
  • Any agent. Claude Code, Codex, Cursor or anything that runs a shell command.
  • Nothing to run. No server, no database, no dependencies.

On a real project, moving from a hand-written board to baton cut a sprint's board from up to ~139k tokens to ~10k and ended id collisions. See the evidence.

What it's for

| Use | What you get | |---|---| | Agents side by side on your machine | One board for every agent, even across git worktrees. | | One issue per sandbox | Each task gets its own board, which ships with the PR. Sandbox mode | | Your team's rules | Policies refuse or flag entries that skip what your team expects. Policies | | CI on GitHub | Actions that run a task's board around your agent and check it on the PR: setup-baton, baton-task, baton-check on the GitHub Marketplace. How to use them | | Keeping an eye on the work | A local kanban board and metrics: who is blocked, who has the baton, what is stale. Commands |

How it works

<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/TheKathan/baton/main/assets/how-it-works-animated-dark.svg"><img alt="How baton works, as a conversation where every message is a typed entry in an append-only log: frontend asks backend which route serves the health check (Q-001); backend's hand-off to qa is refused and nothing is appended, because Q-001 is unanswered; backend answers, and the hand-off goes through as H-002, so qa takes over" src="https://raw.githubusercontent.com/TheKathan/baton/main/assets/how-it-works-animated-light.svg" width="720"></picture></p>

Agents run baton. Each write appends one event to a log in .baton/ under a lock, and readable views are generated from it. More on how it works.

Install

baton is on PyPI as baton-handoff and installs the baton command. It needs Python 3.11 or newer on macOS or Linux; macOS ships Python 3.9, so uv is the easiest route: it fetches a recent Python for you.

uv tool install baton-handoff

pipx install baton-handoff works too, and the getting started guide shows it, then how to set up your agents.

Documentation

Contribute

Bugs, questions and ideas go to issues, and pull requests are welcome: see CONTRIBUTING and the code of conduct. If baton helps your agents, a star helps others find it.

CHANGELOG · SECURITY · LICENSE (MIT)

Related Skills

View on GitHub
GitHub Stars3
CategoryDevelopment
Updated2d ago
Forks0

Languages

Python

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low