mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-01 14:03:54 +08:00
feat: add templates for epics, product brief, and requirements PRD
- Created a new directory structure for epics and stories with templates for individual epics and an index file. - Added a product brief template for generating product brief documents in Phase 2. - Introduced a requirements PRD template for generating a Product Requirements Document as a directory of individual requirement files in Phase 3. feat: implement V2PipelineTab component for Memory V2 management - Developed the V2PipelineTab component to manage extraction and consolidation processes. - Included ExtractionCard and ConsolidationCard components to handle respective functionalities. - Added JobsList component to display job statuses and allow filtering by job kind. feat: create hooks for Memory V2 pipeline - Implemented custom hooks for managing extraction and consolidation statuses, as well as job listings. - Added mutation hooks to trigger extraction and consolidation processes with automatic query invalidation on success.
This commit is contained in:
251
.codex/skills/team-lifecycle/phases/03-task-chain-creation.md
Normal file
251
.codex/skills/team-lifecycle/phases/03-task-chain-creation.md
Normal file
@@ -0,0 +1,251 @@
|
||||
# Phase 3: Task Chain Creation
|
||||
|
||||
> **COMPACT PROTECTION**: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via `Read("~/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md")` before continuing. Never execute based on summaries.
|
||||
|
||||
## Objective
|
||||
|
||||
Build the full pipeline task chain based on the selected mode, write all tasks to the state file (`team-session.json`). Each task entry contains its ID, owner agent, dependencies, description, and inline discuss metadata. No agents are spawned in this phase.
|
||||
|
||||
---
|
||||
|
||||
## Input
|
||||
|
||||
| Input | Source | Required |
|
||||
|-------|--------|----------|
|
||||
| sessionId | Phase 2 output | Yes |
|
||||
| sessionDir | Phase 2 output | Yes |
|
||||
| state | Phase 2 output (team-session.json) | Yes |
|
||||
| state.mode | Pipeline mode | Yes |
|
||||
| state.scope | Project scope | Yes |
|
||||
| state.spec_path | Spec file path (impl-only) | Conditional |
|
||||
|
||||
---
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Step 3.1: Mode-to-Pipeline Routing
|
||||
|
||||
Select the pipeline definition based on mode.
|
||||
|
||||
| Mode | Pipeline | First Task | Checkpoint |
|
||||
|------|----------|------------|------------|
|
||||
| spec-only | Spec pipeline (6 tasks) | RESEARCH-001 | None |
|
||||
| impl-only | Impl pipeline (4 tasks) | PLAN-001 | None |
|
||||
| fe-only | FE pipeline (3 tasks) | PLAN-001 | None |
|
||||
| fullstack | Fullstack pipeline (6 tasks) | PLAN-001 | None |
|
||||
| full-lifecycle | Spec (6) + Impl (4) | RESEARCH-001 | After QUALITY-001 |
|
||||
| full-lifecycle-fe | Spec (6) + Fullstack (6) | RESEARCH-001 | After QUALITY-001 |
|
||||
|
||||
### Step 3.2: Build Task Entries
|
||||
|
||||
For each task in the selected pipeline, create a task entry object.
|
||||
|
||||
**Task entry schema**:
|
||||
|
||||
```javascript
|
||||
{
|
||||
id: "<TASK-ID>",
|
||||
owner: "<agent-role>",
|
||||
status: "pending",
|
||||
blocked_by: ["<dependency-task-id>", ...],
|
||||
description: "<task description>",
|
||||
inline_discuss: "<DISCUSS-NNN or null>",
|
||||
agent_id: null,
|
||||
artifact_path: null,
|
||||
discuss_verdict: null,
|
||||
discuss_severity: null,
|
||||
started_at: null,
|
||||
completed_at: null,
|
||||
revision_of: null,
|
||||
revision_count: 0,
|
||||
is_checkpoint_after: false
|
||||
}
|
||||
```
|
||||
|
||||
**Task description template** (every task gets this format):
|
||||
|
||||
```
|
||||
<task-description-from-pipeline-table>
|
||||
Session: <session-dir>
|
||||
Scope: <scope>
|
||||
InlineDiscuss: <DISCUSS-NNN or none>
|
||||
```
|
||||
|
||||
### Step 3.3: Spec Pipeline Tasks
|
||||
|
||||
Used by: spec-only, full-lifecycle, full-lifecycle-fe
|
||||
|
||||
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|
||||
|---|-----|-------|-----------|-------------|---------------|
|
||||
| 1 | RESEARCH-001 | analyst | (none) | Seed analysis and context gathering | DISCUSS-001 |
|
||||
| 2 | DRAFT-001 | writer | RESEARCH-001 | Generate Product Brief | DISCUSS-002 |
|
||||
| 3 | DRAFT-002 | writer | DRAFT-001 | Generate Requirements/PRD | DISCUSS-003 |
|
||||
| 4 | DRAFT-003 | writer | DRAFT-002 | Generate Architecture Document | DISCUSS-004 |
|
||||
| 5 | DRAFT-004 | writer | DRAFT-003 | Generate Epics and Stories | DISCUSS-005 |
|
||||
| 6 | QUALITY-001 | reviewer | DRAFT-004 | 5-dimension spec quality + sign-off | DISCUSS-006 |
|
||||
|
||||
QUALITY-001 has `is_checkpoint_after: true` for full-lifecycle and full-lifecycle-fe modes (signals orchestrator to pause for user confirmation before impl phase).
|
||||
|
||||
### Step 3.4: Impl Pipeline Tasks
|
||||
|
||||
Used by: impl-only, full-lifecycle (PLAN-001 blockedBy QUALITY-001)
|
||||
|
||||
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|
||||
|---|-----|-------|-----------|-------------|---------------|
|
||||
| 1 | PLAN-001 | planner | (none) | Multi-angle exploration and planning | none |
|
||||
| 2 | IMPL-001 | executor | PLAN-001 | Code implementation | none |
|
||||
| 3 | TEST-001 | tester | IMPL-001 | Test-fix cycles | none |
|
||||
| 4 | REVIEW-001 | reviewer | IMPL-001 | 4-dimension code review | none |
|
||||
|
||||
For full-lifecycle mode: PLAN-001 `blocked_by` includes `QUALITY-001`.
|
||||
|
||||
TEST-001 and REVIEW-001 both depend on IMPL-001 and can run in parallel.
|
||||
|
||||
### Step 3.5: FE Pipeline Tasks
|
||||
|
||||
Used by: fe-only
|
||||
|
||||
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|
||||
|---|-----|-------|-----------|-------------|---------------|
|
||||
| 1 | PLAN-001 | planner | (none) | Planning (frontend focus) | none |
|
||||
| 2 | DEV-FE-001 | fe-developer | PLAN-001 | Frontend implementation | none |
|
||||
| 3 | QA-FE-001 | fe-qa | DEV-FE-001 | 5-dimension frontend QA | none |
|
||||
|
||||
GC loop: if QA-FE-001 verdict is NEEDS_FIX, the orchestrator dynamically creates DEV-FE-002 and QA-FE-002 during Phase 4. These are NOT pre-created here.
|
||||
|
||||
### Step 3.6: Fullstack Pipeline Tasks
|
||||
|
||||
Used by: fullstack, full-lifecycle-fe (PLAN-001 blockedBy QUALITY-001)
|
||||
|
||||
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|
||||
|---|-----|-------|-----------|-------------|---------------|
|
||||
| 1 | PLAN-001 | planner | (none) | Fullstack planning | none |
|
||||
| 2 | IMPL-001 | executor | PLAN-001 | Backend implementation | none |
|
||||
| 3 | DEV-FE-001 | fe-developer | PLAN-001 | Frontend implementation | none |
|
||||
| 4 | TEST-001 | tester | IMPL-001 | Backend test-fix cycles | none |
|
||||
| 5 | QA-FE-001 | fe-qa | DEV-FE-001 | Frontend QA | none |
|
||||
| 6 | REVIEW-001 | reviewer | TEST-001, QA-FE-001 | Full code review | none |
|
||||
|
||||
IMPL-001 and DEV-FE-001 run in parallel (both depend only on PLAN-001).
|
||||
TEST-001 and QA-FE-001 run in parallel (each depends on its respective impl).
|
||||
REVIEW-001 is a sync barrier -- depends on both TEST-001 and QA-FE-001.
|
||||
|
||||
For full-lifecycle-fe: PLAN-001 `blocked_by` includes `QUALITY-001`.
|
||||
|
||||
### Step 3.7: Composite Mode Assembly
|
||||
|
||||
For composite modes, concatenate pipelines and adjust cross-pipeline dependencies.
|
||||
|
||||
**full-lifecycle** = Spec (6) + Impl (4):
|
||||
|
||||
```
|
||||
Spec pipeline tasks (Step 3.3)
|
||||
+
|
||||
Impl pipeline tasks (Step 3.4)
|
||||
with: PLAN-001.blocked_by = ["QUALITY-001"]
|
||||
with: QUALITY-001.is_checkpoint_after = true
|
||||
```
|
||||
|
||||
**full-lifecycle-fe** = Spec (6) + Fullstack (6):
|
||||
|
||||
```
|
||||
Spec pipeline tasks (Step 3.3)
|
||||
+
|
||||
Fullstack pipeline tasks (Step 3.6)
|
||||
with: PLAN-001.blocked_by = ["QUALITY-001"]
|
||||
with: QUALITY-001.is_checkpoint_after = true
|
||||
```
|
||||
|
||||
### Step 3.8: Impl-Only Pre-Check
|
||||
|
||||
If mode is `impl-only`, verify specification exists:
|
||||
|
||||
```
|
||||
state.spec_path is set?
|
||||
+- YES -> read spec file -> include path in PLAN-001 description
|
||||
+- NO -> error: "impl-only requires existing spec"
|
||||
```
|
||||
|
||||
Add to PLAN-001 description: `Spec: <spec-path>`
|
||||
|
||||
### Step 3.9: Write Pipeline to State File
|
||||
|
||||
```javascript
|
||||
// Read current state
|
||||
const state = JSON.parse(Read("<session-dir>/team-session.json"))
|
||||
|
||||
// Set pipeline
|
||||
state.pipeline = taskEntries // array of task entry objects from steps above
|
||||
state.tasks_total = taskEntries.length
|
||||
state.updated_at = new Date().toISOString()
|
||||
|
||||
// Write back
|
||||
Write("<session-dir>/team-session.json",
|
||||
JSON.stringify(state, null, 2))
|
||||
```
|
||||
|
||||
### Step 3.10: Validation
|
||||
|
||||
Before proceeding, validate the constructed pipeline.
|
||||
|
||||
| Check | Criteria | On Failure |
|
||||
|-------|----------|-----------|
|
||||
| Task count | Matches expected count for mode | Error with mismatch details |
|
||||
| Dependencies | Every blocked_by reference exists as a task ID in the pipeline | Error with dangling reference |
|
||||
| No cycles | Topological sort succeeds (no circular dependencies) | Error with cycle details |
|
||||
| Owner assignment | Each task owner matches a valid agent from Agent Registry | Error with unknown agent |
|
||||
| Unique IDs | No duplicate task IDs | Error with duplicate ID |
|
||||
| Inline discuss | Spec tasks have correct DISCUSS-NNN assignment per round config | Warning if mismatch |
|
||||
| Session reference | Every task description contains `Session: <session-dir>` | Fix missing references |
|
||||
|
||||
### Step 3.11: Output Confirmation
|
||||
|
||||
```
|
||||
[orchestrator] Phase 3: Task chain created
|
||||
Mode: <mode>
|
||||
Tasks: <count>
|
||||
Pipeline:
|
||||
<task-id> (<owner>) [blocked_by: <deps>]
|
||||
<task-id> (<owner>) [blocked_by: <deps>]
|
||||
...
|
||||
First ready task(s): <task-ids with empty blocked_by>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Output
|
||||
|
||||
| Output | Type | Destination |
|
||||
|--------|------|-------------|
|
||||
| state (updated) | Object | Written to team-session.json |
|
||||
| state.pipeline | Array | Task chain with all entries |
|
||||
| Ready task IDs | Array | Tasks with empty blocked_by (passed to Phase 4) |
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- Pipeline array written to state file with correct task count
|
||||
- All dependencies are valid (no dangling, no cycles)
|
||||
- Each task has owner, description, blocked_by, inline_discuss
|
||||
- Composite modes have correct cross-pipeline dependencies
|
||||
- Spec tasks have inline discuss metadata
|
||||
- At least one task has empty blocked_by (pipeline can start)
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error | Resolution |
|
||||
|-------|------------|
|
||||
| Unknown mode | Should not happen (Phase 1 validates), fail with supported mode list |
|
||||
| Missing spec for impl-only | Error, suggest spec-only or full-lifecycle |
|
||||
| Dependency cycle detected | Report cycle, halt pipeline creation |
|
||||
| State file read/write error | Report error, suggest re-initialization |
|
||||
| Duplicate task ID | Skip duplicate, log warning |
|
||||
|
||||
---
|
||||
|
||||
## Next Phase
|
||||
|
||||
Proceed to [Phase 4: Pipeline Coordination](04-pipeline-coordination.md) with the ready task IDs.
|
||||
Reference in New Issue
Block a user