## Changes - Simplify analysis output strategy to optional modular structure - Update synthesis/artifacts documentation to use AskUserQuestion tool - Add modular output strategy for brainstorm analysis - Simplify clarification deduplication in lite-plan - Add "Fix, Don't Hide" section to CLAUDE.md guidelines - Simplify project.json schema by removing unused fields - Update session ID format in lite-fix/lite-plan workflows - Add development index to project JSON schema 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
15 KiB
name, description, argument-hint, allowed-tools
| name | description | argument-hint | allowed-tools |
|---|---|---|---|
| artifacts | Interactive clarification generating confirmed guidance specification through role-based analysis and synthesis | topic or challenge description [--count N] | TodoWrite(*), Read(*), Write(*), Glob(*), AskUserQuestion(*) |
Overview
Seven-phase workflow: Context collection → Topic analysis → Role selection → Role questions → Conflict resolution → Final check → Generate specification
All user interactions use AskUserQuestion tool (max 4 questions per call, multi-round).
Input: "GOAL: [objective] SCOPE: [boundaries] CONTEXT: [background]" [--count N]
Output: .workflow/active/WFS-{topic}/.brainstorming/guidance-specification.md
Core Principle: Questions dynamically generated from project context + topic keywords, NOT generic templates
Parameters:
topic(required): Topic or challenge description (structured format recommended)--count N(optional): Number of roles to select (system recommends N+2 options, default: 3)
Quick Reference
Phase Summary
| Phase | Goal | AskUserQuestion | Storage |
|---|---|---|---|
| 0 | Context collection | - | context-package.json |
| 1 | Topic analysis | 2-4 questions | intent_context |
| 2 | Role selection | 1 multi-select | selected_roles |
| 3 | Role questions | 3-4 per role | role_decisions[role] |
| 4 | Conflict resolution | max 4 per round | cross_role_decisions |
| 4.5 | Final check | progressive rounds | additional_decisions |
| 5 | Generate spec | - | guidance-specification.md |
AskUserQuestion Pattern
// Single-select (Phase 1, 3, 4)
AskUserQuestion({
questions: [
{
question: "{问题文本}",
header: "{短标签}", // max 12 chars
multiSelect: false,
options: [
{ label: "{选项}", description: "{说明和影响}" },
{ label: "{选项}", description: "{说明和影响}" },
{ label: "{选项}", description: "{说明和影响}" }
]
}
// ... max 4 questions per call
]
})
// Multi-select (Phase 2)
AskUserQuestion({
questions: [{
question: "请选择 {count} 个角色",
header: "角色选择",
multiSelect: true,
options: [/* max 4 options per call */]
}]
})
Multi-Round Execution
const BATCH_SIZE = 4;
for (let i = 0; i < allQuestions.length; i += BATCH_SIZE) {
const batch = allQuestions.slice(i, i + BATCH_SIZE);
AskUserQuestion({ questions: batch });
// Store responses before next round
}
Task Tracking
TodoWrite Rule: EXTEND auto-parallel's task list (NOT replace/overwrite)
When called from auto-parallel:
- Find artifacts parent task → Mark "in_progress"
- APPEND sub-tasks (Phase 0-5) → Mark each as completes
- When Phase 5 completes → Mark parent "completed"
- PRESERVE all other auto-parallel tasks
Standalone Mode:
[
{"content": "Initialize session", "status": "pending", "activeForm": "Initializing"},
{"content": "Phase 0: Context collection", "status": "pending", "activeForm": "Phase 0"},
{"content": "Phase 1: Topic analysis (2-4 questions)", "status": "pending", "activeForm": "Phase 1"},
{"content": "Phase 2: Role selection", "status": "pending", "activeForm": "Phase 2"},
{"content": "Phase 3: Role questions (per role)", "status": "pending", "activeForm": "Phase 3"},
{"content": "Phase 4: Conflict resolution", "status": "pending", "activeForm": "Phase 4"},
{"content": "Phase 4.5: Final clarification", "status": "pending", "activeForm": "Phase 4.5"},
{"content": "Phase 5: Generate specification", "status": "pending", "activeForm": "Phase 5"}
]
Execution Phases
Session Management
- Check
.workflow/active/for existing sessions - Multiple → Prompt selection | Single → Use it | None → Create
WFS-[topic-slug] - Parse
--count Nparameter (default: 3) - Store decisions in
workflow-session.json
Phase 0: Context Collection
Goal: Gather project context BEFORE user interaction
Steps:
- Check if
context-package.jsonexists → Skip if valid - Invoke
context-search-agent(BRAINSTORM MODE - lightweight) - Output:
.workflow/active/WFS-{session-id}/.process/context-package.json
Graceful Degradation: If agent fails, continue to Phase 1 without context
Task(
subagent_type="context-search-agent",
description="Gather project context for brainstorm",
prompt=`
Execute context-search-agent in BRAINSTORM MODE (Phase 1-2 only).
Session: ${session_id}
Task: ${task_description}
Output: .workflow/${session_id}/.process/context-package.json
Required fields: metadata, project_context, assets, dependencies, conflict_detection
`
)
Phase 1: Topic Analysis
Goal: Extract keywords/challenges enriched by Phase 0 context
Steps:
- Load Phase 0 context (tech_stack, modules, conflict_risk)
- Deep topic analysis (entities, challenges, constraints, metrics)
- Generate 2-4 context-aware probing questions
- AskUserQuestion → Store to
session.intent_context
Example:
AskUserQuestion({
questions: [
{
question: "实时协作平台的主要技术挑战?",
header: "核心挑战",
multiSelect: false,
options: [
{ label: "实时数据同步", description: "100+用户同时在线,状态同步复杂度高" },
{ label: "可扩展性架构", description: "用户规模增长时的系统扩展能力" },
{ label: "冲突解决机制", description: "多用户同时编辑的冲突处理策略" }
]
},
{
question: "MVP阶段最关注的指标?",
header: "优先级",
multiSelect: false,
options: [
{ label: "功能完整性", description: "实现所有核心功能" },
{ label: "用户体验", description: "流畅的交互体验和响应速度" },
{ label: "系统稳定性", description: "高可用性和数据一致性" }
]
}
]
})
⚠️ CRITICAL: Questions MUST reference topic keywords. Generic "Project type?" violates dynamic generation.
Phase 2: Role Selection
Goal: User selects roles from intelligent recommendations
Available Roles: data-architect, product-manager, product-owner, scrum-master, subject-matter-expert, system-architect, test-strategist, ui-designer, ux-expert
Steps:
- Analyze Phase 1 keywords → Recommend count+2 roles with rationale
- AskUserQuestion (multiSelect=true) → Store to
session.selected_roles - If count+2 > 4, split into multiple rounds
Example:
AskUserQuestion({
questions: [{
question: "请选择 3 个角色参与头脑风暴分析",
header: "角色选择",
multiSelect: true,
options: [
{ label: "system-architect", description: "实时同步架构设计和技术选型" },
{ label: "ui-designer", description: "协作界面用户体验和状态展示" },
{ label: "product-manager", description: "功能优先级和MVP范围决策" },
{ label: "data-architect", description: "数据同步模型和存储方案设计" }
]
}]
})
⚠️ CRITICAL: User MUST interact. NEVER auto-select without confirmation.
Phase 3: Role-Specific Questions
Goal: Generate deep questions mapping role expertise to Phase 1 challenges
Algorithm:
- FOR each selected role:
- Map Phase 1 challenges to role domain
- Generate 3-4 questions (implementation depth, trade-offs, edge cases)
- AskUserQuestion per role → Store to
session.role_decisions[role]
- Process roles sequentially (one at a time for clarity)
- If role needs > 4 questions, split into multiple rounds
Example (system-architect):
AskUserQuestion({
questions: [
{
question: "100+ 用户实时状态同步方案?",
header: "状态同步",
multiSelect: false,
options: [
{ label: "Event Sourcing", description: "完整事件历史,支持回溯,存储成本高" },
{ label: "集中式状态管理", description: "实现简单,单点瓶颈风险" },
{ label: "CRDT", description: "去中心化,自动合并,学习曲线陡" }
]
},
{
question: "两个用户同时编辑冲突如何解决?",
header: "冲突解决",
multiSelect: false,
options: [
{ label: "自动合并", description: "用户无感知,可能产生意外结果" },
{ label: "手动解决", description: "用户控制,增加交互复杂度" },
{ label: "版本控制", description: "保留历史,需要分支管理" }
]
}
]
})
Phase 4: Conflict Resolution
Goal: Resolve ACTUAL conflicts from Phase 3 answers
Algorithm:
- Analyze Phase 3 answers for conflicts:
- Contradictory choices (e.g., "fast iteration" vs "complex Event Sourcing")
- Missing integration (e.g., "Optimistic updates" but no conflict handling)
- Implicit dependencies (e.g., "Live cursors" but no auth defined)
- Generate clarification questions referencing SPECIFIC Phase 3 choices
- AskUserQuestion (max 4 per call, multi-round) → Store to
session.cross_role_decisions - If NO conflicts: Skip Phase 4 (inform user: "未检测到跨角色冲突,跳过Phase 4")
Example:
AskUserQuestion({
questions: [{
question: "CRDT 与 UI 回滚期望冲突,如何解决?\n背景:system-architect选择CRDT,ui-designer期望回滚UI",
header: "架构冲突",
multiSelect: false,
options: [
{ label: "采用 CRDT", description: "保持去中心化,调整UI期望" },
{ label: "显示合并界面", description: "增加用户交互,展示冲突详情" },
{ label: "切换到 OT", description: "支持回滚,增加服务器复杂度" }
]
}]
})
Phase 4.5: Final Clarification
Purpose: Ensure no important points missed before generating specification
Steps:
- Ask initial check:
AskUserQuestion({ questions: [{ question: "在生成最终规范之前,是否有前面未澄清的重点需要补充?", header: "补充确认", multiSelect: false, options: [ { label: "无需补充", description: "前面的讨论已经足够完整" }, { label: "需要补充", description: "还有重要内容需要澄清" } ] }] }) - If "需要补充":
- Analyze user's additional points
- Generate progressive questions (not role-bound, interconnected)
- AskUserQuestion (max 4 per round) → Store to
session.additional_decisions - Repeat until user confirms completion
- If "无需补充": Proceed to Phase 5
Progressive Pattern: Questions interconnected, each round informs next, continue until resolved.
Phase 5: Generate Specification
Steps:
- Load all decisions:
intent_context+selected_roles+role_decisions+cross_role_decisions+additional_decisions - Transform Q&A to declarative: Questions → Headers, Answers → CONFIRMED/SELECTED statements
- Generate
guidance-specification.md - Update
workflow-session.json(metadata only) - Validate: No interrogative sentences, all decisions traceable
Question Guidelines
Core Principle
Target: 开发者(理解技术但需要从用户需求出发)
Question Structure: [业务场景/需求前提] + [技术关注点]
Option Structure: 标签:[技术方案] + 说明:[业务影响] + [技术权衡]
Quality Rules
MUST Include:
- ✅ All questions in Chinese (用中文提问)
- ✅ 业务场景作为问题前提
- ✅ 技术选项的业务影响说明
- ✅ 量化指标和约束条件
MUST Avoid:
- ❌ 纯技术选型无业务上下文
- ❌ 过度抽象的用户体验问题
- ❌ 脱离话题的通用架构问题
Phase-Specific Requirements
| Phase | Focus | Key Requirements |
|---|---|---|
| 1 | 意图理解 | Reference topic keywords, 用户场景、业务约束、优先级 |
| 2 | 角色推荐 | Intelligent analysis (NOT keyword mapping), explain relevance |
| 3 | 角色问题 | Reference Phase 1 keywords, concrete options with trade-offs |
| 4 | 冲突解决 | Reference SPECIFIC Phase 3 choices, explain impact on both roles |
Output & Governance
Output Template
File: .workflow/active/WFS-{topic}/.brainstorming/guidance-specification.md
# [Project] - Confirmed Guidance Specification
**Metadata**: [timestamp, type, focus, roles]
## 1. Project Positioning & Goals
**CONFIRMED Objectives**: [from topic + Phase 1]
**CONFIRMED Success Criteria**: [from Phase 1 answers]
## 2-N. [Role] Decisions
### SELECTED Choices
**[Question topic]**: [User's answer]
- **Rationale**: [From option description]
- **Impact**: [Implications]
### Cross-Role Considerations
**[Conflict resolved]**: [Resolution from Phase 4]
- **Affected Roles**: [Roles involved]
## Cross-Role Integration
**CONFIRMED Integration Points**: [API/Data/Auth from multiple roles]
## Risks & Constraints
**Identified Risks**: [From answers] → Mitigation: [Approach]
## Next Steps
**⚠️ Automatic Continuation** (when called from auto-parallel):
- auto-parallel assigns agents for role-specific analysis
- Each selected role gets conceptual-planning-agent
- Agents read this guidance-specification.md for context
## Appendix: Decision Tracking
| Decision ID | Category | Question | Selected | Phase | Rationale |
|-------------|----------|----------|----------|-------|-----------|
| D-001 | Intent | [Q] | [A] | 1 | [Why] |
| D-002 | Roles | [Selected] | [Roles] | 2 | [Why] |
| D-003+ | [Role] | [Q] | [A] | 3 | [Why] |
File Structure
.workflow/active/WFS-[topic]/
├── workflow-session.json # Metadata ONLY
├── .process/
│ └── context-package.json # Phase 0 output
└── .brainstorming/
└── guidance-specification.md # Full guidance content
Session Metadata
{
"session_id": "WFS-{topic-slug}",
"type": "brainstorming",
"topic": "{original user input}",
"selected_roles": ["system-architect", "ui-designer", "product-manager"],
"phase_completed": "artifacts",
"timestamp": "2025-10-24T10:30:00Z",
"count_parameter": 3
}
⚠️ Rule: Session JSON stores ONLY metadata. All guidance content goes to guidance-specification.md.
Validation Checklist
- ✅ No interrogative sentences (use CONFIRMED/SELECTED)
- ✅ Every decision traceable to user answer
- ✅ Cross-role conflicts resolved or documented
- ✅ Next steps concrete and specific
- ✅ No content duplication between .json and .md
Update Mechanism
IF guidance-specification.md EXISTS:
Prompt: "Regenerate completely / Update sections / Cancel"
ELSE:
Run full Phase 0-5 flow
Governance Rules
- All decisions MUST use CONFIRMED/SELECTED (NO "?" in decision sections)
- Every decision MUST trace to user answer
- Conflicts MUST be resolved (not marked "TBD")
- Next steps MUST be actionable
- Topic preserved as authoritative reference
CRITICAL: Guidance is single source of truth for downstream phases. Ambiguity violates governance.