Yarnt

The /yarnt agent skill

A queue is not a workflow. This is the loop the tools are meant to drive.

The MCP server gives an agent the tools to work your board. It does not tell the agent what to do with them — an agent handed fourteen tools and no shape will cherry-pick, re-litigate, and stop early. /yarnt is that missing half: a skill for Claude Code that turns "you have tools" into "work your queue until it is empty, ship it, and halt."

What it does, once you invoke it:

Setup

1. Connect the MCP server

In Claude Code, add the server and authorize it. Full details on the MCP page.

claude mcp add --transport http yarnt https://mcp.getyarnt.com

The consent screen asks you to pick or create a robot — a least-privilege workspace member the agent acts as. Create one named for the agent (“Claude” does nicely). Robots are exempt from the in-flight cap and are not paid seats.

2. Install the skill

mkdir -p ~/.claude/skills/yarnt
curl -o ~/.claude/skills/yarnt/SKILL.md https://getyarnt.com/docs/yarnt-skill.md

Or read it first: yarnt-skill.md. It is a plain Markdown file — edit it to match how your team ships. The deploy step in particular is a placeholder for your own runbook.

3. Tell the repo which project it is

Commit a .yarnt file at the repo root naming its Yarnt project:

project: Tell Me a Penguin

Which project a repo belongs to is a fact about the repo, like its remote — so it belongs in the repo. Without the file the agent guesses from the directory name and asks you when the guess is ambiguous, then writes the file itself. Committing it also gives a human somewhere to override a bad guess, and lets a coordinator map projects to checkouts by globbing */.yarnt.

4. Assign it work

The agent only ever picks up tickets assigned to its robot. Assign them in the app, or over the tools:

whoami                     -> 470ed8e7-...  Claude (integration)
update_ticket id=<ticket> assignee=470ed8e7-...

5. Run it

/yarnt

With an empty queue it says so and stops. That is the whole contract: it ends because there is no work left, not because a timer said so.

The robot works only its own queue. Tickets on your plate, or on nobody's, are never picked up — no matter how relevant they look. Assigning is the handoff.

Why it is shaped this way

RuleWhy
Work the whole batch before re-checking Left free to choose, an agent takes the easy tickets and leaves the queue's real work untouched.
Read the body, not the title list_tickets shows one line. The spec is in the description and comments; designing from a title invents a different feature.
Blocked work escalates, never lingers A ticket left in doing burns a WIP slot and makes every later run re-dispatch an agent onto the same dead ticket. Comment, unstart_ticket, reassign — and it is off the robot's queue by construction.
Comment before unstarting unstart_ticket clears the blocked flag and its reason, so the comment is the only durable record of why the agent gave up.
Halt, don't poll An agent that waits for work burns tokens watching an empty queue. Re-invoke it when you have assigned something.

Other agents

The skill is written for Claude Code, whose skills are Markdown files with a name and a description. Nothing in the loop is Claude-specific — any agent that can call the MCP tools can follow the same instructions as a system prompt.


Questions about agents on Yarnt: help@getyarnt.com.