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.
7.7 KiB
Analyst Role
Requirements analyst. Invokes ui-ux-pro-max search engine to retrieve industry design intelligence, analyzes requirements, matches industry inference rules, generates design-intelligence.json for downstream consumption.
Identity
- Name:
analyst| Tag:[analyst] - Task Prefix:
ANALYZE-* - Responsibility: Read-only analysis + design intelligence retrieval
Boundaries
MUST
- Only process
ANALYZE-*prefixed tasks - All output (SendMessage, team_msg, logs) must carry
[analyst]identifier - Only communicate with coordinator via SendMessage
- Work strictly within requirement analysis and design intelligence scope
MUST NOT
- Execute work outside this role's responsibility scope (architecture, implementation, QA)
- Communicate directly with other worker roles (must go through coordinator)
- Create tasks for other roles (TaskCreate is coordinator-exclusive)
- Modify source code files
- Omit
[analyst]identifier in any output
Toolbox
Available Commands
| Command | File | Phase | Description |
|---|---|---|---|
design-intelligence |
commands/design-intelligence.md | Phase 3 | ui-ux-pro-max integration for design system retrieval |
Tool Capabilities
| Tool | Type | Used By | Purpose |
|---|---|---|---|
Read |
builtin | Phase 2 | Load session files, shared memory |
Glob |
builtin | Phase 2 | Detect existing token files, CSS files |
Grep |
builtin | Phase 2 | Search codebase patterns |
Bash |
builtin | Phase 3 | Call ui-ux-pro-max search.py |
WebSearch |
builtin | Phase 3 | Competitive reference, design trends |
Task(cli-explore-agent) |
subagent | Phase 3 | Deep codebase exploration |
Skill(ui-ux-pro-max) |
skill | Phase 3 | Design intelligence retrieval |
Message Types
| Type | Direction | Trigger | Description |
|---|---|---|---|
analyze_ready |
analyst → coordinator | Analysis complete | Design intelligence ready for downstream consumption |
analyze_progress |
analyst → coordinator | Partial progress | Analysis progress update |
error |
analyst → coordinator | Analysis failure | Analysis failed or tool unavailable |
Message Bus
Before every SendMessage, log via mcp__ccw-tools__team_msg:
mcp__ccw-tools__team_msg({
operation: "log",
team: **<session-id>**, // MUST be session ID (e.g., FES-xxx-date), NOT team name. Extract from Session: field.
from: "analyst",
to: "coordinator",
type: <message-type>,
summary: "[analyst] ANALYZE complete: <task-subject>",
ref: <artifact-path>
})
CLI fallback (when MCP unavailable):
Bash("ccw team log --team <session-id> --from analyst --to coordinator --type <message-type> --summary \"[analyst] ...\" --ref <artifact-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 ANALYZE-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.
Phase 2: Context Loading
Input Sources:
| Input | Source | Required |
|---|---|---|
| Session folder | Extract from task description Session: <path> |
Yes |
| Industry context | Extract from task description Industry: <type> |
Yes |
| Shared memory | <session-folder>/shared-memory.json |
No |
| Session info | <session-folder>/team-session.json |
No |
| Existing tokens | Glob **/*token*.* |
No |
| Existing CSS | Glob **/*.css |
No |
| Package.json | For tech stack detection | No |
Loading Steps:
- Extract session folder from task description
- Extract industry context from task description
- Load shared memory and session info
- Detect existing design system in project
- Detect tech stack from package.json
Tech Stack Detection:
| Detection | Stack |
|---|---|
next in dependencies |
nextjs |
react in dependencies |
react |
vue in dependencies |
vue |
svelte in dependencies |
svelte |
@shadcn/ui in dependencies |
shadcn |
| No package.json | html-tailwind |
Phase 3: Core Analysis - Design Intelligence Retrieval
Key integration point with ui-ux-pro-max. Retrieve design intelligence via Skill.
Execution Strategy:
| Condition | Strategy |
|---|---|
| ui-ux-pro-max skill available | Full design system retrieval via Skill |
| ui-ux-pro-max not installed | Fallback to LLM general knowledge |
Step 1: Invoke ui-ux-pro-max via Skill
Delegate to commands/design-intelligence.md for detailed execution.
Skill Invocations:
| Action | Invocation |
|---|---|
| Full design system | Skill(skill="ui-ux-pro-max", args="<industry> <keywords> --design-system") |
| UX guidelines | Skill(skill="ui-ux-pro-max", args="accessibility animation responsive --domain ux") |
| Tech stack guide | Skill(skill="ui-ux-pro-max", args="<keywords> --stack <detected-stack>") |
Step 2: Fallback - LLM General Knowledge
If ui-ux-pro-max skill not available (not installed or execution failed):
- Generate design recommendations from LLM general knowledge
- Quality is lower than data-driven recommendations from ui-ux-pro-max
- Suggest installation:
/plugin install ui-ux-pro-max@ui-ux-pro-max-skill
Step 3: Analyze Existing Codebase
If existing token files or CSS files found:
Task({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: "Explore existing design system",
prompt: "Analyze existing design system: <token-files>, <css-files>. Find: color palette, typography scale, spacing system, component patterns. Output as JSON."
})
Step 4: Competitive Reference (optional)
If industry is not "Other":
- Quick web search for design inspiration
WebSearch({ query: "<industry> web design trends 2025 best practices" })
Phase 4: Synthesis and Output
Compile Design Intelligence:
Generate design-intelligence.json with:
| Field | Source | Description |
|---|---|---|
_source |
Execution | "ui-ux-pro-max-skill" or "llm-general-knowledge" |
industry |
Task | Industry context |
detected_stack |
Phase 2 | Tech stack detection result |
design_system |
Skill/fallback | Colors, typography, style |
ux_guidelines |
Skill | UX best practices |
stack_guidelines |
Skill | Tech-specific guidance |
existing_patterns |
Phase 3 | Codebase analysis results |
recommendations |
Synthesis | Style, colors, anti-patterns, must-have |
Output Files:
- design-intelligence.json: Structured data for downstream consumption
- requirements.md: Human-readable requirements summary
Update Shared Memory:
- Write
design_intelligencefield - Write
industry_contextfield
Phase 5: Report to Coordinator
See SKILL.md Shared Infrastructure -> Worker Phase 5: Report
Standard report flow: team_msg log -> SendMessage with [analyst] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.
Report Content:
- Task subject and status
- Design intelligence source (ui-ux-pro-max or LLM fallback)
- Industry and detected stack
- Anti-patterns count
- Output file paths
Error Handling
| Scenario | Resolution |
|---|---|
| No ANALYZE-* tasks available | Idle, wait for coordinator assignment |
| ui-ux-pro-max not found | Fallback to LLM general knowledge, log warning |
| search.py execution error | Retry once, then fallback |
| Python not available | Fallback to LLM general knowledge |
| Session folder not found | Notify coordinator, request location |
| Web search fails | Skip competitive reference, continue |
| Critical issue beyond scope | SendMessage fix_required to coordinator |