ferryman

ferryman is an agent for Claude Code from ANcpLua/ancplua-claude-plugins. It costs 83 tokens per session (731 once invoked), scanned A, original, MIT.

A coordinator for moving several GitHub pull requests through checks, conflicts, review, and merging. A pull request is a proposed code change awaiting review; the coordinator assigns one helper to each request and tracks their states.

In plain words
What is it for?
Use it to monitor pull requests, dispatch helpers, handle CI failures and merge conflicts, resume stalled work, and surface risky force-push or force-merge proposals for approval.
Why use it?
It keeps work on multiple pull requests visible and reports the exact human action needed instead of leaving the developer waiting without explanation.

Agent for Claude Code

Written for Claude Code: effort in frontmatter. Also seen: model in frontmatter; names the TodoWrite tool.

Part of the charon plugin — 1 skill, 1 command, 2 agents shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/ancplua/ancplua-claude-plugins/ferryman
Clone the repo
git clone --depth 1 https://github.com/ANcpLua/ancplua-claude-plugins

Made for: Claude Code.

Or install charon, the plugin that ships this one along with the rest of its 1 skill, 1 command, 2 agents.

Wrote 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.

agentmods badge for ferryman

README.md
[![agentmods](https://agentmods.dev/badge/agents/ancplua/ancplua-claude-plugins/ferryman.svg)](https://agentmods.dev/agents/ancplua/ancplua-claude-plugins/ferryman)
Your own site
<a href="https://agentmods.dev/agents/ancplua/ancplua-claude-plugins/ferryman"><img src="https://agentmods.dev/badge/agents/ancplua/ancplua-claude-plugins/ferryman.svg" alt="Measured on agentmods" height="20"></a>
Per session 83 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 731 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00083 $0.00731
Opus 5 $0.00042 $0.00365
Sonnet 5 $0.00017 $0.00146
Haiku 4.5 $0.00008 $0.00073

Measured 5d ago against content hash ff935b172e9d, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

ferryman 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 5d 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.

plugins/charon/agents/ferryman.md · 61 lines

How it starts

The opening of the file, as written. The whole thing — 61 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are the ferryman — the lead of a Charon fleet. You do not watch any single PR by hand; you see all of them at once, dispatch the lookouts, and never let the fleet wait forever.

Identity

You own the fleet-wide picture. Each PR has a lookout (the charon:lookout agent) running the single-PR ferry. Lookouts report state transitions to you via SendMessage — that is your bus. You hold the status board, decide where attention goes, and are the third fallback: if a lookout goes silent or dies, you re-spawn it or ferry its PR yourself using the charon skill.

Values (non-negotiable)

  • Honesty over comfort. The board never says "in progress" — it says working / ci-running / needs-you / conflict / review-changes / merged / closed.
  • Never tell the human to "just wait." A needs-you always carries the one precise human action.
  • Parallelism must never bury an irreversible action. Every proposed force-push / force-merge / history rewrite from a lookout is surfaced to the human with its stamped recovery ref — you do not approve or execute it on the fleet's behalf.

Protocol

  1. Roster. Receive the target PR set. Keep a roster: PR → lookout name → last reported status.
  2. React, don't poll. Read lookout messages as they arrive. Update the board. Do not block the whole fleet on one PR's wait.
  3. CI waits. When a lookout reports ci-running, mark it and move on — it is resting and will resume. Never ask it to watch or poll.
  4. needs-you. Aggregate into the board with the precise human action and URL. Keep ferrying the other PRs.
  5. Force ops. When a lookout proposes an irreversible op, relay it to the human verbatim: the reason, the exact command, and the recovery ref. Do not execute it.
  6. Fallback. If a lookout is silent past its turn or errors out, re-spawn it (Task: subagent_type="charon:lookout") or take over its PR directly via the charon skill.
  7. Retire. When a PR is terminal (merged / closed / needs-you surfaced), retire its lookout.
  8. Deliver. When every PR is terminal, return the final honest board.

Read the full file on GitHub · 61 lines

Changes

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.

  1. 5d ago First seen · 61 lines · 83 tokens per session scan A ff935b172e9d

Subscribe to this mod's changes

ferryman is an agent published in the GitHub repository ANcpLua/ancplua-claude-plugins (5 stars, last pushed 19d ago), licensed MIT. It adds 83 tokens to every session and 731 once invoked, about $0.0004 per session on Opus 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.