mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-06 16:31:12 +08:00
Add quality gates, role library, and templates for team lifecycle v3
- Introduced quality gates documentation outlining scoring dimensions and per-phase criteria. - Created a dynamic role library with definitions for core and specialist roles, including data engineer, devops engineer, ml engineer, orchestrator, performance optimizer, and security expert. - Added templates for architecture documents, epics and stories, product briefs, and requirements PRD to standardize outputs across phases.
This commit is contained in:
46
.claude/skills/team-lifecycle-v2/CHANGELOG.md
Normal file
46
.claude/skills/team-lifecycle-v2/CHANGELOG.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Changelog
|
||||
|
||||
## v2.1 - Architecture Fix (2026-03-05)
|
||||
|
||||
### Fixed
|
||||
- **Critical**: Removed subagent calls from worker role-specs
|
||||
- Workers now correctly use CLI tools instead of attempting Agent() spawn
|
||||
- Removed subagents directory (workers cannot use it)
|
||||
- Updated SKILL.md to clarify architectural constraints
|
||||
|
||||
### Changed
|
||||
- Multi-perspective critique: Now uses parallel CLI calls
|
||||
- Codebase exploration: Now uses `ccw cli --tool gemini`
|
||||
- Document generation: Now uses `ccw cli --tool gemini --mode write`
|
||||
|
||||
### Impact
|
||||
- No functional change for users
|
||||
- Implementation now architecturally correct
|
||||
- Workers will no longer fail with "Unknown skill: Agent"
|
||||
|
||||
### Files Modified
|
||||
- `SKILL.md`: Replaced "Subagent Registry" with "CLI Tool Usage in Workers"
|
||||
- `role-specs/analyst.md`: Removed `subagents: [discuss]`, replaced discuss subagent call with parallel CLI calls
|
||||
- `role-specs/writer.md`: Removed `subagents: [discuss]`, replaced discuss subagent call with parallel CLI calls
|
||||
- `role-specs/reviewer.md`: Removed `subagents: [discuss]`, replaced discuss subagent call with parallel CLI calls
|
||||
- `role-specs/planner.md`: Updated complexity routing table to reference CLI exploration
|
||||
- `role-specs/architect.md`: Removed `subagents: [explore]`
|
||||
- `subagents/`: Directory removed
|
||||
|
||||
### Technical Details
|
||||
|
||||
**Why Workers Cannot Spawn Subagents**:
|
||||
When a worker attempts `Agent()`, it fails with "Unknown skill: Agent". Only the Coordinator (main conversation context) can spawn agents.
|
||||
|
||||
**Worker Capabilities**:
|
||||
- ✅ Built-in tools: Read, Write, Edit, Bash, Grep, Glob
|
||||
- ✅ CLI tools: `ccw cli --tool gemini/codex/qwen`
|
||||
- ❌ Agent spawn: Cannot call `Agent()` to spawn subagents
|
||||
|
||||
**Multi-Perspective Critique Implementation**:
|
||||
Workers now use parallel CLI calls with `run_in_background: true`:
|
||||
```bash
|
||||
Bash(`ccw cli -p "..." --tool gemini --mode analysis`, { run_in_background: true })
|
||||
Bash(`ccw cli -p "..." --tool codex --mode analysis`, { run_in_background: true })
|
||||
Bash(`ccw cli -p "..." --tool claude --mode analysis`, { run_in_background: true })
|
||||
```
|
||||
295
.claude/skills/team-lifecycle-v2/SKILL.md
Normal file
295
.claude/skills/team-lifecycle-v2/SKILL.md
Normal file
@@ -0,0 +1,295 @@
|
||||
---
|
||||
name: team-lifecycle-v2
|
||||
description: Optimized team skill for full lifecycle. Reduced discuss (6→3), progressive spec refinement preserved. team-worker agent architecture. Triggers on "team lifecycle v2".
|
||||
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
|
||||
---
|
||||
|
||||
# Team Lifecycle v2
|
||||
|
||||
Optimized lifecycle: specification → implementation → testing → review. Built on **team-worker agent architecture**. Key optimization: discuss rounds reduced from 6 to 3 (direction, requirements, final gate).
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
+---------------------------------------------------+
|
||||
| Skill(skill="team-lifecycle-v2") |
|
||||
| args="task description" |
|
||||
+-------------------+-------------------------------+
|
||||
|
|
||||
Orchestration Mode (auto -> coordinator)
|
||||
|
|
||||
Coordinator (inline)
|
||||
Phase 0-5 orchestration
|
||||
|
|
||||
+----+-----+-------+-------+-------+-------+
|
||||
v v v v v v v
|
||||
[team-worker agents, each loaded with a role-spec]
|
||||
analyst writer planner executor tester reviewer
|
||||
^ ^
|
||||
on-demand by coordinator
|
||||
+---------+ +--------+
|
||||
|architect| |fe-dev |
|
||||
+---------+ +--------+
|
||||
+--------+
|
||||
| fe-qa |
|
||||
+--------+
|
||||
|
||||
Subagent (callable by analyst, writer, reviewer):
|
||||
[discuss-subagent] - multi-perspective critique (3 rounds)
|
||||
```
|
||||
|
||||
## Role Router
|
||||
|
||||
Coordinator-only. Workers spawned as `team-worker` agents.
|
||||
|
||||
### Role Registry
|
||||
|
||||
| Role | Spec | Task Prefix | Type | Inner Loop |
|
||||
|------|------|-------------|------|------------|
|
||||
| coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | (none) | orchestrator | - |
|
||||
| analyst | [role-specs/analyst.md](role-specs/analyst.md) | RESEARCH-* | pipeline | false |
|
||||
| writer | [role-specs/writer.md](role-specs/writer.md) | DRAFT-* | pipeline | true |
|
||||
| planner | [role-specs/planner.md](role-specs/planner.md) | PLAN-* | pipeline | true |
|
||||
| executor | [role-specs/executor.md](role-specs/executor.md) | IMPL-* | pipeline | true |
|
||||
| tester | [role-specs/tester.md](role-specs/tester.md) | TEST-* | pipeline | false |
|
||||
| reviewer | [role-specs/reviewer.md](role-specs/reviewer.md) | REVIEW-* + QUALITY-* + IMPROVE-* | pipeline | false |
|
||||
| architect | [role-specs/architect.md](role-specs/architect.md) | ARCH-* | consulting | false |
|
||||
| fe-developer | [role-specs/fe-developer.md](role-specs/fe-developer.md) | DEV-FE-* | frontend | false |
|
||||
| fe-qa | [role-specs/fe-qa.md](role-specs/fe-qa.md) | QA-FE-* | frontend | false |
|
||||
|
||||
### CLI Tool Usage in Workers
|
||||
|
||||
**⚠️ ARCHITECTURAL CONSTRAINT**: Workers CANNOT call Agent() to spawn subagents.
|
||||
Workers must use CLI tools for complex analysis.
|
||||
|
||||
| Capability | CLI Command | Used By |
|
||||
|------------|-------------|---------|
|
||||
| Multi-perspective critique | `ccw cli --tool gemini --mode analysis` (parallel calls) | analyst, writer, reviewer |
|
||||
| Codebase exploration | `ccw cli --tool gemini --mode analysis` | analyst, planner |
|
||||
| Document generation | `ccw cli --tool gemini --mode write` | writer |
|
||||
|
||||
### Coordinator-Only Utilities
|
||||
|
||||
If Coordinator needs utility members for team-level orchestration, it can spawn them.
|
||||
Workers cannot spawn utility members.
|
||||
|
||||
### Dispatch
|
||||
|
||||
Always route to coordinator. Coordinator reads `roles/coordinator/role.md`.
|
||||
|
||||
### Orchestration Mode
|
||||
|
||||
**Invocation**: `Skill(skill="team-lifecycle-v2", args="task description")`
|
||||
|
||||
**Lifecycle**:
|
||||
```
|
||||
User provides task description
|
||||
-> coordinator Phase 1-3: clarify -> TeamCreate -> create task chain
|
||||
-> coordinator Phase 4: spawn first batch workers (background) -> STOP
|
||||
-> Worker executes -> SendMessage callback -> coordinator advances
|
||||
-> Loop until pipeline complete -> Phase 5 report
|
||||
```
|
||||
|
||||
**User Commands**:
|
||||
|
||||
| Command | Action |
|
||||
|---------|--------|
|
||||
| `check` / `status` | Output execution status, no advancement |
|
||||
| `resume` / `continue` | Check worker states, advance next step |
|
||||
| `revise <TASK-ID> [feedback]` | Create revision task + cascade downstream |
|
||||
| `feedback <text>` | Analyze feedback, create targeted revision |
|
||||
| `recheck` | Re-run QUALITY-001 quality check |
|
||||
| `improve [dimension]` | Auto-improve weakest dimension |
|
||||
|
||||
---
|
||||
|
||||
## Coordinator Spawn Template
|
||||
|
||||
```
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker",
|
||||
team_name: <team-name>,
|
||||
name: "<role>",
|
||||
run_in_background: true,
|
||||
prompt: `## Role Assignment
|
||||
role: <role>
|
||||
role_spec: .claude/skills/team-lifecycle-v2/role-specs/<role>.md
|
||||
session: <session-folder>
|
||||
session_id: <session-id>
|
||||
team_name: <team-name>
|
||||
requirement: <task-description>
|
||||
inner_loop: <true|false>
|
||||
|
||||
Read role_spec file to load Phase 2-4 domain instructions.
|
||||
Execute built-in Phase 1 (task discovery) -> role-spec Phase 2-4 -> built-in Phase 5 (report).`
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pipeline Definitions
|
||||
|
||||
### Spec-only (6 tasks, 3 discuss)
|
||||
|
||||
```
|
||||
RESEARCH-001(+D1) -> DRAFT-001 -> DRAFT-002(+D2) -> DRAFT-003 -> DRAFT-004 -> QUALITY-001(+D3)
|
||||
```
|
||||
|
||||
Note: DRAFT-001, DRAFT-003, DRAFT-004 use self-validation only (no discuss).
|
||||
|
||||
### Impl-only (4 tasks)
|
||||
|
||||
```
|
||||
PLAN-001 -> IMPL-001 -> TEST-001 + REVIEW-001
|
||||
```
|
||||
|
||||
### Full-lifecycle (10 tasks)
|
||||
|
||||
```
|
||||
[Spec pipeline] -> PLAN-001(blockedBy: QUALITY-001) -> IMPL-001 -> TEST-001 + REVIEW-001
|
||||
```
|
||||
|
||||
### Frontend Pipelines
|
||||
|
||||
```
|
||||
FE-only: PLAN-001 -> DEV-FE-001 -> QA-FE-001
|
||||
(GC loop: max 2 rounds)
|
||||
|
||||
Fullstack: PLAN-001 -> IMPL-001 || DEV-FE-001 -> TEST-001 || QA-FE-001 -> REVIEW-001
|
||||
|
||||
Full + FE: [Spec pipeline] -> PLAN-001 -> IMPL-001 || DEV-FE-001 -> TEST-001 || QA-FE-001 -> REVIEW-001
|
||||
```
|
||||
|
||||
### Cadence Control
|
||||
|
||||
**Beat model**: Event-driven, each beat = coordinator wake -> process -> spawn -> STOP.
|
||||
|
||||
```
|
||||
Beat Cycle
|
||||
======================================================================
|
||||
Event Coordinator Workers
|
||||
----------------------------------------------------------------------
|
||||
callback/resume --> +- handleCallback -+
|
||||
| mark completed |
|
||||
| check pipeline |
|
||||
+- handleSpawnNext -+
|
||||
| find ready tasks |
|
||||
| spawn workers ---+--> [team-worker] Phase 1-5
|
||||
+- STOP (idle) -----+ |
|
||||
|
|
||||
callback <-----------------------------------------+
|
||||
|
||||
Fast-Advance (skips coordinator for simple linear successors)
|
||||
======================================================================
|
||||
[Worker A] Phase 5 complete
|
||||
+- 1 ready task? simple successor?
|
||||
| --> spawn team-worker B directly
|
||||
| --> log fast_advance to message bus
|
||||
+- complex case? --> SendMessage to coordinator
|
||||
======================================================================
|
||||
```
|
||||
|
||||
### Checkpoints
|
||||
|
||||
| Trigger | Position | Behavior |
|
||||
|---------|----------|----------|
|
||||
| Spec->Impl transition | QUALITY-001 completed | Display checkpoint, pause for user |
|
||||
| GC loop max | QA-FE max 2 rounds | Stop iteration, report |
|
||||
| Pipeline stall | No ready + no running | Report to user |
|
||||
|
||||
**Checkpoint Output Template** (QUALITY-001):
|
||||
|
||||
```
|
||||
[coordinator] ══════════════════════════════════════════
|
||||
[coordinator] SPEC PHASE COMPLETE
|
||||
[coordinator] Quality Gate: <PASS|REVIEW|FAIL> (<score>%)
|
||||
[coordinator]
|
||||
[coordinator] Dimension Scores:
|
||||
[coordinator] Completeness: <bar> <n>%
|
||||
[coordinator] Consistency: <bar> <n>%
|
||||
[coordinator] Traceability: <bar> <n>%
|
||||
[coordinator] Depth: <bar> <n>%
|
||||
[coordinator] Coverage: <bar> <n>%
|
||||
[coordinator]
|
||||
[coordinator] Available Actions:
|
||||
[coordinator] resume -> Proceed to implementation
|
||||
[coordinator] improve -> Auto-improve weakest dimension
|
||||
[coordinator] revise <TASK-ID> -> Revise specific document
|
||||
[coordinator] recheck -> Re-run quality check
|
||||
[coordinator] feedback <text> -> Inject feedback
|
||||
[coordinator] ══════════════════════════════════════════
|
||||
```
|
||||
|
||||
### Task Metadata Registry
|
||||
|
||||
| Task ID | Role | Phase | Dependencies | Discuss |
|
||||
|---------|------|-------|-------------|---------|
|
||||
| RESEARCH-001 | analyst | spec | (none) | DISCUSS-001 |
|
||||
| DRAFT-001 | writer | spec | RESEARCH-001 | self-validate |
|
||||
| DRAFT-002 | writer | spec | DRAFT-001 | DISCUSS-002 |
|
||||
| DRAFT-003 | writer | spec | DRAFT-002 | self-validate |
|
||||
| DRAFT-004 | writer | spec | DRAFT-003 | self-validate |
|
||||
| QUALITY-001 | reviewer | spec | DRAFT-004 | DISCUSS-003 |
|
||||
| PLAN-001 | planner | impl | (none or QUALITY-001) | - |
|
||||
| IMPL-001 | executor | impl | PLAN-001 | - |
|
||||
| TEST-001 | tester | impl | IMPL-001 | - |
|
||||
| REVIEW-001 | reviewer | impl | IMPL-001 | - |
|
||||
| DEV-FE-001 | fe-developer | impl | PLAN-001 | - |
|
||||
| QA-FE-001 | fe-qa | impl | DEV-FE-001 | - |
|
||||
|
||||
---
|
||||
|
||||
## Session Directory
|
||||
|
||||
```
|
||||
.workflow/.team/TLS-<slug>-<date>/
|
||||
+-- team-session.json
|
||||
+-- spec/
|
||||
| +-- spec-config.json
|
||||
| +-- discovery-context.json
|
||||
| +-- product-brief.md
|
||||
| +-- requirements/
|
||||
| +-- architecture/
|
||||
| +-- epics/
|
||||
| +-- readiness-report.md
|
||||
+-- discussions/
|
||||
+-- plan/
|
||||
| +-- plan.json
|
||||
| +-- .task/TASK-*.json
|
||||
+-- explorations/
|
||||
+-- .msg/
|
||||
+-- shared-memory.json
|
||||
```
|
||||
|
||||
## Session Resume
|
||||
|
||||
1. Scan `.workflow/.team/TLS-*/team-session.json` for active/paused sessions
|
||||
2. Multiple matches -> AskUserQuestion
|
||||
3. Audit TaskList -> reconcile session state
|
||||
4. Reset in_progress -> pending (interrupted tasks)
|
||||
5. Rebuild team, spawn needed workers only
|
||||
6. Kick first executable task
|
||||
|
||||
## Shared Resources
|
||||
|
||||
| Resource | Path | Usage |
|
||||
|----------|------|-------|
|
||||
| Document Standards | [specs/document-standards.md](specs/document-standards.md) | YAML frontmatter, naming, structure |
|
||||
| Quality Gates | [specs/quality-gates.md](specs/quality-gates.md) | Per-phase quality gates |
|
||||
| Team Config | [specs/team-config.json](specs/team-config.json) | Role registry, pipeline definitions |
|
||||
| Product Brief Template | [templates/product-brief.md](templates/product-brief.md) | DRAFT-001 |
|
||||
| Requirements Template | [templates/requirements-prd.md](templates/requirements-prd.md) | DRAFT-002 |
|
||||
| Architecture Template | [templates/architecture-doc.md](templates/architecture-doc.md) | DRAFT-003 |
|
||||
| Epics Template | [templates/epics-template.md](templates/epics-template.md) | DRAFT-004 |
|
||||
| Discuss Subagent | [subagents/discuss-subagent.md](subagents/discuss-subagent.md) | 3-round discuss protocol |
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Scenario | Resolution |
|
||||
|----------|------------|
|
||||
| Unknown command | Error with available command list |
|
||||
| Role spec file not found | Error with expected path |
|
||||
| Command file not found | Fallback to inline execution |
|
||||
| Discuss subagent fails | Worker proceeds without discuss, logs warning |
|
||||
| Fast-advance spawns wrong task | Coordinator reconciles on next callback |
|
||||
107
.claude/skills/team-lifecycle-v2/role-specs/analyst.md
Normal file
107
.claude/skills/team-lifecycle-v2/role-specs/analyst.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
role: analyst
|
||||
prefix: RESEARCH
|
||||
inner_loop: false
|
||||
discuss_rounds: [DISCUSS-001]
|
||||
message_types:
|
||||
success: research_ready
|
||||
progress: research_progress
|
||||
error: error
|
||||
---
|
||||
|
||||
# Analyst — Phase 2-4
|
||||
|
||||
## Phase 2: Seed Analysis
|
||||
|
||||
**Objective**: Extract structured seed information from the topic.
|
||||
|
||||
1. Extract session folder from task description (`Session: <path>`)
|
||||
2. Parse topic from task description
|
||||
3. If topic starts with `@` or ends with `.md`/`.txt` → Read referenced file
|
||||
4. Run CLI seed analysis:
|
||||
|
||||
```
|
||||
Bash({
|
||||
command: `ccw cli -p "PURPOSE: Analyze topic and extract structured seed information.
|
||||
TASK: * Extract problem statement * Identify target users * Determine domain context
|
||||
* List constraints * Identify 3-5 exploration dimensions * Assess complexity
|
||||
TOPIC: <topic-content>
|
||||
MODE: analysis
|
||||
EXPECTED: JSON with: problem_statement, target_users[], domain, constraints[], exploration_dimensions[], complexity_assessment" --tool gemini --mode analysis`,
|
||||
run_in_background: false
|
||||
})
|
||||
```
|
||||
|
||||
5. Parse seed analysis JSON
|
||||
|
||||
## Phase 3: Codebase Exploration (conditional)
|
||||
|
||||
**Objective**: Gather codebase context if project detected.
|
||||
|
||||
| Condition | Action |
|
||||
|-----------|--------|
|
||||
| package.json / Cargo.toml / pyproject.toml / go.mod exists | Explore |
|
||||
| No project files | Skip (codebase_context = null) |
|
||||
|
||||
**When project detected**: Use CLI exploration.
|
||||
|
||||
```
|
||||
Bash({
|
||||
command: `ccw cli -p "PURPOSE: Explore codebase for context to inform spec generation
|
||||
TASK: • Identify tech stack • Map architecture patterns • Document conventions • List integration points
|
||||
MODE: analysis
|
||||
CONTEXT: @**/*
|
||||
EXPECTED: JSON with: tech_stack[], architecture_patterns[], conventions[], integration_points[]" --tool gemini --mode analysis --rule analysis-analyze-code-patterns`,
|
||||
run_in_background: false
|
||||
})
|
||||
```
|
||||
|
||||
## Phase 4: Context Packaging + Discuss
|
||||
|
||||
### 4a: Context Packaging
|
||||
|
||||
**spec-config.json** → `<session>/spec/spec-config.json`
|
||||
**discovery-context.json** → `<session>/spec/discovery-context.json`
|
||||
**design-intelligence.json** → `<session>/analysis/design-intelligence.json` (UI mode only)
|
||||
|
||||
### 4b: Inline Discuss (DISCUSS-001)
|
||||
|
||||
**Multi-perspective critique via parallel CLI calls**:
|
||||
|
||||
```bash
|
||||
# Product perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review discovery context from product perspective
|
||||
CONTEXT: @<session>/spec/discovery-context.json
|
||||
EXPECTED: Rating (1-5) + concerns + recommendations
|
||||
CONSTRAINTS: Focus on market fit, user value, scope clarity" --tool gemini --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Risk perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review discovery context from risk perspective
|
||||
CONTEXT: @<session>/spec/discovery-context.json
|
||||
EXPECTED: Rating (1-5) + risks + mitigation strategies
|
||||
CONSTRAINTS: Focus on technical risks, dependencies, unknowns" --tool codex --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Coverage perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review discovery context from coverage perspective
|
||||
CONTEXT: @<session>/spec/discovery-context.json
|
||||
EXPECTED: Rating (1-5) + gaps + missing dimensions
|
||||
CONSTRAINTS: Focus on completeness, edge cases, requirements coverage" --tool claude --mode analysis`, { run_in_background: true })
|
||||
```
|
||||
|
||||
Wait for all results, aggregate ratings and feedback, determine consensus verdict:
|
||||
- **HIGH**: Any rating <= 2 → User pause required
|
||||
- **MEDIUM**: All ratings 3-4 → Proceed with caution
|
||||
- **LOW**: All ratings >= 4 → Proceed
|
||||
|
||||
Handle verdict per consensus protocol.
|
||||
|
||||
**Report**: complexity, codebase presence, problem statement, dimensions, discuss verdict, output paths.
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Scenario | Resolution |
|
||||
|----------|------------|
|
||||
| CLI failure | Fallback to direct Claude analysis |
|
||||
| Codebase detection failed | Continue as new project |
|
||||
| Topic too vague | Report with clarification questions |
|
||||
| CLI critique fails | Proceed without critique, log warning |
|
||||
@@ -3,7 +3,6 @@ role: architect
|
||||
prefix: ARCH
|
||||
inner_loop: false
|
||||
discuss_rounds: []
|
||||
subagents: [explore]
|
||||
message_types:
|
||||
success: arch_ready
|
||||
concern: arch_concern
|
||||
|
||||
@@ -27,8 +27,8 @@ If `<session-folder>/spec/` exists → load requirements/_index.md, architecture
|
||||
| Complexity | Criteria | Strategy |
|
||||
|------------|----------|----------|
|
||||
| Low | < 200 chars, no refactor/architecture keywords | ACE semantic search only |
|
||||
| Medium | 200-500 chars or moderate scope | 2-3 angle explore subagent |
|
||||
| High | > 500 chars, refactor/architecture, multi-module | 3-5 angle explore subagent |
|
||||
| Medium | 200-500 chars or moderate scope | 2-3 angle CLI exploration |
|
||||
| High | > 500 chars, refactor/architecture, multi-module | 3-5 angle CLI exploration |
|
||||
|
||||
For each angle, use CLI exploration (cache-aware — check cache-index.json before each call):
|
||||
|
||||
|
||||
122
.claude/skills/team-lifecycle-v2/role-specs/reviewer.md
Normal file
122
.claude/skills/team-lifecycle-v2/role-specs/reviewer.md
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
role: reviewer
|
||||
prefix: REVIEW
|
||||
additional_prefixes: [QUALITY, IMPROVE]
|
||||
inner_loop: false
|
||||
discuss_rounds: [DISCUSS-003]
|
||||
message_types:
|
||||
success_review: review_result
|
||||
success_quality: quality_result
|
||||
fix: fix_required
|
||||
error: error
|
||||
---
|
||||
|
||||
# Reviewer — Phase 2-4
|
||||
|
||||
## Phase 2: Mode Detection
|
||||
|
||||
| Task Prefix | Mode | Dimensions | Discuss |
|
||||
|-------------|------|-----------|---------|
|
||||
| REVIEW-* | Code Review | quality, security, architecture, requirements | None |
|
||||
| QUALITY-* | Spec Quality | completeness, consistency, traceability, depth, coverage | DISCUSS-003 |
|
||||
| IMPROVE-* | Spec Quality (recheck) | Same as QUALITY | DISCUSS-003 |
|
||||
|
||||
## Phase 3: Review Execution
|
||||
|
||||
### Code Review (REVIEW-*)
|
||||
|
||||
**Inputs**: Plan file, git diff, modified files, test results
|
||||
|
||||
**4 dimensions**:
|
||||
|
||||
| Dimension | Critical Issues |
|
||||
|-----------|----------------|
|
||||
| Quality | Empty catch, any in public APIs, @ts-ignore, console.log |
|
||||
| Security | Hardcoded secrets, SQL injection, eval/exec, innerHTML |
|
||||
| Architecture | Circular deps, parent imports >2 levels, files >500 lines |
|
||||
| Requirements | Missing core functionality, incomplete acceptance criteria |
|
||||
|
||||
### Spec Quality (QUALITY-* / IMPROVE-*)
|
||||
|
||||
**Inputs**: All spec docs in session folder, quality gate config
|
||||
|
||||
**5 dimensions**:
|
||||
|
||||
| Dimension | Weight | Focus |
|
||||
|-----------|--------|-------|
|
||||
| Completeness | 25% | All sections present with substance |
|
||||
| Consistency | 20% | Terminology, format, references |
|
||||
| Traceability | 25% | Goals -> Reqs -> Arch -> Stories chain |
|
||||
| Depth | 20% | AC testable, ADRs justified, stories estimable |
|
||||
| Coverage | 10% | Original requirements mapped |
|
||||
|
||||
**Quality gate**:
|
||||
|
||||
| Gate | Criteria |
|
||||
|------|----------|
|
||||
| PASS | Score >= 80% AND coverage >= 70% |
|
||||
| REVIEW | Score 60-79% OR coverage 50-69% |
|
||||
| FAIL | Score < 60% OR coverage < 50% |
|
||||
|
||||
**Artifacts**: readiness-report.md + spec-summary.md
|
||||
|
||||
## Phase 4: Verdict + Discuss
|
||||
|
||||
### Code Review Verdict
|
||||
|
||||
| Verdict | Criteria |
|
||||
|---------|----------|
|
||||
| BLOCK | Critical issues present |
|
||||
| CONDITIONAL | High/medium only |
|
||||
| APPROVE | Low or none |
|
||||
|
||||
### Spec Quality Discuss (DISCUSS-003)
|
||||
|
||||
After generating readiness-report.md, perform multi-perspective critique via parallel CLI calls:
|
||||
|
||||
```bash
|
||||
# Product perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review spec readiness from product perspective
|
||||
CONTEXT: @<session>/spec/readiness-report.md
|
||||
EXPECTED: Rating (1-5) + product concerns + recommendations
|
||||
CONSTRAINTS: Focus on market alignment, user value, business viability" --tool gemini --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Technical perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review spec readiness from technical perspective
|
||||
CONTEXT: @<session>/spec/readiness-report.md
|
||||
EXPECTED: Rating (1-5) + technical risks + feasibility assessment
|
||||
CONSTRAINTS: Focus on architecture soundness, tech debt, implementation complexity" --tool codex --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Quality perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review spec readiness from quality perspective
|
||||
CONTEXT: @<session>/spec/readiness-report.md
|
||||
EXPECTED: Rating (1-5) + quality gaps + improvement areas
|
||||
CONSTRAINTS: Focus on completeness, testability, consistency" --tool claude --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Risk perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review spec readiness from risk perspective
|
||||
CONTEXT: @<session>/spec/readiness-report.md
|
||||
EXPECTED: Rating (1-5) + risk factors + mitigation strategies
|
||||
CONSTRAINTS: Focus on dependencies, unknowns, timeline risks" --tool gemini --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Coverage perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review spec readiness from coverage perspective
|
||||
CONTEXT: @<session>/spec/readiness-report.md
|
||||
EXPECTED: Rating (1-5) + coverage gaps + missing requirements
|
||||
CONSTRAINTS: Focus on edge cases, non-functional requirements, traceability" --tool codex --mode analysis`, { run_in_background: true })
|
||||
```
|
||||
|
||||
Wait for all results, aggregate ratings and feedback, determine consensus verdict per protocol.
|
||||
|
||||
> **Note**: DISCUSS-003 HIGH always triggers user pause (final sign-off gate).
|
||||
|
||||
**Report**: mode, verdict/gate, dimension scores, discuss verdict (QUALITY only), output paths.
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Scenario | Resolution |
|
||||
|----------|------------|
|
||||
| Missing context | Request from coordinator |
|
||||
| Invalid mode | Abort with error |
|
||||
| Analysis failure | Retry, then fallback |
|
||||
| CLI critique fails | Proceed without critique, log warning |
|
||||
117
.claude/skills/team-lifecycle-v2/role-specs/writer.md
Normal file
117
.claude/skills/team-lifecycle-v2/role-specs/writer.md
Normal file
@@ -0,0 +1,117 @@
|
||||
---
|
||||
role: writer
|
||||
prefix: DRAFT
|
||||
inner_loop: true
|
||||
discuss_rounds: [DISCUSS-002]
|
||||
message_types:
|
||||
success: draft_ready
|
||||
revision: draft_revision
|
||||
error: error
|
||||
---
|
||||
|
||||
# Writer — Phase 2-4
|
||||
|
||||
## Phase 2: Context Loading
|
||||
|
||||
**Objective**: Load all required inputs for document generation.
|
||||
|
||||
### Document type routing
|
||||
|
||||
| Task Subject Contains | Doc Type | Template | Validation |
|
||||
|----------------------|----------|----------|------------|
|
||||
| Product Brief | product-brief | templates/product-brief.md | self-validate |
|
||||
| Requirements / PRD | requirements | templates/requirements-prd.md | DISCUSS-002 |
|
||||
| Architecture | architecture | templates/architecture-doc.md | self-validate |
|
||||
| Epics | epics | templates/epics-template.md | self-validate |
|
||||
|
||||
### Progressive dependency loading
|
||||
|
||||
| Doc Type | Requires |
|
||||
|----------|----------|
|
||||
| product-brief | discovery-context.json |
|
||||
| requirements | + product-brief.md |
|
||||
| architecture | + requirements/_index.md |
|
||||
| epics | + architecture/_index.md |
|
||||
|
||||
**Prior decisions from accumulator**: Pass context_accumulator summaries as "Prior Decisions" to generation.
|
||||
|
||||
| Input | Source | Required |
|
||||
|-------|--------|----------|
|
||||
| Document standards | `../../specs/document-standards.md` | Yes |
|
||||
| Template | From routing table | Yes |
|
||||
| Spec config | `<session>/spec/spec-config.json` | Yes |
|
||||
| Discovery context | `<session>/spec/discovery-context.json` | Yes |
|
||||
| Discussion feedback | `<session>/discussions/<discuss-file>` | If exists |
|
||||
| Prior decisions | context_accumulator (in-memory) | If prior tasks |
|
||||
|
||||
## Phase 3: Document Generation
|
||||
|
||||
**Objective**: Generate document using CLI tool.
|
||||
|
||||
```
|
||||
Bash({
|
||||
command: `ccw cli -p "PURPOSE: Generate <doc-type> document following template and standards
|
||||
TASK: • Load template • Apply spec config and discovery context • Integrate prior feedback • Generate all sections
|
||||
MODE: write
|
||||
CONTEXT: @<session>/spec/*.json @<template-path> | Memory: Prior decisions: <accumulator summary>
|
||||
EXPECTED: Document at <output-path> with: YAML frontmatter, all sections, cross-references
|
||||
CONSTRAINTS: Follow document-standards.md" --tool gemini --mode write --rule development-implement-feature --cd <session>`,
|
||||
run_in_background: false
|
||||
})
|
||||
```
|
||||
|
||||
## Phase 4: Validation
|
||||
|
||||
### 4a: Self-Validation (all doc types)
|
||||
|
||||
| Check | What to Verify |
|
||||
|-------|---------------|
|
||||
| has_frontmatter | Starts with YAML frontmatter |
|
||||
| sections_complete | All template sections present |
|
||||
| cross_references | session_id included |
|
||||
| progressive_consistency | References to upstream docs are valid |
|
||||
|
||||
### 4b: Validation Routing
|
||||
|
||||
| Doc Type | Validation Method |
|
||||
|----------|------------------|
|
||||
| product-brief | Self-validation only → report |
|
||||
| requirements (PRD) | Self-validation + **DISCUSS-002** |
|
||||
| architecture | Self-validation only → report |
|
||||
| epics | Self-validation only → report |
|
||||
|
||||
**DISCUSS-002** (PRD only) - Multi-perspective critique via parallel CLI calls:
|
||||
|
||||
```bash
|
||||
# Quality perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review requirements document from quality perspective
|
||||
CONTEXT: @<session>/spec/requirements/_index.md
|
||||
EXPECTED: Rating (1-5) + quality issues + improvement suggestions
|
||||
CONSTRAINTS: Focus on completeness, testability, consistency" --tool gemini --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Product perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review requirements document from product perspective
|
||||
CONTEXT: @<session>/spec/requirements/_index.md
|
||||
EXPECTED: Rating (1-5) + product concerns + alignment feedback
|
||||
CONSTRAINTS: Focus on user value, market fit, scope clarity" --tool codex --mode analysis`, { run_in_background: true })
|
||||
|
||||
# Coverage perspective
|
||||
Bash(`ccw cli -p "PURPOSE: Review requirements document from coverage perspective
|
||||
CONTEXT: @<session>/spec/requirements/_index.md
|
||||
EXPECTED: Rating (1-5) + coverage gaps + missing requirements
|
||||
CONSTRAINTS: Focus on edge cases, non-functional requirements, traceability" --tool claude --mode analysis`, { run_in_background: true })
|
||||
```
|
||||
|
||||
Wait for all results, aggregate ratings and feedback, determine consensus verdict per protocol.
|
||||
|
||||
**Report**: doc type, validation status, discuss verdict (PRD only), output path.
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Scenario | Resolution |
|
||||
|----------|------------|
|
||||
| CLI failure | Retry once with alternative tool. Still fails → log, continue next |
|
||||
| CLI critique fails | Skip critique, log warning |
|
||||
| Cumulative 3 task failures | SendMessage to coordinator, STOP |
|
||||
| Prior doc not found | Notify coordinator, request prerequisite |
|
||||
| Discussion contradicts prior docs | Note conflict, flag for coordinator |
|
||||
@@ -0,0 +1,134 @@
|
||||
# Command: dispatch
|
||||
|
||||
Create task chains based on execution mode. v2: 3 discuss points instead of 6.
|
||||
|
||||
## Phase 2: Context Loading
|
||||
|
||||
| Input | Source | Required |
|
||||
|-------|--------|----------|
|
||||
| Mode | Phase 1 requirements | Yes |
|
||||
| Session folder | Phase 2 session init | Yes |
|
||||
| Scope | User requirements | Yes |
|
||||
|
||||
## Phase 3: Task Chain Creation
|
||||
|
||||
### Spec Pipeline (6 tasks, 3 discuss)
|
||||
|
||||
| # | Subject | Owner | BlockedBy | Description | Validation |
|
||||
|---|---------|-------|-----------|-------------|------------|
|
||||
| 1 | RESEARCH-001 | analyst | (none) | Seed analysis and context gathering | DISCUSS-001 |
|
||||
| 2 | DRAFT-001 | writer | RESEARCH-001 | Generate Product Brief | self-validate |
|
||||
| 3 | DRAFT-002 | writer | DRAFT-001 | Generate Requirements/PRD | DISCUSS-002 |
|
||||
| 4 | DRAFT-003 | writer | DRAFT-002 | Generate Architecture Document | self-validate |
|
||||
| 5 | DRAFT-004 | writer | DRAFT-003 | Generate Epics & Stories | self-validate |
|
||||
| 6 | QUALITY-001 | reviewer | DRAFT-004 | 5-dimension spec quality + sign-off | DISCUSS-003 |
|
||||
|
||||
### Impl Pipeline (4 tasks)
|
||||
|
||||
| # | Subject | Owner | BlockedBy | Description |
|
||||
|---|---------|-------|-----------|-------------|
|
||||
| 1 | PLAN-001 | planner | (none) | Multi-angle exploration and planning |
|
||||
| 2 | IMPL-001 | executor | PLAN-001 | Code implementation |
|
||||
| 3 | TEST-001 | tester | IMPL-001 | Test-fix cycles |
|
||||
| 4 | REVIEW-001 | reviewer | IMPL-001 | 4-dimension code review |
|
||||
|
||||
### FE Pipeline (3 tasks)
|
||||
|
||||
| # | Subject | Owner | BlockedBy | Description |
|
||||
|---|---------|-------|-----------|-------------|
|
||||
| 1 | PLAN-001 | planner | (none) | Planning (frontend focus) |
|
||||
| 2 | DEV-FE-001 | fe-developer | PLAN-001 | Frontend implementation |
|
||||
| 3 | QA-FE-001 | fe-qa | DEV-FE-001 | 5-dimension frontend QA |
|
||||
|
||||
### Fullstack Pipeline (6 tasks)
|
||||
|
||||
| # | Subject | Owner | BlockedBy | Description |
|
||||
|---|---------|-------|-----------|-------------|
|
||||
| 1 | PLAN-001 | planner | (none) | Fullstack planning |
|
||||
| 2 | IMPL-001 | executor | PLAN-001 | Backend implementation |
|
||||
| 3 | DEV-FE-001 | fe-developer | PLAN-001 | Frontend implementation |
|
||||
| 4 | TEST-001 | tester | IMPL-001 | Backend test-fix |
|
||||
| 5 | QA-FE-001 | fe-qa | DEV-FE-001 | Frontend QA |
|
||||
| 6 | REVIEW-001 | reviewer | TEST-001, QA-FE-001 | Full code review |
|
||||
|
||||
### Composite Modes
|
||||
|
||||
| Mode | Construction | PLAN-001 BlockedBy |
|
||||
|------|-------------|-------------------|
|
||||
| full-lifecycle | Spec (6) + Impl (4) | QUALITY-001 |
|
||||
| full-lifecycle-fe | Spec (6) + Fullstack (6) | QUALITY-001 |
|
||||
|
||||
### Task Description Template
|
||||
|
||||
```
|
||||
TaskCreate({
|
||||
subject: "<TASK-ID>",
|
||||
description: "PURPOSE: <what> | Success: <criteria>
|
||||
TASK:
|
||||
- <step 1>
|
||||
- <step 2>
|
||||
- <step 3>
|
||||
CONTEXT:
|
||||
- Session: <session-folder>
|
||||
- Scope: <scope>
|
||||
- Upstream: <artifacts>
|
||||
EXPECTED: <deliverable> + <quality>
|
||||
CONSTRAINTS: <scope limits>
|
||||
---
|
||||
Validation: <DISCUSS-NNN or self-validate>
|
||||
InnerLoop: <true|false>",
|
||||
addBlockedBy: [<deps>]
|
||||
})
|
||||
```
|
||||
|
||||
### Revision Task Template
|
||||
|
||||
```
|
||||
TaskCreate({
|
||||
subject: "<ORIGINAL-ID>-R1",
|
||||
owner: "<same-role>",
|
||||
description: "PURPOSE: Revision of <ORIGINAL-ID> | Success: Address feedback
|
||||
TASK:
|
||||
- Review original + feedback
|
||||
- Apply fixes
|
||||
- Validate
|
||||
CONTEXT:
|
||||
- Session: <session-folder>
|
||||
- Original: <artifact-path>
|
||||
- Feedback: <text>
|
||||
EXPECTED: Updated artifact + summary
|
||||
---
|
||||
Validation: <same-as-original>
|
||||
InnerLoop: <true|false>",
|
||||
blockedBy: [<predecessor-R1 if cascaded>]
|
||||
})
|
||||
```
|
||||
|
||||
**Cascade Rules**:
|
||||
|
||||
| Revised Task | Downstream |
|
||||
|-------------|-----------|
|
||||
| RESEARCH-001 | DRAFT-001~004-R1, QUALITY-001-R1 |
|
||||
| DRAFT-001 | DRAFT-002~004-R1, QUALITY-001-R1 |
|
||||
| DRAFT-002 | DRAFT-003~004-R1, QUALITY-001-R1 |
|
||||
| DRAFT-003 | DRAFT-004-R1, QUALITY-001-R1 |
|
||||
| DRAFT-004 | QUALITY-001-R1 |
|
||||
|
||||
## Phase 4: Validation
|
||||
|
||||
| Check | Criteria |
|
||||
|-------|----------|
|
||||
| Task count | Matches mode total |
|
||||
| Dependencies | Every blockedBy references existing task |
|
||||
| Owner | Each task owner matches Role Registry |
|
||||
| Session ref | Every task contains `Session:` |
|
||||
| Validation field | Spec tasks have Validation field |
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Scenario | Resolution |
|
||||
|----------|------------|
|
||||
| Unknown mode | Reject with supported modes |
|
||||
| Missing spec for impl-only | Error, suggest spec-only |
|
||||
| TaskCreate fails | Log error, report |
|
||||
| Duplicate task | Skip, log warning |
|
||||
@@ -0,0 +1,134 @@
|
||||
# Command: monitor
|
||||
|
||||
Event-driven pipeline coordination. v2: 3 discuss points, simplified consensus handling.
|
||||
|
||||
## Constants
|
||||
|
||||
| Constant | Value |
|
||||
|----------|-------|
|
||||
| SPAWN_MODE | background |
|
||||
| ONE_STEP_PER_INVOCATION | true |
|
||||
| FAST_ADVANCE_AWARE | true |
|
||||
| WORKER_AGENT | team-worker |
|
||||
|
||||
## Phase 2: Context Loading
|
||||
|
||||
| Input | Source | Required |
|
||||
|-------|--------|----------|
|
||||
| Session file | team-session.json | Yes |
|
||||
| Task list | TaskList() | Yes |
|
||||
| Active workers | session.active_workers[] | Yes |
|
||||
|
||||
## Phase 3: Handler Routing
|
||||
|
||||
| Priority | Condition | Handler |
|
||||
|----------|-----------|---------|
|
||||
| 1 | `[<role-name>]` from worker | handleCallback |
|
||||
| 2 | "check" or "status" | handleCheck |
|
||||
| 3 | "resume" / "continue" | handleResume |
|
||||
| 4 | None (initial spawn) | handleSpawnNext |
|
||||
| 5 | "revise" + task ID | handleRevise |
|
||||
| 6 | "feedback" + text | handleFeedback |
|
||||
| 7 | "recheck" | handleRecheck |
|
||||
| 8 | "improve" | handleImprove |
|
||||
|
||||
---
|
||||
|
||||
### handleCallback
|
||||
|
||||
```
|
||||
Receive callback from [<role>]
|
||||
+- Progress update? -> Update session -> STOP
|
||||
+- Task completed? -> remove from active_workers -> update session
|
||||
| +- Handle checkpoints (QUALITY-001)
|
||||
| +- -> handleSpawnNext
|
||||
+- No matching worker -> scan all active -> handleSpawnNext or STOP
|
||||
```
|
||||
|
||||
Fast-advance reconciliation: read team_msg fast_advance entries, sync active_workers.
|
||||
|
||||
### handleCheck
|
||||
|
||||
Read-only status report, no advancement.
|
||||
|
||||
```
|
||||
[coordinator] Pipeline Status (v2)
|
||||
[coordinator] Mode: <mode> | Progress: <completed>/<total> (<percent>%)
|
||||
[coordinator] Discuss: <completed-discuss>/<total-discuss> rounds
|
||||
|
||||
[coordinator] Execution Graph:
|
||||
Spec Phase:
|
||||
[<icon> RESEARCH-001(+D1)] -> [<icon> DRAFT-001] -> [<icon> DRAFT-002(+D2)] -> [<icon> DRAFT-003] -> [<icon> DRAFT-004] -> [<icon> QUALITY-001(+D3)]
|
||||
Impl Phase:
|
||||
[<icon> PLAN-001] -> [<icon> IMPL-001] -> [<icon> TEST-001] + [<icon> REVIEW-001]
|
||||
|
||||
done=completed >>>=running o=pending
|
||||
```
|
||||
|
||||
Then STOP.
|
||||
|
||||
### handleResume
|
||||
|
||||
```
|
||||
Load active_workers
|
||||
+- No active -> handleSpawnNext
|
||||
+- Has active -> check each:
|
||||
+- completed -> mark done
|
||||
+- in_progress -> still running
|
||||
+- other -> reset to pending
|
||||
After: some completed -> handleSpawnNext; all running -> STOP
|
||||
```
|
||||
|
||||
### handleSpawnNext
|
||||
|
||||
```
|
||||
Collect task states from TaskList()
|
||||
+- readySubjects: pending + all blockedBy completed
|
||||
+- NONE + work in progress -> STOP
|
||||
+- NONE + nothing running -> PIPELINE_COMPLETE -> Phase 5
|
||||
+- HAS ready -> for each:
|
||||
+- Inner Loop role AND already active? -> SKIP
|
||||
+- Spawn team-worker (see SKILL.md Spawn Template)
|
||||
+- Add to active_workers
|
||||
Update session -> STOP
|
||||
```
|
||||
|
||||
### handleRevise / handleFeedback / handleRecheck / handleImprove
|
||||
|
||||
Same as v1 (see dispatch.md for templates). Changes:
|
||||
- Revision tasks use v2 Validation field ("self-validate" or "DISCUSS-NNN")
|
||||
|
||||
---
|
||||
|
||||
### Consensus-Blocked Handling (v2 simplified)
|
||||
|
||||
Only 3 discuss points to handle:
|
||||
|
||||
```
|
||||
handleCallback receives consensus_blocked:
|
||||
+- DISCUSS-003 (QUALITY) + HIGH -> PAUSE for user (final gate)
|
||||
+- Any discuss + HIGH -> Create REVISION task (max 1 per task)
|
||||
+- MEDIUM -> proceed with warning, log to wisdom/issues.md
|
||||
+- LOW -> proceed normally
|
||||
```
|
||||
|
||||
### Fast-Advance State Sync
|
||||
|
||||
On every coordinator wake:
|
||||
1. Read team_msg fast_advance entries
|
||||
2. Sync active_workers with spawned successors
|
||||
|
||||
### Worker Failure Handling
|
||||
|
||||
1. Reset task -> pending
|
||||
2. Log via team_msg (type: error)
|
||||
3. Report to user
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Scenario | Resolution |
|
||||
|----------|------------|
|
||||
| Session not found | Error, suggest re-init |
|
||||
| Unknown role callback | Log, scan for completions |
|
||||
| Pipeline stall | Check missing tasks, report |
|
||||
| Fast-advance orphan | Reset to pending, re-spawn |
|
||||
139
.claude/skills/team-lifecycle-v2/roles/coordinator/role.md
Normal file
139
.claude/skills/team-lifecycle-v2/roles/coordinator/role.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# Coordinator Role
|
||||
|
||||
Orchestrate team-lifecycle-v2: team creation, task dispatching, progress monitoring, session state. Uses **team-worker agent** for all worker spawns.
|
||||
|
||||
## Identity
|
||||
|
||||
- **Name**: `coordinator` | **Tag**: `[coordinator]`
|
||||
- **Responsibility**: Parse requirements -> Create team -> Dispatch tasks -> Monitor progress -> Report
|
||||
|
||||
## Boundaries
|
||||
|
||||
### MUST
|
||||
- Parse user requirements and clarify via AskUserQuestion
|
||||
- Create team and spawn workers using **team-worker** agent type
|
||||
- Dispatch tasks with proper dependency chains
|
||||
- Monitor progress via callbacks and route messages
|
||||
- Maintain session state (team-session.json)
|
||||
|
||||
### MUST NOT
|
||||
- Execute spec/impl/research work directly
|
||||
- Modify task outputs
|
||||
- Skip dependency validation
|
||||
|
||||
---
|
||||
|
||||
## Entry Router
|
||||
|
||||
| Detection | Condition | Handler |
|
||||
|-----------|-----------|---------|
|
||||
| Worker callback | Message contains `[role-name]` tag | -> handleCallback |
|
||||
| Status check | "check" or "status" | -> handleCheck |
|
||||
| Manual resume | "resume" or "continue" | -> handleResume |
|
||||
| Interrupted session | Active/paused session in `.workflow/.team/TLS-*` | -> Phase 0 |
|
||||
| New session | None of above | -> Phase 1 |
|
||||
|
||||
For callback/check/resume: load `commands/monitor.md`, execute handler, STOP.
|
||||
|
||||
---
|
||||
|
||||
## Phase 0: Session Resume Check
|
||||
|
||||
1. Scan `.workflow/.team/TLS-*/team-session.json` for active/paused
|
||||
2. No sessions -> Phase 1
|
||||
3. Single session -> resume (reconciliation)
|
||||
4. Multiple -> AskUserQuestion
|
||||
|
||||
**Session Reconciliation**:
|
||||
1. Audit TaskList, reconcile with session state
|
||||
2. Reset in_progress -> pending (interrupted tasks)
|
||||
3. Rebuild team if disbanded
|
||||
4. Create missing tasks with correct blockedBy
|
||||
5. Kick first executable -> Phase 4
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Requirement Clarification
|
||||
|
||||
1. Parse arguments for mode, scope, focus
|
||||
2. Ask missing parameters via AskUserQuestion:
|
||||
- Mode: spec-only / impl-only / full-lifecycle / fe-only / fullstack / full-lifecycle-fe
|
||||
- Scope: project description
|
||||
3. Frontend auto-detection (keyword + package.json scanning)
|
||||
4. Store requirements
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Create Team + Initialize Session
|
||||
|
||||
1. Generate session ID: `TLS-<slug>-<date>`
|
||||
2. Create session folder: `.workflow/.team/<session-id>/`
|
||||
3. TeamCreate
|
||||
4. Initialize directories (spec/, discussions/, plan/, explorations/)
|
||||
5. Write team-session.json
|
||||
6. Initialize meta.json via team_msg state_update:
|
||||
|
||||
```
|
||||
mcp__ccw-tools__team_msg({
|
||||
operation: "log",
|
||||
session_id: "<session-id>",
|
||||
from: "coordinator",
|
||||
type: "state_update",
|
||||
summary: "Session initialized",
|
||||
data: {
|
||||
pipeline_mode: "<mode>",
|
||||
pipeline_stages: [<role-list>],
|
||||
roles: [<all-roles>],
|
||||
team_name: "lifecycle-v2"
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Create Task Chain
|
||||
|
||||
Delegate to `commands/dispatch.md`:
|
||||
1. Read Task Metadata Registry for task definitions
|
||||
2. Create tasks via TaskCreate with correct blockedBy
|
||||
3. Include `Session: <session-folder>` in every task
|
||||
4. Mark discuss rounds (DISCUSS-001, DISCUSS-002, DISCUSS-003) or "self-validate"
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: Spawn-and-Stop
|
||||
|
||||
1. Load `commands/monitor.md`
|
||||
2. Find ready tasks (pending + blockedBy resolved)
|
||||
3. Spawn team-worker for each ready task
|
||||
4. Output summary
|
||||
5. STOP
|
||||
|
||||
### Checkpoint Gate (QUALITY-001)
|
||||
|
||||
When QUALITY-001 completes:
|
||||
1. Read readiness-report.md
|
||||
2. Parse quality gate and dimension scores
|
||||
3. Output Checkpoint Template (see SKILL.md)
|
||||
4. Pause for user command
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: Report + Next Steps
|
||||
|
||||
1. Count completed tasks, duration
|
||||
2. List deliverables
|
||||
3. Update session status -> "completed"
|
||||
4. Offer next steps: exit / view / extend / generate plan
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Resolution |
|
||||
|-------|------------|
|
||||
| Task timeout | Log, mark failed, ask user |
|
||||
| Worker crash | Respawn worker, reassign task |
|
||||
| Dependency cycle | Detect, report, halt |
|
||||
| Invalid mode | Reject, ask to clarify |
|
||||
| Session corruption | Attempt recovery |
|
||||
169
.claude/skills/team-lifecycle-v2/specs/team-config.json
Normal file
169
.claude/skills/team-lifecycle-v2/specs/team-config.json
Normal file
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"team_name": "team-lifecycle-v2",
|
||||
"team_display_name": "Team Lifecycle v2",
|
||||
"description": "Optimized team-worker agent architecture: discuss reduced 6→3, progressive refinement preserved",
|
||||
"version": "6.0.0",
|
||||
"architecture": "team-worker agent + role-specs",
|
||||
"role_structure": "role-specs/{name}.md (Phase 2-4 only)",
|
||||
"worker_agent": "team-worker",
|
||||
|
||||
"roles": {
|
||||
"coordinator": {
|
||||
"task_prefix": null,
|
||||
"responsibility": "Pipeline orchestration, requirement clarification, task chain creation",
|
||||
"message_types": ["plan_approved", "plan_revision", "task_unblocked", "fix_required", "error", "shutdown"]
|
||||
},
|
||||
"analyst": {
|
||||
"task_prefix": "RESEARCH",
|
||||
"role_spec": "role-specs/analyst.md",
|
||||
"responsibility": "Seed analysis, codebase exploration, context gathering + discuss",
|
||||
"inline_discuss": "DISCUSS-001",
|
||||
"inner_loop": false,
|
||||
"message_types": ["research_ready", "research_progress", "error"]
|
||||
},
|
||||
"writer": {
|
||||
"task_prefix": "DRAFT",
|
||||
"role_spec": "role-specs/writer.md",
|
||||
"responsibility": "Product Brief / PRD / Architecture / Epics generation. Discuss at PRD only, self-validate others",
|
||||
"inner_loop": true,
|
||||
"inline_discuss": ["DISCUSS-002"],
|
||||
"message_types": ["draft_ready", "draft_revision", "error"]
|
||||
},
|
||||
"planner": {
|
||||
"task_prefix": "PLAN",
|
||||
"role_spec": "role-specs/planner.md",
|
||||
"responsibility": "Multi-angle exploration and structured implementation planning",
|
||||
"inner_loop": true,
|
||||
"message_types": ["plan_ready", "plan_revision", "error"]
|
||||
},
|
||||
"executor": {
|
||||
"task_prefix": "IMPL",
|
||||
"role_spec": "role-specs/executor.md",
|
||||
"responsibility": "Code implementation following approved plans",
|
||||
"inner_loop": true,
|
||||
"message_types": ["impl_complete", "impl_progress", "error"]
|
||||
},
|
||||
"tester": {
|
||||
"task_prefix": "TEST",
|
||||
"role_spec": "role-specs/tester.md",
|
||||
"responsibility": "Adaptive test-fix cycles, progressive testing",
|
||||
"inner_loop": false,
|
||||
"message_types": ["test_result", "fix_required", "error"]
|
||||
},
|
||||
"reviewer": {
|
||||
"task_prefix": "REVIEW",
|
||||
"additional_prefixes": ["QUALITY", "IMPROVE"],
|
||||
"role_spec": "role-specs/reviewer.md",
|
||||
"responsibility": "Code review (REVIEW-*) + Spec quality (QUALITY-*) + Improvement (IMPROVE-*) + final discuss",
|
||||
"inline_discuss": "DISCUSS-003",
|
||||
"inner_loop": false,
|
||||
"message_types": ["review_result", "quality_result", "quality_recheck", "fix_required", "error"]
|
||||
},
|
||||
"architect": {
|
||||
"task_prefix": "ARCH",
|
||||
"role_spec": "role-specs/architect.md",
|
||||
"responsibility": "Architecture assessment, tech feasibility. Consulting role",
|
||||
"role_type": "consulting",
|
||||
"inner_loop": false,
|
||||
"message_types": ["arch_ready", "arch_concern", "error"]
|
||||
},
|
||||
"fe-developer": {
|
||||
"task_prefix": "DEV-FE",
|
||||
"role_spec": "role-specs/fe-developer.md",
|
||||
"responsibility": "Frontend implementation",
|
||||
"role_type": "frontend-pipeline",
|
||||
"inner_loop": false,
|
||||
"message_types": ["dev_fe_complete", "dev_fe_progress", "error"]
|
||||
},
|
||||
"fe-qa": {
|
||||
"task_prefix": "QA-FE",
|
||||
"role_spec": "role-specs/fe-qa.md",
|
||||
"responsibility": "5-dimension frontend review, GC loop",
|
||||
"role_type": "frontend-pipeline",
|
||||
"inner_loop": false,
|
||||
"message_types": ["qa_fe_passed", "qa_fe_result", "fix_required", "error"]
|
||||
}
|
||||
},
|
||||
|
||||
"subagents": {
|
||||
"discuss": {
|
||||
"spec": "subagents/discuss-subagent.md",
|
||||
"type": "cli-discuss-agent",
|
||||
"callable_by": ["analyst", "writer", "reviewer"],
|
||||
"purpose": "Multi-perspective critique (3 rounds: direction, requirements, final gate)"
|
||||
}
|
||||
},
|
||||
|
||||
"checkpoint_commands": {
|
||||
"revise": {
|
||||
"handler": "handleRevise",
|
||||
"pattern": "revise <TASK-ID> [feedback]",
|
||||
"cascade": true
|
||||
},
|
||||
"feedback": {
|
||||
"handler": "handleFeedback",
|
||||
"pattern": "feedback <text>",
|
||||
"cascade": true
|
||||
},
|
||||
"recheck": {
|
||||
"handler": "handleRecheck",
|
||||
"pattern": "recheck",
|
||||
"cascade": false
|
||||
},
|
||||
"improve": {
|
||||
"handler": "handleImprove",
|
||||
"pattern": "improve [dimension]",
|
||||
"cascade": false
|
||||
}
|
||||
},
|
||||
|
||||
"pipelines": {
|
||||
"spec-only": {
|
||||
"description": "Spec pipeline: research(+D1) -> brief -> prd(+D2) -> arch -> epics -> quality(+D3)",
|
||||
"task_chain": ["RESEARCH-001", "DRAFT-001", "DRAFT-002", "DRAFT-003", "DRAFT-004", "QUALITY-001"],
|
||||
"discuss_points": ["RESEARCH-001", "DRAFT-002", "QUALITY-001"],
|
||||
"beats": 6
|
||||
},
|
||||
"impl-only": {
|
||||
"description": "Implementation pipeline: plan -> implement -> test + review",
|
||||
"task_chain": ["PLAN-001", "IMPL-001", "TEST-001", "REVIEW-001"],
|
||||
"beats": 3
|
||||
},
|
||||
"full-lifecycle": {
|
||||
"description": "Full lifecycle: spec + impl (PLAN blockedBy QUALITY)",
|
||||
"task_chain": "spec-only + impl-only (PLAN-001 blockedBy QUALITY-001)",
|
||||
"beats": 9
|
||||
},
|
||||
"fe-only": {
|
||||
"description": "Frontend-only: plan -> dev -> qa",
|
||||
"task_chain": ["PLAN-001", "DEV-FE-001", "QA-FE-001"],
|
||||
"gc_loop": { "max_rounds": 2, "convergence": "score >= 8 && critical === 0" }
|
||||
},
|
||||
"fullstack": {
|
||||
"description": "Fullstack: plan -> backend + frontend parallel -> test + qa -> review",
|
||||
"task_chain": ["PLAN-001", "IMPL-001||DEV-FE-001", "TEST-001||QA-FE-001", "REVIEW-001"]
|
||||
},
|
||||
"full-lifecycle-fe": {
|
||||
"description": "Full lifecycle with frontend",
|
||||
"task_chain": "spec-only + fullstack (PLAN-001 blockedBy QUALITY-001)"
|
||||
}
|
||||
},
|
||||
|
||||
"frontend_detection": {
|
||||
"keywords": ["component", "page", "UI", "frontend", "CSS", "HTML", "React", "Vue", "Tailwind", "Svelte", "Next.js"],
|
||||
"routing_rules": {
|
||||
"frontend_only": "All tasks match frontend keywords",
|
||||
"fullstack": "Mix of frontend and backend tasks",
|
||||
"backend_only": "No frontend keywords (default impl-only)"
|
||||
}
|
||||
},
|
||||
|
||||
"session_dirs": {
|
||||
"base": ".workflow/.team/TLS-{slug}-{YYYY-MM-DD}/",
|
||||
"spec": "spec/",
|
||||
"discussions": "discussions/",
|
||||
"plan": "plan/",
|
||||
"explorations": "explorations/",
|
||||
"messages": ".msg/"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user