- Introduced a new quality standards document outlining assessment criteria for team command .md files, including completeness, pattern compliance, integration, and consistency dimensions. - Established quality gates and issue classification for errors, warnings, and informational notes. - Created a comprehensive team command design patterns document detailing infrastructure and collaboration patterns, including message bus integration, YAML front matter requirements, task lifecycle, five-phase execution structure, and error handling. - Included a pattern selection guide for collaboration scenarios to enhance team interaction models.
15 KiB
Phase 6: Interactive Replan
Interactive workflow replanning with session-level artifact updates and boundary clarification through guided questioning.
Objective
- Intelligently replan workflow sessions or individual tasks
- Interactive clarification to define modification boundaries
- Impact analysis with automatic detection of affected files and dependencies
- Backup management with restore capability
- Comprehensive artifact updates (IMPL_PLAN.md, TODO_LIST.md, task JSONs)
Entry Point
Triggered via /workflow:replan (Replan Mode).
Operation Modes
Session Replan Mode
# Auto-detect active session
/workflow:replan "requirements text"
# Explicit session
/workflow:replan --session WFS-oauth "requirements text"
# File-based input
/workflow:replan --session WFS-oauth requirements-update.md
# Interactive mode
/workflow:replan --interactive
Task Replan Mode
# Direct task update
/workflow:replan IMPL-1 "requirements text"
# Task with explicit session
/workflow:replan --session WFS-oauth IMPL-2 "requirements text"
# Interactive mode
/workflow:replan IMPL-1 --interactive
Language Convention
Interactive question options use Chinese (user-facing UI text) with English identifiers in parentheses. Structural content uses English. This is intentional for Chinese-language workflows.
Execution
Input Parsing
Parse flags:
const sessionFlag = $ARGUMENTS.match(/--session\s+(\S+)/)?.[1]
const interactive = $ARGUMENTS.includes('--interactive')
const taskIdMatch = $ARGUMENTS.match(/\b(IMPL-\d+(?:\.\d+)?)\b/)
const taskId = taskIdMatch?.[1]
Step 6.1: Mode Detection & Session Discovery
Process:
-
Detect Operation Mode:
- Check if task ID provided (IMPL-N or IMPL-N.M format) → Task mode
- Otherwise → Session mode
-
Discover/Validate Session:
- Use
--sessionflag if provided - Otherwise auto-detect from
.workflow/active/ - Validate session exists
- Use
-
Load Session Context:
- Read
workflow-session.json - List existing tasks
- Read
IMPL_PLAN.mdandTODO_LIST.md
- Read
-
Parse Execution Intent (from requirements text):
// Dynamic tool detection from cli-tools.json // Read enabled tools: ["gemini", "qwen", "codex", ...] const enabledTools = loadEnabledToolsFromConfig(); // See ~/.claude/cli-tools.json // Build dynamic patterns from enabled tools function buildExecPatterns(tools) { const patterns = { agent: /改为\s*Agent\s*执行|使用\s*Agent\s*执行/i }; tools.forEach(tool => { // Pattern: "使用 {tool} 执行" or "改用 {tool}" patterns[`cli_${tool}`] = new RegExp( `使用\\s*(${tool})\\s*执行|改用\\s*(${tool})`, 'i' ); }); return patterns; } const execPatterns = buildExecPatterns(enabledTools); let executionIntent = null for (const [key, pattern] of Object.entries(execPatterns)) { if (pattern.test(requirements)) { executionIntent = key.startsWith('cli_') ? { method: 'cli', cli_tool: key.replace('cli_', '') } : { method: 'agent', cli_tool: null } break } }
Output: Session validated, context loaded, mode determined, executionIntent parsed
Auto Mode Support
When --yes or -y flag is used, the command skips interactive clarification and uses safe defaults:
const autoYes = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
Auto Mode Defaults:
- Modification Scope:
tasks_only(safest - only update task details) - Affected Modules: All modules related to the task
- Task Changes:
update_only(no structural changes) - Dependency Changes:
no(preserve existing dependencies) - User Confirmation: Auto-confirm execution
Note: --interactive flag overrides --yes flag (forces interactive mode).
Step 6.2: Interactive Requirement Clarification
Purpose: Define modification scope through guided questioning
Auto Mode Check:
if (autoYes && !interactive) {
// Use defaults and skip to Step 6.3
console.log(`[--yes] Using safe defaults for replan:`)
console.log(` - Scope: tasks_only`)
console.log(` - Changes: update_only`)
console.log(` - Dependencies: preserve existing`)
userSelections = {
scope: 'tasks_only',
modules: 'all_affected',
task_changes: 'update_only',
dependency_changes: false
}
// Proceed to Step 6.3
}
Session Mode Questions
Q1: Modification Scope
Options:
- 仅更新任务细节 (tasks_only)
- 修改规划方案 (plan_update)
- 重构任务结构 (task_restructure)
- 全面重规划 (comprehensive)
Q2: Affected Modules (if scope >= plan_update)
Options: Dynamically generated from existing tasks' focus_paths
- 认证模块 (src/auth)
- 用户管理 (src/user)
- 全部模块
Q3: Task Changes (if scope >= task_restructure)
Options:
- 添加/删除任务 (add_remove)
- 合并/拆分任务 (merge_split)
- 仅更新内容 (update_only)
// Note: Max 4 options for AskUserQuestion
Q4: Dependency Changes
Options:
- 是,需要重新梳理依赖
- 否,保持现有依赖
Task Mode Questions
Q1: Update Type
Options:
- 需求和验收标准 (requirements & acceptance)
- 实现方案 (implementation_approach)
- 文件范围 (focus_paths)
- 依赖关系 (depends_on)
- 全部更新
Q2: Ripple Effect
Options:
- 是,需要同步更新依赖任务
- 否,仅影响当前任务
- 不确定,请帮我分析
Output: User selections stored, modification boundaries defined
Step 6.3: Impact Analysis & Planning
Step 6.3.1: Analyze Required Changes
Determine affected files based on clarification:
interface ImpactAnalysis {
affected_files: {
impl_plan: boolean;
todo_list: boolean;
session_meta: boolean;
tasks: string[];
};
operations: {
type: 'create' | 'update' | 'delete' | 'merge' | 'split';
target: string;
reason: string;
}[];
backup_strategy: {
timestamp: string;
files: string[];
};
}
Step 6.3.2: Generate Modification Plan
## Modification Plan
### Impact Scope
- [ ] IMPL_PLAN.md: Update technical section 3
- [ ] TODO_LIST.md: Add 2 new tasks, delete 1 obsolete task
- [ ] IMPL-001.json: Update implementation approach
- [ ] workflow-session.json: Update task count
### Change Operations
1. **Create**: IMPL-004.json (2FA implementation)
2. **Update**: IMPL-001.json (add 2FA preparation)
3. **Delete**: IMPL-003.json (replaced by new approach)
Step 6.3.3: User Confirmation
// Parse --yes flag
const autoYes = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
if (autoYes) {
// Auto mode: Auto-confirm execution
console.log(`[--yes] Auto-confirming replan execution`)
userConfirmation = 'confirm'
// Proceed to Step 6.4
} else {
// Interactive mode: Ask user
AskUserQuestion({
questions: [{
question: "Modification plan generated. Confirm action:",
header: "Confirm",
options: [
{ label: "Confirm Execute", description: "Apply all modifications" },
{ label: "Adjust Plan", description: "Re-answer questions to adjust scope" },
{ label: "Cancel", description: "Abort this replan" }
],
multiSelect: false
}]
})
}
Output: Modification plan confirmed or adjusted
Step 6.4: Backup Creation
Process:
- Create Backup Directory:
timestamp=$(date -u +"%Y-%m-%dT%H-%M-%S")
backup_dir=".workflow/active/$SESSION_ID/.process/backup/replan-$timestamp"
mkdir -p "$backup_dir"
-
Backup All Affected Files:
- IMPL_PLAN.md
- TODO_LIST.md
- workflow-session.json
- Affected task JSONs
-
Create Backup Manifest:
# Replan Backup Manifest
**Timestamp**: {timestamp}
**Reason**: {replan_reason}
**Scope**: {modification_scope}
## Restoration Command
cp {backup_dir}/* .workflow/active/{session}/
Output: All files safely backed up with manifest
Step 6.5: Apply Modifications
Step 6.5.1: Update IMPL_PLAN.md (if needed)
Use Edit tool to modify specific sections:
- Update affected technical sections
- Update modification date
Step 6.5.2: Update TODO_LIST.md (if needed)
- Add new tasks with
[ ]checkbox - Mark deleted tasks as
[x] ~~task~~ (obsolete) - Update modified task descriptions
Step 6.5.3: Update Task JSONs
For each affected task:
const updated_task = {
...task,
context: {
...task.context,
requirements: [...updated_requirements],
acceptance: [...updated_acceptance]
},
flow_control: {
...task.flow_control,
implementation_approach: [...updated_steps]
},
// Update execution config if intent detected
...(executionIntent && {
meta: {
...task.meta,
execution_config: {
method: executionIntent.method,
cli_tool: executionIntent.cli_tool,
enable_resume: executionIntent.method !== 'agent'
}
}
})
};
Write({
file_path: `.workflow/active/${SESSION_ID}/.task/${task_id}.json`,
content: JSON.stringify(updated_task, null, 2)
});
Note: Implementation approach steps are NO LONGER modified. CLI execution is controlled by task-level meta.execution_config only.
Step 6.5.4: Create New Tasks (if needed)
Generate complete task JSON with all required fields:
- id, title, status
- meta (type, agent)
- context (requirements, focus_paths, acceptance)
- flow_control (pre_analysis, implementation_approach, target_files)
Step 6.5.5: Delete Obsolete Tasks (if needed)
Move to backup instead of hard delete:
mv ".workflow/active/$SESSION_ID/.task/{task-id}.json" "$backup_dir/"
Step 6.5.6: Update Session Metadata
Update workflow-session.json:
- progress.current_tasks
- progress.last_replan
- replan_history array
Output: All modifications applied, artifacts updated
Step 6.6: Verification & Summary
Step 6.6.1: Verify Consistency
- Validate all task JSONs are valid JSON
- Check task count within limits (max 10)
- Verify dependency graph is acyclic
Step 6.6.2: Generate Change Summary
## Replan Complete
### Session Info
- **Session**: {session-id}
- **Timestamp**: {timestamp}
- **Backup**: {backup-path}
### Change Summary
**Scope**: {scope}
**Reason**: {reason}
### Modified Files
- IMPL_PLAN.md: {changes}
- TODO_LIST.md: {changes}
- Task JSONs: {count} files updated
### Task Changes
- **Added**: {task-ids}
- **Deleted**: {task-ids}
- **Updated**: {task-ids}
### Rollback
cp {backup-path}/* .workflow/active/{session}/
Output: Summary displayed, replan complete
TodoWrite Progress Tracking
Session Mode Progress
[
{"content": "Mode detection and session discovery", "status": "completed", "activeForm": "Detecting mode and discovering session"},
{"content": "Interactive requirement clarification", "status": "completed", "activeForm": "Clarifying requirements interactively"},
{"content": "Impact analysis and plan generation", "status": "completed", "activeForm": "Analyzing impact and generating plan"},
{"content": "Backup creation", "status": "completed", "activeForm": "Creating backup"},
{"content": "Apply modifications to artifacts", "status": "completed", "activeForm": "Applying modifications"},
{"content": "Verify consistency", "status": "completed", "activeForm": "Verifying consistency"}
]
Task Mode Progress
[
{"content": "Detect session and load task", "status": "completed", "activeForm": "Detecting session and loading task"},
{"content": "Interactive update confirmation", "status": "completed", "activeForm": "Confirming update interactively"},
{"content": "Apply task modifications", "status": "completed", "activeForm": "Applying task modifications"}
]
Error Handling
Session Errors
# No active session found
ERROR: No active session found
Run /workflow:session:start to create a session
# Session not found
ERROR: Session WFS-invalid not found
Available sessions: [list]
# No changes specified
WARNING: No modifications specified
Use --interactive mode or provide requirements
Task Errors
# Task not found
ERROR: Task IMPL-999 not found in session
Available tasks: [list]
# Task completed
WARNING: Task IMPL-001 is completed
Consider creating new task for additional work
# Circular dependency
ERROR: Circular dependency detected
Resolve dependency conflicts before proceeding
Validation Errors
# Task limit exceeded
ERROR: Replan would create 12 tasks (limit: 10)
Consider: combining tasks, splitting sessions, or removing tasks
# Invalid JSON
ERROR: Generated invalid JSON
Backup preserved, rolling back changes
File Structure
.workflow/active/WFS-session-name/
├── workflow-session.json
├── IMPL_PLAN.md
├── TODO_LIST.md
├── .task/
│ ├── IMPL-001.json
│ ├── IMPL-002.json
│ └── IMPL-003.json
└── .process/
├── context-package.json
└── backup/
└── replan-{timestamp}/
├── MANIFEST.md
├── IMPL_PLAN.md
├── TODO_LIST.md
├── workflow-session.json
└── IMPL-*.json
Examples
Session Replan - Add Feature
/workflow:replan "Add 2FA support"
# Interactive clarification
Q: Modification scope?
A: Comprehensive replan
Q: Affected modules?
A: Auth module, API endpoints
Q: Task changes?
A: Add new tasks, update content
# Execution
Backup created
IMPL_PLAN.md updated
TODO_LIST.md updated
IMPL-004.json created
IMPL-001.json, IMPL-002.json updated
Replan complete! Added 1 task, updated 2 tasks
Task Replan - Update Requirements
/workflow:replan IMPL-002 "Update acceptance criteria to include rate limiting"
# Interactive clarification
Q: Update type?
A: Requirements and acceptance criteria
Q: Ripple effect?
A: Yes, sync dependent tasks
# Execution
Backup created
IMPL-002.json updated
- context.requirements updated
- context.acceptance updated
IMPL-003.json updated (dependent task synced)
Task requirements updated with ripple effect applied
Task Replan - Change Execution Method
/workflow:replan IMPL-001 "Use Codex for execution"
# Semantic parsing detects executionIntent:
# { method: 'cli', cli_tool: 'codex' }
# Execution (no interactive questions needed)
Backup created
IMPL-001.json updated
- meta.execution_config = { method: 'cli', cli_tool: 'codex', enable_resume: true }
Task execution method updated: Agent → CLI (codex)
Completion
Phase 6 is a terminal phase. Replan complete with backup and summary.