maestro-flow 0.3.9 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/workflow-collab-planner.md +1 -1
- package/.claude/agents/workflow-executor.md +1 -1
- package/.claude/agents/workflow-plan-checker.md +1 -1
- package/.claude/agents/workflow-planner.md +1 -1
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +1 -1
- package/.claude/commands/maestro-analyze.md +46 -3
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-execute.md +14 -0
- package/.claude/commands/maestro-plan.md +16 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue-discover.md +2 -2
- package/.claude/commands/manage-issue.md +5 -5
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +335 -0
- package/.codex/skills/maestro-analyze/SKILL.md +84 -75
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +233 -0
- package/.codex/skills/maestro-coordinate/SKILL.md +167 -278
- package/.codex/skills/maestro-execute/SKILL.md +435 -438
- package/.codex/skills/maestro-fork/SKILL.md +68 -0
- package/.codex/skills/maestro-init/SKILL.md +171 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +62 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +66 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +93 -105
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +93 -104
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +14 -11
- package/README.zh-CN.md +14 -11
- package/chains/issue-lifecycle.json +13 -13
- package/chains/singles/issue-analyze.json +3 -3
- package/chains/singles/issue-execute.json +3 -3
- package/chains/singles/issue-plan.json +3 -3
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +92 -12
- package/dashboard/dist-server/src/hooks/constants.js +151 -16
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +5 -0
- package/dist/src/commands/collab.d.ts +1 -34
- package/dist/src/commands/collab.d.ts.map +1 -1
- package/dist/src/commands/collab.js +8 -76
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +5 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +115 -10
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
- package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +5 -1
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.js +7 -3
- package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
- package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
- package/dist/src/hooks/constants.d.ts +92 -12
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +151 -16
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +2 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +2 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
- package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
- package/dist/src/hooks/guards/preflight-guard.js +95 -0
- package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/preflight-core.d.ts +37 -0
- package/dist/src/hooks/preflight-core.d.ts.map +1 -0
- package/dist/src/hooks/preflight-core.js +86 -0
- package/dist/src/hooks/preflight-core.js.map +1 -0
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts +8 -17
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +269 -112
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/i18n/locales/en.d.ts.map +1 -1
- package/dist/src/i18n/locales/en.js +5 -0
- package/dist/src/i18n/locales/en.js.map +1 -1
- package/dist/src/i18n/locales/zh.d.ts.map +1 -1
- package/dist/src/i18n/locales/zh.js +5 -0
- package/dist/src/i18n/locales/zh.js.map +1 -1
- package/dist/src/i18n/types.d.ts +5 -0
- package/dist/src/i18n/types.d.ts.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/collab-adapter.d.ts +17 -0
- package/dist/src/tools/collab-adapter.d.ts.map +1 -1
- package/dist/src/tools/collab-adapter.js +138 -0
- package/dist/src/tools/collab-adapter.js.map +1 -1
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts +24 -0
- package/dist/src/tools/merge-validator.d.ts.map +1 -0
- package/dist/src/tools/merge-validator.js +220 -0
- package/dist/src/tools/merge-validator.js.map +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/dist/src/types/index.d.ts +5 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
- package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
- package/templates/search-tools.md +1 -1
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +471 -471
- package/workflows/cli-tools-usage.md +44 -27
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/delegate-usage.md +3 -3
- package/workflows/execute.md +1 -1
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +343 -343
- package/workflows/issue-analyze.md +6 -2
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue-execute.md +6 -3
- package/workflows/issue-plan.md +5 -2
- package/workflows/maestro-coordinate.codex.md +281 -470
- package/workflows/maestro-coordinate.md +14 -14
- package/workflows/maestro-link-coordinate.md +2 -2
- package/workflows/maestro.codex.md +710 -0
- package/workflows/maestro.md +10 -11
- package/workflows/map.md +111 -111
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +1 -1
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/.claude/commands/manage-issue-analyze.md +0 -62
- package/.claude/commands/manage-issue-execute.md +0 -73
- package/.claude/commands/manage-issue-plan.md +0 -62
- package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
- package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
- package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
package/workflows/refactor.md
CHANGED
|
@@ -1,300 +1,300 @@
|
|
|
1
|
-
# Refactor Workflow
|
|
2
|
-
|
|
3
|
-
Systematically reduce tech debt through scope analysis, task planning, and reflection-driven execution. Each refactoring round records strategy, outcome, and adjustments. Existing tests must pass after every change.
|
|
4
|
-
|
|
5
|
-
Output: scratch/refactor-{slug}-{date}/ with index.json + reflection-log.md + .task/ + .summaries/
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Prerequisites
|
|
10
|
-
|
|
11
|
-
- `.workflow/` directory initialized
|
|
12
|
-
- Test suite available for affected scope (E002 if missing)
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
### Step 1: Parse Scope
|
|
17
|
-
|
|
18
|
-
**Parse scope from $ARGUMENTS:**
|
|
19
|
-
|
|
20
|
-
- Module path (e.g., "src/auth") -> scan that directory
|
|
21
|
-
- Feature area (e.g., "authentication") -> search for related files
|
|
22
|
-
- "all" -> full codebase scan
|
|
23
|
-
- Empty -> prompt user:
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
AskUserQuestion(
|
|
27
|
-
header: "Refactoring Scope",
|
|
28
|
-
question: "What scope should be refactored?",
|
|
29
|
-
options: [
|
|
30
|
-
{ label: "Module path", description: "e.g., src/auth -- specific directory" },
|
|
31
|
-
{ label: "Feature area", description: "e.g., authentication -- conceptual scope" },
|
|
32
|
-
{ label: "Full codebase", description: "Scan everything for tech debt" }
|
|
33
|
-
]
|
|
34
|
-
)
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Generate slug from scope (lowercase, hyphens, max 40 chars).
|
|
38
|
-
Set date to current date (YYYY-MM-DD).
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
### Step 2: Create Scratch Directory
|
|
43
|
-
|
|
44
|
-
**Create scratch directory and index.json:**
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
REFACTOR_DIR=".workflow/scratch/refactor-${slug}-${date}"
|
|
48
|
-
mkdir -p "$REFACTOR_DIR/.task"
|
|
49
|
-
mkdir -p "$REFACTOR_DIR/.summaries"
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Write index.json:
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"id": "refactor-{slug}-{date}",
|
|
56
|
-
"type": "refactor",
|
|
57
|
-
"title": "Refactor: {scope description}",
|
|
58
|
-
"status": "active",
|
|
59
|
-
"created_at": "{ISO timestamp}",
|
|
60
|
-
"updated_at": "{ISO timestamp}",
|
|
61
|
-
"scope": "{original scope argument}",
|
|
62
|
-
"plan": {
|
|
63
|
-
"task_ids": [],
|
|
64
|
-
"task_count": 0
|
|
65
|
-
},
|
|
66
|
-
"execution": {
|
|
67
|
-
"method": "agent",
|
|
68
|
-
"tasks_completed": 0,
|
|
69
|
-
"tasks_total": 0
|
|
70
|
-
},
|
|
71
|
-
"reflection": {
|
|
72
|
-
"rounds": 0,
|
|
73
|
-
"strategy_adjustments": []
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
### Step 2.5: Load Project Specs
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
specs_content = maestro spec load --category
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Used in Step 3 to detect pattern violations against project conventions.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
### Step 3: Scope Analysis
|
|
91
|
-
|
|
92
|
-
**Analyze scope for tech debt:**
|
|
93
|
-
|
|
94
|
-
Read all files in scope. Use specs_content (if loaded) to detect convention violations. Identify and categorize issues:
|
|
95
|
-
|
|
96
|
-
1. **Duplication** - Repeated code blocks, copy-paste patterns
|
|
97
|
-
2. **Complexity hotspots** - Functions too long, deep nesting, high cyclomatic complexity
|
|
98
|
-
3. **Naming issues** - Inconsistent naming, unclear variable/function names
|
|
99
|
-
4. **Dependency tangles** - Circular deps, tight coupling, god objects
|
|
100
|
-
5. **Dead code** - Unused functions, unreachable branches
|
|
101
|
-
6. **Pattern violations** - Inconsistent with project conventions (from specs/)
|
|
102
|
-
|
|
103
|
-
Present analysis summary:
|
|
104
|
-
```
|
|
105
|
-
## Scope Analysis: {scope}
|
|
106
|
-
|
|
107
|
-
| Category | Count | Severity |
|
|
108
|
-
|----------|-------|----------|
|
|
109
|
-
| Duplication | 3 | medium |
|
|
110
|
-
| Complexity | 5 | high |
|
|
111
|
-
| Naming | 8 | low |
|
|
112
|
-
| Dependencies | 2 | high |
|
|
113
|
-
| Dead code | 4 | low |
|
|
114
|
-
|
|
115
|
-
Total issues: 22
|
|
116
|
-
Recommended priority: Complexity > Dependencies > Duplication > Naming > Dead code
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Confirm with user before proceeding to planning.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
### Step 4: Plan Refactoring
|
|
124
|
-
|
|
125
|
-
**Generate refactoring plan:**
|
|
126
|
-
|
|
127
|
-
Write plan.json:
|
|
128
|
-
```json
|
|
129
|
-
{
|
|
130
|
-
"scope": "{scope}",
|
|
131
|
-
"total_tasks": N,
|
|
132
|
-
"strategy": "incremental -- each task is independently safe",
|
|
133
|
-
"tasks": ["TASK-001", "TASK-002", ...]
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
For each identified issue, create .task/TASK-{NNN}.json:
|
|
138
|
-
```json
|
|
139
|
-
{
|
|
140
|
-
"id": "TASK-{NNN}",
|
|
141
|
-
"title": "{specific refactoring}",
|
|
142
|
-
"status": "pending",
|
|
143
|
-
"type": "refactor",
|
|
144
|
-
"category": "duplication|complexity|naming|dependency|dead_code|pattern",
|
|
145
|
-
"description": "{what to change and why}",
|
|
146
|
-
"read_first": ["path/to/file.ts", "path/to/related.ts"],
|
|
147
|
-
"files": [
|
|
148
|
-
{ "path": "path/to/file.ts", "action": "modify", "target": "{function_or_class}", "change": "{concrete_change}" }
|
|
149
|
-
],
|
|
150
|
-
"action": "{detailed steps with concrete values}",
|
|
151
|
-
"convergence": {
|
|
152
|
-
"criteria": ["{grep-verifiable completion criterion}"],
|
|
153
|
-
"verification": "Run existing tests to confirm no regressions"
|
|
154
|
-
},
|
|
155
|
-
"implementation": ["{step 1 with concrete values}"],
|
|
156
|
-
"risk": "low|medium|high"
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
Order tasks by: high risk last, dependencies respected, quick wins first.
|
|
161
|
-
|
|
162
|
-
Update index.json plan fields.
|
|
163
|
-
|
|
164
|
-
**Present plan to user via AskUserQuestion:**
|
|
165
|
-
- Show affected files with proposed changes
|
|
166
|
-
- Highlight risk areas and dependency impacts
|
|
167
|
-
- Ask for approval, modifications, or rejection
|
|
168
|
-
- Capture any additional constraints or priorities
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
### Step 5: Execute with Reflection
|
|
173
|
-
|
|
174
|
-
**Execute each task with reflection tracking:**
|
|
175
|
-
|
|
176
|
-
Initialize reflection-log.md:
|
|
177
|
-
```markdown
|
|
178
|
-
# Refactoring Reflection Log
|
|
179
|
-
|
|
180
|
-
Scope: {scope}
|
|
181
|
-
Started: {ISO timestamp}
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
For each task in order:
|
|
187
|
-
|
|
188
|
-
**5a. Execute the refactoring:**
|
|
189
|
-
Implement the change as described in the task.
|
|
190
|
-
|
|
191
|
-
**5b. Run existing tests:**
|
|
192
|
-
```bash
|
|
193
|
-
# Detect and run test suite
|
|
194
|
-
npm test 2>&1 || pytest 2>&1 || go test ./... 2>&1 || echo "No test runner detected"
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
**5c. Record in reflection-log.md:**
|
|
198
|
-
```markdown
|
|
199
|
-
## Round {N}: {task title}
|
|
200
|
-
|
|
201
|
-
- **Strategy:** {approach taken}
|
|
202
|
-
- **Result:** {pass|fail} -- {brief outcome}
|
|
203
|
-
- **Tests:** {all pass | N failures}
|
|
204
|
-
- **Adjustment:** {what to change in approach for next round, or "none needed"}
|
|
205
|
-
- **Files changed:** {list}
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**5d. Handle test failures:**
|
|
211
|
-
If tests fail after a refactoring:
|
|
212
|
-
1. Revert the change
|
|
213
|
-
2. Record failure in reflection-log.md with strategy adjustment
|
|
214
|
-
3. Attempt with adjusted strategy (max 2 retries per task)
|
|
215
|
-
4. If still failing, mark task as "blocked" and continue to next
|
|
216
|
-
|
|
217
|
-
**5e. Update task status:**
|
|
218
|
-
Update .task/TASK-{NNN}.json status to "completed" or "blocked".
|
|
219
|
-
Write .summaries/TASK-{NNN}-summary.md.
|
|
220
|
-
Update index.json execution fields.
|
|
221
|
-
Update reflection.rounds and strategy_adjustments in index.json.
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
### Step 6: Final Verification
|
|
226
|
-
|
|
227
|
-
**Run full test suite after all tasks:**
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
npm test 2>&1 || pytest 2>&1 || go test ./... 2>&1
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
Record final state in reflection-log.md:
|
|
234
|
-
```markdown
|
|
235
|
-
## Final Verification
|
|
236
|
-
|
|
237
|
-
- **Tests:** {all pass | N failures}
|
|
238
|
-
- **Tasks completed:** {N}/{total}
|
|
239
|
-
- **Tasks blocked:** {N}
|
|
240
|
-
- **Key learnings:** {patterns discovered during refactoring}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
### Step 7: Complete
|
|
246
|
-
|
|
247
|
-
**Update index.json and present summary:**
|
|
248
|
-
|
|
249
|
-
Update index.json:
|
|
250
|
-
```json
|
|
251
|
-
{
|
|
252
|
-
"status": "completed",
|
|
253
|
-
"updated_at": "{ISO timestamp}",
|
|
254
|
-
"execution": {
|
|
255
|
-
"tasks_completed": N,
|
|
256
|
-
"tasks_total": M
|
|
257
|
-
},
|
|
258
|
-
"reflection": {
|
|
259
|
-
"rounds": N,
|
|
260
|
-
"strategy_adjustments": ["list of adjustments made"]
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
Present completion summary:
|
|
266
|
-
```
|
|
267
|
-
## Refactoring Complete: {scope}
|
|
268
|
-
|
|
269
|
-
| Metric | Value |
|
|
270
|
-
|--------|-------|
|
|
271
|
-
| Tasks completed | {N}/{total} |
|
|
272
|
-
| Tasks blocked | {N} |
|
|
273
|
-
| Reflection rounds | {N} |
|
|
274
|
-
| Strategy adjustments | {N} |
|
|
275
|
-
| Tests passing | {yes/no} |
|
|
276
|
-
|
|
277
|
-
Key learnings:
|
|
278
|
-
{from reflection-log.md}
|
|
279
|
-
|
|
280
|
-
Artifacts:
|
|
281
|
-
- Reflection log: {REFACTOR_DIR}/reflection-log.md
|
|
282
|
-
- Task results: {REFACTOR_DIR}/.summaries/
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
If regressions found: list affected tests and suggest Skill({ skill: "quality-debug" }).
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Success Criteria
|
|
290
|
-
|
|
291
|
-
- [ ] Scope parsed and validated
|
|
292
|
-
- [ ] Scratch directory created with index.json
|
|
293
|
-
- [ ] Scope analysis identifies tech debt categories
|
|
294
|
-
- [ ] plan.json + .task/TASK-*.json created for each refactoring
|
|
295
|
-
- [ ] Each task executed with test verification (no regressions)
|
|
296
|
-
- [ ] reflection-log.md tracks strategy per round with adjustments
|
|
297
|
-
- [ ] Test failures trigger revert + retry with adjusted strategy
|
|
298
|
-
- [ ] Full test suite passes at end
|
|
299
|
-
- [ ] index.json updated with final status
|
|
300
|
-
- [ ] .summaries/ written for completed tasks
|
|
1
|
+
# Refactor Workflow
|
|
2
|
+
|
|
3
|
+
Systematically reduce tech debt through scope analysis, task planning, and reflection-driven execution. Each refactoring round records strategy, outcome, and adjustments. Existing tests must pass after every change.
|
|
4
|
+
|
|
5
|
+
Output: scratch/refactor-{slug}-{date}/ with index.json + reflection-log.md + .task/ + .summaries/
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- `.workflow/` directory initialized
|
|
12
|
+
- Test suite available for affected scope (E002 if missing)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### Step 1: Parse Scope
|
|
17
|
+
|
|
18
|
+
**Parse scope from $ARGUMENTS:**
|
|
19
|
+
|
|
20
|
+
- Module path (e.g., "src/auth") -> scan that directory
|
|
21
|
+
- Feature area (e.g., "authentication") -> search for related files
|
|
22
|
+
- "all" -> full codebase scan
|
|
23
|
+
- Empty -> prompt user:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
AskUserQuestion(
|
|
27
|
+
header: "Refactoring Scope",
|
|
28
|
+
question: "What scope should be refactored?",
|
|
29
|
+
options: [
|
|
30
|
+
{ label: "Module path", description: "e.g., src/auth -- specific directory" },
|
|
31
|
+
{ label: "Feature area", description: "e.g., authentication -- conceptual scope" },
|
|
32
|
+
{ label: "Full codebase", description: "Scan everything for tech debt" }
|
|
33
|
+
]
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Generate slug from scope (lowercase, hyphens, max 40 chars).
|
|
38
|
+
Set date to current date (YYYY-MM-DD).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### Step 2: Create Scratch Directory
|
|
43
|
+
|
|
44
|
+
**Create scratch directory and index.json:**
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
REFACTOR_DIR=".workflow/scratch/refactor-${slug}-${date}"
|
|
48
|
+
mkdir -p "$REFACTOR_DIR/.task"
|
|
49
|
+
mkdir -p "$REFACTOR_DIR/.summaries"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Write index.json:
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"id": "refactor-{slug}-{date}",
|
|
56
|
+
"type": "refactor",
|
|
57
|
+
"title": "Refactor: {scope description}",
|
|
58
|
+
"status": "active",
|
|
59
|
+
"created_at": "{ISO timestamp}",
|
|
60
|
+
"updated_at": "{ISO timestamp}",
|
|
61
|
+
"scope": "{original scope argument}",
|
|
62
|
+
"plan": {
|
|
63
|
+
"task_ids": [],
|
|
64
|
+
"task_count": 0
|
|
65
|
+
},
|
|
66
|
+
"execution": {
|
|
67
|
+
"method": "agent",
|
|
68
|
+
"tasks_completed": 0,
|
|
69
|
+
"tasks_total": 0
|
|
70
|
+
},
|
|
71
|
+
"reflection": {
|
|
72
|
+
"rounds": 0,
|
|
73
|
+
"strategy_adjustments": []
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Step 2.5: Load Project Specs
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
specs_content = maestro spec load --category coding
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Used in Step 3 to detect pattern violations against project conventions.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### Step 3: Scope Analysis
|
|
91
|
+
|
|
92
|
+
**Analyze scope for tech debt:**
|
|
93
|
+
|
|
94
|
+
Read all files in scope. Use specs_content (if loaded) to detect convention violations. Identify and categorize issues:
|
|
95
|
+
|
|
96
|
+
1. **Duplication** - Repeated code blocks, copy-paste patterns
|
|
97
|
+
2. **Complexity hotspots** - Functions too long, deep nesting, high cyclomatic complexity
|
|
98
|
+
3. **Naming issues** - Inconsistent naming, unclear variable/function names
|
|
99
|
+
4. **Dependency tangles** - Circular deps, tight coupling, god objects
|
|
100
|
+
5. **Dead code** - Unused functions, unreachable branches
|
|
101
|
+
6. **Pattern violations** - Inconsistent with project conventions (from specs/)
|
|
102
|
+
|
|
103
|
+
Present analysis summary:
|
|
104
|
+
```
|
|
105
|
+
## Scope Analysis: {scope}
|
|
106
|
+
|
|
107
|
+
| Category | Count | Severity |
|
|
108
|
+
|----------|-------|----------|
|
|
109
|
+
| Duplication | 3 | medium |
|
|
110
|
+
| Complexity | 5 | high |
|
|
111
|
+
| Naming | 8 | low |
|
|
112
|
+
| Dependencies | 2 | high |
|
|
113
|
+
| Dead code | 4 | low |
|
|
114
|
+
|
|
115
|
+
Total issues: 22
|
|
116
|
+
Recommended priority: Complexity > Dependencies > Duplication > Naming > Dead code
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Confirm with user before proceeding to planning.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### Step 4: Plan Refactoring
|
|
124
|
+
|
|
125
|
+
**Generate refactoring plan:**
|
|
126
|
+
|
|
127
|
+
Write plan.json:
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"scope": "{scope}",
|
|
131
|
+
"total_tasks": N,
|
|
132
|
+
"strategy": "incremental -- each task is independently safe",
|
|
133
|
+
"tasks": ["TASK-001", "TASK-002", ...]
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
For each identified issue, create .task/TASK-{NNN}.json:
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"id": "TASK-{NNN}",
|
|
141
|
+
"title": "{specific refactoring}",
|
|
142
|
+
"status": "pending",
|
|
143
|
+
"type": "refactor",
|
|
144
|
+
"category": "duplication|complexity|naming|dependency|dead_code|pattern",
|
|
145
|
+
"description": "{what to change and why}",
|
|
146
|
+
"read_first": ["path/to/file.ts", "path/to/related.ts"],
|
|
147
|
+
"files": [
|
|
148
|
+
{ "path": "path/to/file.ts", "action": "modify", "target": "{function_or_class}", "change": "{concrete_change}" }
|
|
149
|
+
],
|
|
150
|
+
"action": "{detailed steps with concrete values}",
|
|
151
|
+
"convergence": {
|
|
152
|
+
"criteria": ["{grep-verifiable completion criterion}"],
|
|
153
|
+
"verification": "Run existing tests to confirm no regressions"
|
|
154
|
+
},
|
|
155
|
+
"implementation": ["{step 1 with concrete values}"],
|
|
156
|
+
"risk": "low|medium|high"
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Order tasks by: high risk last, dependencies respected, quick wins first.
|
|
161
|
+
|
|
162
|
+
Update index.json plan fields.
|
|
163
|
+
|
|
164
|
+
**Present plan to user via AskUserQuestion:**
|
|
165
|
+
- Show affected files with proposed changes
|
|
166
|
+
- Highlight risk areas and dependency impacts
|
|
167
|
+
- Ask for approval, modifications, or rejection
|
|
168
|
+
- Capture any additional constraints or priorities
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
### Step 5: Execute with Reflection
|
|
173
|
+
|
|
174
|
+
**Execute each task with reflection tracking:**
|
|
175
|
+
|
|
176
|
+
Initialize reflection-log.md:
|
|
177
|
+
```markdown
|
|
178
|
+
# Refactoring Reflection Log
|
|
179
|
+
|
|
180
|
+
Scope: {scope}
|
|
181
|
+
Started: {ISO timestamp}
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
For each task in order:
|
|
187
|
+
|
|
188
|
+
**5a. Execute the refactoring:**
|
|
189
|
+
Implement the change as described in the task.
|
|
190
|
+
|
|
191
|
+
**5b. Run existing tests:**
|
|
192
|
+
```bash
|
|
193
|
+
# Detect and run test suite
|
|
194
|
+
npm test 2>&1 || pytest 2>&1 || go test ./... 2>&1 || echo "No test runner detected"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**5c. Record in reflection-log.md:**
|
|
198
|
+
```markdown
|
|
199
|
+
## Round {N}: {task title}
|
|
200
|
+
|
|
201
|
+
- **Strategy:** {approach taken}
|
|
202
|
+
- **Result:** {pass|fail} -- {brief outcome}
|
|
203
|
+
- **Tests:** {all pass | N failures}
|
|
204
|
+
- **Adjustment:** {what to change in approach for next round, or "none needed"}
|
|
205
|
+
- **Files changed:** {list}
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**5d. Handle test failures:**
|
|
211
|
+
If tests fail after a refactoring:
|
|
212
|
+
1. Revert the change
|
|
213
|
+
2. Record failure in reflection-log.md with strategy adjustment
|
|
214
|
+
3. Attempt with adjusted strategy (max 2 retries per task)
|
|
215
|
+
4. If still failing, mark task as "blocked" and continue to next
|
|
216
|
+
|
|
217
|
+
**5e. Update task status:**
|
|
218
|
+
Update .task/TASK-{NNN}.json status to "completed" or "blocked".
|
|
219
|
+
Write .summaries/TASK-{NNN}-summary.md.
|
|
220
|
+
Update index.json execution fields.
|
|
221
|
+
Update reflection.rounds and strategy_adjustments in index.json.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### Step 6: Final Verification
|
|
226
|
+
|
|
227
|
+
**Run full test suite after all tasks:**
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
npm test 2>&1 || pytest 2>&1 || go test ./... 2>&1
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Record final state in reflection-log.md:
|
|
234
|
+
```markdown
|
|
235
|
+
## Final Verification
|
|
236
|
+
|
|
237
|
+
- **Tests:** {all pass | N failures}
|
|
238
|
+
- **Tasks completed:** {N}/{total}
|
|
239
|
+
- **Tasks blocked:** {N}
|
|
240
|
+
- **Key learnings:** {patterns discovered during refactoring}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### Step 7: Complete
|
|
246
|
+
|
|
247
|
+
**Update index.json and present summary:**
|
|
248
|
+
|
|
249
|
+
Update index.json:
|
|
250
|
+
```json
|
|
251
|
+
{
|
|
252
|
+
"status": "completed",
|
|
253
|
+
"updated_at": "{ISO timestamp}",
|
|
254
|
+
"execution": {
|
|
255
|
+
"tasks_completed": N,
|
|
256
|
+
"tasks_total": M
|
|
257
|
+
},
|
|
258
|
+
"reflection": {
|
|
259
|
+
"rounds": N,
|
|
260
|
+
"strategy_adjustments": ["list of adjustments made"]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Present completion summary:
|
|
266
|
+
```
|
|
267
|
+
## Refactoring Complete: {scope}
|
|
268
|
+
|
|
269
|
+
| Metric | Value |
|
|
270
|
+
|--------|-------|
|
|
271
|
+
| Tasks completed | {N}/{total} |
|
|
272
|
+
| Tasks blocked | {N} |
|
|
273
|
+
| Reflection rounds | {N} |
|
|
274
|
+
| Strategy adjustments | {N} |
|
|
275
|
+
| Tests passing | {yes/no} |
|
|
276
|
+
|
|
277
|
+
Key learnings:
|
|
278
|
+
{from reflection-log.md}
|
|
279
|
+
|
|
280
|
+
Artifacts:
|
|
281
|
+
- Reflection log: {REFACTOR_DIR}/reflection-log.md
|
|
282
|
+
- Task results: {REFACTOR_DIR}/.summaries/
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
If regressions found: list affected tests and suggest Skill({ skill: "quality-debug" }).
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Success Criteria
|
|
290
|
+
|
|
291
|
+
- [ ] Scope parsed and validated
|
|
292
|
+
- [ ] Scratch directory created with index.json
|
|
293
|
+
- [ ] Scope analysis identifies tech debt categories
|
|
294
|
+
- [ ] plan.json + .task/TASK-*.json created for each refactoring
|
|
295
|
+
- [ ] Each task executed with test verification (no regressions)
|
|
296
|
+
- [ ] reflection-log.md tracks strategy per round with adjustments
|
|
297
|
+
- [ ] Test failures trigger revert + retry with adjusted strategy
|
|
298
|
+
- [ ] Full test suite passes at end
|
|
299
|
+
- [ ] index.json updated with final status
|
|
300
|
+
- [ ] .summaries/ written for completed tasks
|
|
@@ -11,7 +11,7 @@ This is a **post-execution analysis** workflow. It reads only — until the rout
|
|
|
11
11
|
- `.workflow/` initialized (`.workflow/state.json` exists)
|
|
12
12
|
- At least one phase directory under `.workflow/phases/{NN}-{slug}/`
|
|
13
13
|
- Target phase has been executed (has `.task/` and `.summaries/`)
|
|
14
|
-
- `maestro
|
|
14
|
+
- `maestro delegate` available (used for the four lens analyses via Agent calls)
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|