Skip to main content

skill-team-plan

Orchestrate multi-agent planning with parallel plan generation. Spawns 2-3 teammates for diverse planning approaches and synthesizes into final plan with trade-off analysis.

Aller à l'installation

Informations de source

Dépôt
benbrastmckie/nvim
Dernière activité de la source
28 juillet 2026 à 20:58
Langue détectée de SKILL.md
anglais
Étoiles
443
Forks
459

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
skill-team-plan
description
Orchestrate multi-agent planning with parallel plan generation. Spawns 2-3 teammates for diverse planning approaches and synthesizes into final plan with trade-off analysis.
allowed-tools
Task, Bash, Edit, Read, Write
# Team Plan Skill Multi-agent planning with wave-based parallelization. Spawns 2-3 teammates to generate alternative plans, then synthesizes into a final plan with trade-off analysis. **IMPORTANT**: This skill requires `OPENCODE_EXPERIMENTAL_AGENT_TEAMS=1` environment variable. If team creation fails, gracefully degrades to single-agent planning via skill-planner. ## Context References Reference (load as needed during synthesis): - Path: `.opencode/context/patterns/team-orchestration.md` - Wave coordination patterns - Path: `.opencode/context/formats/team-metadata-extension.md` - Team result schema - Path: `.opencode/context/formats/return-metadata-file.md` - Base metadata schema - Path: `.opencode/context/reference/team-wave-helpers.md` - Reusable wave patterns ## Trigger Conditions This skill activates when: - `/plan N --team` is invoked - Task exists and status allows planning - Team mode is requested via --team flag ## Input Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `task_number` | integer | Yes | Task to plan | | `research_path` | string | No | Path to research report | | `team_size` | integer | No | Number of teammates (2-3, default 2) | | `session_id` | string | Yes | Session ID for tracking | | `model_flag` | string | No | Model override (haiku, sonnet, opus). If set, use instead of default | | `effort_flag` | string | No | Effort level (fast, hard). Passed as prompt context | **Model Selection**: Determine teammate model early: ```bash # Use model_flag if provided, otherwise default to sonnet (cost-effective for team mode) teammate_model="${model_flag:-sonnet}" model_preference_line="Model preference: Use Claude ${teammate_model^} 4.6 for this task." ``` --- ## Execution Flow ### Stage 1: Input Validation Validate required inputs: - `task_number` - Must exist in state.json - `team_size` - Clamp to range [2, 3], default 2 ```bash # Lookup task task_data=$(jq -r --argjson num "$task_number" \ '.active_projects[] | select(.project_number == $num)' \ specs/state.json) if [ -z "$task_data" ]; then return error "Task $task_number not found" fi # Extract fields task_type=$(echo "$task_data" | jq -r '.task_type // "general"') status=$(echo "$task_data" | jq -r '.status') project_name=$(echo "$task_data" | jq -r '.project_name') description=$(echo "$task_data" | jq -r '.description // ""') # Validate team_size (2-3 for planning) team_size=${team_size:-2} [ "$team_size" -lt 2 ] && team_size=2 [ "$team_size" -gt 3 ] && team_size=3 ``` --- ### Stage 2: Preflight Status Update Update task status to "planning" BEFORE spawning teammates. **Update state.json**: ```bash jq --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ --arg status "planning" \ --arg sid "$session_id" \ '(.active_projects[] | select(.project_number == '$task_number')) |= . + { status: $status, last_updated: $ts, session_id: $sid }' specs/state.json > specs/tmp/state.json && mv specs/tmp/state.json specs/state.json ``` **Update TODO.md**: Change status marker to `[PLANNING]`. --- ### Stage 3: Create Postflight Marker Create marker file to prevent premature termination: ```bash padded_num=$(printf "%03d" "$task_number") mkdir -p "specs/${padded_num}_${project_name}" cat > "specs/${padded_num}_${project_name}/.postflight-pending" << EOF { "session_id": "${session_id}", "skill": "skill-team-plan", "task_number": ${task_number}, "operation": "team-plan", "team_size": ${team_size}, "reason": "Team planning in progress: synthesis, status update, git commit pending" } EOF ``` --- ### Stage 4: Check Team Mode Availability Verify Agent Teams feature is available: ```bash # Check environment variable if [ "$OPENCODE_EXPERIMENTAL_AGENT_TEAMS" != "1" ]; then echo "Warning: Team mode unavailable, falling back to single agent" # Fall back to skill-planner (see Stage 4a) fi ``` --- ### Stage 4a: Fallback to Single Agent If team mode is unavailable: 1. Log warning about degradation 2. Invoke `skill-planner` via Skill tool 3. Pass original parameters 4. Add `degraded_to_single: true` to metadata 5. Continue with postflight --- ### Stage 5a: Calculate Artifact Number Read `next_artifact_number` from state.json and use (current-1) since plan stays in the same round as research: ```bash # Read next_artifact_number from state.json next_num=$(jq -r --argjson num "$task_number" \ '.active_projects[] | select(.project_number == $num) | .next_artifact_number // 1' \ specs/state.json) # Plan uses (current - 1) to stay in the same round as research # If next_artifact_number is 1 (no research yet), use 1 if [ "$next_num" -le 1 ]; then artifact_number=1 else artifact_number=$((next_num - 1)) fi # Fallback for legacy tasks: count existing plan artifacts if [ "$next_num" = "null" ] || [ -z "$next_num" ]; then padded_num=$(printf "%03d" "$task_number") count=$(ls "specs/${padded_num}_${project_name}/plans/"*[0-9][0-9]*.md 2>/dev/null | wc -l) artifact_number=$((count + 1)) fi run_padded=$(printf "%02d" "$artifact_number") # run_padded is now the artifact number for this team planning run (e.g., "01") ``` **Note**: Team plan does NOT increment `next_artifact_number`. Only research advances the sequence. --- ### Stage 5b: Load Research Context Load research report if available: ```bash padded_num=$(printf "%03d" "$task_number") research_content="" if [ -n "$research_path" ] && [ -f "$research_path" ]; then research_content=$(cat "$research_path") fi ``` --- ### Stage 5: Spawn Planning Wave Create teammate prompts and spawn wave. Pass `artifact_number` and `teammate_letter` to each teammate. **Delegation context for teammates**: ```json { "artifact_number": "{run_padded}", "teammate_letter": "a", "artifact_pattern": "{NN}_candidate-{letter}.md" } ``` **Teammate A - Plan Version A (Incremental Delivery)**: ``` Create an implementation plan for task {task_number}: {description} {model_preference_line} Artifact number: {run_padded} Teammate letter: a Focus on incremental delivery with verification at each phase. Each phase should deliver working, tested functionality. Consider dependencies between phases. Research findings: {research_content} Output your plan to: specs/{NNN}_{SLUG}/plans/{run_padded}_candidate-a.md Format: Standard implementation plan format with: - Overview - Phases with status markers [NOT STARTED] - Tasks with file modifications - Verification steps per phase - Estimated effort ``` **Teammate B - Plan Version B (Alternative Boundaries)**: ``` Create an alternative implementation plan for task {task_number}: {description} {model_preference_line} Artifact number: {run_padded} Teammate letter: b Consider different phase boundaries or ordering. Look for opportunities to parallelize phases. Focus on risk mitigation through early verification. Research findings: {research_content} Do NOT duplicate Teammate A's exact phase structure. Provide a meaningfully different approach. Output your plan to: specs/{NNN}_{SLUG}/plans/{run_padded}_candidate-b.md Format: Same as Teammate A ``` **Teammate C - Risk/Dependency Analysis (if team_size >= 3)**: ``` Analyze dependencies and risks for implementing task {task_number}: {description} {model_preference_line} Artifact number: {run_padded} Teammate letter: c Identify: - Which phases can be parallelized vs must be sequential - Critical path through the implementation - High-risk phases requiring extra verification - External dependencies that could block progress Research findings: {research_content} Output your analysis to: specs/{NNN}_{SLUG}/plans/{run_padded}_risk-analysis.md Format: Risk analysis with dependency graph and critical path ``` --- **Spawn teammates using TeammateTool**. **IMPORTANT**: Pass the `model` parameter to enforce model selection: - Use `model: "sonnet"` for all tasks **Synthesis uses base number without letter**: After all teammates complete, the synthesis plan uses `{run_padded}_{slug}.md` (e.g., `01_implementation-plan.md`). --- ### Stage 6: Wait for Wave Completion Wait for all teammates to complete or timeout: ``` Timeout: 30 minutes for Wave 1 While not all complete and not timed out: - Check teammate completion status - Collect completed results - Wait 30 seconds between checks On timeout: - Mark remaining as "timeout" - Continue with available results ``` --- ### Stage 7: Collect Teammate Results Read each teammate's output file: ```bash teammate_results=[] padded_num=$(printf "%03d" "$task_number") for candidate in a b; do file="specs/${padded_num}_${project_name}/plans/${run_padded}_candidate-${candidate}.md" if [ -f "$file" ]; then teammate_results+=("...") fi done # Also check for risk analysis if team_size >= 3 if [ "$team_size" -ge 3 ]; then file="specs/${padded_num}_${project_name}/plans/${run_padded}_risk-analysis.md" if [ -f "$file" ]; then teammate_results+=("...") fi fi ``` --- ### Stage 8: Synthesize Plans Lead synthesizes plan candidates: 1. **Compare phase structures** from candidates A and B 2. **Evaluate trade-offs** between approaches 3. **Incorporate risk analysis** (if available) 4. **Select best elements** from each candidate 5. **Identify parallelization opportunities** **Trade-off Comparison**: - Phase count and estimated effort - Risk profile - Dependency complexity - Parallelization potential --- ### Stage 9: Create Final Plan Write synthesized plan: ```markdown # Implementation Plan: Task #{N} **Task**: {title} **Version**: {run_padded} **Created**: {ISO_DATE} **Task Type**: {task_type} **Mode**: Team Planning ({team_size} teammates) ## Overview {Synthesized approach based on candidate evaluation} ## Trade-off Analysis ### Candidate A (Incremental Delivery) - Phases: {N} - Estimated effort: {hours} - Strengths: {list} - Weaknesses: {list} ### Candidate B (Alternative) - Phases: {N} - Estimated effort: {hours} - Strengths: {list} - Weaknesses: {list} ### Selected Approach {Explanation of why chosen elements were selected} ## Phases ### Phase 1: {Name} [NOT STARTED] **Estimated effort**: {hours} **Objectives**: 1. {Objective} **Files to modify**: - `path/to/file` - {changes} **Steps**: 1. {Step} **Verification**: - {How to verify} ---
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub