pigeon
Skill0 starsChanged 52 days agoApache-2.0View on GitHub
Runs one feature end-to-end through ten fixed personas in a single continuous session, chained via handoff documents that each persona writes, naming the next persona to pick it up. Several personas invoke an existing pipeline skill (plan-feature, execute-plan, test-feature, kevin, security-review, simplify, cleanup-crew) as their substantive step rather than reinventing it. Hard-pauses at the business aligner's cost/timeline checkpoint, any backward hop, and the cybersecurity expert's findings. Triggered by /pigeon.
In this repository9 other files it gives its agents.
- cleanup-crewSkill
- execute-planSkill
- haiku-splitSkill
- kevinSkill
- map-codebaseSkill
- plan-featureSkill
- roadmap-loopSkill
- test-featureSkill
- ui-ux-pro-maxSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 2 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
Run folder: .claude/pigeon/<Name>/.
- Very specific: line 68
Read the new handoff's Next: field.
- Very specific: line 77
Loop-safety (bounce cap): before continuing, count consecutive hops in RUN_LOG.md that landed back on the same persona-id without an …
- Very specific: line 99
When a handoff's Next: is "none — run complete" (only ever written by ship): telegraph one line that cleanup is starting (not a pause — …
- Distinctive: line 106
Never spawn a subagent, anywhere in this skill.
- Distinctive: line 107
Every persona's model tier is inherited from whichever skill it invokes.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
pigeon
Constraint — read this first
No persona invoked by this skill ever spawns a subagent — see
~/.claude/skills/_shared/pipeline-contract.md "No subagents, anywhere". Every persona switch is
this session adopting new operating instructions and writing/reading a file, never a dispatch.
This skill reads _shared/pipeline-contract.md for repo resolution, <Name> derivation, the
telegraph convention and cost discipline, and _shared/complexity-scoring.md is never consulted
directly — every model-tier gate below belongs to whichever skill a persona invokes.
Usage:
/pigeon "<task description>" [--name <Name>]
/pigeon --resume <Name>
0 — Resolve
- Resolve the target repo by walking up to the nearest
.git, perpipeline-contract.md"Repo resolution". If there is none, say so plainly and stop. - Derive
<Name>exactly perpipeline-contract.md"Name derivation" (ADO id, or a kebab-case slug of the task description);--nameoverrides it. - Run folder:
.claude/pigeon/<Name>/. Create it if absent. - Fresh start (no
--resume): current persona =task-researcher, input = the raw task description.--resume <Name>: readRUN_LOG.md's last row and the highest-numbered handoff file in the run folder; current persona = that handoff'sNext:persona.
1 — Persona registry
| # | Persona-id | File | Role |
| 1 | task-researcher | personas/01-task-researcher.md | entry point; defines the problem |
| 2 | business-aligner | personas/02-business-aligner.md | locates it, runs plan-feature, cost/timeline checkpoint |
| 3 | ui-designer | personas/03-ui-designer.md | designs new UI — conditional, skipped when no frontend surface |
| 4 | software-developer | personas/04-software-developer.md | runs execute-plan |
| 5 | test-engineer | personas/05-test-engineer.md | runs test-feature, kevin, Docker load-test verification |
| 6 | cybersecurity-expert | personas/06-cybersecurity-expert.md | runs security-review |
| 7 | refactor-developer | personas/07-refactor-developer.md | runs simplify |
| 8 | infrastructure-specialist | personas/08-infrastructure-specialist.md | lists CI/CD requirements, never executes them |
| 9 | release-notes-writer | personas/09-release-notes-writer.md | client-facing summary |
| 10 | ship | personas/10-ship.md | runs cleanup-crew; terminal |
2 — The hop loop
Repeat until a handoff's Next: is "none — run complete":
- Telegraph one line naming the persona about to run (
pipeline-contract.md's telegraph convention). - Load
personas/<NN>-<id>.mdfor the current persona and adopt its instructions exactly. - Give it the latest handoff doc (or the raw task description, on hop 1) plus whatever durable artifact paths that handoff points to.
- Execute it. It produces its substantive output and writes a new handoff file in the run
folder, numbered the next integer in call order (never reusing or overwriting a number),
using
templates/handoff.md. Append one row toRUN_LOG.md. - Read the new handoff's
Next:field."none — run complete"→ exit the loop, go to §5 (cleanup).- Otherwise, classify the hop: forward if the named persona sits strictly later in the §1 table than the current one, backward otherwise (same or earlier).
- Hard pause — stop and show the user the handoff before continuing, when any of:
- the hop is backward;
- the current persona is
business-aligner(its checkpoint always pauses, even forward); - the current persona is
cybersecurity-expert(always pauses, regardless of direction). On anything but "continue", stop and leave the run folder as-is.
- Loop-safety (bounce cap): before continuing, count consecutive hops in
RUN_LOG.mdthat landed back on the same persona-id without an intervening forward hop past it. If this exceeds 3, pause and ask the user how to proceed instead of continuing automatically — do not cycle indefinitely. - Set current persona = the named
Next:persona and go to step 1.
3 — Conditional skip: ui-designer
The skip decision is business-aligner's own (persona 2's file), not a second check here: it
reads the plan's File Impact Manifest (from the plan-feature run it just did) and routes Next:
straight to software-developer when no touched file matches a recognizable UI path/extension,
noting the skip in its Reason: line. pigeon adds no separate detection logic.
4 — --resume
A resumed hop is confirmed exactly like a fresh backward hop (§2 step 6) when the resume target
sits at or before where the run paused — never silently resumed forward. The bounce cap (§2 step
7) counts across a resume exactly as it does within one continuous run; RUN_LOG.md is the
record, not session memory.
5 — Cleanup on completion
When a handoff's Next: is "none — run complete" (only ever written by ship): telegraph one
line that cleanup is starting (not a pause — this is tidying the run's own already-done scratch
files, not a forward-progress decision), then delete every numbered handoff file in the run
folder, keeping only RUN_LOG.md.
Rules
- Never spawn a subagent, anywhere in this skill.
- Every persona's model tier is inherited from whichever skill it invokes; this skill adds no gate of its own.
- Handoff numbering is call order, never persona order; a file is never overwritten.
- The test engineer's Docker requirement (persona 5) is enforced in that persona's own file, not here — this skill does not pre-check for Docker.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

