Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use pi-messenger for multi-agent coordination and Crew task orchestration. Covers joining the mesh, planning from PRDs, working on tasks, file reservations, and agent messaging. Load this skill when using pi_messenger or building with Crew.
.claude/skills/dicklesworthstone-pi-messenger-crew/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -59% | 0% |
| case-20 | ✓→✓ | = Same ✓ | 57% | 0% |
| case-21 | ✓→✓ | = Same ✓ | 12% | 0% |
| case-22 | ✓→✓ | = Same ✓ | 17% | 0% |
Use pi-messenger for multi-agent coordination and Crew task orchestration.
typescriptpi_messenger({ action: "join" })
typescriptpi_messenger({ action: "status" }) pi_messenger({ action: "list" }) // See other agents
typescriptpi_messenger({ action: "crew.install" }) pi_messenger({ action: "crew.agents" }) // Verify 5 agents
typescript// Auto-discover PRD.md in current directory pi_messenger({ action: "plan" }) // Or specify path pi_messenger({ action: "plan", prd: "path/to/PRD.md" })
typescript// Single wave (runs ready tasks once) pi_messenger({ action: "work" }) // Autonomous (keeps running until done/blocked) pi_messenger({ action: "work", autonomous: true })
typescriptpi_messenger({ action: "task.list" }) pi_messenger({ action: "task.ready" }) // Tasks with no pending deps pi_messenger({ action: "task.show", id: "task-1" }) pi_messenger({ action: "task.start", id: "task-1" }) pi_messenger({ action: "task.done", id: "task-1", summary: "What was done" }) pi_messenger({ action: "task.block", id: "task-1", reason: "Why blocked" }) pi_messenger({ action: "task.unblock", id: "task-1" }) pi_messenger({ action: "task.reset", id: "task-1" }) pi_messenger({ action: "task.reset", id: "task-1", cascade: true }) // Reset dependents too
typescript// Review a task implementation pi_messenger({ action: "review", target: "task-1" }) // Review the overall plan pi_messenger({ action: "review", target: "plan", type: "plan" })
typescript// Reserve files before editing pi_messenger({ action: "reserve", paths: ["src/index.ts", "src/types.ts"], reason: "Working on core" }) // Release when done pi_messenger({ action: "release" })
typescript// Rename yourself pi_messenger({ action: "rename", name: "MyAgentName" }) // Send message to specific agent pi_messenger({ action: "send", to: "OtherAgent", message: "Hello!" }) // Broadcast to all pi_messenger({ action: "send", broadcast: true, message: "Announcement" })
typescript// 1. Join pi_messenger({ action: "join" }) // 2. Plan (spawns planner agent) pi_messenger({ action: "plan" }) // 3. Check tasks pi_messenger({ action: "task.list" }) // 4. Work pi_messenger({ action: "work", autonomous: true }) // 5. Status pi_messenger({ action: "status" })
Crew stores data in .pi/messenger/crew/:
.pi/messenger/crew/
├── config.json # Project config (concurrency, etc.)
├── plan.json # Plan metadata
├── plan.md # Planner output
├── tasks/
│ ├── task-1.json # Task metadata
│ ├── task-1.md # Task spec
│ └── ...
├── blocks/
│ └── task-N.md # Block context
└── artifacts/ # Debug artifactsCreate .pi/messenger/crew/config.json:
json{ "concurrency": { "workers": 3 // Max parallel workers (default: 2) }, "planning": { "maxPasses": 3 // Max planner passes before accepting last output } }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→fail | 6,904 | 5,501 | -20% | 1 | 1 | 0% | 1,066 | 1,318 | +24% | 0 | 0 | — |
case-01 | fail→fail | 20,828 | 5,446 | -74% | 1 | 1 | 0% | 3,214 | 1,372 | -57% | 0 | 0 | — |
case-02 | fail→fail | 6,960 | 10,034 | +44% | 1 | 1 | 0% | 1,149 | 1,898 | +65% | 0 | 0 | — |
case-03 | fail→fail | 18,178 | 9,596 | -47% | 1 | 1 | 0% | 1,580 | 1,553 | -2% | 0 | 0 | — |
case-04 | fail→fail | 16,094 | 4,083 | -75% | 1 | 1 | 0% | 2,641 | 1,177 | -55% | 0 | 0 | — |
case-05 | fail→fail | 4,876 | 7,014 | +44% | 1 | 1 | 0% | 315 | 1,536 | +388% | 0 | 0 | — |
case-06 | fail→fail | 4,632 | 5,419 | +17% | 1 | 1 | 0% | 695 | 1,352 | +95% | 0 | 0 | — |
case-07 | fail→fail | 5,386 | 5,952 | +11% | 1 | 1 | 0% | 764 | 1,353 | +77% | 0 | 0 | — |
case-08 | fail→fail | 7,659 | 7,025 | -8% | 1 | 1 | 0% | 590 | 1,333 | +126% | 0 | 0 | — |
case-10 | fail→fail | 4,376 | 6,779 | +55% | 1 | 1 | 0% | 701 | 1,461 | +108% | 0 | 0 | — |
case-11 | fail→fail | 14,966 | 6,988 | -53% | 1 | 1 | 0% | 2,303 | 1,282 | -44% | 0 | 0 | — |
case-12 | fail→fail | 2,736 | 6,708 | +145% | 1 | 1 | 0% | 279 | 1,413 | +406% | 0 | 0 | — |
case-13 | fail→fail | 4,071 | 5,833 | +43% | 1 | 1 | 0% | 567 | 1,286 | +127% | 0 | 0 | — |
case-14 | fail→fail | 3,264 | 7,550 | +131% | 1 | 1 | 0% | 458 | 1,329 | +190% | 0 | 0 | — |
case-15 | fail→fail | 7,327 | 7,660 | +5% | 1 | 1 | 0% | 1,351 | 1,321 | -2% | 0 | 0 | — |
case-16 | fail→fail | 9,397 | 6,123 | -35% | 1 | 1 | 0% | 1,548 | 1,368 | -12% | 0 | 0 | — |
case-17 | fail→fail | 5,786 | 4,854 | -16% | 1 | 1 | 0% | 855 | 1,247 | +46% | 0 | 0 | — |
case-18 | fail→pass | 15,640 | 3,756 | -76% | 1 | 1 | 0% | 2,828 | 1,666 | -41% | 0 | 0 | — |
case-19 | fail→pass | 20,366 | 2,466 | -88% | 1 | 1 | 0% | 3,362 | 1,376 | -59% | 0 | 0 | — |
case-20 | pass→pass | 9,856 | 8,198 | -17% | 1 | 1 | 0% | 1,550 | 2,431 | +57% | 0 | 0 | — |
case-21 | pass→pass | 11,837 | 7,769 | -34% | 1 | 1 | 0% | 1,964 | 2,192 | +12% | 0 | 0 | — |
case-22 | pass→pass | 18,607 | 12,435 | -33% | 1 | 1 | 0% | 2,425 | 2,839 | +17% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 6 counted toward the lift figure. The other 16 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 6 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.