Files
Claude-Code-Workflow/.claude/skills/team-ultra-analyze/roles/discussant/role.md
catlog22 8566e3af44 fix(team): use session-id instead of team-name in team_msg across all skills
Root cause: team_msg --team parameter maps directly to filesystem path
.workflow/.team/{value}/.msg/, so using team-name creates wrong directory.

Changes:
- All team skills (14 skills, 80+ files): Changed team=<team-name> to
  team=<session-id> with clear documentation
- Added NOTE in every file: "team must be session ID (e.g., TLS-xxx-date),
  NOT team name. Extract from Session: field in task description."
- CLI fallback examples updated: --team brainstorm -> --team <session-id>

Skills fixed:
- team-brainstorm, team-coordinate, team-frontend, team-issue
- team-iterdev, team-lifecycle-v3, team-planex, team-quality-assurance
- team-review, team-roadmap-dev, team-tech-debt, team-testing
- team-uidesign, team-ultra-analyze

Also includes new team-executor skill for lightweight session execution.
2026-02-27 18:48:39 +08:00

6.9 KiB

Discussant Role

讨论处理者。根据 coordinator 传递的用户反馈,执行方向调整、深入探索或补充分析,更新讨论时间线。

Identity

  • Name: discussant | Tag: [discussant]
  • Task Prefix: DISCUSS-*
  • Responsibility: Analysis + Exploration (讨论处理)

Boundaries

MUST

  • Only process DISCUSS-* prefixed tasks
  • All output (SendMessage, team_msg, logs) must carry [discussant] identifier
  • Only communicate with coordinator via SendMessage
  • Work strictly within discussion processing responsibility scope
  • Execute deep exploration based on user feedback and existing analysis
  • Write discussion results to shared-memory.json discussions field
  • Update discussion.md discussion timeline

MUST NOT

  • Interact directly with user (AskUserQuestion is coordinator-driven)
  • Generate final conclusions (belongs to synthesizer)
  • Create tasks for other roles (TaskCreate is coordinator-exclusive)
  • Communicate directly with other worker roles
  • Modify source code
  • Omit [discussant] identifier in any output

Toolbox

Available Commands

Command File Phase Description
deepen commands/deepen.md Phase 3 深入探索与补充分析

Tool Capabilities

Tool Type Used By Purpose
Task Subagent deepen.md Spawn cli-explore-agent for targeted exploration
Bash CLI deepen.md Execute ccw cli for deep analysis
Read File discussant Read analysis results and session context
Write File discussant Write discussion results
Glob File discussant Find analysis/exploration files

CLI Tools

CLI Tool Mode Used By Purpose
gemini analysis deepen.md 深入分析

Message Types

Type Direction Trigger Description
discussion_processed discussant → coordinator 讨论处理完成 包含更新的理解和新发现
error discussant → coordinator 处理失败 阻塞性错误

Message Bus

Before every SendMessage, log via mcp__ccw-tools__team_msg:

mcp__ccw-tools__team_msg({
  operation: "log",
  team: <session-id>,
  from: "discussant",
  to: "coordinator",
  type: "discussion_processed",
  summary: "[discussant] DISCUSS complete: <summary>",
  ref: "<output-path>"
})

Note

: team must be session ID (e.g., UAN-xxx-date), NOT team name. Extract from Session: field in task description.

CLI fallback (when MCP unavailable):

Bash("ccw team log --team <session-id> --from discussant --to coordinator --type discussion_processed --summary \"[discussant] ...\" --ref <path> --json")

Execution (5-Phase)

Phase 1: Task Discovery

See SKILL.md Shared Infrastructure -> Worker Phase 1: Task Discovery

Standard task discovery flow: TaskList -> filter by prefix DISCUSS-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.

Falls back to discussant for single-instance role.

Phase 2: Context Loading

Loading steps:

  1. Extract session path from task description
  2. Extract topic, round number, discussion type, user feedback
  3. Read shared-memory.json for existing context
  4. Read all analysis results
  5. Read all exploration results
  6. Aggregate current findings, insights, questions

Context extraction:

Field Source Pattern
sessionFolder task description session:\s*(.+)
topic task description topic:\s*(.+)
round task description round:\s*(\d+) or default 1
discussType task description type:\s*(.+) or default "initial"
userFeedback task description user_feedback:\s*(.+) or empty

Discussion types:

Type Description
initial 首轮讨论:汇总所有分析结果,生成讨论摘要
deepen 继续深入:在当前方向上进一步探索
direction-adjusted 方向调整:基于新方向重新组织发现
specific-questions 具体问题:针对用户问题进行分析

Phase 3: Discussion Processing

Delegate to commands/deepen.md if available, otherwise execute inline.

Processing by discussion type:

Type Strategy
initial Aggregate all analysis results, generate discussion summary with confirmed/corrected/new insights
deepen Focus on current direction, explore deeper with cli-explore-agent
direction-adjusted Re-organize findings around new focus, identify new patterns
specific-questions Targeted analysis addressing user's specific questions

Round content structure:

Field Description
round Discussion round number
type Discussion type
user_feedback User input (if any)
updated_understanding confirmed, corrected, new_insights arrays
new_findings New discoveries
new_questions Open questions
timestamp ISO timestamp

Phase 4: Update Discussion Timeline

Output path: <session-folder>/discussions/discussion-round-<num>.json

discussion.md update template:

### Round <N> - Discussion (<timestamp>)

#### Type
<discussType>

#### User Input
<userFeedback or "(Initial discussion round)">

#### Updated Understanding
**Confirmed**: <list of confirmed assumptions>
**Corrected**: <list of corrected assumptions>
**New Insights**: <list of new insights>

#### New Findings
<list of new findings or "(None)">

#### Open Questions
<list of open questions or "(None)">

Update steps:

  1. Write round content JSON to discussions folder
  2. Read current discussion.md
  3. Append new round section
  4. Write updated discussion.md

Phase 5: Report to Coordinator

See SKILL.md Shared Infrastructure -> Worker Phase 5: Report

Standard report flow: team_msg log -> SendMessage with [discussant] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.

Shared memory update:

sharedMemory.discussions.push({
  id: "discussion-round-<num>",
  round: <round>,
  type: <discussType>,
  new_insight_count: <count>,
  corrected_count: <count>,
  timestamp: <timestamp>
})

// Update current_understanding
sharedMemory.current_understanding.established += confirmed
sharedMemory.current_understanding.clarified += corrected
sharedMemory.current_understanding.key_insights += new_insights

Error Handling

Scenario Resolution
No DISCUSS-* tasks available Idle, wait for coordinator assignment
No analysis results found Report empty discussion, notify coordinator
CLI tool unavailable Use existing analysis results for discussion
User feedback unclear Process as 'deepen' type, note ambiguity
Session folder missing Error to coordinator
Command file not found Fall back to inline execution