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
|
@@ -1,332 +1,332 @@
|
|
|
1
|
-
# Workflow: codebase-rebuild
|
|
2
|
-
|
|
3
|
-
Full rebuild of the `.workflow/codebase/` documentation system.
|
|
4
|
-
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- Manual via `/workflow:codebase-rebuild [--force] [--skip-commit]`
|
|
8
|
-
- Auto-triggered by `/workflow:init` when existing code is detected
|
|
9
|
-
- Auto-triggered by `/workflow:map`
|
|
10
|
-
|
|
11
|
-
## Arguments
|
|
12
|
-
|
|
13
|
-
| Arg | Description | Default |
|
|
14
|
-
|-----|-------------|---------|
|
|
15
|
-
| `--force` | Clear existing codebase/ and rebuild from scratch | `false` |
|
|
16
|
-
| `--skip-commit` | Skip the final git commit of generated docs | `false` |
|
|
17
|
-
|
|
18
|
-
## Prerequisites
|
|
19
|
-
|
|
20
|
-
- Project source code exists (src/ or equivalent)
|
|
21
|
-
- `.workflow/` directory exists
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Workflow Steps
|
|
26
|
-
|
|
27
|
-
### Step 1: Prepare Directory Structure
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
Create (or clear if --force) the codebase directory:
|
|
31
|
-
|
|
32
|
-
.workflow/codebase/
|
|
33
|
-
doc-index.json
|
|
34
|
-
tech-registry/
|
|
35
|
-
_index.md
|
|
36
|
-
feature-maps/
|
|
37
|
-
_index.md
|
|
38
|
-
action-logs/
|
|
39
|
-
|
|
40
|
-
If directories exist and --force not set:
|
|
41
|
-
AskUserQuestion: "Codebase docs already exist. Rebuild will overwrite. Continue? [y/N]"
|
|
42
|
-
If no: exit
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Step 2: Scan Project Structure — Components
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
Scan src/ (and other source directories) for components:
|
|
49
|
-
|
|
50
|
-
a. Identify source directories:
|
|
51
|
-
- Check for: src/, lib/, app/, packages/
|
|
52
|
-
- Use project-tech.json source_dirs if available
|
|
53
|
-
|
|
54
|
-
b. For each source directory, scan for component-forming files:
|
|
55
|
-
- Directories that represent modules (contain index.ts/index.js or multiple files)
|
|
56
|
-
- Key file patterns:
|
|
57
|
-
- Models: *model*, *entity*, *schema* files
|
|
58
|
-
- Services: *service*, *provider* files
|
|
59
|
-
- Controllers: *controller*, *handler*, *route* files
|
|
60
|
-
- Utils: *util*, *helper*, *common* files
|
|
61
|
-
- Types: *type*, *interface*, *.d.ts files
|
|
62
|
-
- Config: *config*, *constant* files
|
|
63
|
-
- Middleware: *middleware*, *guard*, *interceptor* files
|
|
64
|
-
- Core: *core*, *registry*, *loader* files
|
|
65
|
-
|
|
66
|
-
c. For each identified component:
|
|
67
|
-
- Read the file(s)
|
|
68
|
-
- Extract exported symbols (classes, functions, interfaces, types, constants)
|
|
69
|
-
- Determine component type (model, service, controller, util, config, middleware, core)
|
|
70
|
-
- Build component entry:
|
|
71
|
-
{
|
|
72
|
-
"id": "TC-{NNN}", // Sequential, zero-padded 3 digits
|
|
73
|
-
"name": "{PascalCase name}",
|
|
74
|
-
"type": "{type}",
|
|
75
|
-
"code_locations": ["{relative paths}"],
|
|
76
|
-
"feature_ids": [], // Populated in Step 3
|
|
77
|
-
"symbols": ["{exported symbol names}"],
|
|
78
|
-
"last_updated": "{ISO timestamp}"
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
d. ID assignment: TC-001, TC-002, ... in discovery order
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Step 2.5: Load Project Specs
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
specs_content = maestro spec load --category
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Used in Step 2-4 to produce architecture-aware documentation.
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
### Step 3: Scan Project Structure — Features
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
Group components by domain/functional area:
|
|
98
|
-
|
|
99
|
-
a. Heuristics for grouping:
|
|
100
|
-
- Directory proximity (components in same directory = likely same feature)
|
|
101
|
-
- Naming patterns (auth.service + auth.controller + auth.model = "Authentication")
|
|
102
|
-
- Import relationships (files that import each other = related)
|
|
103
|
-
- task-specs/ requirements mapping (if available)
|
|
104
|
-
|
|
105
|
-
b. For each identified feature group:
|
|
106
|
-
- Determine feature name from common prefix or directory name
|
|
107
|
-
- Collect component IDs
|
|
108
|
-
- Map to requirements if task-specs/ REQ-* files exist
|
|
109
|
-
- Determine phase association from roadmap.md if available
|
|
110
|
-
- Build feature entry:
|
|
111
|
-
{
|
|
112
|
-
"id": "FT-{NNN}",
|
|
113
|
-
"name": "{Feature Name}",
|
|
114
|
-
"status": "active",
|
|
115
|
-
"requirement_ids": [], // From task-specs mapping
|
|
116
|
-
"component_ids": ["TC-001", "TC-002"],
|
|
117
|
-
"phase": null // From roadmap mapping
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
c. Back-fill component.feature_ids with the feature IDs
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Step 4: Map Requirements (if task-specs exist)
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
If .workflow/task-specs/ directories exist:
|
|
127
|
-
For each SPEC-*/requirements/REQ-*.md:
|
|
128
|
-
- Parse requirement metadata (title, priority, acceptance_criteria)
|
|
129
|
-
- Match to features by keyword/domain analysis
|
|
130
|
-
- Build requirement entry:
|
|
131
|
-
{
|
|
132
|
-
"id": "REQ-{NNN}",
|
|
133
|
-
"title": "{requirement title}",
|
|
134
|
-
"priority": "must|should|could|wont",
|
|
135
|
-
"feature_id": "FT-{NNN}",
|
|
136
|
-
"status": "pending|in_progress|completed",
|
|
137
|
-
"acceptance_criteria": ["{criteria}"]
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
If no task-specs exist:
|
|
141
|
-
requirements = [] (empty, populated later by spec-generate)
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Step 5: Record Architecture Decisions (if ADRs exist)
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
If .workflow/task-specs/*/architecture/ADR-*.md exist:
|
|
148
|
-
For each ADR file:
|
|
149
|
-
- Parse ADR metadata (title, decision, rationale)
|
|
150
|
-
- Map to components by keyword analysis
|
|
151
|
-
- Build ADR entry:
|
|
152
|
-
{
|
|
153
|
-
"id": "ADR-{NNN}",
|
|
154
|
-
"title": "{ADR title}",
|
|
155
|
-
"component_ids": ["TC-{NNN}"],
|
|
156
|
-
"decision": "{decision summary}",
|
|
157
|
-
"rationale": "{rationale summary}"
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
If no ADRs exist:
|
|
161
|
-
architecture_decisions = []
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Step 6: Write doc-index.json
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
Assemble the complete doc-index.json:
|
|
168
|
-
|
|
169
|
-
{
|
|
170
|
-
"version": "1.0",
|
|
171
|
-
"schema_version": "1.0",
|
|
172
|
-
"project": "{project name from state.json or package.json}",
|
|
173
|
-
"last_updated": "{ISO timestamp}",
|
|
174
|
-
"features": [{feature entries}],
|
|
175
|
-
"components": [{component entries}],
|
|
176
|
-
"requirements": [{requirement entries}],
|
|
177
|
-
"architecture_decisions": [{ADR entries}],
|
|
178
|
-
"actions": []
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
Write to: .workflow/codebase/doc-index.json
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Step 7: Generate Tech Registry Docs
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
For each component in doc-index.json:
|
|
188
|
-
Compute slug: lowercase(name), replace spaces with hyphens
|
|
189
|
-
|
|
190
|
-
Write .workflow/codebase/tech-registry/{slug}.md:
|
|
191
|
-
|
|
192
|
-
# {component.name}
|
|
193
|
-
|
|
194
|
-
| Field | Value |
|
|
195
|
-
|-------|-------|
|
|
196
|
-
| **ID** | {id} |
|
|
197
|
-
| **Type** | {type} |
|
|
198
|
-
| **Features** | {feature_ids joined with ", "} |
|
|
199
|
-
|
|
200
|
-
## Code Locations
|
|
201
|
-
{bullet list of code_locations}
|
|
202
|
-
|
|
203
|
-
## Exported Symbols
|
|
204
|
-
{bullet list of symbols}
|
|
205
|
-
|
|
206
|
-
## Dependencies
|
|
207
|
-
{extracted from import statements in code_locations}
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
*Auto-generated by codebase-rebuild at {timestamp}*
|
|
211
|
-
|
|
212
|
-
Write .workflow/codebase/tech-registry/_index.md:
|
|
213
|
-
# Tech Registry
|
|
214
|
-
|
|
215
|
-
| ID | Name | Type | Locations |
|
|
216
|
-
|----|------|------|-----------|
|
|
217
|
-
{table row per component}
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
*{count} components registered*
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Step 8: Generate Feature Map Docs
|
|
224
|
-
|
|
225
|
-
```
|
|
226
|
-
For each feature in doc-index.json:
|
|
227
|
-
Compute slug: lowercase(name), replace spaces with hyphens
|
|
228
|
-
|
|
229
|
-
Write .workflow/codebase/feature-maps/{slug}.md:
|
|
230
|
-
|
|
231
|
-
# {feature.name}
|
|
232
|
-
|
|
233
|
-
| Field | Value |
|
|
234
|
-
|-------|-------|
|
|
235
|
-
| **ID** | {id} |
|
|
236
|
-
| **Status** | {status} |
|
|
237
|
-
| **Phase** | {phase or "unassigned"} |
|
|
238
|
-
|
|
239
|
-
## Requirements
|
|
240
|
-
{bullet list of requirement_ids with titles}
|
|
241
|
-
|
|
242
|
-
## Components
|
|
243
|
-
| ID | Name | Type |
|
|
244
|
-
|----|------|------|
|
|
245
|
-
{table row per component in component_ids}
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
*Auto-generated by codebase-rebuild at {timestamp}*
|
|
249
|
-
|
|
250
|
-
Write .workflow/codebase/feature-maps/_index.md:
|
|
251
|
-
# Feature Maps
|
|
252
|
-
|
|
253
|
-
| ID | Name | Status | Components | Requirements |
|
|
254
|
-
|----|------|--------|------------|--------------|
|
|
255
|
-
{table row per feature}
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
*{count} features mapped*
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### Step 8.5: Update State and Project Artifacts
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
a. Update state.json:
|
|
265
|
-
Read .workflow/state.json
|
|
266
|
-
Set last_codebase_rebuild: "{ISO timestamp}"
|
|
267
|
-
Set last_updated: "{ISO timestamp}"
|
|
268
|
-
Write updated state.json
|
|
269
|
-
|
|
270
|
-
b. Update project-tech.json (if exists):
|
|
271
|
-
Read .workflow/project-tech.json
|
|
272
|
-
Compare detected tech stack (from Step 2 scan) against existing entries:
|
|
273
|
-
- New languages, frameworks, databases, tools discovered
|
|
274
|
-
- Version changes detected (from package.json, go.mod, pyproject.toml, etc.)
|
|
275
|
-
If differences found:
|
|
276
|
-
Update project-tech.json with current detected stack
|
|
277
|
-
Display: "project-tech.json: updated with {count} changes"
|
|
278
|
-
|
|
279
|
-
c. Update project.md Tech Stack (if exists):
|
|
280
|
-
Read .workflow/project.md
|
|
281
|
-
Compare "## Tech Stack" section against detected stack from Step 2
|
|
282
|
-
If new entries or changes detected:
|
|
283
|
-
Update the Tech Stack section with current values
|
|
284
|
-
Update the "Last updated" footer timestamp
|
|
285
|
-
Write updated project.md
|
|
286
|
-
Display: "project.md: Tech Stack section refreshed"
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### Step 9: Report and Commit
|
|
290
|
-
|
|
291
|
-
```
|
|
292
|
-
Display summary:
|
|
293
|
-
Codebase rebuild complete:
|
|
294
|
-
Components: {count}
|
|
295
|
-
Features: {count}
|
|
296
|
-
Requirements: {count}
|
|
297
|
-
ADRs: {count}
|
|
298
|
-
Files generated: {count}
|
|
299
|
-
|
|
300
|
-
If any mapper agents failed: log W001 with the failed mapper name.
|
|
301
|
-
|
|
302
|
-
If not --skip-commit:
|
|
303
|
-
Suggest committing the generated docs
|
|
304
|
-
|
|
305
|
-
Suggest next:
|
|
306
|
-
- Skill({ skill: "manage-status" }) to review
|
|
307
|
-
- Skill({ skill: "manage-codebase-refresh" }) for future incremental updates
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
---
|
|
311
|
-
|
|
312
|
-
## Error Handling
|
|
313
|
-
|
|
314
|
-
| Error | Action |
|
|
315
|
-
|-------|--------|
|
|
316
|
-
| No source directories found | Warn and create empty doc-index.json |
|
|
317
|
-
| .workflow/ missing | Fail: "Run /workflow:init first" |
|
|
318
|
-
| File read errors | Log warning, skip file, continue scan |
|
|
319
|
-
| Existing codebase/ without --force | Prompt user for confirmation |
|
|
320
|
-
|
|
321
|
-
## Output Files
|
|
322
|
-
|
|
323
|
-
| File | Description |
|
|
324
|
-
|------|-------------|
|
|
325
|
-
| `.workflow/codebase/doc-index.json` | Single source of truth for all components/features/requirements |
|
|
326
|
-
| `.workflow/codebase/tech-registry/_index.md` | Component index |
|
|
327
|
-
| `.workflow/codebase/tech-registry/{slug}.md` | Per-component documentation |
|
|
328
|
-
| `.workflow/codebase/feature-maps/_index.md` | Feature index |
|
|
329
|
-
| `.workflow/codebase/feature-maps/{slug}.md` | Per-feature documentation |
|
|
330
|
-
| `.workflow/state.json` | Updated: last_codebase_rebuild timestamp |
|
|
331
|
-
| `.workflow/project-tech.json` | Updated: detected tech stack changes |
|
|
332
|
-
| `.workflow/project.md` | Updated: Tech Stack section refreshed |
|
|
1
|
+
# Workflow: codebase-rebuild
|
|
2
|
+
|
|
3
|
+
Full rebuild of the `.workflow/codebase/` documentation system.
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
- Manual via `/workflow:codebase-rebuild [--force] [--skip-commit]`
|
|
8
|
+
- Auto-triggered by `/workflow:init` when existing code is detected
|
|
9
|
+
- Auto-triggered by `/workflow:map`
|
|
10
|
+
|
|
11
|
+
## Arguments
|
|
12
|
+
|
|
13
|
+
| Arg | Description | Default |
|
|
14
|
+
|-----|-------------|---------|
|
|
15
|
+
| `--force` | Clear existing codebase/ and rebuild from scratch | `false` |
|
|
16
|
+
| `--skip-commit` | Skip the final git commit of generated docs | `false` |
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
- Project source code exists (src/ or equivalent)
|
|
21
|
+
- `.workflow/` directory exists
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Workflow Steps
|
|
26
|
+
|
|
27
|
+
### Step 1: Prepare Directory Structure
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Create (or clear if --force) the codebase directory:
|
|
31
|
+
|
|
32
|
+
.workflow/codebase/
|
|
33
|
+
doc-index.json
|
|
34
|
+
tech-registry/
|
|
35
|
+
_index.md
|
|
36
|
+
feature-maps/
|
|
37
|
+
_index.md
|
|
38
|
+
action-logs/
|
|
39
|
+
|
|
40
|
+
If directories exist and --force not set:
|
|
41
|
+
AskUserQuestion: "Codebase docs already exist. Rebuild will overwrite. Continue? [y/N]"
|
|
42
|
+
If no: exit
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Step 2: Scan Project Structure — Components
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Scan src/ (and other source directories) for components:
|
|
49
|
+
|
|
50
|
+
a. Identify source directories:
|
|
51
|
+
- Check for: src/, lib/, app/, packages/
|
|
52
|
+
- Use project-tech.json source_dirs if available
|
|
53
|
+
|
|
54
|
+
b. For each source directory, scan for component-forming files:
|
|
55
|
+
- Directories that represent modules (contain index.ts/index.js or multiple files)
|
|
56
|
+
- Key file patterns:
|
|
57
|
+
- Models: *model*, *entity*, *schema* files
|
|
58
|
+
- Services: *service*, *provider* files
|
|
59
|
+
- Controllers: *controller*, *handler*, *route* files
|
|
60
|
+
- Utils: *util*, *helper*, *common* files
|
|
61
|
+
- Types: *type*, *interface*, *.d.ts files
|
|
62
|
+
- Config: *config*, *constant* files
|
|
63
|
+
- Middleware: *middleware*, *guard*, *interceptor* files
|
|
64
|
+
- Core: *core*, *registry*, *loader* files
|
|
65
|
+
|
|
66
|
+
c. For each identified component:
|
|
67
|
+
- Read the file(s)
|
|
68
|
+
- Extract exported symbols (classes, functions, interfaces, types, constants)
|
|
69
|
+
- Determine component type (model, service, controller, util, config, middleware, core)
|
|
70
|
+
- Build component entry:
|
|
71
|
+
{
|
|
72
|
+
"id": "TC-{NNN}", // Sequential, zero-padded 3 digits
|
|
73
|
+
"name": "{PascalCase name}",
|
|
74
|
+
"type": "{type}",
|
|
75
|
+
"code_locations": ["{relative paths}"],
|
|
76
|
+
"feature_ids": [], // Populated in Step 3
|
|
77
|
+
"symbols": ["{exported symbol names}"],
|
|
78
|
+
"last_updated": "{ISO timestamp}"
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
d. ID assignment: TC-001, TC-002, ... in discovery order
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 2.5: Load Project Specs
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
specs_content = maestro spec load --category arch
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Used in Step 2-4 to produce architecture-aware documentation.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### Step 3: Scan Project Structure — Features
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
Group components by domain/functional area:
|
|
98
|
+
|
|
99
|
+
a. Heuristics for grouping:
|
|
100
|
+
- Directory proximity (components in same directory = likely same feature)
|
|
101
|
+
- Naming patterns (auth.service + auth.controller + auth.model = "Authentication")
|
|
102
|
+
- Import relationships (files that import each other = related)
|
|
103
|
+
- task-specs/ requirements mapping (if available)
|
|
104
|
+
|
|
105
|
+
b. For each identified feature group:
|
|
106
|
+
- Determine feature name from common prefix or directory name
|
|
107
|
+
- Collect component IDs
|
|
108
|
+
- Map to requirements if task-specs/ REQ-* files exist
|
|
109
|
+
- Determine phase association from roadmap.md if available
|
|
110
|
+
- Build feature entry:
|
|
111
|
+
{
|
|
112
|
+
"id": "FT-{NNN}",
|
|
113
|
+
"name": "{Feature Name}",
|
|
114
|
+
"status": "active",
|
|
115
|
+
"requirement_ids": [], // From task-specs mapping
|
|
116
|
+
"component_ids": ["TC-001", "TC-002"],
|
|
117
|
+
"phase": null // From roadmap mapping
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
c. Back-fill component.feature_ids with the feature IDs
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Step 4: Map Requirements (if task-specs exist)
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
If .workflow/task-specs/ directories exist:
|
|
127
|
+
For each SPEC-*/requirements/REQ-*.md:
|
|
128
|
+
- Parse requirement metadata (title, priority, acceptance_criteria)
|
|
129
|
+
- Match to features by keyword/domain analysis
|
|
130
|
+
- Build requirement entry:
|
|
131
|
+
{
|
|
132
|
+
"id": "REQ-{NNN}",
|
|
133
|
+
"title": "{requirement title}",
|
|
134
|
+
"priority": "must|should|could|wont",
|
|
135
|
+
"feature_id": "FT-{NNN}",
|
|
136
|
+
"status": "pending|in_progress|completed",
|
|
137
|
+
"acceptance_criteria": ["{criteria}"]
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
If no task-specs exist:
|
|
141
|
+
requirements = [] (empty, populated later by spec-generate)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Step 5: Record Architecture Decisions (if ADRs exist)
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
If .workflow/task-specs/*/architecture/ADR-*.md exist:
|
|
148
|
+
For each ADR file:
|
|
149
|
+
- Parse ADR metadata (title, decision, rationale)
|
|
150
|
+
- Map to components by keyword analysis
|
|
151
|
+
- Build ADR entry:
|
|
152
|
+
{
|
|
153
|
+
"id": "ADR-{NNN}",
|
|
154
|
+
"title": "{ADR title}",
|
|
155
|
+
"component_ids": ["TC-{NNN}"],
|
|
156
|
+
"decision": "{decision summary}",
|
|
157
|
+
"rationale": "{rationale summary}"
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
If no ADRs exist:
|
|
161
|
+
architecture_decisions = []
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Step 6: Write doc-index.json
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
Assemble the complete doc-index.json:
|
|
168
|
+
|
|
169
|
+
{
|
|
170
|
+
"version": "1.0",
|
|
171
|
+
"schema_version": "1.0",
|
|
172
|
+
"project": "{project name from state.json or package.json}",
|
|
173
|
+
"last_updated": "{ISO timestamp}",
|
|
174
|
+
"features": [{feature entries}],
|
|
175
|
+
"components": [{component entries}],
|
|
176
|
+
"requirements": [{requirement entries}],
|
|
177
|
+
"architecture_decisions": [{ADR entries}],
|
|
178
|
+
"actions": []
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
Write to: .workflow/codebase/doc-index.json
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Step 7: Generate Tech Registry Docs
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
For each component in doc-index.json:
|
|
188
|
+
Compute slug: lowercase(name), replace spaces with hyphens
|
|
189
|
+
|
|
190
|
+
Write .workflow/codebase/tech-registry/{slug}.md:
|
|
191
|
+
|
|
192
|
+
# {component.name}
|
|
193
|
+
|
|
194
|
+
| Field | Value |
|
|
195
|
+
|-------|-------|
|
|
196
|
+
| **ID** | {id} |
|
|
197
|
+
| **Type** | {type} |
|
|
198
|
+
| **Features** | {feature_ids joined with ", "} |
|
|
199
|
+
|
|
200
|
+
## Code Locations
|
|
201
|
+
{bullet list of code_locations}
|
|
202
|
+
|
|
203
|
+
## Exported Symbols
|
|
204
|
+
{bullet list of symbols}
|
|
205
|
+
|
|
206
|
+
## Dependencies
|
|
207
|
+
{extracted from import statements in code_locations}
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
*Auto-generated by codebase-rebuild at {timestamp}*
|
|
211
|
+
|
|
212
|
+
Write .workflow/codebase/tech-registry/_index.md:
|
|
213
|
+
# Tech Registry
|
|
214
|
+
|
|
215
|
+
| ID | Name | Type | Locations |
|
|
216
|
+
|----|------|------|-----------|
|
|
217
|
+
{table row per component}
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
*{count} components registered*
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Step 8: Generate Feature Map Docs
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
For each feature in doc-index.json:
|
|
227
|
+
Compute slug: lowercase(name), replace spaces with hyphens
|
|
228
|
+
|
|
229
|
+
Write .workflow/codebase/feature-maps/{slug}.md:
|
|
230
|
+
|
|
231
|
+
# {feature.name}
|
|
232
|
+
|
|
233
|
+
| Field | Value |
|
|
234
|
+
|-------|-------|
|
|
235
|
+
| **ID** | {id} |
|
|
236
|
+
| **Status** | {status} |
|
|
237
|
+
| **Phase** | {phase or "unassigned"} |
|
|
238
|
+
|
|
239
|
+
## Requirements
|
|
240
|
+
{bullet list of requirement_ids with titles}
|
|
241
|
+
|
|
242
|
+
## Components
|
|
243
|
+
| ID | Name | Type |
|
|
244
|
+
|----|------|------|
|
|
245
|
+
{table row per component in component_ids}
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
*Auto-generated by codebase-rebuild at {timestamp}*
|
|
249
|
+
|
|
250
|
+
Write .workflow/codebase/feature-maps/_index.md:
|
|
251
|
+
# Feature Maps
|
|
252
|
+
|
|
253
|
+
| ID | Name | Status | Components | Requirements |
|
|
254
|
+
|----|------|--------|------------|--------------|
|
|
255
|
+
{table row per feature}
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
*{count} features mapped*
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Step 8.5: Update State and Project Artifacts
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
a. Update state.json:
|
|
265
|
+
Read .workflow/state.json
|
|
266
|
+
Set last_codebase_rebuild: "{ISO timestamp}"
|
|
267
|
+
Set last_updated: "{ISO timestamp}"
|
|
268
|
+
Write updated state.json
|
|
269
|
+
|
|
270
|
+
b. Update project-tech.json (if exists):
|
|
271
|
+
Read .workflow/project-tech.json
|
|
272
|
+
Compare detected tech stack (from Step 2 scan) against existing entries:
|
|
273
|
+
- New languages, frameworks, databases, tools discovered
|
|
274
|
+
- Version changes detected (from package.json, go.mod, pyproject.toml, etc.)
|
|
275
|
+
If differences found:
|
|
276
|
+
Update project-tech.json with current detected stack
|
|
277
|
+
Display: "project-tech.json: updated with {count} changes"
|
|
278
|
+
|
|
279
|
+
c. Update project.md Tech Stack (if exists):
|
|
280
|
+
Read .workflow/project.md
|
|
281
|
+
Compare "## Tech Stack" section against detected stack from Step 2
|
|
282
|
+
If new entries or changes detected:
|
|
283
|
+
Update the Tech Stack section with current values
|
|
284
|
+
Update the "Last updated" footer timestamp
|
|
285
|
+
Write updated project.md
|
|
286
|
+
Display: "project.md: Tech Stack section refreshed"
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Step 9: Report and Commit
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
Display summary:
|
|
293
|
+
Codebase rebuild complete:
|
|
294
|
+
Components: {count}
|
|
295
|
+
Features: {count}
|
|
296
|
+
Requirements: {count}
|
|
297
|
+
ADRs: {count}
|
|
298
|
+
Files generated: {count}
|
|
299
|
+
|
|
300
|
+
If any mapper agents failed: log W001 with the failed mapper name.
|
|
301
|
+
|
|
302
|
+
If not --skip-commit:
|
|
303
|
+
Suggest committing the generated docs
|
|
304
|
+
|
|
305
|
+
Suggest next:
|
|
306
|
+
- Skill({ skill: "manage-status" }) to review
|
|
307
|
+
- Skill({ skill: "manage-codebase-refresh" }) for future incremental updates
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Error Handling
|
|
313
|
+
|
|
314
|
+
| Error | Action |
|
|
315
|
+
|-------|--------|
|
|
316
|
+
| No source directories found | Warn and create empty doc-index.json |
|
|
317
|
+
| .workflow/ missing | Fail: "Run /workflow:init first" |
|
|
318
|
+
| File read errors | Log warning, skip file, continue scan |
|
|
319
|
+
| Existing codebase/ without --force | Prompt user for confirmation |
|
|
320
|
+
|
|
321
|
+
## Output Files
|
|
322
|
+
|
|
323
|
+
| File | Description |
|
|
324
|
+
|------|-------------|
|
|
325
|
+
| `.workflow/codebase/doc-index.json` | Single source of truth for all components/features/requirements |
|
|
326
|
+
| `.workflow/codebase/tech-registry/_index.md` | Component index |
|
|
327
|
+
| `.workflow/codebase/tech-registry/{slug}.md` | Per-component documentation |
|
|
328
|
+
| `.workflow/codebase/feature-maps/_index.md` | Feature index |
|
|
329
|
+
| `.workflow/codebase/feature-maps/{slug}.md` | Per-feature documentation |
|
|
330
|
+
| `.workflow/state.json` | Updated: last_codebase_rebuild timestamp |
|
|
331
|
+
| `.workflow/project-tech.json` | Updated: detected tech stack changes |
|
|
332
|
+
| `.workflow/project.md` | Updated: Tech Stack section refreshed |
|