mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-12 02:37:45 +08:00
从子目录执行 skill 时,相对路径 .workflow/ 会导致产物落到错误位置。
通过 git rev-parse --show-toplevel || pwd 检测项目根目录,
所有 .workflow/ 路径引用统一加上 {projectRoot} 前缀确保路径正确。
涉及 72 个文件,覆盖 20+ 个 skill。
11 KiB
11 KiB
Phase 1: Discovery & Initialization
Source: Fused from
commands/workflow/review-session-cycle.mdPhase 1 +commands/workflow/review-module-cycle.mdPhase 1
Overview
Detect review mode (session or module), resolve target files, create workflow session, initialize output directory structure and state files.
Mode Detection
The review mode is determined by the input arguments:
- Session mode: No path pattern provided, OR a
WFS-*session ID is provided. Reviews all changes within an existing workflow session (git-based change detection). - Module mode: Glob/path patterns are provided (e.g.,
src/auth/**,src/payment/processor.ts). Reviews specific files/directories regardless of session history.
Session Mode (review-session-cycle)
Step 1.1: Session Discovery
// If session ID not provided, auto-detect
if (!providedSessionId) {
// Check for active sessions
const activeSessions = Glob('${projectRoot}/.workflow/active/WFS-*');
if (activeSessions.length === 1) {
sessionId = activeSessions[0].match(/WFS-[^/]+/)[0];
} else if (activeSessions.length > 1) {
// List sessions and prompt user
error("Multiple active sessions found. Please specify session ID.");
} else {
error("No active session found. Create session first.");
}
} else {
sessionId = providedSessionId;
}
// Validate session exists
Bash(`test -d ${projectRoot}/.workflow/active/${sessionId} && echo "EXISTS"`);
Step 1.2: Session Validation
- Ensure session has implementation artifacts (check
.summaries/or.task/directory) - Extract session creation timestamp from
workflow-session.json - Use timestamp for git log filtering:
git log --since="${sessionCreatedAt}"
Step 1.3: Changed Files Detection
# Get files changed since session creation
git log --since="${sessionCreatedAt}" --name-only --pretty=format: | sort -u
Module Mode (review-module-cycle)
Step 1.1: Session Creation
// Create workflow session for this review (type: review)
// Orchestrator handles session creation directly
Bash(`mkdir -p ${projectRoot}/.workflow/active/WFS-review-${Date.now()}`);
// Initialize workflow-session.json
const sessionId = `WFS-review-${Date.now()}`;
Write(`${projectRoot}/.workflow/active/${sessionId}/workflow-session.json`, JSON.stringify({
session_id: sessionId,
type: "review",
description: `Code review for ${targetPattern}`,
created_at: new Date().toISOString()
}, null, 2));
Step 1.2: Path Resolution & Validation
# Expand glob pattern to file list (relative paths from project root)
find . -path "./src/auth/**" -type f | sed 's|^\./||'
# Validate files exist and are readable
for file in ${resolvedFiles[@]}; do
test -r "$file" || error "File not readable: $file"
done
- Parse and expand file patterns (glob support):
src/auth/**-> actual file list - Validation: Ensure all specified files exist and are readable
- Store as relative paths from project root (e.g.,
src/auth/service.ts) - Agents construct absolute paths dynamically during execution
Syntax Rules:
- All paths are relative from project root (e.g.,
src/auth/**not/src/auth/**) - Multiple patterns: comma-separated, no spaces (e.g.,
src/auth/**,src/payment/**) - Glob and specific files can be mixed (e.g.,
src/auth/**,src/config.ts)
Supported Patterns:
| Pattern Type | Example | Description |
|---|---|---|
| Glob directory | src/auth/** |
All files under src/auth/ |
| Glob with extension | src/**/*.ts |
All .ts files under src/ |
| Specific file | src/payment/processor.ts |
Single file |
| Multiple patterns | src/auth/**,src/payment/** |
Comma-separated (no spaces) |
Resolution Process:
- Parse input pattern (split by comma, trim whitespace)
- Expand glob patterns to file list via
findcommand - Validate all files exist and are readable
- Error if pattern matches 0 files
- Store resolved file list in review-state.json
Common Steps (Both Modes)
Step 1.4: Output Directory Setup
- Output directory:
${projectRoot}/.workflow/active/${sessionId}/.review/ - Create directory structure:
mkdir -p ${sessionDir}/.review/{dimensions,iterations,reports}
Step 1.5: Initialize Review State
- State initialization: Create
review-state.jsonwith metadata, dimensions, max_iterations (merged metadata + state) - Session mode includes
git_changesin metadata - Module mode includes
target_patternandresolved_filesin metadata - Progress tracking: Create
review-progress.jsonfor progress tracking
Step 1.6: Initialize Review Progress
- Create
review-progress.jsonfor real-time dashboard updates via polling - See Review Progress JSON schema below
Step 1.7: Progress Tracking Initialization
- Set up progress tracking with hierarchical structure
- Mark Phase 1 completed, Phase 2 in_progress
Review State JSON (Session Mode)
Purpose: Unified state machine and metadata (merged from metadata + state)
{
"session_id": "WFS-payment-integration",
"review_id": "review-20250125-143022",
"review_type": "session",
"metadata": {
"created_at": "2025-01-25T14:30:22Z",
"git_changes": {
"commit_range": "abc123..def456",
"files_changed": 15,
"insertions": 342,
"deletions": 128
},
"dimensions": ["security", "architecture", "quality", "action-items", "performance", "maintainability", "best-practices"],
"max_iterations": 3
},
"phase": "parallel|aggregate|iterate|complete",
"current_iteration": 1,
"dimensions_reviewed": ["security", "architecture", "quality", "action-items", "performance", "maintainability", "best-practices"],
"selected_strategy": "comprehensive",
"next_action": "execute_parallel_reviews|aggregate_findings|execute_deep_dive|generate_final_report|complete",
"severity_distribution": {
"critical": 2,
"high": 5,
"medium": 12,
"low": 8
},
"critical_files": [
{
"file": "src/payment/processor.ts",
"finding_count": 5,
"dimensions": ["security", "architecture", "quality"]
}
],
"iterations": [
{
"iteration": 1,
"findings_analyzed": ["uuid-1", "uuid-2"],
"findings_resolved": 1,
"findings_escalated": 1,
"severity_change": {
"before": {"critical": 2, "high": 5, "medium": 12, "low": 8},
"after": {"critical": 1, "high": 6, "medium": 12, "low": 8}
},
"timestamp": "2025-01-25T14:30:00Z"
}
],
"completion_criteria": {
"target": "no_critical_findings_and_high_under_5",
"current_status": "in_progress",
"estimated_completion": "2 iterations remaining"
}
}
Field Descriptions:
phase: Current execution phase (state machine pointer)current_iteration: Iteration counter (used for max check)next_action: Next step orchestrator should executeseverity_distribution: Aggregated counts across all dimensionscritical_files: Files appearing in 3+ dimensions with metadataiterations[]: Historical log for trend analysis
Review State JSON (Module Mode)
Purpose: Unified state machine and metadata (merged from metadata + state)
{
"review_id": "review-20250125-143022",
"review_type": "module",
"session_id": "WFS-auth-system",
"metadata": {
"created_at": "2025-01-25T14:30:22Z",
"target_pattern": "src/auth/**",
"resolved_files": [
"src/auth/service.ts",
"src/auth/validator.ts",
"src/auth/middleware.ts"
],
"dimensions": ["security", "architecture", "quality", "action-items", "performance", "maintainability", "best-practices"],
"max_iterations": 3
},
"phase": "parallel|aggregate|iterate|complete",
"current_iteration": 1,
"dimensions_reviewed": ["security", "architecture", "quality", "action-items", "performance", "maintainability", "best-practices"],
"selected_strategy": "comprehensive",
"next_action": "execute_parallel_reviews|aggregate_findings|execute_deep_dive|generate_final_report|complete",
"severity_distribution": {
"critical": 2,
"high": 5,
"medium": 12,
"low": 8
},
"critical_files": [...],
"iterations": [...],
"completion_criteria": {...}
}
Review Progress JSON
Purpose: Real-time dashboard updates via polling
{
"review_id": "review-20250125-143022",
"last_update": "2025-01-25T14:35:10Z",
"phase": "parallel|aggregate|iterate|complete",
"current_iteration": 1,
"progress": {
"parallel_review": {
"total_dimensions": 7,
"completed": 5,
"in_progress": 2,
"percent_complete": 71
},
"deep_dive": {
"total_findings": 6,
"analyzed": 2,
"in_progress": 1,
"percent_complete": 33
}
},
"agent_status": [
{
"agent_type": "review-agent",
"dimension": "security",
"status": "completed",
"started_at": "2025-01-25T14:30:00Z",
"completed_at": "2025-01-25T15:15:00Z",
"duration_ms": 2700000
},
{
"agent_type": "deep-dive-agent",
"finding_id": "sec-001-uuid",
"status": "in_progress",
"started_at": "2025-01-25T14:32:00Z"
}
],
"estimated_completion": "2025-01-25T16:00:00Z"
}
Output File Structure
{projectRoot}/.workflow/active/WFS-{session-id}/.review/
├── review-state.json # Orchestrator state machine (includes metadata)
├── review-progress.json # Real-time progress for dashboard
├── dimensions/ # Per-dimension results
│ ├── security.json
│ ├── architecture.json
│ ├── quality.json
│ ├── action-items.json
│ ├── performance.json
│ ├── maintainability.json
│ └── best-practices.json
├── iterations/ # Deep-dive results
│ ├── iteration-1-finding-{uuid}.json
│ └── iteration-2-finding-{uuid}.json
└── reports/ # Human-readable reports
├── security-analysis.md
├── security-cli-output.txt
├── deep-dive-1-{uuid}.md
└── ...
Session Context
{projectRoot}/.workflow/active/WFS-{session-id}/
├── workflow-session.json
├── IMPL_PLAN.md
├── TODO_LIST.md
├── .task/
├── .summaries/
└── .review/ # Review results (this command)
└── (structure above)
Output
- Variables:
sessionId,reviewId,resolvedFiles,reviewMode,outputDir - Files:
review-state.json,review-progress.json
Next Phase
Return to orchestrator, then auto-continue to Phase 2: Parallel Review.