Files
Claude-Code-Workflow/.claude/skills/team-ultra-analyze/roles/analyst/commands/analyze.md
catlog22 65762af254 feat: Add explorer and synthesizer roles with commands for codebase exploration and synthesis
- Implemented `explorer` role for parallel codebase exploration using `cli-explore-agent`.
- Created `explore.md` command documentation detailing exploration strategy and execution steps.
- Established `synthesizer` role for integrating insights from explorations, analyses, and discussions.
- Developed `synthesize.md` command documentation outlining synthesis strategy and output format.
- Configured team settings in `team-config.json` to support new roles and pipeline modes.
- Added regression test for CodexLens bootstrap fallback to ensure robustness in error handling.
2026-02-18 18:40:12 +08:00

6.6 KiB
Raw Blame History

Command: analyze

CLI 多视角深度分析。基于探索结果,通过 CLI 工具执行深度分析并生成结构化洞察。

When to Use

  • Phase 3 of Analyst
  • 探索结果已就绪,需要深度分析
  • 每个 ANALYZE-* 任务触发一次

Trigger conditions:

  • Analyst Phase 2 完成后(上下文已加载)
  • 方向调整时创建的 ANALYZE-fix 任务

Strategy

Delegation Mode

Mode: CLI通过 ccw cli 执行分析Bash run_in_background: true

Decision Logic

// 根据 perspective 选择 CLI 工具和分析模板
function buildAnalysisConfig(perspective, isDirectionFix) {
  const configs = {
    'technical': {
      tool: 'gemini',
      rule: 'analysis-analyze-code-patterns',
      focus: 'Implementation patterns, code quality, technical debt, feasibility',
      tasks: [
        'Analyze code structure and organization patterns',
        'Identify technical debt and anti-patterns',
        'Evaluate error handling and edge cases',
        'Assess testing coverage and quality'
      ]
    },
    'architectural': {
      tool: 'claude',
      rule: 'analysis-review-architecture',
      focus: 'System design, scalability, component coupling, boundaries',
      tasks: [
        'Evaluate module boundaries and coupling',
        'Analyze data flow and component interactions',
        'Assess scalability and extensibility',
        'Review design pattern usage and consistency'
      ]
    },
    'business': {
      tool: 'codex',
      rule: 'analysis-analyze-code-patterns',
      focus: 'Business logic, domain models, value delivery, stakeholder impact',
      tasks: [
        'Map business logic to code implementation',
        'Identify domain model completeness',
        'Evaluate business rule enforcement',
        'Assess impact on stakeholders and users'
      ]
    },
    'domain_expert': {
      tool: 'gemini',
      rule: 'analysis-analyze-code-patterns',
      focus: 'Domain-specific patterns, standards compliance, best practices',
      tasks: [
        'Compare against domain best practices',
        'Check standards and convention compliance',
        'Identify domain-specific anti-patterns',
        'Evaluate domain model accuracy'
      ]
    }
  }

  const config = configs[perspective] || configs['technical']

  if (isDirectionFix) {
    config.rule = 'analysis-diagnose-bug-root-cause'
    config.tasks = [
      'Re-analyze from adjusted perspective',
      'Identify previously missed patterns',
      'Generate new insights from fresh angle',
      'Update discussion points based on direction change'
    ]
  }

  return config
}

Execution Steps

Step 1: Context Preparation

const config = buildAnalysisConfig(perspective, isDirectionFix)

// 构建探索上下文摘要
const explorationSummary = `
PRIOR EXPLORATION CONTEXT:
- Key files: ${(explorationContext.relevant_files || []).slice(0, 8).map(f => f.path || f).join(', ')}
- Patterns found: ${(explorationContext.patterns || []).slice(0, 5).join('; ')}
- Key findings: ${(explorationContext.key_findings || []).slice(0, 5).join('; ')}
- Questions from exploration: ${(explorationContext.questions_for_analysis || []).slice(0, 3).join('; ')}`

Step 2: Execute CLI Analysis

const cliPrompt = `PURPOSE: ${isDirectionFix
  ? `Supplementary analysis with adjusted focus on "${adjustedFocus}" for topic "${topic}"`
  : `Deep analysis of "${topic}" from ${perspective} perspective`}
Success: ${isDirectionFix
  ? 'New insights from adjusted direction with clear evidence'
  : 'Actionable insights with confidence levels and evidence references'}

${explorationSummary}

TASK:
${config.tasks.map(t => `• ${t}`).join('\n')}
• Generate structured findings with confidence levels (high/medium/low)
• Identify discussion points requiring user input
• List open questions needing further exploration

MODE: analysis
CONTEXT: @**/* | Topic: ${topic}
EXPECTED: JSON-structured analysis with sections: key_insights (with confidence), key_findings (with evidence), discussion_points, open_questions, recommendations (with priority)
CONSTRAINTS: Focus on ${perspective} perspective | ${dimensions.join(', ')} dimensions${isDirectionFix ? ` | Adjusted focus: ${adjustedFocus}` : ''}`

Bash({
  command: `ccw cli -p "${cliPrompt}" --tool ${config.tool} --mode analysis --rule ${config.rule}`,
  run_in_background: true
})

// ⚠️ STOP POINT: Wait for CLI callback before continuing

Step 3: Result Processing

// CLI 结果返回后,解析并结构化
const outputPath = `${sessionFolder}/analyses/analysis-${analyzeNum}.json`

// 从 CLI 输出中提取结构化数据
// CLI 输出通常是 markdown需要解析为 JSON
const analysisResult = {
  perspective,
  dimensions,
  is_direction_fix: isDirectionFix,
  adjusted_focus: adjustedFocus || null,
  key_insights: [
    // 从 CLI 输出提取,每个包含 {insight, confidence, evidence}
  ],
  key_findings: [
    // 具体发现 {finding, file_ref, impact}
  ],
  discussion_points: [
    // 需要用户输入的讨论要点
  ],
  open_questions: [
    // 未解决的问题
  ],
  recommendations: [
    // {action, rationale, priority}
  ],
  _metadata: {
    cli_tool: config.tool,
    cli_rule: config.rule,
    perspective,
    is_direction_fix: isDirectionFix,
    timestamp: new Date().toISOString()
  }
}

Write(outputPath, JSON.stringify(analysisResult, null, 2))

Output Format

{
  "perspective": "technical",
  "dimensions": ["architecture", "implementation"],
  "is_direction_fix": false,
  "key_insights": [
    {"insight": "Authentication uses stateless JWT", "confidence": "high", "evidence": "src/auth/jwt.ts:L42"}
  ],
  "key_findings": [
    {"finding": "No rate limiting on login endpoint", "file_ref": "src/routes/auth.ts:L15", "impact": "Security risk"}
  ],
  "discussion_points": [
    "Should we implement token rotation for refresh tokens?"
  ],
  "open_questions": [
    "What is the expected concurrent user load?"
  ],
  "recommendations": [
    {"action": "Add rate limiting to auth endpoints", "rationale": "Prevent brute force attacks", "priority": "high"}
  ],
  "_metadata": {"cli_tool": "gemini", "cli_rule": "analysis-analyze-code-patterns", "timestamp": "..."}
}

Error Handling

Scenario Resolution
CLI tool unavailable Try fallback: gemini → codex → claude
CLI timeout Retry with shorter prompt, or use exploration results directly
CLI returns empty Use exploration findings as-is, note analysis gap
Invalid CLI output Extract what's parseable, fill gaps with defaults
Exploration context missing Analyze with topic keywords only