Files
Claude-Code-Workflow/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md
catlog22 dd72e95e4d 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.
2026-02-27 13:27:27 +08:00

7.2 KiB

Phase 1: Requirement Clarification

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/01-requirement-clarification.md") before continuing. Never execute based on summaries.

Objective

Parse user input, detect execution mode, apply frontend auto-detection, and gather all parameters needed for pipeline initialization. No agents are spawned in this phase -- it is purely orchestrator-local work.


Input

Input Source Required
User arguments $ARGUMENTS (raw user input) Yes
Project root Current working directory Yes
Existing sessions .workflow/.team/TLS-*/team-session.json No (checked for resume)

Execution Steps

Step 1.1: Session Resume Check (Phase 0)

Before requirement parsing, scan for interrupted sessions.

// Scan for active/paused sessions
const sessionFiles = Glob(".workflow/.team/TLS-*/team-session.json")

// Filter to active or paused
const activeSessions = sessionFiles
  .map(f => JSON.parse(Read(f)))
  .filter(s => s.status === "active" || s.status === "paused")

Decision table:

Active Sessions Action
0 Proceed to Step 1.2 (new session)
1 Ask user: "Found active session . Resume? (yes/no)"
2+ Ask user to select: "Multiple active sessions found: . Which to resume? (or 'new' for fresh start)"

If user chooses to resume:

  • Read the selected session's state file
  • Proceed to Session Reconciliation (see orchestrator.md Session Resume section)
  • Skip remaining Phase 1 steps, jump directly to Phase 4

If user chooses new session:

  • Continue to Step 1.2

Step 1.2: Parse Arguments

Extract explicit settings from user input.

Recognized parameters (from argument text or flags):

Parameter Detection Values
mode Explicit mention or --mode flag spec-only, impl-only, full-lifecycle, fe-only, fullstack, full-lifecycle-fe
scope Main content of user description Free text
focus --focus flag or explicit mention Comma-separated areas
depth --depth flag shallow, normal, deep
execution --parallel or --sequential flag sequential, parallel
spec-path --spec flag (impl-only mode) File path to existing spec

Parsing logic:

Parse user input text:
  +- Contains "--mode <value>"? -> extract mode
  +- Contains "--focus <areas>"? -> extract focus areas
  +- Contains "--depth <level>"? -> extract depth
  +- Contains "--parallel"? -> execution = parallel
  +- Contains "--sequential"? -> execution = sequential
  +- Contains "--spec <path>"? -> extract spec path
  +- Remaining text after flag removal -> scope description

Step 1.3: Ask for Missing Parameters

If critical parameters are not extractable from the input, ask the user.

Required parameters and fallback defaults:

Parameter Required Default Ask If Missing
mode Yes (none) Yes - "Which pipeline mode? (spec-only / impl-only / full-lifecycle / fe-only / fullstack / full-lifecycle-fe)"
scope Yes (none) Yes - "Please describe the project scope"
execution No parallel No - use default
depth No normal No - use default
spec-path Conditional (none) Yes, only if mode is impl-only - "Path to existing specification?"

Ask format (output to user, then wait for response):

[orchestrator] Phase 1: Requirement Clarification

Missing parameter: <parameter-name>
<question-text>

Options: <option-list>

Step 1.4: Frontend Auto-Detection

For impl-only and full-lifecycle modes, check if the user description or project structure indicates frontend work.

Detection signals:

Signal Detection Method Result
FE keywords in scope Match against keyword list (see below) FE detected
BE keywords in scope Match against keyword list BE detected
FE framework in package.json Read package.json, check for react/vue/svelte/next dependencies FE framework present
FE file patterns in project Glob for *.tsx, *.jsx, *.vue, *.svelte FE files exist

FE keyword list: component, page, UI, frontend, CSS, HTML, React, Vue, Tailwind, Svelte, Next.js, Nuxt, shadcn, design system, responsive, layout, form, dialog, modal, sidebar, navbar, theme, dark mode, animation

BE keyword list: API, database, server, endpoint, backend, middleware, migration, schema, REST, GraphQL, authentication, authorization, queue, worker, cron

Upgrade decision table:

Current Mode FE Detected BE Detected Upgrade To
impl-only Yes No fe-only
impl-only Yes Yes fullstack
impl-only No Yes (no change)
full-lifecycle Yes - full-lifecycle-fe
full-lifecycle No - (no change)
spec-only - - (no change, spec is mode-agnostic)
fe-only - - (no change)
fullstack - - (no change)

If an upgrade is detected, inform the user:

[orchestrator] Frontend auto-detection: upgraded mode from <old> to <new>
  Detected signals: <signal-list>
  To override, specify --mode explicitly.

Step 1.5: Impl-Only Pre-Check

If mode is impl-only, verify that a specification exists:

Mode is impl-only?
  +- spec-path provided? -> validate file exists -> proceed
  +- spec-path not provided?
      +- Scan session dir for existing spec artifacts -> found? use them
      +- Not found -> error: "impl-only requires existing spec. Provide --spec <path> or use full-lifecycle mode."

Step 1.6: Store Requirements

Assemble the final requirements object. This will be passed to Phase 2.

const requirements = {
  mode: "<finalized-mode>",
  scope: "<scope-description>",
  focus: ["<area1>", "<area2>"],
  depth: "<shallow | normal | deep>",
  execution: "<sequential | parallel>",
  spec_path: "<path-or-null>",
  frontend_detected: true | false,
  frontend_signals: ["<signal1>", "<signal2>"],
  raw_input: "<original-user-input>"
}

Output

Output Type Destination
requirements Object Passed to Phase 2
resume_session Object or null If resuming, session state passed to Phase 4

Success Criteria

  • All required parameters captured (mode, scope)
  • Mode finalized (including auto-detection upgrades)
  • If impl-only: spec path validated
  • If resuming: session state loaded and reconciled
  • No ambiguity remaining in execution parameters

Error Handling

Error Resolution
Unknown mode value Report supported modes, ask user to clarify
Spec path not found (impl-only) Error with suggestion to use full-lifecycle
User provides contradictory flags Report conflict, ask user to resolve
Session file corrupt during resume check Skip corrupt session, proceed with new
No user response to question Wait indefinitely (interactive mode)

Next Phase

Proceed to Phase 2: Team Initialization with the requirements object.