maestro-flow 0.1.1 → 0.1.3
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/.codex/skills/manage-codebase-rebuild/SKILL.md +405 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +82 -82
- package/.codex/skills/manage-issue/SKILL.md +65 -65
- package/.codex/skills/manage-status/SKILL.md +89 -89
- package/.codex/skills/quality-debug/SKILL.md +413 -413
- package/.codex/skills/quality-refactor/SKILL.md +191 -191
- package/.codex/skills/quality-sync/SKILL.md +89 -89
- package/.codex/skills/quality-test/SKILL.md +198 -198
- package/.codex/skills/spec-add/SKILL.md +79 -79
- package/.codex/skills/spec-load/SKILL.md +75 -75
- package/.codex/skills/spec-map/SKILL.md +182 -182
- package/.codex/skills/spec-setup/SKILL.md +76 -76
- package/.codex/skills/team-coordinate/SKILL.md +7 -7
- package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -1
- package/.codex/skills/team-lifecycle-v4/SKILL.md +2 -2
- package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +2 -2
- package/.codex/skills/team-lifecycle-v4/roles/analyst/role.md +2 -2
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +2 -2
- package/.codex/skills/team-lifecycle-v4/roles/executor/commands/implement.md +1 -1
- package/.codex/skills/team-lifecycle-v4/roles/planner/role.md +2 -2
- package/.codex/skills/team-lifecycle-v4/roles/writer/role.md +1 -1
- package/.codex/skills/team-lifecycle-v4/schemas/tasks-schema.md +1 -1
- package/.codex/skills/team-quality-assurance/SKILL.md +2 -2
- package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +2 -2
- package/.codex/skills/team-quality-assurance/roles/executor/role.md +1 -1
- package/.codex/skills/team-quality-assurance/roles/scout/role.md +2 -2
- package/.codex/skills/team-review/SKILL.md +2 -2
- package/.codex/skills/team-review/roles/coordinator/role.md +2 -2
- package/.codex/skills/team-review/roles/reviewer/role.md +2 -2
- package/.codex/skills/team-review/roles/scanner/role.md +1 -1
- package/.codex/skills/team-tech-debt/SKILL.md +2 -2
- package/.codex/skills/team-tech-debt/roles/coordinator/role.md +1 -1
- package/.codex/skills/team-tech-debt/roles/executor/role.md +1 -1
- package/.codex/skills/team-tech-debt/roles/scanner/role.md +2 -2
- package/.codex/skills/team-tech-debt/roles/validator/role.md +1 -1
- package/.codex/skills/team-testing/SKILL.md +2 -2
- package/.codex/skills/team-testing/roles/coordinator/role.md +2 -2
- package/.codex/skills/team-testing/roles/executor/role.md +2 -2
- package/.codex/skills/team-testing/roles/generator/role.md +2 -2
- package/README.md +43 -4
- package/dist/agents/dashboard-bridge.d.ts +5 -0
- package/dist/agents/dashboard-bridge.d.ts.map +1 -1
- package/dist/agents/dashboard-bridge.js +13 -0
- package/dist/agents/dashboard-bridge.js.map +1 -1
- package/dist/agents/parallel-cli-runner.d.ts +42 -0
- package/dist/agents/parallel-cli-runner.d.ts.map +1 -0
- package/dist/agents/parallel-cli-runner.js +200 -0
- package/dist/agents/parallel-cli-runner.js.map +1 -0
- package/dist/agents/terminal-adapter.d.ts +94 -0
- package/dist/agents/terminal-adapter.d.ts.map +1 -0
- package/dist/agents/terminal-adapter.js +132 -0
- package/dist/agents/terminal-adapter.js.map +1 -0
- package/dist/agents/terminal-backend.d.ts +53 -0
- package/dist/agents/terminal-backend.d.ts.map +1 -0
- package/dist/agents/terminal-backend.js +286 -0
- package/dist/agents/terminal-backend.js.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/coordinate.d.ts.map +1 -1
- package/dist/commands/coordinate.js +14 -5
- package/dist/commands/coordinate.js.map +1 -1
- package/dist/commands/delegate.d.ts +3 -0
- package/dist/commands/delegate.d.ts.map +1 -0
- package/dist/commands/delegate.js +142 -0
- package/dist/commands/delegate.js.map +1 -0
- package/dist/commands/msg.d.ts +3 -0
- package/dist/commands/msg.d.ts.map +1 -0
- package/dist/commands/msg.js +110 -0
- package/dist/commands/msg.js.map +1 -0
- package/dist/coordinator/graph-types.d.ts +17 -0
- package/dist/coordinator/graph-types.d.ts.map +1 -1
- package/dist/coordinator/graph-walker.d.ts +3 -1
- package/dist/coordinator/graph-walker.d.ts.map +1 -1
- package/dist/coordinator/graph-walker.js +147 -8
- package/dist/coordinator/graph-walker.js.map +1 -1
- package/dist/coordinator/index.d.ts +2 -0
- package/dist/coordinator/index.d.ts.map +1 -1
- package/dist/coordinator/index.js +1 -0
- package/dist/coordinator/index.js.map +1 -1
- package/dist/coordinator/parallel-executor.d.ts +24 -0
- package/dist/coordinator/parallel-executor.d.ts.map +1 -0
- package/dist/coordinator/parallel-executor.js +43 -0
- package/dist/coordinator/parallel-executor.js.map +1 -0
- package/package.json +4 -2
- package/templates/cli/prompts/rules-tech-rules-agent-prompt.txt +89 -89
- package/templates/cli/prompts/workflow-codex-feasibility-validation.txt +176 -176
- package/templates/cli/prompts/workflow-gemini-solution-design.txt +131 -131
- package/templates/cli/prompts/workflow-skill-index.txt +224 -224
- package/templates/cli/protocols/analysis-protocol.md +2 -2
- package/templates/cli/protocols/write-protocol.md +2 -2
- package/workflows/memory.md +2 -2
- package/.codex/skills/team-lifecycle-v4/MIGRATION-PLAN.md +0 -512
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro-codebase-refresh
|
|
3
|
-
description: Incremental refresh of codebase docs based on recent git changes
|
|
4
|
-
argument-hint: "[--since <date>] [--deep]"
|
|
5
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Codebase Refresh
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
$maestro-codebase-refresh
|
|
14
|
-
$maestro-codebase-refresh "--since 2026-03-15"
|
|
15
|
-
$maestro-codebase-refresh "--deep"
|
|
16
|
-
$maestro-codebase-refresh "--since 3d --deep"
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Flags**:
|
|
20
|
-
- `--since <date>` -- Override change detection window (ISO date or relative like `3d`)
|
|
21
|
-
- `--deep` -- Force deeper re-scan even for minor changes
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Implementation
|
|
26
|
-
|
|
27
|
-
### Step 1: Validate Preconditions
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
test -d .workflow || exit 1 # E001: not initialized
|
|
31
|
-
test -d .workflow/codebase || exit 1 # E002: no docs, use codebase-rebuild
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Step 2: Detect Changes
|
|
35
|
-
|
|
36
|
-
Determine baseline timestamp:
|
|
37
|
-
1. If `--since` provided, use that date
|
|
38
|
-
2. Else read `state.json` field `codebase_last_refreshed` or `codebase_last_rebuilt`
|
|
39
|
-
3. Fallback to last 7 days
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
git diff --name-only --since="{baseline}" HEAD
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
If no changes detected, report clean state (W001) and exit.
|
|
46
|
-
|
|
47
|
-
### Step 3: Map Changes to Docs
|
|
48
|
-
|
|
49
|
-
Read `.workflow/codebase/doc-index.json` to find which documentation entries cover the changed files.
|
|
50
|
-
Build a list of affected doc entries that need refresh.
|
|
51
|
-
|
|
52
|
-
### Step 4: Refresh Affected Docs
|
|
53
|
-
|
|
54
|
-
For each affected documentation entry:
|
|
55
|
-
1. Re-read the source files that changed
|
|
56
|
-
2. Update the corresponding doc section in `.workflow/codebase/`
|
|
57
|
-
3. Update the entry's timestamp in `doc-index.json`
|
|
58
|
-
|
|
59
|
-
If `--deep` flag is set, also re-scan adjacent files for context changes.
|
|
60
|
-
|
|
61
|
-
### Step 5: Update State
|
|
62
|
-
|
|
63
|
-
Update `doc-index.json` timestamps for all refreshed entries.
|
|
64
|
-
Update `state.json` with `codebase_last_refreshed: "{ISO timestamp}"`.
|
|
65
|
-
|
|
66
|
-
Display summary:
|
|
67
|
-
```
|
|
68
|
-
=== CODEBASE REFRESH ===
|
|
69
|
-
Changes detected: {N} files
|
|
70
|
-
Docs refreshed: {M} entries
|
|
71
|
-
Skipped (unchanged): {K} entries
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Error Handling
|
|
77
|
-
|
|
78
|
-
| Code | Severity | Description |
|
|
79
|
-
|------|----------|-------------|
|
|
80
|
-
| E001 | fatal | `.workflow/` not initialized |
|
|
81
|
-
| E002 | fatal | No codebase docs exist -- use `Skill({ skill: "codebase-rebuild" })` instead |
|
|
82
|
-
| W001 | warning | No changes detected since last refresh |
|
|
1
|
+
---
|
|
2
|
+
name: maestro-codebase-refresh
|
|
3
|
+
description: Incremental refresh of codebase docs based on recent git changes
|
|
4
|
+
argument-hint: "[--since <date>] [--deep]"
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Codebase Refresh
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
$maestro-codebase-refresh
|
|
14
|
+
$maestro-codebase-refresh "--since 2026-03-15"
|
|
15
|
+
$maestro-codebase-refresh "--deep"
|
|
16
|
+
$maestro-codebase-refresh "--since 3d --deep"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Flags**:
|
|
20
|
+
- `--since <date>` -- Override change detection window (ISO date or relative like `3d`)
|
|
21
|
+
- `--deep` -- Force deeper re-scan even for minor changes
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Implementation
|
|
26
|
+
|
|
27
|
+
### Step 1: Validate Preconditions
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
test -d .workflow || exit 1 # E001: not initialized
|
|
31
|
+
test -d .workflow/codebase || exit 1 # E002: no docs, use codebase-rebuild
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Step 2: Detect Changes
|
|
35
|
+
|
|
36
|
+
Determine baseline timestamp:
|
|
37
|
+
1. If `--since` provided, use that date
|
|
38
|
+
2. Else read `state.json` field `codebase_last_refreshed` or `codebase_last_rebuilt`
|
|
39
|
+
3. Fallback to last 7 days
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
git diff --name-only --since="{baseline}" HEAD
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If no changes detected, report clean state (W001) and exit.
|
|
46
|
+
|
|
47
|
+
### Step 3: Map Changes to Docs
|
|
48
|
+
|
|
49
|
+
Read `.workflow/codebase/doc-index.json` to find which documentation entries cover the changed files.
|
|
50
|
+
Build a list of affected doc entries that need refresh.
|
|
51
|
+
|
|
52
|
+
### Step 4: Refresh Affected Docs
|
|
53
|
+
|
|
54
|
+
For each affected documentation entry:
|
|
55
|
+
1. Re-read the source files that changed
|
|
56
|
+
2. Update the corresponding doc section in `.workflow/codebase/`
|
|
57
|
+
3. Update the entry's timestamp in `doc-index.json`
|
|
58
|
+
|
|
59
|
+
If `--deep` flag is set, also re-scan adjacent files for context changes.
|
|
60
|
+
|
|
61
|
+
### Step 5: Update State
|
|
62
|
+
|
|
63
|
+
Update `doc-index.json` timestamps for all refreshed entries.
|
|
64
|
+
Update `state.json` with `codebase_last_refreshed: "{ISO timestamp}"`.
|
|
65
|
+
|
|
66
|
+
Display summary:
|
|
67
|
+
```
|
|
68
|
+
=== CODEBASE REFRESH ===
|
|
69
|
+
Changes detected: {N} files
|
|
70
|
+
Docs refreshed: {M} entries
|
|
71
|
+
Skipped (unchanged): {K} entries
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Error Handling
|
|
77
|
+
|
|
78
|
+
| Code | Severity | Description |
|
|
79
|
+
|------|----------|-------------|
|
|
80
|
+
| E001 | fatal | `.workflow/` not initialized |
|
|
81
|
+
| E002 | fatal | No codebase docs exist -- use `Skill({ skill: "codebase-rebuild" })` instead |
|
|
82
|
+
| W001 | warning | No changes detected since last refresh |
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro-issue
|
|
3
|
-
description: Issue CRUD -- create, list, status, update, close, and link issues to tasks
|
|
4
|
-
argument-hint: "<create|list|status|update|close|link> [options]"
|
|
5
|
-
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Issue Management
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
$maestro-issue "create --title 'Auth token expiry bug' --severity high --source manual"
|
|
14
|
-
$maestro-issue "list --status open --severity high"
|
|
15
|
-
$maestro-issue "status ISS-20260318-001"
|
|
16
|
-
$maestro-issue "update ISS-20260318-001 --priority critical --tags auth,security"
|
|
17
|
-
$maestro-issue "close ISS-20260318-001 --resolution fixed"
|
|
18
|
-
$maestro-issue "link ISS-20260318-001 --task TASK-003"
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Implementation
|
|
24
|
-
|
|
25
|
-
### Step 1: Parse Subcommand
|
|
26
|
-
|
|
27
|
-
Extract first token as subcommand. Valid: `create`, `list`, `status`, `update`, `close`, `link`.
|
|
28
|
-
If missing or invalid, display usage and prompt user (E_NO_SUBCOMMAND, E_INVALID_SUBCOMMAND).
|
|
29
|
-
|
|
30
|
-
### Step 2: Ensure Storage
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
mkdir -p .workflow/issues
|
|
34
|
-
touch .workflow/issues/issues.jsonl 2>/dev/null
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Auto-create directory and empty file if missing (E_ISSUES_DIR_MISSING handled silently).
|
|
38
|
-
|
|
39
|
-
### Step 3: Execute Subcommand
|
|
40
|
-
|
|
41
|
-
**create**: Read `~/.maestro/templates/issue.json` for schema. Generate ID `ISS-{YYYYMMDD}-{NNN}`. Prompt for missing required fields (title, severity). Append JSON line to `issues.jsonl`.
|
|
42
|
-
|
|
43
|
-
**list**: Read `issues.jsonl`, filter by `--status`, `--phase`, `--severity`, `--source`. Display as table:
|
|
44
|
-
```
|
|
45
|
-
ID | Severity | Status | Title
|
|
46
|
-
ISS-20260318-001 | high | open | Auth token expiry bug
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**status**: Find issue by ID in `issues.jsonl`. Display all fields in detail format.
|
|
50
|
-
|
|
51
|
-
**update**: Find issue by ID, merge provided fields, rewrite the line in `issues.jsonl`. Track `updated_at` timestamp.
|
|
52
|
-
|
|
53
|
-
**close**: Find issue by ID, set status to `closed`, add `resolution` and `closed_at`. Move line from `issues.jsonl` to `issue-history.jsonl`.
|
|
54
|
-
|
|
55
|
-
**link**: Find issue by ID, add task reference to issue's `linked_tasks` array. If task JSON exists (`.task/TASK-*.json`), add issue reference to task's `linked_issues`. Bidirectional cross-reference.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Error Handling
|
|
60
|
-
|
|
61
|
-
| Code | Severity | Description |
|
|
62
|
-
|------|----------|-------------|
|
|
63
|
-
| E_NO_SUBCOMMAND | error | No subcommand provided -- display valid subcommands |
|
|
64
|
-
| E_INVALID_SUBCOMMAND | error | Unrecognized subcommand |
|
|
65
|
-
| E_ISSUES_DIR_MISSING | warning | `.workflow/issues/` not found -- auto-created |
|
|
1
|
+
---
|
|
2
|
+
name: maestro-issue
|
|
3
|
+
description: Issue CRUD -- create, list, status, update, close, and link issues to tasks
|
|
4
|
+
argument-hint: "<create|list|status|update|close|link> [options]"
|
|
5
|
+
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Issue Management
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
$maestro-issue "create --title 'Auth token expiry bug' --severity high --source manual"
|
|
14
|
+
$maestro-issue "list --status open --severity high"
|
|
15
|
+
$maestro-issue "status ISS-20260318-001"
|
|
16
|
+
$maestro-issue "update ISS-20260318-001 --priority critical --tags auth,security"
|
|
17
|
+
$maestro-issue "close ISS-20260318-001 --resolution fixed"
|
|
18
|
+
$maestro-issue "link ISS-20260318-001 --task TASK-003"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Implementation
|
|
24
|
+
|
|
25
|
+
### Step 1: Parse Subcommand
|
|
26
|
+
|
|
27
|
+
Extract first token as subcommand. Valid: `create`, `list`, `status`, `update`, `close`, `link`.
|
|
28
|
+
If missing or invalid, display usage and prompt user (E_NO_SUBCOMMAND, E_INVALID_SUBCOMMAND).
|
|
29
|
+
|
|
30
|
+
### Step 2: Ensure Storage
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
mkdir -p .workflow/issues
|
|
34
|
+
touch .workflow/issues/issues.jsonl 2>/dev/null
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Auto-create directory and empty file if missing (E_ISSUES_DIR_MISSING handled silently).
|
|
38
|
+
|
|
39
|
+
### Step 3: Execute Subcommand
|
|
40
|
+
|
|
41
|
+
**create**: Read `~/.maestro/templates/issue.json` for schema. Generate ID `ISS-{YYYYMMDD}-{NNN}`. Prompt for missing required fields (title, severity). Append JSON line to `issues.jsonl`.
|
|
42
|
+
|
|
43
|
+
**list**: Read `issues.jsonl`, filter by `--status`, `--phase`, `--severity`, `--source`. Display as table:
|
|
44
|
+
```
|
|
45
|
+
ID | Severity | Status | Title
|
|
46
|
+
ISS-20260318-001 | high | open | Auth token expiry bug
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**status**: Find issue by ID in `issues.jsonl`. Display all fields in detail format.
|
|
50
|
+
|
|
51
|
+
**update**: Find issue by ID, merge provided fields, rewrite the line in `issues.jsonl`. Track `updated_at` timestamp.
|
|
52
|
+
|
|
53
|
+
**close**: Find issue by ID, set status to `closed`, add `resolution` and `closed_at`. Move line from `issues.jsonl` to `issue-history.jsonl`.
|
|
54
|
+
|
|
55
|
+
**link**: Find issue by ID, add task reference to issue's `linked_tasks` array. If task JSON exists (`.task/TASK-*.json`), add issue reference to task's `linked_issues`. Bidirectional cross-reference.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Error Handling
|
|
60
|
+
|
|
61
|
+
| Code | Severity | Description |
|
|
62
|
+
|------|----------|-------------|
|
|
63
|
+
| E_NO_SUBCOMMAND | error | No subcommand provided -- display valid subcommands |
|
|
64
|
+
| E_INVALID_SUBCOMMAND | error | Unrecognized subcommand |
|
|
65
|
+
| E_ISSUES_DIR_MISSING | warning | `.workflow/issues/` not found -- auto-created |
|
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro-status
|
|
3
|
-
description: Display project dashboard with phase progress, active tasks, and next steps
|
|
4
|
-
argument-hint: ""
|
|
5
|
-
allowed-tools: Read, Bash, Glob, Grep
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Status Dashboard
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
$maestro-status
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
No arguments required. Reads `.workflow/` state files and renders a formatted project overview.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Implementation
|
|
21
|
-
|
|
22
|
-
### Step 1: Validate Project
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# Verify .workflow/ exists
|
|
26
|
-
test -d .workflow || exit 1 # E001: not initialized
|
|
27
|
-
test -f .workflow/state.json || exit 1 # E002: state missing
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Step 2: Load State Files
|
|
31
|
-
|
|
32
|
-
Read all state sources:
|
|
33
|
-
- `.workflow/state.json` -- project-level state machine
|
|
34
|
-
- `.workflow/roadmap.md` -- milestone and phase structure
|
|
35
|
-
- `.workflow/phases/*/index.json` -- per-phase metadata and progress
|
|
36
|
-
- `.workflow/phases/*/.task/TASK-*.json` -- individual task statuses
|
|
37
|
-
|
|
38
|
-
### Step 3: Calculate Progress
|
|
39
|
-
|
|
40
|
-
For each phase directory found:
|
|
41
|
-
1. Count total tasks, completed, failed, blocked, pending
|
|
42
|
-
2. Calculate completion percentage
|
|
43
|
-
3. Determine phase status from index.json
|
|
44
|
-
|
|
45
|
-
### Step 4: Render Dashboard
|
|
46
|
-
|
|
47
|
-
Display formatted output:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
=== PROJECT DASHBOARD ===
|
|
51
|
-
Project: {name} | Status: {state}
|
|
52
|
-
|
|
53
|
-
--- Milestones & Phases ---
|
|
54
|
-
{For each milestone}
|
|
55
|
-
M{N}: {title}
|
|
56
|
-
{For each phase}
|
|
57
|
-
Phase {N}: {title} [{status}] {progress_bar} {completed}/{total} ({pct}%)
|
|
58
|
-
|
|
59
|
-
--- Active Work ---
|
|
60
|
-
Phase {N}: {title}
|
|
61
|
-
In-progress: {list}
|
|
62
|
-
Blocked: {list}
|
|
63
|
-
|
|
64
|
-
--- Next Steps ---
|
|
65
|
-
Based on current state: {suggestion with Skill() reference}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Step 5: Suggest Next Steps
|
|
69
|
-
|
|
70
|
-
Use this decision table to suggest the next action:
|
|
71
|
-
|
|
72
|
-
| Current State | Suggestion |
|
|
73
|
-
|---------------|------------|
|
|
74
|
-
| No phases planned | `Skill({ skill: "maestro-brainstorm" })` or `Skill({ skill: "maestro-plan" })` |
|
|
75
|
-
| Phase planned, not executed | `Skill({ skill: "maestro-execute", args: "<N>" })` |
|
|
76
|
-
| Phase executed, not verified | `Skill({ skill: "maestro-verify", args: "<N>" })` |
|
|
77
|
-
| Phase verified with gaps | `Skill({ skill: "maestro-plan", args: "<N> --gaps" })` |
|
|
78
|
-
| Phase reviewed PASS/WARN | `Skill({ skill: "quality-test", args: "<N>" })` |
|
|
79
|
-
| UAT passed | `Skill({ skill: "maestro-phase-transition" })` |
|
|
80
|
-
| All milestone phases done | `Skill({ skill: "maestro-milestone-audit" })` |
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Error Handling
|
|
85
|
-
|
|
86
|
-
| Code | Severity | Description |
|
|
87
|
-
|------|----------|-------------|
|
|
88
|
-
| E001 | fatal | `.workflow/` not initialized -- run `Skill({ skill: "maestro-init" })` first |
|
|
89
|
-
| E002 | fatal | `state.json` missing or corrupt |
|
|
1
|
+
---
|
|
2
|
+
name: maestro-status
|
|
3
|
+
description: Display project dashboard with phase progress, active tasks, and next steps
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
allowed-tools: Read, Bash, Glob, Grep
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Status Dashboard
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
$maestro-status
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
No arguments required. Reads `.workflow/` state files and renders a formatted project overview.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Implementation
|
|
21
|
+
|
|
22
|
+
### Step 1: Validate Project
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Verify .workflow/ exists
|
|
26
|
+
test -d .workflow || exit 1 # E001: not initialized
|
|
27
|
+
test -f .workflow/state.json || exit 1 # E002: state missing
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Step 2: Load State Files
|
|
31
|
+
|
|
32
|
+
Read all state sources:
|
|
33
|
+
- `.workflow/state.json` -- project-level state machine
|
|
34
|
+
- `.workflow/roadmap.md` -- milestone and phase structure
|
|
35
|
+
- `.workflow/phases/*/index.json` -- per-phase metadata and progress
|
|
36
|
+
- `.workflow/phases/*/.task/TASK-*.json` -- individual task statuses
|
|
37
|
+
|
|
38
|
+
### Step 3: Calculate Progress
|
|
39
|
+
|
|
40
|
+
For each phase directory found:
|
|
41
|
+
1. Count total tasks, completed, failed, blocked, pending
|
|
42
|
+
2. Calculate completion percentage
|
|
43
|
+
3. Determine phase status from index.json
|
|
44
|
+
|
|
45
|
+
### Step 4: Render Dashboard
|
|
46
|
+
|
|
47
|
+
Display formatted output:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
=== PROJECT DASHBOARD ===
|
|
51
|
+
Project: {name} | Status: {state}
|
|
52
|
+
|
|
53
|
+
--- Milestones & Phases ---
|
|
54
|
+
{For each milestone}
|
|
55
|
+
M{N}: {title}
|
|
56
|
+
{For each phase}
|
|
57
|
+
Phase {N}: {title} [{status}] {progress_bar} {completed}/{total} ({pct}%)
|
|
58
|
+
|
|
59
|
+
--- Active Work ---
|
|
60
|
+
Phase {N}: {title}
|
|
61
|
+
In-progress: {list}
|
|
62
|
+
Blocked: {list}
|
|
63
|
+
|
|
64
|
+
--- Next Steps ---
|
|
65
|
+
Based on current state: {suggestion with Skill() reference}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Step 5: Suggest Next Steps
|
|
69
|
+
|
|
70
|
+
Use this decision table to suggest the next action:
|
|
71
|
+
|
|
72
|
+
| Current State | Suggestion |
|
|
73
|
+
|---------------|------------|
|
|
74
|
+
| No phases planned | `Skill({ skill: "maestro-brainstorm" })` or `Skill({ skill: "maestro-plan" })` |
|
|
75
|
+
| Phase planned, not executed | `Skill({ skill: "maestro-execute", args: "<N>" })` |
|
|
76
|
+
| Phase executed, not verified | `Skill({ skill: "maestro-verify", args: "<N>" })` |
|
|
77
|
+
| Phase verified with gaps | `Skill({ skill: "maestro-plan", args: "<N> --gaps" })` |
|
|
78
|
+
| Phase reviewed PASS/WARN | `Skill({ skill: "quality-test", args: "<N>" })` |
|
|
79
|
+
| UAT passed | `Skill({ skill: "maestro-phase-transition" })` |
|
|
80
|
+
| All milestone phases done | `Skill({ skill: "maestro-milestone-audit" })` |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Error Handling
|
|
85
|
+
|
|
86
|
+
| Code | Severity | Description |
|
|
87
|
+
|------|----------|-------------|
|
|
88
|
+
| E001 | fatal | `.workflow/` not initialized -- run `Skill({ skill: "maestro-init" })` first |
|
|
89
|
+
| E002 | fatal | `state.json` missing or corrupt |
|