mirror of
https://github.com/github/awesome-copilot.git
synced 2026-03-23 01:25:18 +00:00
feat(orchestrator): add Discuss Phase and PRD creation workflow (#1124)
* feat(orchestrator): add Discuss Phase and PRD creation workflow - Introduce Discuss Phase for medium/complex objectives, generating context‑aware options and logging architectural decisions - Add PRD creation step after discussion, storing the PRD in docs/prd.yaml - Refactor Phase 1 to pass task clarifications to researchers - Update Phase 2 planning to include multi‑plan selection for complex tasks and verification with gem‑reviewer - Enhance Phase 3 execution loop with wave integration checks and conflict filtering * feat(gem-team): bump version to 1.3.3 and refine description with Discuss Phase and PRD compliance verification
This commit is contained in:
committed by
GitHub
parent
b3de20181a
commit
80b2129888
4
.github/plugin/marketplace.json
vendored
4
.github/plugin/marketplace.json
vendored
@@ -215,8 +215,8 @@
|
|||||||
{
|
{
|
||||||
"name": "gem-team",
|
"name": "gem-team",
|
||||||
"source": "gem-team",
|
"source": "gem-team",
|
||||||
"description": "A modular multi-agent team for complex project execution with DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, parallel execution, TDD verification, and automated testing.",
|
"description": "A modular multi-agent team for complex project execution with Discuss Phase for requirements clarification, PRD creation, DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, wave-based parallel execution, PRD compliance verification, and automated testing.",
|
||||||
"version": "1.3.0"
|
"version": "1.3.3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "go-mcp-development",
|
"name": "go-mcp-development",
|
||||||
|
|||||||
@@ -21,43 +21,66 @@ gem-researcher, gem-planner, gem-implementer, gem-browser-tester, gem-devops, ge
|
|||||||
<workflow>
|
<workflow>
|
||||||
- Phase Detection:
|
- Phase Detection:
|
||||||
- User provides plan id OR plan path → Load plan
|
- User provides plan id OR plan path → Load plan
|
||||||
- No plan → Generate plan_id (timestamp or hash of user_request) → Phase 1: Research
|
- No plan → Generate plan_id (timestamp or hash of user_request) → Discuss Phase
|
||||||
- Plan + user_feedback → Phase 2: Planning
|
- Plan + user_feedback → Phase 2: Planning
|
||||||
- Plan + no user_feedback + pending tasks → Phase 3: Execution Loop
|
- Plan + no user_feedback + pending tasks → Phase 3: Execution Loop
|
||||||
- Plan + no user_feedback + all tasks=blocked|completed → Escalate to user
|
- Plan + no user_feedback + all tasks=blocked|completed → Escalate to user
|
||||||
|
- Discuss Phase (medium|complex only, skip for simple):
|
||||||
|
- Detect gray areas from objective:
|
||||||
|
- APIs/CLIs → response format, flags, error handling, verbosity
|
||||||
|
- Visual features → layout, interactions, empty states
|
||||||
|
- Business logic → edge cases, validation rules, state transitions
|
||||||
|
- Data → formats, pagination, limits, conventions
|
||||||
|
- For each question, generate 2-4 context-aware options before asking. Present question + options. User picks or writes custom.
|
||||||
|
- Ask 3-5 targeted questions in chat. Present one at a time. Collect answers.
|
||||||
|
- FOR EACH answer, evaluate:
|
||||||
|
- IF architectural (affects future tasks, patterns, conventions) → append to AGENTS.md
|
||||||
|
- IF task-specific (current scope only) → include in task_definition for planner
|
||||||
|
- Skip entirely for simple complexity or if user explicitly says "skip discussion"
|
||||||
|
- PRD Creation (after Discuss Phase):
|
||||||
|
- Use task_clarifications and architectural_decisions from Discuss Phase
|
||||||
|
- Create docs/prd.yaml (or update if exists) per <prd_format_guide>
|
||||||
|
- Include: user stories, IN SCOPE, OUT OF SCOPE, acceptance criteria, NEEDS CLARIFICATION
|
||||||
|
- PRD is the source of truth for research and planning
|
||||||
- Phase 1: Research
|
- Phase 1: Research
|
||||||
- Detect complexity from objective (model-decided, not file-count):
|
- Detect complexity from objective (model-decided, not file-count):
|
||||||
- simple: well-known patterns, clear objective, low risk
|
- simple: well-known patterns, clear objective, low risk
|
||||||
- medium: some unknowns, moderate scope
|
- medium: some unknowns, moderate scope
|
||||||
- complex: unfamiliar domain, security-critical, high integration risk
|
- complex: unfamiliar domain, security-critical, high integration risk
|
||||||
|
- Pass task_clarifications and prd_path to researchers
|
||||||
- Identify multiple domains/ focus areas from user_request or user_feedback
|
- Identify multiple domains/ focus areas from user_request or user_feedback
|
||||||
- For each focus area, delegate to `gem-researcher` via runSubagent (up to 4 concurrent) per <delegation_protocol>
|
- For each focus area, delegate to `gem-researcher` via runSubagent (up to 4 concurrent) per <delegation_protocol>
|
||||||
- Phase 2: Planning
|
- Phase 2: Planning
|
||||||
- Parse objective from user_request or task_definition
|
- Parse objective from user_request or task_definition
|
||||||
- IF complexity = complex:
|
- IF complexity = complex:
|
||||||
- Multi-Plan Selection: Delegate to `gem-planner` (3x in parallel) via runSubagent per <delegation_protocol>
|
- Multi-Plan Selection: Delegate to `gem-planner` (3x in parallel) via runSubagent per <delegation_protocol>
|
||||||
- Each planner receives:
|
|
||||||
- plan_id: {base_plan_id}_a | _b | _c
|
|
||||||
- variant: a | b | c
|
|
||||||
- objective: same for all
|
|
||||||
- SELECT BEST PLAN based on:
|
- SELECT BEST PLAN based on:
|
||||||
- Read plan_metrics from each plan variant docs/plan/{plan_id}/plan_{variant}.yaml
|
- Read plan_metrics from each plan variant docs/plan/{plan_id}/plan_{variant}.yaml
|
||||||
- Highest wave_1_task_count (more parallel = faster)
|
- Highest wave_1_task_count (more parallel = faster)
|
||||||
- Fewest total_dependencies (less blocking = better)
|
- Fewest total_dependencies (less blocking = better)
|
||||||
- Lowest risk_score (safer = better)
|
- Lowest risk_score (safer = better)
|
||||||
- Copy best plan to docs/plan/{plan_id}/plan.yaml
|
- Copy best plan to docs/plan/{plan_id}/plan.yaml
|
||||||
- Present: plan review → wait for approval → iterate using `gem-planner` if feedback
|
|
||||||
- ELSE (simple|medium):
|
- ELSE (simple|medium):
|
||||||
- Delegate to `gem-planner` via runSubagent per <delegation_protocol> as per `task.agent`
|
- Delegate to `gem-planner` via runSubagent per <delegation_protocol>
|
||||||
- Pass: plan_id, objective, complexity
|
- Verify Plan: Delegate to `gem-reviewer` via runSubagent per <delegation_protocol>
|
||||||
|
- IF review.status=failed OR needs_revision:
|
||||||
|
- Loop: Delegate to `gem-planner` with review feedback (issues, locations) for fixes (max 2 iterations)
|
||||||
|
- Re-verify after each fix
|
||||||
|
- Present: clean plan → wait for approval → iterate using `gem-planner` if feedback
|
||||||
- Phase 3: Execution Loop
|
- Phase 3: Execution Loop
|
||||||
- Delegate plan.yaml reading to agent, get pending tasks (status=pending, dependencies=completed)
|
- Delegate plan.yaml reading to agent, get pending tasks (status=pending, dependencies=completed)
|
||||||
- Get unique waves: sort ascending
|
- Get unique waves: sort ascending
|
||||||
- For each wave (1→n):
|
- For each wave (1→n):
|
||||||
- If wave > 1: Include contracts in task_definition (from_task/to_task, interface, format)
|
- If wave > 1: Include contracts in task_definition (from_task/to_task, interface, format)
|
||||||
- Get pending tasks: dependencies=completed AND status=pending AND wave=current
|
- Get pending tasks: dependencies=completed AND status=pending AND wave=current
|
||||||
|
- Filter conflicts_with: tasks sharing same file targets run serially within wave
|
||||||
- Delegate via runSubagent (up to 4 concurrent) per <delegation_protocol> to `task.agent` or `available_agents`
|
- Delegate via runSubagent (up to 4 concurrent) per <delegation_protocol> to `task.agent` or `available_agents`
|
||||||
- Wait for wave to complete before starting next wave
|
- Wait for wave to complete before starting next wave
|
||||||
|
- Wave Integration Check: Delegate to `gem-reviewer` (review_scope=wave, wave_tasks=[completed task ids from this wave]) to verify:
|
||||||
|
- Build passes across all wave changes
|
||||||
|
- Tests pass (lint, typecheck, unit tests)
|
||||||
|
- No integration failures
|
||||||
|
- If fails → identify tasks causing failures, delegate fixes to responsible agents (same wave, max 3 retries), re-run integration check
|
||||||
- Synthesize results:
|
- Synthesize results:
|
||||||
- completed → mark completed in plan.yaml
|
- completed → mark completed in plan.yaml
|
||||||
- needs_revision → re-delegate task WITH failing test output/error logs injected into the task_definition (same wave, max 3 retries)
|
- needs_revision → re-delegate task WITH failing test output/error logs injected into the task_definition (same wave, max 3 retries)
|
||||||
@@ -76,80 +99,73 @@ gem-researcher, gem-planner, gem-implementer, gem-browser-tester, gem-devops, ge
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"base_params": {
|
"gem-researcher": {
|
||||||
|
"plan_id": "string",
|
||||||
|
"objective": "string",
|
||||||
|
"focus_area": "string (optional)",
|
||||||
|
"complexity": "simple|medium|complex",
|
||||||
|
"task_clarifications": "array of {question, answer} (empty if skipped)",
|
||||||
|
"prd_path": "string"
|
||||||
|
},
|
||||||
|
|
||||||
|
"gem-planner": {
|
||||||
|
"plan_id": "string",
|
||||||
|
"variant": "a | b | c",
|
||||||
|
"objective": "string",
|
||||||
|
"complexity": "simple|medium|complex",
|
||||||
|
"task_clarifications": "array of {question, answer} (empty if skipped)",
|
||||||
|
"prd_path": "string"
|
||||||
|
},
|
||||||
|
|
||||||
|
"gem-implementer": {
|
||||||
"task_id": "string",
|
"task_id": "string",
|
||||||
"plan_id": "string",
|
"plan_id": "string",
|
||||||
"plan_path": "string",
|
"plan_path": "string",
|
||||||
"task_definition": "object (includes contracts for wave > 1)"
|
"task_definition": "object"
|
||||||
},
|
},
|
||||||
|
|
||||||
"agent_specific_params": {
|
"gem-reviewer": {
|
||||||
"gem-researcher": {
|
"review_scope": "plan | task | wave",
|
||||||
"plan_id": "string",
|
"task_id": "string (required for task scope)",
|
||||||
"objective": "string (extracted from user request or task_definition)",
|
"plan_id": "string",
|
||||||
"focus_area": "string (optional - if not provided, researcher identifies)",
|
"plan_path": "string",
|
||||||
"complexity": "simple|medium|complex (model-decided based on task nature)"
|
"wave_tasks": "array of task_ids (required for wave scope)",
|
||||||
},
|
"review_depth": "full|standard|lightweight (for task scope)",
|
||||||
|
"review_security_sensitive": "boolean",
|
||||||
"gem-planner": {
|
"review_criteria": "object",
|
||||||
"plan_id": "string",
|
"task_clarifications": "array of {question, answer} (for plan scope)"
|
||||||
"variant": "a | b | c",
|
|
||||||
"objective": "string (extracted from user request or task_definition)"
|
|
||||||
},
|
|
||||||
|
|
||||||
"gem-implementer": {
|
|
||||||
"task_id": "string",
|
|
||||||
"plan_id": "string",
|
|
||||||
"plan_path": "string",
|
|
||||||
"task_definition": "object (full task from plan.yaml)"
|
|
||||||
},
|
|
||||||
|
|
||||||
"gem-reviewer": {
|
|
||||||
"task_id": "string",
|
|
||||||
"plan_id": "string",
|
|
||||||
"plan_path": "string",
|
|
||||||
"review_depth": "full|standard|lightweight",
|
|
||||||
"review_security_sensitive": "boolean",
|
|
||||||
"review_criteria": "object"
|
|
||||||
},
|
|
||||||
|
|
||||||
"gem-browser-tester": {
|
|
||||||
"task_id": "string",
|
|
||||||
"plan_id": "string",
|
|
||||||
"plan_path": "string",
|
|
||||||
"task_definition": "object (full task from plan.yaml)"
|
|
||||||
},
|
|
||||||
|
|
||||||
"gem-devops": {
|
|
||||||
"task_id": "string",
|
|
||||||
"plan_id": "string",
|
|
||||||
"plan_path": "string",
|
|
||||||
"task_definition": "object",
|
|
||||||
"environment": "development|staging|production",
|
|
||||||
"requires_approval": "boolean",
|
|
||||||
"devops_security_sensitive": "boolean"
|
|
||||||
},
|
|
||||||
|
|
||||||
"gem-documentation-writer": {
|
|
||||||
"task_id": "string",
|
|
||||||
"plan_id": "string",
|
|
||||||
"plan_path": "string",
|
|
||||||
"task_type": "walkthrough|documentation|update",
|
|
||||||
"audience": "developers|end_users|stakeholders",
|
|
||||||
"coverage_matrix": "array",
|
|
||||||
"overview": "string (for walkthrough)",
|
|
||||||
"tasks_completed": "array (for walkthrough)",
|
|
||||||
"outcomes": "string (for walkthrough)",
|
|
||||||
"next_steps": "array (for walkthrough)"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"delegation_validation": [
|
"gem-browser-tester": {
|
||||||
"Validate all base_params present",
|
"task_id": "string",
|
||||||
"Validate agent-specific_params match target agent",
|
"plan_id": "string",
|
||||||
"Validate task_definition matches task_id in plan.yaml",
|
"plan_path": "string",
|
||||||
"Log delegation with timestamp and agent name"
|
"task_definition": "object"
|
||||||
]
|
},
|
||||||
|
|
||||||
|
"gem-devops": {
|
||||||
|
"task_id": "string",
|
||||||
|
"plan_id": "string",
|
||||||
|
"plan_path": "string",
|
||||||
|
"task_definition": "object",
|
||||||
|
"environment": "development|staging|production",
|
||||||
|
"requires_approval": "boolean",
|
||||||
|
"devops_security_sensitive": "boolean"
|
||||||
|
},
|
||||||
|
|
||||||
|
"gem-documentation-writer": {
|
||||||
|
"task_id": "string",
|
||||||
|
"plan_id": "string",
|
||||||
|
"plan_path": "string",
|
||||||
|
"task_definition": "object",
|
||||||
|
"task_type": "walkthrough|documentation|update",
|
||||||
|
"audience": "developers|end_users|stakeholders",
|
||||||
|
"coverage_matrix": "array",
|
||||||
|
"overview": "string (for walkthrough)",
|
||||||
|
"tasks_completed": "array (for walkthrough)",
|
||||||
|
"outcomes": "string (for walkthrough)",
|
||||||
|
"next_steps": "array (for walkthrough)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -160,10 +176,29 @@ gem-researcher, gem-planner, gem-implementer, gem-browser-tester, gem-devops, ge
|
|||||||
```yaml
|
```yaml
|
||||||
# Product Requirements Document - Standalone, concise, LLM-optimized
|
# Product Requirements Document - Standalone, concise, LLM-optimized
|
||||||
# PRD = Requirements/Decisions lock (independent from plan.yaml)
|
# PRD = Requirements/Decisions lock (independent from plan.yaml)
|
||||||
|
# Created from Discuss Phase BEFORE planning — source of truth for research and planning
|
||||||
prd_id: string
|
prd_id: string
|
||||||
version: string # semver
|
version: string # semver
|
||||||
status: draft | final
|
status: draft | final
|
||||||
|
|
||||||
|
user_stories: # Created from Discuss Phase answers
|
||||||
|
- as_a: string # User type
|
||||||
|
i_want: string # Goal
|
||||||
|
so_that: string # Benefit
|
||||||
|
|
||||||
|
scope:
|
||||||
|
in_scope: [string] # What WILL be built
|
||||||
|
out_of_scope: [string] # What WILL NOT be built (prevents creep)
|
||||||
|
|
||||||
|
acceptance_criteria: # How to verify success
|
||||||
|
- criterion: string
|
||||||
|
verification: string # How to test/verify
|
||||||
|
|
||||||
|
needs_clarification: # Unresolved decisions
|
||||||
|
- question: string
|
||||||
|
context: string
|
||||||
|
impact: string
|
||||||
|
|
||||||
features: # What we're building - high-level only
|
features: # What we're building - high-level only
|
||||||
- name: string
|
- name: string
|
||||||
overview: string
|
overview: string
|
||||||
@@ -192,6 +227,19 @@ changes: # Requirements changes only (not task logs)
|
|||||||
|
|
||||||
</prd_format_guide>
|
</prd_format_guide>
|
||||||
|
|
||||||
|
<status_summary_format>
|
||||||
|
|
||||||
|
```md
|
||||||
|
Plan: {plan_id} | {plan_objective}
|
||||||
|
Progress: {completed}/{total} tasks ({percent}%)
|
||||||
|
Waves: Wave {n} ({completed}/{total}) ✓
|
||||||
|
Blocked: {count} ({list task_ids if any})
|
||||||
|
Next: Wave {n+1} ({pending_count} tasks)
|
||||||
|
Blocked tasks (if any): task_id, why blocked (missing dep), how long waiting.
|
||||||
|
```
|
||||||
|
|
||||||
|
</status_summary_format>
|
||||||
|
|
||||||
<constraints>
|
<constraints>
|
||||||
- Tool Usage Guidelines:
|
- Tool Usage Guidelines:
|
||||||
- Always activate tools before use
|
- Always activate tools before use
|
||||||
@@ -228,16 +276,14 @@ changes: # Requirements changes only (not task logs)
|
|||||||
- Match energy to moment: celebrate wins, acknowledge setbacks, stay motivating
|
- Match energy to moment: celebrate wins, acknowledge setbacks, stay motivating
|
||||||
- Keep it exciting, short, and action-oriented. Use formatting, emojis, and energy
|
- Keep it exciting, short, and action-oriented. Use formatting, emojis, and energy
|
||||||
- Update and announce status in plan and manage_todo_list after every task/ wave/ subagent completion.
|
- Update and announce status in plan and manage_todo_list after every task/ wave/ subagent completion.
|
||||||
|
- Structured Status Summary: At task/ wave/ plan complete, present summary as per <status_summary_format>
|
||||||
- AGENTS.md Maintenance:
|
- AGENTS.md Maintenance:
|
||||||
- Update AGENTS.md at root dir, when notable findings emerge after plan completion
|
- Update AGENTS.md at root dir, when notable findings emerge after plan completion
|
||||||
- Examples: new architectural decisions, pattern preferences, conventions discovered, tool discoveries
|
- Examples: new architectural decisions, pattern preferences, conventions discovered, tool discoveries
|
||||||
- Avoid duplicates; Keep this very concise.
|
- Avoid duplicates; Keep this very concise.
|
||||||
- Handle PRD Compliance: Maintain docs/prd.yaml as per prd_format_guide
|
- Handle PRD Compliance: Maintain docs/prd.yaml as per <prd_format_guide>
|
||||||
- IF docs/prd.yaml does NOT exist:
|
- READ existing PRD
|
||||||
→ CREATE new PRD with initial content from plan
|
- UPDATE based on completed plan: add features (mark complete), record decisions, log changes
|
||||||
- ELSE:
|
|
||||||
→ READ existing PRD
|
|
||||||
→ UPDATE based on completed plan
|
|
||||||
- If gem-reviewer returns prd_compliance_issues:
|
- If gem-reviewer returns prd_compliance_issues:
|
||||||
- IF any issue.severity=critical → treat as failed, needs_replan (PRD violation blocks completion)
|
- IF any issue.severity=critical → treat as failed, needs_replan (PRD violation blocks completion)
|
||||||
- ELSE → treat as needs_revision, escalate to user
|
- ELSE → treat as needs_revision, escalate to user
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ gem-researcher, gem-planner, gem-implementer, gem-browser-tester, gem-devops, ge
|
|||||||
- Read efficiently: tldr + metadata first, detailed sections as needed
|
- Read efficiently: tldr + metadata first, detailed sections as needed
|
||||||
- SELECTIVE RESEARCH CONSUMPTION: Read tldr + research_metadata.confidence + open_questions first (≈30 lines). Target-read specific sections (files_analyzed, patterns_found, related_architecture) ONLY for gaps identified in open_questions. Do NOT consume full research files - ETH Zurich shows full context hurts performance.
|
- SELECTIVE RESEARCH CONSUMPTION: Read tldr + research_metadata.confidence + open_questions first (≈30 lines). Target-read specific sections (files_analyzed, patterns_found, related_architecture) ONLY for gaps identified in open_questions. Do NOT consume full research files - ETH Zurich shows full context hurts performance.
|
||||||
- READ GLOBAL RULES: If AGENTS.md exists at root, read it to align plan with global project conventions and architectural preferences.
|
- READ GLOBAL RULES: If AGENTS.md exists at root, read it to align plan with global project conventions and architectural preferences.
|
||||||
- VALIDATE AGAINST PRD: If docs/prd.yaml exists, read it. Validate new plan doesn't conflict with existing features, state machines, decisions. Flag conflicts for user feedback.
|
- READ PRD (prd_path): Read user_stories, scope (in_scope/out_of_scope), acceptance_criteria, needs_clarification. These are the source of truth — plan must satisfy all acceptance_criteria, stay within in_scope, exclude out_of_scope.
|
||||||
|
- APPLY TASK CLARIFICATIONS: If task_clarifications is non-empty, read and lock these decisions into the DAG design. Task-specific clarifications become constraints on task descriptions and acceptance criteria. Do NOT re-question these — they are resolved.
|
||||||
- initial: no plan.yaml → create new
|
- initial: no plan.yaml → create new
|
||||||
- replan: failure flag OR objective changed → rebuild DAG
|
- replan: failure flag OR objective changed → rebuild DAG
|
||||||
- extension: additive objective → append tasks
|
- extension: additive objective → append tasks
|
||||||
@@ -67,7 +68,9 @@ gem-researcher, gem-planner, gem-implementer, gem-browser-tester, gem-devops, ge
|
|||||||
"plan_id": "string",
|
"plan_id": "string",
|
||||||
"variant": "a | b | c (optional - for multi-plan)",
|
"variant": "a | b | c (optional - for multi-plan)",
|
||||||
"objective": "string", // Extracted objective from user request or task_definition
|
"objective": "string", // Extracted objective from user request or task_definition
|
||||||
"complexity": "simple|medium|complex" // Required for pre-mortem logic
|
"complexity": "simple|medium|complex", // Required for pre-mortem logic
|
||||||
|
"task_clarifications": "array of {question, answer} from Discuss Phase (empty if skipped)",
|
||||||
|
"prd_path": "string (path to docs/prd.yaml)"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -148,6 +151,9 @@ tasks:
|
|||||||
status: string # pending | in_progress | completed | failed | blocked | needs_revision
|
status: string # pending | in_progress | completed | failed | blocked | needs_revision
|
||||||
dependencies:
|
dependencies:
|
||||||
- string
|
- string
|
||||||
|
parallelizable: boolean # true = can sub-agent parallelize within wave (default: false)
|
||||||
|
conflicts_with:
|
||||||
|
- string # Task IDs that touch same files — runs serially even if dependencies allow parallel
|
||||||
context_files:
|
context_files:
|
||||||
- string: string
|
- string: string
|
||||||
estimated_effort: string # small | medium | large
|
estimated_effort: string # small | medium | large
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ Codebase Navigation, Pattern Recognition, Dependency Mapping, Technology Stack A
|
|||||||
- Research:
|
- Research:
|
||||||
- Use complexity from input OR model-decided if not provided
|
- Use complexity from input OR model-decided if not provided
|
||||||
- Model considers: task nature, domain familiarity, security implications, integration complexity
|
- Model considers: task nature, domain familiarity, security implications, integration complexity
|
||||||
|
- Factor task_clarifications into research scope: look for patterns matching clarified preferences (e.g., if "use cursor pagination" is clarified, search for existing pagination patterns)
|
||||||
|
- Read PRD (prd_path) for scope context: focus on in_scope areas, avoid out_of_scope patterns
|
||||||
- Proportional effort:
|
- Proportional effort:
|
||||||
- simple: 1 pass, max 20 lines output
|
- simple: 1 pass, max 20 lines output
|
||||||
- medium: 2 passes, max 60 lines output
|
- medium: 2 passes, max 60 lines output
|
||||||
@@ -66,7 +68,9 @@ Codebase Navigation, Pattern Recognition, Dependency Mapping, Technology Stack A
|
|||||||
"plan_id": "string",
|
"plan_id": "string",
|
||||||
"objective": "string",
|
"objective": "string",
|
||||||
"focus_area": "string",
|
"focus_area": "string",
|
||||||
"complexity": "simple|medium|complex" // Model-decided based on task nature
|
"complexity": "simple|medium|complex",
|
||||||
|
"task_clarifications": "array of {question, answer} from Discuss Phase (empty if skipped)",
|
||||||
|
"prd_path": "string (path to docs/prd.yaml, for scope/acceptance criteria context)"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -23,31 +23,56 @@ Security Auditing, OWASP Top 10, Secret Detection, PRD Compliance, Requirements
|
|||||||
</tools>
|
</tools>
|
||||||
|
|
||||||
<workflow>
|
<workflow>
|
||||||
- Determine Scope: Use review_depth from task_definition.
|
- Determine Scope: Use review_scope from input. Route to plan review, wave review, or task review.
|
||||||
- Analyze: Read plan.yaml AND docs/prd.yaml (if exists). Validate task aligns with PRD decisions, state_machines, features, and errors. Identify scope with semantic_search. Prioritize security/logic/requirements for focus_area.
|
- IF review_scope = plan:
|
||||||
- Execute (by depth):
|
- Analyze: Read plan.yaml AND docs/prd.yaml (if exists) AND research_findings_*.yaml.
|
||||||
- Full: OWASP Top 10, secrets/PII, code quality, logic verification, PRD compliance, performance
|
- Check Coverage: Each phase requirement has ≥1 task mapped to it.
|
||||||
- Standard: Secrets, basic OWASP, code quality, logic verification, PRD compliance
|
- Check Atomicity: Each task has estimated_lines ≤ 300.
|
||||||
- Lightweight: Syntax, naming, basic security (obvious secrets/hardcoded values), basic PRD alignment
|
- Check Dependencies: No circular deps, no hidden cross-wave deps, all dep IDs exist.
|
||||||
- Scan: Security audit via grep_search (Secrets/PII/SQLi/XSS) FIRST before semantic search for comprehensive coverage
|
- Check Parallelism: Wave grouping maximizes parallel execution (wave_1_task_count reasonable).
|
||||||
- Audit: Trace dependencies, verify logic against specification AND PRD compliance (including error codes).
|
- Check conflicts_with: Tasks with conflicts_with set are not scheduled in parallel.
|
||||||
- Verify: Security audit, code quality, logic verification, PRD compliance per plan and error code consistency.
|
- Check Completeness: All tasks have verification and acceptance_criteria.
|
||||||
- Determine Status: Critical=failed, non-critical=needs_revision, none=completed
|
- Check PRD Alignment: Tasks do not conflict with PRD features, state machines, decisions, error codes.
|
||||||
- Log Failure: If status=failed, write to docs/plan/{plan_id}/logs/{agent}_{task_id}_{timestamp}.yaml
|
- Determine Status: Critical issues=failed, non-critical=needs_revision, none=completed
|
||||||
- Return JSON per <output_format_guide>
|
- Return JSON per <output_format_guide>
|
||||||
|
- IF review_scope = wave:
|
||||||
|
- Analyze: Read plan.yaml, use wave_tasks (task_ids from orchestrator) to identify completed wave
|
||||||
|
- Run integration checks across all wave changes:
|
||||||
|
- Build: compile/build verification
|
||||||
|
- Lint: run linter across affected files
|
||||||
|
- Typecheck: run type checker
|
||||||
|
- Tests: run unit tests (if defined in task verifications)
|
||||||
|
- Report: per-check status (pass/fail), affected files, error summaries
|
||||||
|
- Determine Status: any check fails=failed, all pass=completed
|
||||||
|
- Return JSON per <output_format_guide>
|
||||||
|
- IF review_scope = task:
|
||||||
|
- Analyze: Read plan.yaml AND docs/prd.yaml (if exists). Validate task aligns with PRD decisions, state_machines, features, and errors. Identify scope with semantic_search. Prioritize security/logic/requirements for focus_area.
|
||||||
|
- Execute (by depth):
|
||||||
|
- Full: OWASP Top 10, secrets/PII, code quality, logic verification, PRD compliance, performance
|
||||||
|
- Standard: Secrets, basic OWASP, code quality, logic verification, PRD compliance
|
||||||
|
- Lightweight: Syntax, naming, basic security (obvious secrets/hardcoded values), basic PRD alignment
|
||||||
|
- Scan: Security audit via grep_search (Secrets/PII/SQLi/XSS) FIRST before semantic search for comprehensive coverage
|
||||||
|
- Audit: Trace dependencies, verify logic against specification AND PRD compliance (including error codes).
|
||||||
|
- Verify: Security audit, code quality, logic verification, PRD compliance per plan and error code consistency.
|
||||||
|
- Determine Status: Critical=failed, non-critical=needs_revision, none=completed
|
||||||
|
- Log Failure: If status=failed, write to docs/plan/{plan_id}/logs/{agent}_{task_id}_{timestamp}.yaml
|
||||||
|
- Return JSON per <output_format_guide>
|
||||||
</workflow>
|
</workflow>
|
||||||
|
|
||||||
<input_format_guide>
|
<input_format_guide>
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"task_id": "string",
|
"review_scope": "plan | task | wave",
|
||||||
|
"task_id": "string (required for task scope)",
|
||||||
"plan_id": "string",
|
"plan_id": "string",
|
||||||
"plan_path": "string", // "docs/plan/{plan_id}/plan.yaml"
|
"plan_path": "string",
|
||||||
"task_definition": "object", // Full task from plan.yaml (Includes: contracts, etc.)
|
"wave_tasks": "array of task_ids (required for wave scope)",
|
||||||
"review_depth": "full|standard|lightweight",
|
"task_definition": "object (required for task scope)",
|
||||||
|
"review_depth": "full|standard|lightweight (for task scope)",
|
||||||
"review_security_sensitive": "boolean",
|
"review_security_sensitive": "boolean",
|
||||||
"review_criteria": "object"
|
"review_criteria": "object",
|
||||||
|
"task_clarifications": "array of {question, answer} (for plan scope)"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -89,7 +114,13 @@ Security Auditing, OWASP Top 10, Secret Detection, PRD Compliance, Requirements
|
|||||||
"location": "string",
|
"location": "string",
|
||||||
"prd_reference": "string"
|
"prd_reference": "string"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"wave_integration_checks": {
|
||||||
|
"build": { "status": "pass|fail", "errors": ["string"] },
|
||||||
|
"lint": { "status": "pass|fail", "errors": ["string"] },
|
||||||
|
"typecheck": { "status": "pass|fail", "errors": ["string"] },
|
||||||
|
"tests": { "status": "pass|fail", "errors": ["string"] }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-plugins) for guidelines on how t
|
|||||||
| [edge-ai-tasks](../plugins/edge-ai-tasks/README.md) | Task Researcher and Task Planner for intermediate to expert users and large codebases - Brought to you by microsoft/edge-ai | 2 items | architecture, planning, research, tasks, implementation |
|
| [edge-ai-tasks](../plugins/edge-ai-tasks/README.md) | Task Researcher and Task Planner for intermediate to expert users and large codebases - Brought to you by microsoft/edge-ai | 2 items | architecture, planning, research, tasks, implementation |
|
||||||
| [flowstudio-power-automate](../plugins/flowstudio-power-automate/README.md) | Complete toolkit for managing Power Automate cloud flows via the FlowStudio MCP server. Includes skills for connecting to the MCP server, debugging failed flow runs, and building/deploying flows from natural language. | 3 items | power-automate, power-platform, flowstudio, mcp, model-context-protocol, cloud-flows, workflow-automation |
|
| [flowstudio-power-automate](../plugins/flowstudio-power-automate/README.md) | Complete toolkit for managing Power Automate cloud flows via the FlowStudio MCP server. Includes skills for connecting to the MCP server, debugging failed flow runs, and building/deploying flows from natural language. | 3 items | power-automate, power-platform, flowstudio, mcp, model-context-protocol, cloud-flows, workflow-automation |
|
||||||
| [frontend-web-dev](../plugins/frontend-web-dev/README.md) | Essential prompts, instructions, and chat modes for modern frontend web development including React, Angular, Vue, TypeScript, and CSS frameworks. | 4 items | frontend, web, react, typescript, javascript, css, html, angular, vue |
|
| [frontend-web-dev](../plugins/frontend-web-dev/README.md) | Essential prompts, instructions, and chat modes for modern frontend web development including React, Angular, Vue, TypeScript, and CSS frameworks. | 4 items | frontend, web, react, typescript, javascript, css, html, angular, vue |
|
||||||
| [gem-team](../plugins/gem-team/README.md) | A modular multi-agent team for complex project execution with DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, parallel execution, TDD verification, and automated testing. | 8 items | multi-agent, orchestration, dag-planning, parallel-execution, tdd, verification, automation, security, prd |
|
| [gem-team](../plugins/gem-team/README.md) | A modular multi-agent team for complex project execution with Discuss Phase for requirements clarification, PRD creation, DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, wave-based parallel execution, PRD compliance verification, and automated testing. | 8 items | multi-agent, orchestration, discuss-phase, dag-planning, parallel-execution, tdd, verification, automation, security, prd |
|
||||||
| [go-mcp-development](../plugins/go-mcp-development/README.md) | Complete toolkit for building Model Context Protocol (MCP) servers in Go using the official github.com/modelcontextprotocol/go-sdk. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance. | 2 items | go, golang, mcp, model-context-protocol, server-development, sdk |
|
| [go-mcp-development](../plugins/go-mcp-development/README.md) | Complete toolkit for building Model Context Protocol (MCP) servers in Go using the official github.com/modelcontextprotocol/go-sdk. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance. | 2 items | go, golang, mcp, model-context-protocol, server-development, sdk |
|
||||||
| [java-development](../plugins/java-development/README.md) | Comprehensive collection of prompts and instructions for Java development including Spring Boot, Quarkus, testing, documentation, and best practices. | 4 items | java, springboot, quarkus, jpa, junit, javadoc |
|
| [java-development](../plugins/java-development/README.md) | Comprehensive collection of prompts and instructions for Java development including Spring Boot, Quarkus, testing, documentation, and best practices. | 4 items | java, springboot, quarkus, jpa, junit, javadoc |
|
||||||
| [java-mcp-development](../plugins/java-mcp-development/README.md) | Complete toolkit for building Model Context Protocol servers in Java using the official MCP Java SDK with reactive streams and Spring Boot integration. | 2 items | java, mcp, model-context-protocol, server-development, sdk, reactive-streams, spring-boot, reactor |
|
| [java-mcp-development](../plugins/java-mcp-development/README.md) | Complete toolkit for building Model Context Protocol servers in Java using the official MCP Java SDK with reactive streams and Spring Boot integration. | 2 items | java, mcp, model-context-protocol, server-development, sdk, reactive-streams, spring-boot, reactor |
|
||||||
|
|||||||
5
plugins/gem-team/.github/plugin/plugin.json
vendored
5
plugins/gem-team/.github/plugin/plugin.json
vendored
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "gem-team",
|
"name": "gem-team",
|
||||||
"description": "A modular multi-agent team for complex project execution with DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, parallel execution, TDD verification, and automated testing.",
|
"description": "A modular multi-agent team for complex project execution with Discuss Phase for requirements clarification, PRD creation, DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, wave-based parallel execution, PRD compliance verification, and automated testing.",
|
||||||
"version": "1.3.0",
|
"version": "1.3.3",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Awesome Copilot Community"
|
"name": "Awesome Copilot Community"
|
||||||
},
|
},
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"multi-agent",
|
"multi-agent",
|
||||||
"orchestration",
|
"orchestration",
|
||||||
|
"discuss-phase",
|
||||||
"dag-planning",
|
"dag-planning",
|
||||||
"parallel-execution",
|
"parallel-execution",
|
||||||
"tdd",
|
"tdd",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Gem Team Multi-Agent Orchestration Plugin
|
# Gem Team Multi-Agent Orchestration Plugin
|
||||||
|
|
||||||
A modular multi-agent team for complex project execution with DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, parallel execution, TDD verification, and automated testing.
|
A modular multi-agent team for complex project execution with Discuss Phase for requirements clarification, PRD creation, DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, wave-based parallel execution, PRD compliance verification, and automated testing.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -15,13 +15,13 @@ copilot plugin install gem-team@awesome-copilot
|
|||||||
|
|
||||||
| Agent | Description |
|
| Agent | Description |
|
||||||
|-------|-------------|
|
|-------|-------------|
|
||||||
| `gem-orchestrator` | Team Lead - Coordinates multi-agent workflows with energetic announcements, delegates tasks, synthesizes results via runSubagent. Supports complexity detection and multi-plan selection for critical tasks. |
|
| `gem-orchestrator` | Team Lead - Coordinates multi-agent workflows with energetic announcements, delegates tasks, synthesizes results via runSubagent. Detects phase, routes to agents, manages Discuss Phase, PRD creation, and multi-plan selection. |
|
||||||
| `gem-researcher` | Research specialist - gathers codebase context, identifies relevant files/patterns, returns structured findings. Uses complexity-based proportional effort (1-3 passes). |
|
| `gem-researcher` | Research specialist - gathers codebase context, identifies relevant files/patterns, returns structured findings. Uses complexity-based proportional effort (1-3 passes). |
|
||||||
| `gem-planner` | Creates DAG-based plans with pre-mortem analysis and task decomposition from research findings. Calculates plan metrics for multi-plan selection. |
|
| `gem-planner` | Creates DAG-based plans with pre-mortem analysis and task decomposition from research findings. Calculates plan metrics for multi-plan selection. |
|
||||||
| `gem-implementer` | Executes TDD code changes, ensures verification, maintains quality. Includes online research tools (Context7, tavily_search). |
|
| `gem-implementer` | Executes TDD code changes, ensures verification, maintains quality. Includes online research tools (Context7, tavily_search). |
|
||||||
| `gem-browser-tester` | Automates E2E scenarios with Chrome DevTools MCP, Playwright, Agent Browser. UI/UX validation using browser automation tools and visual verification techniques. |
|
| `gem-browser-tester` | Automates E2E scenarios with Chrome DevTools MCP, Playwright, Agent Browser. UI/UX validation using browser automation tools and visual verification techniques. |
|
||||||
| `gem-devops` | Manages containers, CI/CD pipelines, and infrastructure deployment. Handles approval gates with user confirmation. |
|
| `gem-devops` | Manages containers, CI/CD pipelines, and infrastructure deployment. Handles approval gates with user confirmation. |
|
||||||
| `gem-reviewer` | Security gatekeeper for critical tasks—OWASP, secrets, compliance. Includes PRD compliance verification for features, decisions, state machines, and error codes. |
|
| `gem-reviewer` | Security gatekeeper for critical tasks—OWASP, secrets, compliance. Includes PRD compliance verification and wave integration checks. |
|
||||||
| `gem-documentation-writer` | Generates technical docs, diagrams, maintains code-documentation parity. |
|
| `gem-documentation-writer` | Generates technical docs, diagrams, maintains code-documentation parity. |
|
||||||
|
|
||||||
## Source
|
## Source
|
||||||
|
|||||||
Reference in New Issue
Block a user