Agent-almanac evolve-team
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/wenyan-lite/skills/evolve-team" ~/.claude/skills/pjt222-agent-almanac-evolve-team-d643e4 && rm -rf "$T"
i18n/wenyan-lite/skills/evolve-team/SKILL.mdEvolve an Existing Team
Improve, restructure, or create a specialized variant of a team that was originally authored with
create-team. This procedure covers the maintenance side of the team lifecycle: assessing gaps against the template and coordination patterns, applying targeted improvements to composition and workflow, bumping versions, and keeping the registry and cross-references in sync.
When to Use
- A team's member roster is outdated after agents were added, removed, or evolved
- User feedback reveals workflow bottlenecks, unclear handoffs, or missing perspectives
- The coordination pattern no longer fits the team's actual workflow (e.g., hub-and-spoke should be parallel)
- A specialized variant is needed alongside the original (e.g.,
andr-package-review
)r-package-review-security-focused - Team members' responsibilities overlap and need sharper boundaries
- The CONFIG block is out of sync with the prose description or the members list
- A team needs to be split into two smaller teams or two teams need to be merged
Inputs
- Required: Path to the existing team file to evolve (e.g.,
)teams/r-package-review.md - Required: Evolution trigger (feedback, new agents, coordination mismatch, scope overlap, performance issues, agent evolution)
- Optional: Target version bump magnitude (patch, minor, major)
- Optional: Whether to create a specialized variant instead of refining in-place (default: refine in-place)
Procedure
Step 1: Assess the Current Team
Read the existing team file and evaluate each section against the team template (
teams/_template.md):
| Section | What to Check | Common Issues |
|---|---|---|
| Frontmatter | All required fields (, , , , , , ) | Missing , stale , wrong |
| Purpose | Clear multi-agent justification (at least two distinct specialties) | Could be handled by a single agent |
| Team Composition | Table matches frontmatter members, no overlapping responsibilities | Stale table, duplicated focus areas |
| Coordination Pattern | Matches actual workflow, ASCII diagram present | Wrong pattern for the workflow |
| Task Decomposition | Phased breakdown with concrete tasks per member | Vague tasks, missing phases |
| CONFIG Block | Valid YAML between markers, matches frontmatter and prose | Out of sync, missing , invalid YAML |
| Usage Scenarios | 2-3 realistic activation prompts | Placeholder text |
| Limitations | 3-5 honest constraints | Missing or too generic |
| See Also | Valid links to member agents, related teams, guides | Stale links |
# Read the team file cat teams/<team-name>.md # Verify all member agents still exist grep "id:" teams/<team-name>.md | while read line; do agent=$(echo "$line" | grep -oP '(?<=id: )[\w-]+') grep "id: $agent" agents/_registry.yml || echo "MISSING: $agent" done # Check if the team is referenced by any guide grep -r "<team-name>" guides/*.md
Expected: A list of specific gaps, weaknesses, or improvement opportunities organized by section.
On failure: If the team file does not exist or has no frontmatter, this skill does not apply — use
create-team instead to author it from scratch.
Step 2: Gather Evolution Requirements
Identify and categorize what triggered the evolution:
| Trigger | Example | Typical Scope |
|---|---|---|
| User feedback | "Reviews take too long, agents duplicate effort" | Sharpen responsibilities or change pattern |
| New agent available | agent was created | Add member |
| Agent evolved | gained new skills | Update member responsibilities |
| Agent removed | was retired | Remove member, reassign tasks |
| Coordination mismatch | Sequential team has independent subtasks | Change to parallel |
| Scope expansion | Team needs to cover deployment, not just review | Add member or create variant |
| Team too large | 6+ members causing coordination overhead | Split into two teams |
| Team too small | Single member does most of the work | Merge with another team or add members |
Document the specific changes needed before editing:
- Frontmatter: add new member `api-security-analyst` with role "API Security Reviewer" - Team Composition: add row to composition table - Task Decomposition: add API security review tasks to execution phase - CONFIG block: add member and tasks entries - See Also: add link to new agent file
Expected: A concrete list of changes, each mapped to a specific section of the team file.
On failure: If the changes are unclear, consult the user for clarification before proceeding. Vague evolution goals produce vague improvements.
Step 3: Choose Evolution Scope
Use this decision matrix to determine whether to refine in-place or create a variant:
| Criteria | Refinement (in-place) | Specialized Variant (new team) |
|---|---|---|
| Team ID | Unchanged | New ID: |
| File path | Same file | New file in |
| Version bump | Patch or minor | Starts at 1.0.0 |
| Coordination | May change | May differ from original |
| Registry | Update existing entry | New entry added |
| Original team | Modified directly | Left intact, gains See Also cross-reference |
Refinement: Choose when adjusting members, sharpening responsibilities, fixing the CONFIG block, or changing the coordination pattern. The team keeps its identity.
Variant: Choose when the evolved version would serve a substantially different use case, require a different coordination pattern, or target a different audience. The original stays as-is for its existing use case.
Additional scope decisions:
| Situation | Action |
|---|---|
| Team has 6+ members and is slow | Split into two focused teams |
| Two teams of 2 cover adjacent domains | Merge into one team of 3-4 |
| Team's coordination pattern is wrong | Refinement — change pattern in-place |
| Team needs entirely different lead | Refinement if lead exists; create agent first if not |
Expected: A clear decision — refinement, variant, split, or merge — with rationale.
On failure: If unsure, default to refinement. Splitting or merging teams has higher blast radius and should be confirmed with the user.
Step 4: Apply Changes to the Team File
For Refinements
Edit the existing team file directly. Maintain consistency across all sections that reference team composition:
- Frontmatter
: Add, remove, or update member entries (each withmembers[]
,id
,role
)responsibilities - Team Composition table: Must match frontmatter members exactly
- Coordination Pattern: Update prose and ASCII diagram if the pattern changes
- Task Decomposition: Revise phases and per-member tasks to reflect new composition
- CONFIG block: Update
andmembers
lists to match (see Step 5)tasks - Usage Scenarios: Revise if the team's activation triggers changed
- Limitations: Update to reflect new constraints or remove resolved ones
- See Also: Update agent links and add references to new related teams or guides
Follow these editing rules:
- Preserve all existing sections — add content, do not remove sections
- When adding a member, add them to ALL of: frontmatter, composition table, task decomposition, and CONFIG block
- When removing a member, remove from ALL of those locations and reassign their tasks
- Verify each member agent exists:
grep "id: agent-name" agents/_registry.yml - Keep the lead in the members list — the lead is always a member
For Variants
# Copy the original as a starting point cp teams/<team-name>.md teams/<team-name>-<specialty>.md # Edit the variant: # - Change `name` to `<team-name>-<specialty>` # - Update `description` to reflect the specialized scope # - Adjust `coordination` pattern if needed # - Reset `version` to "1.0.0" # - Modify members, tasks, and CONFIG block for the specialized use case # - Reference the original in See Also as a general-purpose alternative
Expected: The team file (refined or new variant) passes the assessment checklist from Step 1, with all sections internally consistent.
On failure: If an edit breaks internal consistency (e.g., CONFIG block lists a member not in frontmatter), compare the frontmatter
members[] against the Team Composition table, Task Decomposition, and CONFIG block to find the mismatch.
Step 4.5: Sync Translated Variants
Required when translations exist. This step applies to both human authors and AI agents following this procedure. Do not skip — stale
values causesource_committo report false staleness warnings across all locales.npm run validate:translations
Check whether translations exist for the evolved team and update them to reflect the new source state:
# Check for existing translations ls i18n/*/teams/<team-name>.md 2>/dev/null
If translations exist
- Get the current source commit hash:
SOURCE_COMMIT=$(git rev-parse HEAD)
- Update
in each translated file's frontmatter:source_commit
for locale_file in i18n/*/teams/<team-name>.md; do sed -i "s/^source_commit: .*/source_commit: $SOURCE_COMMIT/" "$locale_file" done
- Flag files for re-translation by including affected locales in the commit message:
evolve(<team-name>): <description of changes> Translations flagged for re-sync: de, zh-CN, ja, es Changed sections: <list sections that changed>
- Regenerate translation status files:
npm run translation:status
If no translations exist
No action needed. Proceed to Step 5.
For variants
Defer translation of new variants until the variant stabilizes (1-2 versions). Add translations after the variant has been refined at least once.
Expected: All translated files have
source_commit updated to the current commit. npm run translation:status exits 0.
On failure: If
sed fails to match the frontmatter field, open the translated file manually and verify it has source_commit in its YAML frontmatter. If the field is missing, re-scaffold with npm run translate:scaffold -- teams <team-name> <locale>.
Step 5: Update the CONFIG Block
The CONFIG block between
<!-- CONFIG:START --> and <!-- CONFIG:END --> must stay in sync with the prose sections. After any member or task change:
- Verify every
in CONFIGagent
matches a member in the frontmattermembers - Verify every
in CONFIGassignee
matches a member agent idtasks - Update
dependencies if task ordering changedblocked_by - Ensure the synthesis/final task references all prerequisite tasks
team: name: <team-name> lead: <lead-agent> coordination: <pattern> members: - agent: <agent-id> role: <role-title> subagent_type: <agent-id> tasks: - name: <task-name> assignee: <agent-id> description: <one-line> - name: synthesize-results assignee: <lead-agent> description: Collect and synthesize all member outputs blocked_by: [<prior-task-names>]
Expected: CONFIG YAML is valid, all agents and tasks are consistent with the rest of the file, and
blocked_by forms a valid DAG.
On failure: Parse the CONFIG block YAML separately to find syntax errors. Cross-check every
assignee against the members list.
Step 6: Update Version and Metadata
Bump the
version field in frontmatter following semantic versioning:
| Change Type | Version Bump | Example |
|---|---|---|
| Wording fix, See Also update | Patch: 1.0.0 → 1.0.1 | Fixed stale agent link |
| New member added, tasks revised | Minor: 1.0.0 → 1.1.0 | Added security-analyst member |
| Coordination pattern changed, team restructured | Major: 1.0.0 → 2.0.0 | Changed from hub-and-spoke to parallel |
Also update:
date to the current dateupdated
if the team's domain coverage changedtags
if the team's purpose is materially differentdescription
if the pattern changedcoordination
Expected: Frontmatter
version and updated reflect the magnitude and date of changes. New variants start at "1.0.0".
On failure: If you forget to bump the version, the next evolution will have no way to distinguish the current state from the previous one. Always bump before committing.
Step 7: Update Registry and Cross-References
For Refinements
Update the existing entry in
teams/_registry.yml to match the revised frontmatter:
# Find the team's registry entry grep -A 10 "id: <team-name>" teams/_registry.yml
Update
description, lead, members, and coordination fields to match the team file. No count change is needed.
For Variants
Add the new team to
teams/_registry.yml:
- id: <team-name>-<specialty> path: <team-name>-<specialty>.md lead: <lead-agent> members: [agent-1, agent-2, agent-3] coordination: <pattern> description: One-line description of the specialized variant
Then:
- Increment
at the top of the registrytotal_teams - Add See Also cross-reference in the original team pointing to the variant
- Add See Also cross-reference in the variant pointing to the original
Run the README automation:
npm run update-readmes
Expected: Registry entry matches the team file frontmatter.
npm run update-readmes exits 0. For variants, total_teams equals the actual number of team entries.
On failure: If the registry count is wrong, count entries with
grep -c "^ - id:" teams/_registry.yml and correct the count. If README automation fails, verify package.json exists and js-yaml is installed.
Step 8: Validate the Evolved Team
Run the full validation checklist:
- Team file exists at the expected path
- YAML frontmatter parses without errors
-
was bumped (refinement) or set to "1.0.0" (variant)version -
date reflects todayupdated - All required sections present: Purpose, Team Composition, Coordination Pattern, Task Decomposition, Configuration, Usage Scenarios, Limitations, See Also
- Frontmatter
matches Team Composition tablemembers[] - CONFIG block members match frontmatter members
- CONFIG block tasks have valid assignees and
referencesblocked_by - All member agent IDs exist in
agents/_registry.yml - Lead agent appears in the members list
- No two members share the same primary responsibility
- Registry entry exists and matches frontmatter
- For variants:
count matches actual count on disktotal_teams - Cross-references are bidirectional (original ↔ variant)
-
shows no accidental deletions from the original contentgit diff
# Verify frontmatter head -25 teams/<team-name>.md # Verify all member agents exist for agent in agent-a agent-b agent-c; do grep "id: $agent" agents/_registry.yml done # Count teams on disk vs registry ls teams/*.md | grep -v template | wc -l grep total_teams teams/_registry.yml # Review all changes git diff
Expected: All checklist items pass. The evolved team is ready to commit.
On failure: Address each failing item individually. The most common post-evolution issues are CONFIG block drift (members or tasks not matching the prose) and a forgotten
updated date.
Validation
- Team file exists and has valid YAML frontmatter
-
field reflects the changes madeversion -
date is currentupdated - All sections present and internally consistent
- Frontmatter
, Team Composition table, and CONFIG block are in syncmembers[] - All member agent IDs exist in
agents/_registry.yml - Lead agent is in the members list
- CONFIG block YAML is valid and parseable
- Registry entry matches the team file
- For variants: new entry in
with correct pathteams/_registry.yml - For variants:
count updatedtotal_teams - Cross-references are valid (no broken links in See Also)
- For refinements with translations:
updated in all locale filessource_commit -
confirms no accidental content removalgit diff
Common Pitfalls
- CONFIG block drift: The CONFIG block, frontmatter, and prose sections must all agree on members and tasks. Updating one without the others is the most common team evolution error. After every change, cross-check all three.
- Forgetting to bump version: Without version bumps, there is no way to track what changed or when. Always update
andversion
in frontmatter before committing.updated - Stale translations after evolution: Every team evolution triggers staleness in up to 4 locale files. Always check for existing translations with
and updatels i18n/*/teams/<team-name>.md
in each, or flag them for re-translation in the commit message.source_commit - Orphaned member references: When removing a member, their tasks in the Task Decomposition and CONFIG block must be reassigned or removed. Leaving orphaned assignees causes activation failures.
- Wrong coordination pattern after evolution: Adding parallel-capable members to a sequential team, or making a hub-and-spoke team where agents need each other's output. Re-evaluate the pattern decision from
Step 4 after any structural change.create-team - Team too large after adding members: Teams with more than 5 members become hard to coordinate. If evolution pushes the team past 5, consider splitting into two focused teams instead.
- Stale See Also after variant creation: When creating a variant, both the original and the variant need to reference each other. One-directional references leave the graph incomplete.
Related Skills
— foundation for authoring new teams; evolve-team assumes this was followed originallycreate-team
— the parallel procedure for evolving SKILL.md filesevolve-skill
— the parallel procedure for evolving agent definitionsevolve-agent
— commit the evolved team with a descriptive messagecommit-changes