Creates, converts, or modifies Teamskills — the multi-role extension of the Skills standard (specialized roles + workflow + bind constraints). Use when the user wants to author a multi-role agent team, convert a single-agent skill into one, or refactor an existing team. Do NOT use for single-agent Skills — use create-skill instead.
66
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Authoring tool for Teamskills — the multi-role extension of the Anthropic Skills standard. Encodes the Teamskill spec into a repeatable workflow with templates, decision trees, and an automated validator.
This skill has three modes. Pick one based on the user's request, then follow the matching pipeline:
| Mode | Trigger | Output |
|---|---|---|
| CREATE | User has a fresh need ("build a team for X") | New <teamskill-name>/ directory with the full 5-file set |
| CONVERT | User points at an existing single-agent skill | Transformed <teamskill-name>/ directory + a delta report explaining what the team adds |
| MODIFY | User edits an existing Teamskill (add/remove role, change workflow, adjust bind, fix validator errors) | Updated files in the existing <teamskill-name>/ directory |
All three modes share Stages 2–6. CONVERT differs only in Stage 1 (decomposition replaces fresh design). MODIFY skips Stage 0 and Stage 1 (justification and pattern are already settled — re-open them only if the change alters the pattern, e.g. adding a parallel role to a pipeline team), touches only the affected stages in 2–5, and MUST run Stage 6 (validator) — this is the most-skipped, most-critical step in MODIFY mode. See the MODIFY impact matrix for which stages to re-run per change type.
A Teamskill is only justified when at least one of these is true:
If none apply → STOP. Recommend a single-agent skill instead. Teamskills cost more tokens, more wall-clock, and more authoring overhead. Do not build one out of novelty.
Ask the user: "Which of these failure modes does a single agent hit on this task today?" If they cannot answer, the Teamskill is premature.
Pick the architectural pattern (A / B / C / mixed) based on Stage 0 justification. The detailed decision tree with worked examples is in reference/pattern-selection.md. Quick reference:
| Pattern | When | Role count | Roles see each other? |
|---|---|---|---|
| A. Adversarial / Cross-check | Justification #1 (blind spot) | 2–4 | No — isolation is the value |
| B. Parallel decomposition | Justification #2 (independent sub-tasks) | 2–N (variable) | No until integration |
| C. Specialization pipeline | Justification #3 (sequential expert stages) | 3–5 | Each stage sees prior stage output |
| Mixed (A+B / B+C / C+A) | Multiple justifications stack | 4–6 | Pattern-by-stage |
| Debate (Mixed B+A+C) | #1 + #2 (blind spot + parallel breadth) | 3–N+1 | Phase-scoped: isolated → mutual |
Read reference/pattern-selection.md before committing — picking the wrong pattern is the most common authoring error.
Read the source SKILL.md and identify natural role boundaries. Use this checklist:
Full conversion methodology: reference/conversion-guide.md.
Default role counts by pattern (soft heuristics, not hard limits — see reference/pattern-selection.md Q4):
count: [min, max] for elastic fan-out)If you need more, prefer splitting into multiple sequential Teamskills over one mega-team.
For each role, write 5 mandatory sections:
## Identity — first line MUST be a 1-line motto that crystallizes the POV (e.g., "I am trying to break this code in production."). This is the #1 anti-convergence mechanism. 0–2 paragraphs of context after.## Success Criteria — bullet list + a "Focus areas" line.## Boundary — explicit **Forbidden**: (prevent role overlap) + **Mandatory**: (prevent laziness).## Output Schema — Markdown or JSON template.## Inline Persona for Teammate — full pasteable prompt (most adopting agents do NOT auto-load role files; the Leader must inline this into the dispatch prompt).Detailed authoring guide with examples: reference/role-design.md.
Anti-overlap test: write each role's 1-line motto, then ask "could one role's deliverable substitute for another's?" If yes, the boundaries are blurred — redesign before proceeding.
Output: write each role as roles/<id>.md using templates/role.md.template as the starting skeleton. Delete the <!-- TEMPLATE NOTES --> block before finalizing.
Auto-matching: assign locally available skills and tools
After all role files are written, automatically match each role with locally available skills and tools. This is a silent sub-step — no user interaction needed (already-installed skills have zero adoption cost).
Scan local skills — use whatever mechanism the host framework provides. Common approaches (non-exhaustive):
available_skills list at startup — this is the most reliable source.**/SKILL.md under known skill directories.npx skills list -g), use it.Scan local tools — probe CLI tools available in the current environment (e.g., gh, python, rg, jq, curl, docker). Use where (Windows) or which (Unix).
Match and assign — for each role, read its purpose, Success Criteria, and Boundary. Evaluate whether any discovered skill/tool would materially help fulfil the role's purpose (a match = removing it would force the role into a significantly weaker operating mode). Assign matches to the correct field with source: local in dependencies.yaml.
Classification rule — do NOT mix skills and tools:
roles[].skills → Skills only: items that have a SKILL.md (agent skills providing instructions/workflows). Examples: web-research, code-review, canvas-design.roles[].tools → Tools only: CLI executables, MCP servers, or shell commands. Examples: gh, python, rg, docker, curl.SKILL.md? → skill. Is it invoked via shell/MCP? → tool.workflow.md (mermaid + steps + gates)Author workflow.md using templates/workflow.md.template as the starting skeleton. Three mandatory sections:
## Overview — mermaid graph LR/TD showing Leader entry, parallel/sequential teammate nodes, decision diamonds (degraded mode branches), integration node, output node. Mermaid is the primary expression difference vs single-agent skills. Debate pattern: MUST keep the inter-member communication preference note from the template — do NOT delete it when replacing the mermaid placeholder.## Detailed Steps — numbered steps; each step contains: executor / input / output / serial-or-parallel / quality gate (what to do if this step's output fails). The last step contains the final report format template.## Acceptance Criteria — judgement of a successful single run.Quality gates are the contract surface between stages — design them per reference/role-design.md § Gate Design.
bind.md (numbers + behavior + failure)Author bind.md using templates/bind.md.template as the starting skeleton. Three mandatory sections:
## Resource Constraints — table with at least: max_parallel_teammates, total_wall_clock_budget, total_token_budget. Add per-role limits if asymmetric.## Behavioral Constraints — team-level rules (Leader does not write content / teammates cannot see each other's output / Leader does not resolve contradictions / etc.). Distinct from per-role Boundary. Debate pattern MUST include: phase-scoped visibility rules (which rounds are isolated, which are mutually visible) AND the inter-member communication preference order (direct peer-to-peer > shared blackboard > Leader-relay).## Failure Handling — must cover (a) teammate failure (timeout, malformed output, retry policy, how missing outputs appear in the report) and (b) input-overscale degradation (e.g., diff > 2000 LOC → degrade to single-role mode).Heuristic: if a constraint has a number or an exception path, it belongs in bind.md. If it's the main flow, it belongs in workflow.md.
dependencies.yaml + SKILL.mdThe remaining two files. Write them last because they reference content produced in Stages 2–4.
5a. dependencies.yaml — use templates/dependencies.yaml.template. This file codifies the auto-matching results from Stage 2, not a blank-slate design. Both skills: and tools: segments are mandatory — write [] if empty, but only after the auto-matching scan confirms no matches (signals "checked, confirmed none" — different from "never looked"). Each roles[].skills and roles[].tools declared in SKILL.md frontmatter MUST appear here (the validator enforces this).
5b. SKILL.md — use templates/SKILL.md.template. This is the entry point that ties together all other files. Body MUST contain ## Workflow + ## Roles + ## Files.
Naming rules (enforced by the validator):
name field in SKILL.md frontmatter (kebab-case, ends with -team by convention).roles/<id>.md filename MUST equal the corresponding roles[].id in SKILL.md frontmatter.Description discipline (enforced by the validator — these are the most-violated rules):
Triggers: line.">200 LOC") → those belong in bind.md.purpose: field has a ≤150 char HARD CAP. Detail belongs in roles/<id>.md, not in SKILL.md frontmatter.Calibration benchmark: aim for ≤ 500 chars (platform hard cap: 1024). Teamskills are inherently more complex than single-agent skills — multi-role composition, workflow scope, and trigger scenarios may need more words. Stay concise, but don't sacrifice clarity for arbitrary brevity.
Run the automated validator:
python scripts/validate_teamskill.py path/to/<teamskill-name>/The validator checks:
roles[].id, no orphan role filesname / description / version / kind: team-skill / roles[] present; each role has id + purpose; name == directory name## Workflow / ## Roles / ## Files; each roles/*.md has all 5 mandatory sections; workflow.md has ## Overview / ## Detailed Steps / ## Acceptance Criteria (and at least one mermaid block); bind.md has all 3 mandatory sectionsroles[].skills and roles[].tools in SKILL.md appears in dependencies.yaml; every ## Identity in roles starts with a > *"..."* motto line## Inline Persona for Teammate present in each role file; dependencies.yaml skills/tools segments present even if emptyExit code 0 = compliant. Non-zero exit prints the failing checks with file:line references.
The manual checklist (for design-time judgment calls the script cannot automate, like "is this content really redundant?") lives in reference/compliance-checklist.md. Read it before declaring the Teamskill done.
After Stage 6 passes, present a creation summary to the user. This is the natural point to assess capability coverage and offer community enrichment — the Teamskill is already complete and functional, so community search is a zero-risk enhancement.
Summary format:
Teamskill: <name>
Pattern: <A | B | C | Mixed>
Roles: <count> (<list of role ids>)
Validator: PASSPer-role capability coverage:
| Role | Assigned skills/tools | Recommend community search? |
|---|---|---|
<role-id> | <matched skills/tools, or "none"> | <Yes / No — with reason> |
Recommendation logic — default is to recommend:
For each role, evaluate whether to recommend community skill search:
web-research or curl) but lack domain-specialized skills. A generic skill is NOT a substitute for domain expertise — see the anti-pattern below.Design intent: the agent is structurally biased toward skipping community search. Two common rationalizations:
web-research) → covered" — equally wrong and harder to catch. A generic information-retrieval skill does NOT substitute for a domain-specific operational skill. web-research can search the web; a Taobao shopping skill knows store tiers, coupon stacking rules, platform-specific risk signals, and API-level price tracking — capabilities that no amount of generic search can replicate.The default must be recommend, with the burden of proof on not recommending. The test is: "Does a domain-specific community skill exist that would give this role capabilities beyond what its current generic skills provide?" If plausible → recommend.
Anti-pattern: "通用即覆盖" (generic = covered)
In
ecommerce-compare-debate-team, three platform shopper roles (taobao-shopper,pinduoduo-shopper,jingdong-shopper) each hadweb-researchassigned. The agent concluded "already covered — no community search needed." This is wrong:web-researchis general-purpose retrieval; it knows nothing about Taobao store tiers, PDD subsidy eligibility, or JD self-operated logistics. Community registries carry platform-specific shopping and buyer-agent skills that fill exactly this gap.Rule: if a role's identity is tied to a specific platform or professional domain, a generic utility skill does NOT count as coverage — always recommend community search for domain-specific skills.
High-signal scenarios — MUST recommend (non-exhaustive):
web-research are already assigned.If any role hits these patterns and no domain-specific local skill covers it, recommend "Yes" — do not rationalize it away with "the role can still produce text instructions" or "generic retrieval already handles it."
Community enrichment prompt:
If one or more roles are marked "Recommend: Yes", ask:
"The following roles have no domain-specific skills and could benefit from community skill enhancement: [table: Role | Current skills (if any) | What domain-specific skill would help] Shall I search community skill registries? The Teamskill is already complete — this is an optional enhancement. (Y/N)"
If user says Yes:
Read reference/community-search.md and follow its full procedure. Quick summary:
purpose, Success Criteria, and Output Schema — generate 2–3 keyword variants per role (see §1 Keyword Derivation).npx skills find '<query>' (skills.sh — keyword matching, install counts)skillnet search '<query>' --mode vector (SkillNet — semantic vector search, quality evaluation)roles[].skills in SKILL.md frontmatter + dependencies.yaml with source: <community-url>.python scripts/validate_teamskill.py to confirm consistency.If user says No → done. The Teamskill is fully functional as-is.
Decision rules:
skills: [] = recommend community search; also recommend when a role only has generic utility skills (e.g. web-research) but lacks domain-specific skills matching its identity. Burden of proof is on NOT recommending.required: false if the role can function without it.This skill has no Teamskill roles itself — it is a single-agent skill that authors Teamskills. The agent loading this skill plays the author/architect role.
| File | What it contains | When to read |
|---|---|---|
| reference/pattern-selection.md | A/B/C/Mixed pattern decision tree with worked examples | Stage 1a (before committing to a pattern) |
| reference/role-design.md | How to author the 5 mandatory role sections; gate design between stages; anti-convergence techniques | Stage 2 + Stage 3 |
| reference/conversion-guide.md | Step-by-step methodology for converting a single-agent skill into a Teamskill, with a worked example | Stage 1b (CONVERT mode only) |
| reference/compliance-checklist.md | Responsibility-attribution tests + manual-review checklist; explains what the validator can and cannot catch | Stage 6 (after the script passes) |
| reference/community-search.md | Multi-source search strategy (keyword derivation, quality gates, role-skill fit test) for finding community skills | Post-generation (community enrichment step) |
| templates/ | 5 file skeletons with placeholders and inline guidance comments | Stages 2–5 (each stage references its template) |
| scripts/validate_teamskill.py | Automated structural + frontmatter + section + cross-file consistency checks | Stage 6 (run on every Teamskill before declaring done) |
Detailed pitfall analysis is in the reference files — read them during the corresponding stage:
The three most common structural mistakes (caught by the validator, but worth internalizing):
skills: [] / tools: [] without scanning locally available skills/tools. Fix: always run the auto-matching sub-step; empty lists are valid only after the scan confirms no matches.roles[].skills declared in SKILL.md but missing from dependencies.yaml — silent contract violation. Fix: run the validator.workflow.md. Mermaid belongs only in workflow.md.For a CREATE request:
roles/<id>.md files (motto, boundary, schema, inline persona) + auto-match local skills/toolsworkflow.md → bind.md → dependencies.yaml → SKILL.md (each using its template)python scripts/validate_teamskill.py <teamskill-name>/ until exit 0For a CONVERT request:
MIGRATION.md (optional) to the new Teamskill explaining the source skill, the decomposition rationale, and the team-vs-single deltaFor a MODIFY request:
python scripts/validate_teamskill.py <teamskill-name>/ — Stage 6 is mandatory regardless of edit size| Change type | Re-run stages | Files to update |
|---|---|---|
| Edit role Identity / Boundary / Schema | Stage 2 (affected role only) | roles/<id>.md |
| Add or remove a role | Stage 1a + 2 + 3 + 4 + 5 | All 5 files |
| Change workflow steps / topology | Stage 3 | workflow.md + bind.md (if constraints change) |
| Change bind constraints | Stage 4 | bind.md |
| Change dependencies | Stage 2 (auto-match) + 5 | dependencies.yaml + SKILL.md frontmatter |
| Edit SKILL.md description / purpose | Stage 5b | SKILL.md |
All rows require Stage 6 (validator) as the final step.
4fd5cfc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.