macca-method 2.1.1 → 2.1.2

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 (60) hide show
  1. package/.agents/macca-lock.json +1 -1
  2. package/.agents/skills/_shared/references/brainstorm-session.md +5 -5
  3. package/.agents/skills/_shared/references/invocation-policy.md +20 -20
  4. package/.agents/skills/_shared/references/output-ownership.md +11 -11
  5. package/.agents/skills/_shared/references/scope-rules.md +1 -1
  6. package/.agents/skills/_shared/references/skill-catalog.md +20 -20
  7. package/.agents/skills/_shared/scripts/validate-skills.py +37 -15
  8. package/.agents/skills/add-feature/SKILL.md +9 -3
  9. package/.agents/skills/antislop-copywriting/SKILL.md +372 -0
  10. package/.agents/skills/brainstorm-api/SKILL.md +28 -16
  11. package/.agents/skills/brainstorm-api/assets/api.template.md +35 -15
  12. package/.agents/skills/brainstorm-architecture/SKILL.md +35 -15
  13. package/.agents/skills/brainstorm-architecture/assets/architecture.template.md +44 -25
  14. package/.agents/skills/brainstorm-prd/SKILL.md +47 -17
  15. package/.agents/skills/brainstorm-prd/assets/PRD.template.md +47 -23
  16. package/.agents/skills/brainstorm-rules/SKILL.md +36 -19
  17. package/.agents/skills/brainstorm-rules/assets/rules.template.md +32 -18
  18. package/.agents/skills/brainstorm-schema/SKILL.md +18 -8
  19. package/.agents/skills/brainstorm-schema/assets/schema.template.md +25 -10
  20. package/.agents/skills/brainstorm-styleguide/SKILL.md +37 -19
  21. package/.agents/skills/brainstorm-styleguide/assets/StyleGuide.template.md +78 -60
  22. package/.agents/skills/brainstorm-task/SKILL.md +27 -14
  23. package/.agents/skills/brainstorm-task/assets/Task.template.md +29 -18
  24. package/.agents/skills/bug-fix/SKILL.md +25 -1
  25. package/.agents/skills/code-review/SKILL.md +7 -7
  26. package/.agents/skills/code-review/references/review-checklist.md +21 -10
  27. package/.agents/skills/developer/SKILL.md +8 -0
  28. package/.agents/skills/developer/references/execute-task.md +13 -7
  29. package/.agents/skills/help/SKILL.md +32 -20
  30. package/.agents/skills/meet/SKILL.md +9 -4
  31. package/.agents/skills/quick-dev/SKILL.md +27 -22
  32. package/.agents/skills/release-readiness/SKILL.md +17 -13
  33. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  34. package/.agents/skills/skill-creator/SKILL.md +485 -0
  35. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  36. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  37. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  38. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  39. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  40. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  41. package/.agents/skills/skill-creator/references/schemas.md +441 -0
  42. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  43. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  44. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  45. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  46. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  47. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  48. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  49. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  50. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  51. package/.agents/skills/spec-audit/SKILL.md +28 -1
  52. package/.agents/skills/spec-compliance/SKILL.md +31 -18
  53. package/.agents/skills/spec-init/SKILL.md +29 -17
  54. package/README.md +158 -122
  55. package/bin/macca-method.js +1378 -1077
  56. package/package.json +40 -40
  57. package/scripts/run-skill-validator.js +27 -9
  58. package/scripts/test-install.js +599 -357
  59. package/scripts/test-upgrade-legacy.js +119 -100
  60. package/scripts/validate-skill-behavior.js +175 -64
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.1.1",
2
+ "version": "2.1.2",
3
3
  "skills": [
4
4
  "_shared",
5
5
  "add-feature",
@@ -84,11 +84,11 @@ When a brainstorming skill starts:
84
84
  2. Read `brainstormPreferences` if present.
85
85
  3. **Announce the session** before asking anything:
86
86
  - If preferences are already saved, announce and proceed in the same response. The user may override them at any time:
87
- ```
88
- This session has [N] topics.
89
- Saved preferences: [pacing] | recommendations: [on/off] | depth: [quick/standard/critical]
90
- Using these settings. Type different settings at any time.
91
- ```
87
+ ```
88
+ This session has [N] topics.
89
+ Saved preferences: [pacing] | recommendations: [on/off] | depth: [quick/standard/critical]
90
+ Using these settings. Type different settings at any time.
91
+ ```
92
92
  - If no preferences are saved — ask both before starting:
93
93
  ```
94
94
  This session has [N] topics. Two things before we start:
@@ -4,26 +4,26 @@ This catalog documents intent; it does not replace host routing or safety gates.
4
4
 
5
5
  Portable Agent Skills rely on `name` and `description`. OpenCode ignores Copilot-specific invocation fields. Therefore canonical skills keep standard frontmatter and express routing through descriptions and workflow boundaries.
6
6
 
7
- | Skill | Policy | Rationale |
8
- |---|---|---|
9
- | `add-feature` | explicit-intent | Broad source-of-truth mutation |
10
- | `brainstorm-prd` | explicit-intent | Long interview and PRD creation |
11
- | `brainstorm-architecture` | explicit-intent | Strategic technical decisions |
12
- | `brainstorm-schema` | explicit-intent | Consequential data contract |
13
- | `brainstorm-api` | explicit-intent | External contract creation |
14
- | `brainstorm-styleguide` | explicit-intent | UI contract interview |
15
- | `brainstorm-rules` | explicit-intent | Repository-wide rules |
16
- | `brainstorm-task` | both | Direct use and `add-feature` orchestration |
17
- | `spec-init` | explicit-intent | Whole-codebase scan and multi-document generation |
18
- | `developer` | explicit-implementation-intent | Broad implementation mutation |
19
- | `quick-dev` | model-auto | Bounded router for small implementation tasks |
20
- | `bug-fix` | both | Automatic bug/error routing and direct use; the first code change still requires explicit implementation approval from the diagnosis gate |
21
- | `spec-compliance` | orchestrated | Called by execution/remediation workflows; ad hoc requests remain valid |
22
- | `code-review` | both | Direct review and post-phase orchestration |
23
- | `spec-audit` | both | Direct audit and final workflow check |
24
- | `release-readiness` | both | Direct pre-release request and project-complete handoff |
25
- | `help` | both | Cheap read-only routing |
26
- | `meet` | both | Non-mutating meeting intent |
7
+ | Skill | Policy | Rationale |
8
+ | ------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | `add-feature` | explicit-intent | Broad source-of-truth mutation |
10
+ | `brainstorm-prd` | explicit-intent | Long interview and PRD creation |
11
+ | `brainstorm-architecture` | explicit-intent | Strategic technical decisions |
12
+ | `brainstorm-schema` | explicit-intent | Consequential data contract |
13
+ | `brainstorm-api` | explicit-intent | External contract creation |
14
+ | `brainstorm-styleguide` | explicit-intent | UI contract interview |
15
+ | `brainstorm-rules` | explicit-intent | Repository-wide rules |
16
+ | `brainstorm-task` | both | Direct use and `add-feature` orchestration |
17
+ | `spec-init` | explicit-intent | Whole-codebase scan and multi-document generation |
18
+ | `developer` | explicit-implementation-intent | Broad implementation mutation |
19
+ | `quick-dev` | model-auto | Bounded router for small implementation tasks |
20
+ | `bug-fix` | both | Automatic bug/error routing and direct use; the first code change still requires explicit implementation approval from the diagnosis gate |
21
+ | `spec-compliance` | orchestrated | Called by execution/remediation workflows; ad hoc requests remain valid |
22
+ | `code-review` | both | Direct review and post-phase orchestration |
23
+ | `spec-audit` | both | Direct audit and final workflow check |
24
+ | `release-readiness` | both | Direct pre-release request and project-complete handoff |
25
+ | `help` | both | Cheap read-only routing |
26
+ | `meet` | both | Non-mutating meeting intent |
27
27
 
28
28
  Definitions:
29
29
 
@@ -6,17 +6,17 @@ This file defines which skill primarily owns each persistent output, so skills d
6
6
 
7
7
  ## Primary Owners
8
8
 
9
- | Output | Primary Owner | Secondary / Limited Authors |
10
- |---|---|---|
11
- | `project-context/PRD.md` | `brainstorm-prd` | `add-feature`, `spec-init` |
12
- | `project-context/architecture.md` | `brainstorm-architecture` | `add-feature`, `spec-init` |
13
- | `project-context/schema.md` | `brainstorm-schema` | `add-feature`, `spec-init` |
14
- | `project-context/api.md` | `brainstorm-api` | `add-feature`, `spec-init` |
15
- | `project-context/StyleGuide.md` | `brainstorm-styleguide` | `add-feature`, `spec-init` |
16
- | `project-context/rules.md` | `brainstorm-rules` | `add-feature`, `spec-init` |
17
- | `project-context/Task.md` | `brainstorm-task` | `developer` updates progress and approved phase deltas; `quick-dev` adds one approved lightweight entry; `add-feature` hands off to `brainstorm-task` |
18
- | `project-context/bug-log.md` | `bug-fix` | none |
19
- | `project-context/plans/*.md` | `developer` | `add-feature`, `code-review` limited updates per workflow |
9
+ | Output | Primary Owner | Secondary / Limited Authors |
10
+ | --------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
11
+ | `project-context/PRD.md` | `brainstorm-prd` | `add-feature`, `spec-init` |
12
+ | `project-context/architecture.md` | `brainstorm-architecture` | `add-feature`, `spec-init` |
13
+ | `project-context/schema.md` | `brainstorm-schema` | `add-feature`, `spec-init` |
14
+ | `project-context/api.md` | `brainstorm-api` | `add-feature`, `spec-init` |
15
+ | `project-context/StyleGuide.md` | `brainstorm-styleguide` | `add-feature`, `spec-init` |
16
+ | `project-context/rules.md` | `brainstorm-rules` | `add-feature`, `spec-init` |
17
+ | `project-context/Task.md` | `brainstorm-task` | `developer` updates progress and approved phase deltas; `quick-dev` adds one approved lightweight entry; `add-feature` adds approved phase deltas (or hands off to `brainstorm-task` if missing) |
18
+ | `project-context/bug-log.md` | `bug-fix` | none |
19
+ | `project-context/plans/*.md` | `developer` | `add-feature`, `code-review` limited updates per workflow |
20
20
 
21
21
  ## Ownership Rules
22
22
 
@@ -9,7 +9,7 @@ This file defines how skills must adjust documents, recommendations, and work bo
9
9
  - `frontend`
10
10
  - `backend`
11
11
  - `fullstack`
12
- - *(missing)* → treat as `fullstack`
12
+ - _(missing)_ → treat as `fullstack`
13
13
 
14
14
  ## General Rules
15
15
 
@@ -2,26 +2,26 @@
2
2
 
3
3
  Compact framework-audit index. This is not a replacement for each `SKILL.md`; it identifies which full files need inspection when a conflict is suspected.
4
4
 
5
- | Skill | Invocation | Reads | Writes / Output | Primary Handoff |
6
- |---|---|---|---|---|
7
- | `brainstorm-prd` | explicit-intent | scope/config, user discovery | `PRD.md` | `brainstorm-architecture` |
8
- | `brainstorm-architecture` | explicit-intent | PRD | `architecture.md` | schema/API/style/rules |
9
- | `brainstorm-schema` | explicit-intent | PRD, architecture | `schema.md` | `brainstorm-api` |
10
- | `brainstorm-api` | explicit-intent | PRD, architecture, schema when applicable | `api.md` | style/rules/task |
11
- | `brainstorm-styleguide` | explicit-intent | PRD, architecture | `StyleGuide.md` | rules/task |
12
- | `brainstorm-rules` | explicit-intent | architecture and applicable domain specs | `rules.md` | `brainstorm-task` |
13
- | `brainstorm-task` | both | applicable specs | `Task.md` | `developer` |
14
- | `add-feature` | explicit-intent | all existing specs | approved spec deltas; delegates Task | `developer` |
15
- | `spec-init` | explicit-intent | existing code/config/evidence | bootstrap specs, not Task | audit/task |
16
- | `developer` | explicit-implementation-intent | Task and relevant specs | code, Task progress, plans | compliance/review |
17
- | `quick-dev` | model-auto | relevant specs | bounded code and Task entry | compliance/review |
18
- | `bug-fix` | both | bug log, relevant code/specs | approved fix, prevention, confirmed bug log | compliance/review |
19
- | `spec-compliance` | orchestrated | code and applicable specs | report; approved fixes | code-review |
20
- | `code-review` | both | diff/code, rules, architecture, applicable contracts | report; approved fixes | phase completion |
21
- | `spec-audit` | both | spec pairs or framework catalog | report; explicitly requested corrections | owning skills |
22
- | `release-readiness` | both | existing quality/release evidence | report only | release owner |
23
- | `help` | both | project status/config/catalog | routing report | selected skill |
24
- | `meet` | both | agenda-relevant evidence | one-round discussion report | owning skills |
5
+ | Skill | Invocation | Reads | Writes / Output | Primary Handoff |
6
+ | ------------------------- | ------------------------------ | ---------------------------------------------------- | ------------------------------------------- | ------------------------- |
7
+ | `brainstorm-prd` | explicit-intent | scope/config, user discovery | `PRD.md` | `brainstorm-architecture` |
8
+ | `brainstorm-architecture` | explicit-intent | PRD | `architecture.md` | schema/API/style/rules |
9
+ | `brainstorm-schema` | explicit-intent | PRD, architecture | `schema.md` | `brainstorm-api` |
10
+ | `brainstorm-api` | explicit-intent | PRD, architecture, schema when applicable | `api.md` | style/rules/task |
11
+ | `brainstorm-styleguide` | explicit-intent | PRD, architecture | `StyleGuide.md` | rules/task |
12
+ | `brainstorm-rules` | explicit-intent | architecture and applicable domain specs | `rules.md` | `brainstorm-task` |
13
+ | `brainstorm-task` | both | applicable specs | `Task.md` | `developer` |
14
+ | `add-feature` | explicit-intent | all existing specs | approved spec deltas; delegates Task | `developer` |
15
+ | `spec-init` | explicit-intent | existing code/config/evidence | bootstrap specs, not Task | audit/task |
16
+ | `developer` | explicit-implementation-intent | Task and relevant specs | code, Task progress, plans | compliance/review |
17
+ | `quick-dev` | model-auto | relevant specs | bounded code and Task entry | compliance/review |
18
+ | `bug-fix` | both | bug log, relevant code/specs | approved fix, prevention, confirmed bug log | compliance/review |
19
+ | `spec-compliance` | orchestrated | code and applicable specs | report; approved fixes | code-review |
20
+ | `code-review` | both | diff/code, rules, architecture, applicable contracts | report; approved fixes | phase completion |
21
+ | `spec-audit` | both | spec pairs or framework catalog | report; explicitly requested corrections | owning skills |
22
+ | `release-readiness` | both | existing quality/release evidence | report only | release owner |
23
+ | `help` | both | project status/config/catalog | routing report | selected skill |
24
+ | `meet` | both | agenda-relevant evidence | one-round discussion report | owning skills |
25
25
 
26
26
  Framework invariants:
27
27
 
@@ -6,7 +6,6 @@ import re
6
6
  import sys
7
7
  from pathlib import Path
8
8
 
9
-
10
9
  SKILLS_DIR = Path(__file__).resolve().parents[2]
11
10
  ALLOWED_FRONTMATTER = {
12
11
  "name",
@@ -46,12 +45,14 @@ def parse_frontmatter(path: Path, text: str) -> tuple[dict[str, object], list[st
46
45
  continue
47
46
  if line.startswith(" "):
48
47
  if current_map != "metadata" or ":" not in line:
49
- issues.append(f"{path}:{line_number}: unsupported nested frontmatter value")
48
+ issues.append(
49
+ f"{path}:{line_number}: unsupported nested frontmatter value"
50
+ )
50
51
  continue
51
52
  key, value = line.strip().split(":", 1)
52
53
  metadata = data.setdefault("metadata", {})
53
54
  assert isinstance(metadata, dict)
54
- metadata[key] = value.strip().strip('"\'')
55
+ metadata[key] = value.strip().strip("\"'")
55
56
  continue
56
57
  if ":" not in line:
57
58
  issues.append(f"{path}:{line_number}: invalid frontmatter line")
@@ -62,7 +63,7 @@ def parse_frontmatter(path: Path, text: str) -> tuple[dict[str, object], list[st
62
63
  issues.append(f"{path}:{line_number}: duplicate frontmatter key {key}")
63
64
  value = value.strip()
64
65
  if value:
65
- data[key] = value.strip('"\'')
66
+ data[key] = value.strip("\"'")
66
67
  current_map = None
67
68
  else:
68
69
  data[key] = {}
@@ -93,20 +94,31 @@ def check_skill_file(path: Path) -> list[str]:
93
94
  if frontmatter:
94
95
  unknown = sorted(set(frontmatter) - ALLOWED_FRONTMATTER)
95
96
  if unknown:
96
- issues.append(f"{path}: unsupported frontmatter fields: {', '.join(unknown)}")
97
+ issues.append(
98
+ f"{path}: unsupported frontmatter fields: {', '.join(unknown)}"
99
+ )
97
100
 
98
101
  name = frontmatter.get("name")
99
102
  description = frontmatter.get("description")
100
103
  if not isinstance(name, str) or not NAME_RE.fullmatch(name) or len(name) > 64:
101
104
  issues.append(f"{path}: invalid skill name {name!r}")
102
105
  elif name != path.parent.name:
103
- issues.append(f"{path}: name {name!r} does not match folder {path.parent.name!r}")
104
- if not isinstance(description, str) or not description or len(description) > 1024:
106
+ issues.append(
107
+ f"{path}: name {name!r} does not match folder {path.parent.name!r}"
108
+ )
109
+ if (
110
+ not isinstance(description, str)
111
+ or not description
112
+ or len(description) > 1024
113
+ ):
105
114
  issues.append(f"{path}: description must contain 1-1024 characters")
106
115
  metadata = frontmatter.get("metadata")
107
116
  if metadata is not None and (
108
117
  not isinstance(metadata, dict)
109
- or any(not isinstance(key, str) or not isinstance(value, str) for key, value in metadata.items())
118
+ or any(
119
+ not isinstance(key, str) or not isinstance(value, str)
120
+ for key, value in metadata.items()
121
+ )
110
122
  ):
111
123
  issues.append(f"{path}: metadata must be a string-to-string map")
112
124
  compatibility = frontmatter.get("compatibility")
@@ -121,14 +133,24 @@ def check_skill_file(path: Path) -> list[str]:
121
133
  if "<SECURITY_REVIEW>" in text:
122
134
  issues.append(f"{path}: <SECURITY_REVIEW> placeholder was not replaced")
123
135
 
124
- if re.search(r"^```markdown\s*$", text, re.MULTILINE) and re.search(
125
- r"^```(?:json|text|typescript|bash)\s*$", text, re.MULTILINE
126
- ):
127
- issues.append(
128
- f"{path}: possible broken nested fence; check and use 4 backticks for the outer template"
129
- )
136
+ # Check for actual unclosed markdown fences containing inner fences
137
+ # If a ```markdown block is opened, ensure any nested ``` blocks use 4 backticks ```` or are properly closed
138
+ if re.search(r"^```markdown\s*$", text, re.MULTILINE):
139
+ # Scan if there's an inner unescaped fence before closing ```
140
+ parts = text.split("```markdown")
141
+ for part in parts[1:]:
142
+ inside = part.split("\n```\n")[0] if "\n```\n" in part else part
143
+ if re.search(
144
+ r"^```(?:json|text|typescript|bash)\s*$", inside, re.MULTILINE
145
+ ):
146
+ issues.append(
147
+ f"{path}: possible broken nested fence inside ```markdown block; check and use 4 backticks for the outer template"
148
+ )
130
149
 
131
- if "[GATE — Fix mode: report-first]" in text and "Approval Resume Protocol" not in text:
150
+ if (
151
+ "[GATE — Fix mode: report-first]" in text
152
+ or "[GATE — Mode: report-first]" in text
153
+ ) and "Approval Resume Protocol" not in text:
132
154
  issues.append(f"{path}: report-first gate has no approval resume protocol")
133
155
 
134
156
  issues.extend(check_local_links(path, text))
@@ -33,6 +33,7 @@ Operate as `@Galbi` (Project Manager). Use the shared persona profile in `../_sh
33
33
  You are a **Product Engineer** adding features to a running project. Do not start from scratch. Read the current specs, understand the context, then update only the affected areas. Every impacted spec is updated; none are skipped.
34
34
 
35
35
  **Workflow:**
36
+
36
37
  - Read all existing specs first
37
38
  - Identify the impact on each document
38
39
  - Update ALL impacted specs (required)
@@ -61,13 +62,14 @@ If the user gives a free-form description, extract the relevant information and
61
62
  ## Step 1: Read All Existing Specs
62
63
 
63
64
  Read every existing file in `project-context/`:
65
+
64
66
  - `PRD.md`
65
67
  - `architecture.md`
66
68
  - `schema.md`
67
69
  - `api.md`
68
70
  - `rules.md`
69
71
  - `StyleGuide.md`
70
- - `Task.md` *(if it exists; otherwise it will be created by brainstorm-task)*
72
+ - `Task.md` _(if it exists; otherwise it will be created by brainstorm-task)_
71
73
 
72
74
  Read everything that exists. Skip nothing. Note the ID patterns in use (`FEAT-*`, `BR-*`, `DATA-*`, `API-*`, etc.).
73
75
 
@@ -116,15 +118,17 @@ For each **IMPACTED** document, update it in this order:
116
118
  4. `api.md` — add endpoints
117
119
  5. `StyleGuide.md` — add components/styles
118
120
  6. `rules.md` — add conventions if needed
119
- 7. `project-context/plans/` — if a plan file exists for the affected phase (for example `plans/phase-2-checkout.md`), update it to reflect the new scope. Add a section: `## Feature Addition: [feature name]` with a short description of the approach change. Do not overwrite existing plan content.
121
+ 7. `project-context/plans/` — if a plan file exists for the affected phase (for example `project-context/plans/phase-2-checkout.md`), update it to reflect the new scope. Add a section: `## Feature Addition: [feature name]` with a short description of the approach change. Do not overwrite existing plan content.
122
+
123
+ ### Update Principles
120
124
 
121
- ### Update Principles:
122
125
  - **Preserve unrelated content and IDs** — make the smallest targeted edit needed to keep each affected document internally consistent; update an existing statement when the approved feature changes it
123
126
  - **Match the existing style** — follow the current document format and tone
124
127
  - **Make additions clear** — place them logically; no special tags are needed
125
128
  - **Preserve old IDs** — assign new IDs for new items using the existing pattern
126
129
 
127
130
  After each update:
131
+
128
132
  ```
129
133
  ✅ PRD.md updated
130
134
  Section: [heading]
@@ -139,12 +143,14 @@ After each update:
139
143
  Call `brainstorm-task` to add a phase and tasks to `Task.md`.
140
144
 
141
145
  **Do not create tasks manually.** The `brainstorm-task` skill:
146
+
142
147
  - Performs deep analysis of the updated specs
143
148
  - Ensures task dependencies are ordered correctly
144
149
  - Creates testable acceptance criteria
145
150
  - Preserves consistency with existing phases
146
151
 
147
152
  Provide context:
153
+
148
154
  - If `Task.md` exists: "Add a new phase for this feature (do not rewrite everything)"
149
155
  - If `Task.md` does not exist: "Create Task.md from scratch using all specs"
150
156