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.
npx agentmods add skills/vmobifystudio/app-dev-team/team-protocolnpx skills add vmobifystudio/app-dev-team --skill team-protocolgit clone --depth 1 https://github.com/vmobifystudio/app-dev-teamWrote 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.
[](https://agentmods.dev/skills/vmobifystudio/app-dev-team/team-protocol)<a href="https://agentmods.dev/skills/vmobifystudio/app-dev-team/team-protocol"><img src="https://agentmods.dev/badge/skills/vmobifystudio/app-dev-team/team-protocol.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00083 | $0.06314 |
| Opus 5 | $0.00042 | $0.03157 |
| Sonnet 5 | $0.00017 | $0.01263 |
| Haiku 4.5 | $0.00008 | $0.00631 |
Grade A, and why
team-protocol 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 today.
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.
How it starts
The opening of the file, as written. The whole thing — 427 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Team protocol
A team is not a set of roles. It is a set of roles plus an agreed way to talk.
Without one, this happens: an IC hits an ambiguity, writes BLOCKED: needs tech-lead, and exits.
The orchestrator reads it, spawns tech-lead with a paraphrase, gets an answer, paraphrases it
back, and re-spawns the IC from cold. Three context rebuilds, two lossy translations, and the
original question is now a summary of a summary.
The channel: docs/team/messages.jsonl
One append-only event log for the whole team, schema studio-event-schema/v1. It works on a vanilla
install, survives an agent dying mid-run, and gives a restarted agent its history back.
docs/team/messages.md is the generated human view of that log — the same relationship
docs/31-board.md has to docs/31-board-events.jsonl. Never hand-edit it. A hand edit is
overwritten by the next render and is invisible to every rule.
{"id":"MSG-0421","v":1,"ts":"2026-07-29T10:12Z","project":"tipjar","thread":"THR-APP-004",
"ticket":"APP-004","kind":"question","from":"android-developer","to":["tech-lead"],
"priority":"material","blocking":false,"requires_response":true,"expires_after_round":6,
"requirements":["REQ-031"],"summary":"Which error type for a failed toggle?",
"body":"Spec names TodoError but the repo throws IOException. Which wins?","status":"open"}
Kinds: question · answer · handoff · blocker · fyi · escalation · decision
answer and decision each close exactly one open question on that ticket — pairing is by
count, oldest first. So do not use decision for a note that decides nothing: it will silently
consume a real open question. Observed live — a decision correcting a tooling mistake made a
genuinely unanswered product question look resolved, and the ticket had already shipped on the
assumption underneath it. Use fyi for anything that is not an answer.
Rules:
- Append, never edit. Correct a wrong record by appending a later one.
--summaryis one line and must stand alone. It is what the orchestrator and the user read.- Every message names a ticket — or the ASCII hyphen
-, and only-, for project-wide chatter:--ticket -. This said—(an em dash), whichteam-message.shdoes not recognise as the sentinel: it treats it as an ordinary ticket ID, so every project-wide broadcast joined one pseudo-thread and the third one was refused by the anti-ping-pong pair guard. The guard is skipped for-precisely because broadcast chatter carries no thread. A message with no ticket at all cannot be routed or closed. - A
questionis not resolved until anansweror adecisionon the same ticket exists.board-doctorreads the channel (as a sibling of the board) and reportsquestion_unanswered— and says explicitly when the ticket has already reachedqa/done, i.e. shipped on an unconfirmed assumption.
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.
- today First seen · 427 lines · 83 tokens per session scan A 617b80fcc37e
team-protocol is a skill published in the GitHub repository vmobifystudio/app-dev-team (4 stars, last pushed 24d ago), licensed MIT. It adds 83 tokens to every session and 6,314 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-09-03.
Other skills, from other repositories
prd
Generates a Product Requirements Document from a natural language app description. Asks clarifying questions, researches similar apps, defines scope, stack, architecture, and produces a structured PRD that Archon can decompose into a campaign.
deslop
The optimization pass, defined - delete before you add, one smell class per pass, behaviour pinned by a test that ran BEFORE the edit. Lints a SKILL.md and prose by the same instinct. Use for the per-story optimization pass or when code has grown noisy without growing capable.
execute-task
Implement one task (or a cohesion bundle) from a signed-off spec (Ready or Active): recompute the execution freshness gate, write the verifying test first, implement to green, run the project's full CI with adaptive retry, converge via the configured reviewsequence (default /polish --nested), then open a draft PR…
builder
Detect a project's stack and recommend or apply the universal mechanical quality guards from planwright's core catalog (formatter, linters, type-checker, test runner, secret scan, commit hooks, CI gate), plus the growable breadth dimensions. Escalates stake-bearing decisions (auth, data modeling, security posture…
spec-walkthrough
Render a spec bundle (or a chosen slice) into a plain-language, didactic comprehension artifact a human reads and judges for themselves: an unaided cold read before kickoff, re-orientation mid-execution, or onboarding to a finished or abandoned spec. Standalone and strictly read-only: it renders any status, never…
drain
Run the on-demand drain pass over every spec bundle's Gate deferral entries: evaluate structured GATE(when:) conditions, surface date and free-text gates, report malformed ones, inventory each live bundle's [manual] test-spec entries, and surface the observations log's unmined state. Read-only; nothing is…