maestro-flow-one 0.2.33 → 0.2.35

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.
Files changed (48) hide show
  1. package/maestro-flow/commands/learn/investigate.md +151 -152
  2. package/maestro-flow/commands/learn/second-opinion.md +118 -122
  3. package/maestro-flow/commands/lifecycle/analyze.md +215 -266
  4. package/maestro-flow/commands/lifecycle/blueprint.md +189 -204
  5. package/maestro-flow/commands/lifecycle/brainstorm.md +209 -213
  6. package/maestro-flow/commands/lifecycle/companion.md +531 -531
  7. package/maestro-flow/commands/lifecycle/composer.md +188 -179
  8. package/maestro-flow/commands/lifecycle/execute.md +183 -184
  9. package/maestro-flow/commands/lifecycle/fork.md +111 -110
  10. package/maestro-flow/commands/lifecycle/grill.md +175 -176
  11. package/maestro-flow/commands/lifecycle/guard.md +103 -102
  12. package/maestro-flow/commands/lifecycle/impeccable.md +311 -268
  13. package/maestro-flow/commands/lifecycle/init.md +130 -131
  14. package/maestro-flow/commands/lifecycle/merge.md +87 -80
  15. package/maestro-flow/commands/lifecycle/next.md +253 -257
  16. package/maestro-flow/commands/lifecycle/overlay.md +188 -178
  17. package/maestro-flow/commands/lifecycle/plan.md +225 -211
  18. package/maestro-flow/commands/lifecycle/quick.md +83 -77
  19. package/maestro-flow/commands/lifecycle/roadmap.md +173 -186
  20. package/maestro-flow/commands/lifecycle/swarm-workflow.md +243 -264
  21. package/maestro-flow/commands/lifecycle/tools-execute.md +122 -117
  22. package/maestro-flow/commands/lifecycle/tools-register.md +162 -157
  23. package/maestro-flow/commands/lifecycle/ui-codify.md +117 -100
  24. package/maestro-flow/commands/lifecycle/universal-workflow.md +548 -561
  25. package/maestro-flow/commands/lifecycle/update.md +122 -119
  26. package/maestro-flow/commands/manage/codebase-rebuild.md +87 -85
  27. package/maestro-flow/commands/manage/harvest.md +97 -95
  28. package/maestro-flow/commands/manage/issue-discover.md +83 -81
  29. package/maestro-flow/commands/manage/issue.md +72 -73
  30. package/maestro-flow/commands/manage/kg-extractors.md +128 -0
  31. package/maestro-flow/commands/manage/knowhow-capture.md +92 -82
  32. package/maestro-flow/commands/manage/knowhow.md +83 -79
  33. package/maestro-flow/commands/manage/knowledge-audit.md +105 -88
  34. package/maestro-flow/commands/manage/status.md +62 -52
  35. package/maestro-flow/commands/manage/wiki.md +82 -71
  36. package/maestro-flow/commands/milestone/audit.md +4 -10
  37. package/maestro-flow/commands/milestone/complete.md +6 -7
  38. package/maestro-flow/commands/milestone/release.md +136 -145
  39. package/maestro-flow/commands/quality/auto-test.md +153 -136
  40. package/maestro-flow/commands/quality/debug.md +159 -120
  41. package/maestro-flow/commands/quality/refactor.md +105 -67
  42. package/maestro-flow/commands/quality/retrospective.md +123 -77
  43. package/maestro-flow/commands/quality/review.md +155 -128
  44. package/maestro-flow/commands/quality/sync.md +88 -52
  45. package/maestro-flow/commands/quality/test.md +147 -117
  46. package/maestro-flow/commands/spec/add.md +77 -70
  47. package/maestro-flow/commands/spec/setup.md +49 -52
  48. package/package.json +1 -1
@@ -1,176 +1,175 @@
1
- ---
2
- name: maestro-grill
3
- description: Use when stress-testing a plan, idea, or requirement against codebase reality before brainstorming
4
- argument-hint: "<topic|plan> [-y] [-c] [--from <source>] [--depth shallow|standard|deep]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Edit
9
- - Bash
10
- - Glob
11
- - Grep
12
- - Agent
13
- - AskUserQuestion
14
- ---
15
- <purpose>
16
- Socratic stress-testing of a plan, idea, or requirement against codebase reality. Walks every branch of the decision tree one question at a time — challenging vague terminology against existing code, probing edge cases with concrete scenarios, and verifying assumptions with code evidence. Produces a verified context package (grill-report.md + terminology.md + context-package.json) for downstream brainstorm/analyze/roadmap consumption.
17
-
18
- Positioned BEFORE brainstorm in the pipeline: grill stress-tests and sharpens; brainstorm generates and elaborates.
19
- </purpose>
20
-
21
- <required_reading>
22
- @~/.maestro/workflows/grill.md
23
- </required_reading>
24
-
25
- <deferred_reading>
26
- - [state.json](~/.maestro/templates/state.json) — read when registering artifact
27
- </deferred_reading>
28
-
29
- <context>
30
- $ARGUMENTS -- topic/plan text for interactive mode, or --from source for upstream input.
31
-
32
- **Mode selection:**
33
- - **Interactive mode** (default): Topic text triggers full Socratic grilling with user Q&A
34
- - **Auto mode** (`-y`): Code exploration answers questions instead of the user
35
- - **Resume mode** (`-c` or `--session ID`): Continue from a previous grill session
36
-
37
- **Flags:**
38
-
39
- | Flag | Effect | Default |
40
- |------|--------|---------|
41
- | `-y` / `--yes` | Auto mode — CLI exploration replaces human answers | `false` |
42
- | `-c` / `--continue` | Resume from last grill session | — |
43
- | `--session ID` | Resume specific session | — |
44
- | `--depth shallow\|standard\|deep` | Branch count 3/5/8 | `standard` |
45
- | `--from <source>` | Load upstream material (`blueprint:ID`, `@file`, or path) | — |
46
-
47
- **Output directory**: `.workflow/scratch/{YYYYMMDD}-grill-{slug}/`
48
- **Produced files**: `grill-report.md`, `terminology.md`, `context-package.json`
49
-
50
- ### Pre-load
51
-
52
- 1. **Specs**: `maestro spec load --category arch` — load architecture constraints
53
- 2. **Wiki search**: `maestro search "{topic keywords}"` → load relevant entries before grilling
54
- 3. All optional — proceed without if unavailable
55
- </context>
56
-
57
- <interview_protocol>
58
- Follows @~/.maestro/workflows/interview-mechanics.md standard.
59
-
60
- **Interaction mode override**: adversarial Socratic — NOT menu-driven
61
- **Question style**:
62
- - Reference specific code: "The codebase uses `{symbol}` at `{file:line}` — your proposal calls it `{term}`. Which wins?"
63
- - Concrete scenarios: "What happens when {action} while {condition}?"
64
- - Challenge contradictions: immediately surface conflicts with code evidence or prior answers
65
- - Escalating depth: per branch basic → specific → adversarial
66
- **Branch traversal** (depth-gated, --depth controls count): Scope & Boundaries → Data Model & State → Edge Cases & Failure Modes → Integration & Dependencies → Scale & Performance → Security & Access Control → Observability & Operations → Migration & Rollback
67
- **Writeback target**: grill-report.md (Q&A append per question) + terminology.md (term crystallization)
68
- **Additional skip conditions**: none beyond standard (-y, -c)
69
- **Exit condition**: all depth-selected branches fully walked → finalize report + context-package.json
70
- </interview_protocol>
71
-
72
- <execution>
73
- Follow '~/.maestro/workflows/grill.md' completely.
74
-
75
- ### Phase Gates (MANDATORY, BLOCKING)
76
-
77
- **GATE 1: Setup → Branch Walking** (Step 1 → Step 2)
78
- - REQUIRED: Topic parsed and output directory created.
79
- - REQUIRED: Initial codebase scan completed — at least one code reference identified for grounding.
80
- - BLOCKED if missing: cannot grill without code reality baseline.
81
-
82
- **GATE 2: Branch Walking → Synthesis** (Step 2 → Step 3)
83
- - REQUIRED: All depth-selected branches walked (shallow=3, standard=5, deep=8).
84
- - REQUIRED: Each branch has ≥2 Q&A pairs with evidence (code reference or explicit user input).
85
- - REQUIRED: Every locked decision has evidence — NOT just orchestrator inference.
86
- - BLOCKED if branches incomplete: continue walking before synthesizing.
87
-
88
- **GATE 3: Synthesis → Completion** (Step 3 → Report)
89
- - REQUIRED: `grill-report.md` written with Branch Log table + all Q&A entries + synthesis section.
90
- - REQUIRED: `terminology.md` written with ≥5 terms.
91
- - REQUIRED: `context-package.json` generated.
92
- - BLOCKED if any artifact missing: produce it before reporting completion.
93
-
94
- ### Evidence Requirement
95
-
96
- Grill questions MUST reference specific code when challenging the user's proposal:
97
- - Valid: "The codebase uses `{symbol}` at `{file:line}` — your proposal calls it `{term}`. Which wins?"
98
- - INVALID: Generic questions without code grounding (e.g., "How would you handle errors?")
99
- - If codebase scan failed (W001): flag ALL subsequent locked decisions as LOW CONFIDENCE.
100
-
101
- ### Artifact Verification (before completion)
102
-
103
- ```
104
- REQUIRED_ARTIFACTS = [
105
- "grill-report.md", // Branch Log + Q&A + synthesis
106
- "terminology.md", // ≥5 terms with code refs
107
- "context-package.json" // Schema "context-package/1.0"
108
- ]
109
- ```
110
- If any missing: DO NOT report completion. Go back and produce the missing artifact.
111
- </execution>
112
-
113
- <completion>
114
- ### Standalone report
115
-
116
- ```
117
- === GRILL READY ===
118
- Topic: {topic}
119
- Branches walked: {count}/{depth_target}
120
- Decisions locked: {locked_count}
121
- Open risks: {risk_count}
122
- Output: {output_dir}
123
- Artifact: GRL-{id}
124
- === END GRILL ===
125
- ```
126
-
127
- ### Ralph-invoked completion
128
-
129
- End the step by calling the CLI (no text block output):
130
- ```
131
- maestro ralph complete <idx> --status {STATUS} [--evidence {path}]
132
- ```
133
-
134
- Status verdicts:
135
- - **DONE** — Normal completion
136
- - **DONE_WITH_CONCERNS** — Completed with caveats; pass `--concerns`
137
- - **NEEDS_RETRY** — Tooling error / transient issue; ralph will retry
138
- - **BLOCKED** — External hard blocker; pass `--reason`
139
-
140
- ### Next-step routing
141
-
142
- | Condition | Suggestion |
143
- |-----------|-----------|
144
- | Need multi-role elaboration | `Skill({ skill: "maestro-brainstorm", args: "{topic} --from grill:{artifact_id}" })` |
145
- | Need deep technical analysis | `Skill({ skill: "maestro-analyze", args: "{topic} --from grill:{artifact_id}" })` |
146
- | Scope is clear, ready for roadmap | `Skill({ skill: "maestro-roadmap", args: "--from grill:{artifact_id}" })` |
147
- | Need formal spec package | `Skill({ skill: "maestro-blueprint", args: "--from grill:{artifact_id}" })` |
148
- | More branches to walk | `Skill({ skill: "maestro-grill", args: "{topic} -c" })` |
149
- </completion>
150
-
151
- <error_codes>
152
- | Code | Severity | Condition | Recovery |
153
- |------|----------|-----------|----------|
154
- | E001 | error | No topic/plan and no --from/--continue flag | Prompt user for topic text |
155
- | E002 | error | --session ID not found | Show available sessions |
156
- | W001 | warning | Codebase scan failed or returned empty | Continue without code grounding, note limitation |
157
- | W002 | warning | CLI exploration timeout in auto mode | Skip question, mark as open |
158
- | W003 | warning | Max branch depth reached without resolution | Force synthesis, offer continuation |
159
- </error_codes>
160
-
161
- <success_criteria>
162
- - [ ] Interactive mode: all depth-selected branches walked (shallow=3, standard=5, deep=8)
163
- - [ ] Each branch has >= 2 question-answer pairs with evidence or explicit user input
164
- - [ ] `grill-report.md` written with Branch Log table, all Q&A entries, synthesis section
165
- - [ ] `terminology.md` written with >= 5 terms, code references where applicable
166
- - [ ] Every locked decision has evidence (code reference or explicit user confirmation)
167
- - [ ] Contradictions between answers and code surfaced and resolved (or logged as risks)
168
- - [ ] Risk register captures all unresolved tensions
169
- - [ ] `context-package.json` generated with schema "context-package/1.0"
170
- - [ ] Artifact registered in state.json (type=grill, id=GRL-xxx)
171
- - [ ] Session sealed via finish-work
172
- </success_criteria>
173
-
174
- <on_complete>
175
- @~/.maestro/workflows/finish-work.md — SESSION_DIR={output_dir}, SESSION_TYPE=grill, SESSION_ID={artifact_id}, LINKED_MILESTONE=null
176
- </on_complete>
1
+ ---
2
+ name: maestro-grill
3
+ description: Use when stress-testing a plan, idea, or requirement against codebase reality before brainstorming
4
+ argument-hint: "<topic|plan> [-y] [-c] [--from <source>] [--depth shallow|standard|deep]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Agent
13
+ - AskUserQuestion
14
+ ---
15
+ <purpose>
16
+ Socratic stress-testing of plans/ideas against codebase reality. Produces grill-report.md + terminology.md + context-package.json for downstream brainstorm/analyze/roadmap.
17
+
18
+ Pipeline position: BEFORE brainstorm (stress-test then elaborate).
19
+ </purpose>
20
+
21
+ <required_reading>
22
+ @~/.maestro/workflows/grill.md
23
+ </required_reading>
24
+
25
+ <deferred_reading>
26
+ - [state.json](~/.maestro/templates/state.json) — read when registering artifact
27
+ </deferred_reading>
28
+
29
+ <context>
30
+ $ARGUMENTS -- topic/plan text for interactive mode, or --from source for upstream input.
31
+
32
+ **Mode selection:**
33
+ - **Interactive mode** (default): Topic text triggers full Socratic grilling with user Q&A
34
+ - **Auto mode** (`-y`): Code exploration answers questions instead of the user
35
+ - **Resume mode** (`-c` or `--session ID`): Continue from a previous grill session
36
+
37
+ **Flags:**
38
+
39
+ | Flag | Effect | Default |
40
+ |------|--------|---------|
41
+ | `-y` / `--yes` | Auto mode — CLI exploration replaces human answers | `false` |
42
+ | `-c` / `--continue` | Resume from last grill session | — |
43
+ | `--session ID` | Resume specific session | — |
44
+ | `--depth shallow\|standard\|deep` | Branch count 3/5/8 | `standard` |
45
+ | `--from <source>` | Load upstream material (`blueprint:ID`, `@file`, or path) | — |
46
+
47
+ **Output directory**: `.workflow/scratch/{YYYYMMDD}-grill-{slug}/`
48
+ **Produced files**: `grill-report.md`, `terminology.md`, `context-package.json`
49
+
50
+ ### Pre-load
51
+
52
+ 1. **Specs**: `maestro spec load --category arch` — load architecture constraints
53
+ 2. **Wiki search**: `maestro search "{topic keywords}"` → load relevant entries before grilling
54
+ 3. All optional — proceed without if unavailable
55
+ </context>
56
+
57
+ <interview_protocol>
58
+ Follows @~/.maestro/workflows/interview-mechanics.md standard.
59
+
60
+ **Interaction mode override**: adversarial Socratic — NOT menu-driven
61
+ **Question style**:
62
+ - Reference specific code: "The codebase uses `{symbol}` at `{file:line}` — your proposal calls it `{term}`. Which wins?"
63
+ - Concrete scenarios: "What happens when {action} while {condition}?"
64
+ - Challenge contradictions: immediately surface conflicts with code evidence or prior answers
65
+ - Escalating depth: per branch basic → specific → adversarial
66
+ **Branch traversal** (depth-gated, --depth controls count): Scope & Boundaries → Data Model & State → Edge Cases & Failure Modes → Integration & Dependencies → Scale & Performance → Security & Access Control → Observability & Operations → Migration & Rollback
67
+ **Writeback target**: grill-report.md (Q&A append per question) + terminology.md (term crystallization)
68
+ **Additional skip conditions**: none beyond standard (-y, -c)
69
+ **Exit condition**: all depth-selected branches fully walked → finalize report + context-package.json
70
+ </interview_protocol>
71
+
72
+ <execution>
73
+ Follow '~/.maestro/workflows/grill.md' completely.
74
+
75
+ ### Phase Gates (MANDATORY, BLOCKING)
76
+
77
+ **GATE 1: Setup → Branch Walking** (Step 1 → Step 2)
78
+ - REQUIRED: Topic parsed and output directory created.
79
+ - REQUIRED: Initial codebase scan completed — at least one code reference identified for grounding.
80
+ - BLOCKED if missing: cannot grill without code reality baseline.
81
+
82
+ **GATE 2: Branch Walking → Synthesis** (Step 2 → Step 3)
83
+ - REQUIRED: All depth-selected branches walked (shallow=3, standard=5, deep=8).
84
+ - REQUIRED: Each branch has ≥2 Q&A pairs with evidence (code reference or explicit user input).
85
+ - REQUIRED: Every locked decision has evidence — NOT just orchestrator inference.
86
+ - BLOCKED if branches incomplete: continue walking before synthesizing.
87
+
88
+ **GATE 3: Synthesis → Completion** (Step 3 → Report)
89
+ - REQUIRED: `grill-report.md` written with Branch Log table + all Q&A entries + synthesis section.
90
+ - REQUIRED: `terminology.md` written with ≥5 terms.
91
+ - REQUIRED: `context-package.json` generated.
92
+ - BLOCKED if any artifact missing: produce it before reporting completion.
93
+
94
+ ### Evidence Requirement
95
+
96
+ Grill questions MUST reference specific code (`file:line`) when challenging the user's proposal. Generic questions without code grounding are INVALID.
97
+
98
+ If codebase scan failed (W001): flag ALL subsequent locked decisions as LOW CONFIDENCE.
99
+
100
+ ### Artifact Verification (before completion)
101
+
102
+ ```
103
+ REQUIRED_ARTIFACTS = [
104
+ "grill-report.md", // Branch Log + Q&A + synthesis
105
+ "terminology.md", // ≥5 terms with code refs
106
+ "context-package.json" // Schema "context-package/1.0"
107
+ ]
108
+ ```
109
+ If any missing: DO NOT report completion. Go back and produce the missing artifact.
110
+ </execution>
111
+
112
+ <completion>
113
+ ### Standalone report
114
+
115
+ ```
116
+ === GRILL READY ===
117
+ Topic: {topic}
118
+ Branches walked: {count}/{depth_target}
119
+ Decisions locked: {locked_count}
120
+ Open risks: {risk_count}
121
+ Output: {output_dir}
122
+ Artifact: GRL-{id}
123
+ === END GRILL ===
124
+ ```
125
+
126
+ ### Ralph-invoked completion
127
+
128
+ End the step by calling the CLI (no text block output):
129
+ ```
130
+ maestro ralph complete <idx> --status {STATUS} [--evidence {path}]
131
+ ```
132
+
133
+ Status verdicts:
134
+ - **DONE** — Normal completion
135
+ - **DONE_WITH_CONCERNS** — Completed with caveats; pass `--concerns`
136
+ - **NEEDS_RETRY** — Tooling error / transient issue; ralph will retry
137
+ - **BLOCKED** — External hard blocker; pass `--reason`
138
+
139
+ ### Next-step routing
140
+
141
+ | Condition | Suggestion |
142
+ |-----------|-----------|
143
+ | Need multi-role elaboration | `Skill({ skill: "maestro-brainstorm", args: "{topic} --from grill:{artifact_id}" })` |
144
+ | Need deep technical analysis | `Skill({ skill: "maestro-analyze", args: "{topic} --from grill:{artifact_id}" })` |
145
+ | Scope is clear, ready for roadmap | `Skill({ skill: "maestro-roadmap", args: "--from grill:{artifact_id}" })` |
146
+ | Need formal spec package | `Skill({ skill: "maestro-blueprint", args: "--from grill:{artifact_id}" })` |
147
+ | More branches to walk | `Skill({ skill: "maestro-grill", args: "{topic} -c" })` |
148
+ </completion>
149
+
150
+ <error_codes>
151
+ | Code | Severity | Condition | Recovery |
152
+ |------|----------|-----------|----------|
153
+ | E001 | error | No topic/plan and no --from/--continue flag | Prompt user for topic text |
154
+ | E002 | error | --session ID not found | Show available sessions |
155
+ | W001 | warning | Codebase scan failed or returned empty | Continue without code grounding, note limitation |
156
+ | W002 | warning | CLI exploration timeout in auto mode | Skip question, mark as open |
157
+ | W003 | warning | Max branch depth reached without resolution | Force synthesis, offer continuation |
158
+ </error_codes>
159
+
160
+ <success_criteria>
161
+ - [ ] Interactive mode: all depth-selected branches walked (shallow=3, standard=5, deep=8)
162
+ - [ ] Each branch has >= 2 question-answer pairs with evidence or explicit user input
163
+ - [ ] `grill-report.md` written with Branch Log table, all Q&A entries, synthesis section
164
+ - [ ] `terminology.md` written with >= 5 terms, code references where applicable
165
+ - [ ] Every locked decision has evidence (code reference or explicit user confirmation)
166
+ - [ ] Contradictions between answers and code surfaced and resolved (or logged as risks)
167
+ - [ ] Risk register captures all unresolved tensions
168
+ - [ ] `context-package.json` generated with schema "context-package/1.0"
169
+ - [ ] Artifact registered in state.json (type=grill, id=GRL-xxx)
170
+ - [ ] Session sealed via finish-work
171
+ </success_criteria>
172
+
173
+ <on_complete>
174
+ @~/.maestro/workflows/finish-work.md — SESSION_DIR={output_dir}, SESSION_TYPE=grill, SESSION_ID={artifact_id}, LINKED_MILESTONE=null
175
+ </on_complete>
@@ -1,102 +1,103 @@
1
- ---
2
- name: maestro-guard
3
- description: Manage editing boundary restrictions
4
- argument-hint: "<on|off|status|allow <path>|deny <path>>"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Glob
10
- ---
11
- <purpose>
12
- Configure directory-level write boundaries enforced by the workflow-guard PreToolUse hook.
13
- When enabled, Write and Edit tool calls targeting files outside allowed paths are blocked.
14
-
15
- Subcommands:
16
- - **on** — Enable path guard (defaults to `src/` if no paths configured)
17
- - **off** Disable path guard (preserves path list)
18
- - **status** — Show current guard configuration
19
- - **allow `<path>`** Add a directory to the allowed paths list
20
- - **deny `<path>`** — Switch to deny mode and add path to deny list
21
- </purpose>
22
-
23
- <context>
24
- $ARGUMENTS — Parse subcommand and optional path argument.
25
-
26
- **Config location:** `.workflow/config.json` → `guard` section
27
-
28
- ```json
29
- {
30
- "guard": {
31
- "enabled": false,
32
- "mode": "allow",
33
- "paths": []
34
- }
35
- }
36
- ```
37
-
38
- **Enforcement:** The `workflow-guard` hook (PreToolUse on Write/Edit) reads this config
39
- and blocks operations targeting files outside boundaries. Requires hooks level >= `full`.
40
- </context>
41
-
42
- <execution>
43
-
44
- **Step 1: Parse subcommand**
45
-
46
- Extract from $ARGUMENTS:
47
- - `on` / `off` / `status` / `allow <path>` / `deny <path>`
48
- - If no subcommand, default to `status`
49
-
50
- **Step 2: Read config**
51
-
52
- Read `.workflow/config.json`. If file missing, initialize with empty guard section.
53
-
54
- **Step 3: Execute subcommand**
55
-
56
- **`status`:**
57
- - Display: enabled/disabled, mode (allow/deny), paths list
58
- - Check if workflow-guard hook is active (read `.claude/settings.json` for hook presence)
59
- - If guard enabled but hook not active, warn: "⚠ PathGuard enabled but workflow-guard hook not installed. Run `maestro hooks level full` to activate."
60
-
61
- **`on`:**
62
- - Set `guard.enabled = true`
63
- - If `guard.paths` is empty, set default: `["src/", "tests/", ".workflow/"]`
64
- - Check hook level, warn if < full
65
- - Write config
66
-
67
- **`off`:**
68
- - Set `guard.enabled = false`
69
- - Preserve existing paths and mode
70
- - Write config
71
-
72
- **`allow <path>`:**
73
- - Normalize path to forward slashes, ensure trailing slash for directories
74
- - If `guard.mode` is `deny`, switch to `allow` and clear paths with warning
75
- - Add path to `guard.paths` (deduplicate)
76
- - Set `guard.enabled = true` if not already
77
- - Write config
78
-
79
- **`deny <path>`:**
80
- - Normalize path to forward slashes, ensure trailing slash for directories
81
- - If `guard.mode` is `allow`, switch to `deny` and clear paths with warning
82
- - Set `guard.mode = "deny"`
83
- - Add path to `guard.paths` (deduplicate)
84
- - Set `guard.enabled = true` if not already (symmetric with `allow`: adding a deny path auto-enables the guard)
85
- - Write config
86
-
87
- **Step 4: Confirm**
88
-
89
- Display updated guard configuration.
90
-
91
- </execution>
92
-
93
- <error_codes>
94
- - E001: `.workflow/config.json` not found and cannot be created (not a maestro project)
95
- - W001: PathGuard enabled but workflow-guard hook not installed
96
- </error_codes>
97
-
98
- <success_criteria>
99
- - [ ] Config read/written correctly
100
- - [ ] Hook level warning displayed when applicable
101
- - [ ] Updated configuration shown after changes
102
- </success_criteria>
1
+ ---
2
+ name: maestro-guard
3
+ description: Manage editing boundary restrictions
4
+ argument-hint: "<on|off|status|allow <path>|deny <path>>"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ ---
11
+ <purpose>
12
+ Configure directory-level write boundaries enforced by the workflow-guard PreToolUse hook.
13
+ Subcommands: on, off, status, allow `<path>`, deny `<path>`.
14
+ </purpose>
15
+
16
+ <context>
17
+ $ARGUMENTSParse subcommand and optional path argument.
18
+
19
+ **Config location:** `.workflow/config.json` `guard` section
20
+
21
+ ```json
22
+ {
23
+ "guard": {
24
+ "enabled": false,
25
+ "mode": "allow",
26
+ "paths": []
27
+ }
28
+ }
29
+ ```
30
+
31
+ **Enforcement:** The `workflow-guard` hook (PreToolUse on Write/Edit) reads this config
32
+ and blocks operations targeting files outside boundaries. Requires hooks level >= `full`.
33
+ </context>
34
+
35
+ <execution>
36
+
37
+ **Step 1: Parse subcommand**
38
+
39
+ Extract from $ARGUMENTS:
40
+ - `on` / `off` / `status` / `allow <path>` / `deny <path>`
41
+ - If no subcommand, default to `status`
42
+
43
+ **Step 2: Read config**
44
+
45
+ Read `.workflow/config.json`. If file missing, initialize with empty guard section.
46
+
47
+ **Step 3: Execute subcommand**
48
+
49
+ **`status`:**
50
+ - Display: enabled/disabled, mode (allow/deny), paths list
51
+ - Check if workflow-guard hook is active (read `.claude/settings.json` for hook presence)
52
+ - If guard enabled but hook not active, warn: "⚠ PathGuard enabled but workflow-guard hook not installed. Run `maestro hooks level full` to activate."
53
+
54
+ **`on`:**
55
+ - Set `guard.enabled = true`
56
+ - If `guard.paths` is empty, set default: `["src/", "tests/", ".workflow/"]`
57
+ - Check hook level, warn if < full
58
+ - Write config
59
+
60
+ **`off`:**
61
+ - Set `guard.enabled = false`
62
+ - Preserve existing paths and mode
63
+ - Write config
64
+
65
+ **`allow <path>`:**
66
+ - Normalize path to forward slashes, ensure trailing slash for directories
67
+ - If `guard.mode` is `deny`, switch to `allow` and clear paths with warning
68
+ - Add path to `guard.paths` (deduplicate)
69
+ - Set `guard.enabled = true` if not already
70
+ - Write config
71
+
72
+ **`deny <path>`:**
73
+ - Normalize path to forward slashes, ensure trailing slash for directories
74
+ - If `guard.mode` is `allow`, switch to `deny` and clear paths with warning
75
+ - Set `guard.mode = "deny"`
76
+ - Add path to `guard.paths` (deduplicate)
77
+ - Set `guard.enabled = true` if not already (symmetric with `allow`: adding a deny path auto-enables the guard)
78
+ - Write config
79
+
80
+ **Step 4: Confirm**
81
+
82
+ Display updated guard configuration.
83
+
84
+ </execution>
85
+
86
+ <error_codes>
87
+ - E001: `.workflow/config.json` not found and cannot be created (not a maestro project)
88
+ - W001: PathGuard enabled but workflow-guard hook not installed
89
+ </error_codes>
90
+
91
+ <success_criteria>
92
+ - [ ] Config read/written correctly
93
+ - [ ] Hook level warning displayed when applicable
94
+ - [ ] Updated configuration shown after changes
95
+ </success_criteria>
96
+
97
+ <completion>
98
+ ### Next-step routing
99
+ | Condition | Suggestion |
100
+ |-----------|-----------|
101
+ | Guard enabled, hook not installed | `maestro hooks level full` |
102
+ | Want to verify guard works | Edit a file outside allowed paths |
103
+ </completion>