opencastle 0.35.1 → 0.35.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.
Files changed (113) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/adapters/antigravity.d.ts +13 -7
  3. package/dist/cli/adapters/antigravity.d.ts.map +1 -1
  4. package/dist/cli/adapters/antigravity.js +15 -9
  5. package/dist/cli/adapters/antigravity.js.map +1 -1
  6. package/dist/cli/adapters/claude-code.d.ts +1 -1
  7. package/dist/cli/adapters/claude-code.js +1 -1
  8. package/dist/cli/adapters/codex.d.ts +1 -1
  9. package/dist/cli/adapters/codex.js +1 -1
  10. package/dist/cli/adapters/opencode.d.ts +1 -1
  11. package/dist/cli/adapters/opencode.js +1 -1
  12. package/dist/cli/adapters/single-file-base.d.ts.map +1 -1
  13. package/dist/cli/adapters/single-file-base.js +17 -18
  14. package/dist/cli/adapters/single-file-base.js.map +1 -1
  15. package/dist/cli/init.js +1 -1
  16. package/dist/cli/init.test.js +21 -18
  17. package/dist/cli/init.test.js.map +1 -1
  18. package/dist/cli/mcp.js +1 -1
  19. package/dist/cli/mcp.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/cli/adapters/antigravity.ts +15 -9
  22. package/src/cli/adapters/claude-code.ts +1 -1
  23. package/src/cli/adapters/codex.ts +1 -1
  24. package/src/cli/adapters/opencode.ts +1 -1
  25. package/src/cli/adapters/single-file-base.ts +20 -17
  26. package/src/cli/init.test.ts +24 -18
  27. package/src/cli/init.ts +1 -1
  28. package/src/cli/mcp.ts +1 -1
  29. package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
  30. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
  31. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +6 -6
  32. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +9 -9
  33. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
  34. package/src/dashboard/dist/data/convoys/demo-docs-update.json +3 -3
  35. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +4 -4
  36. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  37. package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
  38. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
  39. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +6 -6
  40. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +9 -9
  41. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
  42. package/src/dashboard/public/data/convoys/demo-docs-update.json +3 -3
  43. package/src/dashboard/public/data/convoys/demo-perf-opt.json +4 -4
  44. package/src/orchestrator/agents/api-designer.agent.md +10 -10
  45. package/src/orchestrator/agents/architect.agent.md +8 -8
  46. package/src/orchestrator/agents/content-engineer.agent.md +5 -5
  47. package/src/orchestrator/agents/copywriter.agent.md +8 -8
  48. package/src/orchestrator/agents/data-expert.agent.md +10 -10
  49. package/src/orchestrator/agents/database-engineer.agent.md +7 -7
  50. package/src/orchestrator/agents/developer.agent.md +13 -13
  51. package/src/orchestrator/agents/devops-expert.agent.md +11 -11
  52. package/src/orchestrator/agents/documentation-writer.agent.md +9 -9
  53. package/src/orchestrator/agents/performance-expert.agent.md +9 -9
  54. package/src/orchestrator/agents/release-manager.agent.md +9 -9
  55. package/src/orchestrator/agents/researcher.agent.md +5 -5
  56. package/src/orchestrator/agents/reviewer.agent.md +6 -6
  57. package/src/orchestrator/agents/security-expert.agent.md +10 -10
  58. package/src/orchestrator/agents/seo-specialist.agent.md +12 -12
  59. package/src/orchestrator/agents/session-guard.agent.md +3 -3
  60. package/src/orchestrator/agents/team-lead.agent.md +5 -5
  61. package/src/orchestrator/agents/testing-expert.agent.md +8 -8
  62. package/src/orchestrator/agents/ui-ux-expert.agent.md +15 -15
  63. package/src/orchestrator/customizations/agents/agent-registry.md +8 -8
  64. package/src/orchestrator/prompts/assess-complexity.prompt.md +8 -8
  65. package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +17 -17
  66. package/src/orchestrator/prompts/brainstorm.prompt.md +17 -17
  67. package/src/orchestrator/prompts/bug-fix.prompt.md +11 -11
  68. package/src/orchestrator/prompts/create-skill.prompt.md +21 -21
  69. package/src/orchestrator/prompts/fix-convoy.prompt.md +8 -8
  70. package/src/orchestrator/prompts/fix-prd.prompt.md +12 -12
  71. package/src/orchestrator/prompts/generate-convoy.prompt.md +50 -50
  72. package/src/orchestrator/prompts/generate-prd.prompt.md +32 -32
  73. package/src/orchestrator/prompts/implement-feature.prompt.md +16 -16
  74. package/src/orchestrator/prompts/quick-refinement.prompt.md +18 -18
  75. package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +9 -9
  76. package/src/orchestrator/prompts/validate-convoy.prompt.md +10 -10
  77. package/src/orchestrator/prompts/validate-prd.prompt.md +10 -10
  78. package/src/orchestrator/skills/accessibility-standards/SKILL.md +8 -8
  79. package/src/orchestrator/skills/agent-hooks/SKILL.md +1 -1
  80. package/src/orchestrator/skills/agent-memory/SKILL.md +11 -11
  81. package/src/orchestrator/skills/api-patterns/SKILL.md +5 -5
  82. package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +24 -51
  83. package/src/orchestrator/skills/code-commenting/SKILL.md +3 -3
  84. package/src/orchestrator/skills/context-map/REFERENCE.md +2 -2
  85. package/src/orchestrator/skills/context-map/SKILL.md +5 -5
  86. package/src/orchestrator/skills/data-engineering/SKILL.md +12 -12
  87. package/src/orchestrator/skills/decomposition/SKILL.md +34 -7
  88. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +4 -4
  89. package/src/orchestrator/skills/documentation-standards/SKILL.md +7 -7
  90. package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +3 -3
  91. package/src/orchestrator/skills/fast-review/SKILL.md +2 -2
  92. package/src/orchestrator/skills/frontend-design/COMPONENTS.md +1 -1
  93. package/src/orchestrator/skills/frontend-design/SKILL.md +11 -11
  94. package/src/orchestrator/skills/git-workflow/SKILL.md +5 -5
  95. package/src/orchestrator/skills/memory-merger/SKILL.md +32 -8
  96. package/src/orchestrator/skills/observability-logging/SKILL.md +6 -11
  97. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +15 -15
  98. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +4 -4
  99. package/src/orchestrator/skills/performance-optimization/SKILL.md +5 -5
  100. package/src/orchestrator/skills/project-consistency/SKILL.md +4 -4
  101. package/src/orchestrator/skills/react-development/SKILL.md +8 -8
  102. package/src/orchestrator/skills/security-hardening/SKILL.md +12 -12
  103. package/src/orchestrator/skills/self-improvement/SKILL.md +11 -11
  104. package/src/orchestrator/skills/seo-patterns/SKILL.md +49 -23
  105. package/src/orchestrator/skills/session-checkpoints/SKILL.md +12 -12
  106. package/src/orchestrator/skills/team-lead-reference/SKILL.md +6 -6
  107. package/src/orchestrator/skills/testing-workflow/SKILL.md +3 -3
  108. package/src/orchestrator/skills/validation-gates/SKILL.md +6 -6
  109. package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +0 -16
  110. package/src/orchestrator/skills/decomposition/REFERENCE.md +0 -28
  111. package/src/orchestrator/skills/memory-merger/REFERENCE.md +0 -20
  112. package/src/orchestrator/skills/react-development/REFERENCE.md +0 -7
  113. package/src/orchestrator/skills/seo-patterns/REFERENCE.md +0 -54
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Scaffold a new skill file with proper frontmatter, structure, and registration. Use when adding a new domain skill to the AI configuration.'
2
+ description: 'Scaffold new skill file with proper frontmatter, structure, registration. Use when adding new domain skill to AI configuration.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Create Skill
9
9
 
10
- Scaffold a new skill for the AI agent configuration. Skills encode domain-specific knowledge that agents load on demand.
10
+ Scaffold new skill for AI agent configuration. Skills encode domain-specific knowledge agents load on demand.
11
11
 
12
12
  ## Skill Request
13
13
 
@@ -17,14 +17,14 @@ Scaffold a new skill for the AI agent configuration. Skills encode domain-specif
17
17
 
18
18
  ## Skill Types
19
19
 
20
- OpenCastle has two kinds of skills with different locations and registration paths:
20
+ OpenCastle has two skill kinds with different locations, registration paths:
21
21
 
22
22
  | Type | Location | Bound Via | Purpose |
23
23
  |------|----------|-----------|---------|
24
24
  | **Process skill** | `skills/<name>/SKILL.md` | `directSkills` in skill-matrix.json | Stack-agnostic methodology (testing workflow, self-improvement, validation gates) |
25
25
  | **Plugin skill** | `plugins/<plugin>/SKILL.md` | Capability slot in the skill matrix | Technology-specific knowledge (CMS queries, database patterns, deployment config) |
26
26
 
27
- > **Rule of thumb:** If the skill would need to be rewritten when switching technologies (e.g., Supabase → Convex), it belongs in a **plugin**. If it's useful regardless of stack, it's a **process skill**.
27
+ > **Rule of thumb:** If skill would need rewriting when switching technologies (e.g., Supabase → Convex), it belongs in a **plugin**. If useful regardless of stack, it's a **process skill**.
28
28
 
29
29
  ---
30
30
 
@@ -45,7 +45,7 @@ Determine the type:
45
45
  - Use `kebab-case`
46
46
  - **Process skills:** descriptive domain name (e.g., `testing-workflow`, `context-map`, `security-hardening`)
47
47
  - **Plugin skills:** `skillName` field in the plugin's `config.ts` (e.g., `sanity-cms`, `supabase-database`, `nx-workspace`)
48
- - Check existing skills in `skills/` and `plugins/` to avoid overlap
48
+ - Check existing skills in `skills/`, `plugins/` to avoid overlap
49
49
 
50
50
  ### Step 3: Create the Skill File
51
51
 
@@ -96,7 +96,7 @@ description: "<Verb1> X, <verb2> Y, and <verb3> Z. Use when <scenario1>, <scenar
96
96
  | **<related-skill>** skill | <What it contributes> |
97
97
  ```
98
98
 
99
- If the skill has large code examples (>30 lines), schema tables, or verbose reference material, create a companion `REFERENCE.md` in the same directory and link to it from SKILL.md. Keep SKILL.md as the lean operational overview. Companion files must start with a backlink: `> Parent: [SKILL.md](./SKILL.md)`.
99
+ If skill has large code examples (>30 lines), schema tables, or verbose reference material, create companion `REFERENCE.md` in same directory; link to it from SKILL.md. Keep SKILL.md as lean operational overview. Companion files must start with backlink: `> Parent: [SKILL.md](./SKILL.md)`.
100
100
 
101
101
  ### Step 4: Register the Skill
102
102
 
@@ -104,30 +104,30 @@ Registration differs by type:
104
104
 
105
105
  #### Process Skill
106
106
 
107
- 1. **Add to the skill matrix** — Add the skill name to the `directSkills` array of each relevant agent in `.opencastle/agents/skill-matrix.json`
108
- 2. **Optional: reference in instructions** — If the skill should be loaded by default, add it to the appropriate `.github/instructions/` file
107
+ 1. **Add to skill matrix** — Add skill name to `directSkills` array of each relevant agent in `.opencastle/agents/skill-matrix.json`
108
+ 2. **Optional: reference in instructions** — If skill should load by default, add to appropriate `.github/instructions/` file
109
109
 
110
110
  #### Plugin Skill
111
111
 
112
- 1. **Set `skillName` in the plugin's `config.ts`** — This connects the skill to the plugin
113
- 2. **Update the skill matrix** — Add an entry to the matching capability slot's `entries` array in `.opencastle/agents/skill-matrix.json`
114
- 3. **No agent changes needed** — Agents resolve plugin skills through capability slots automatically
112
+ 1. **Set `skillName` in plugin's `config.ts`** — Connects skill to plugin
113
+ 2. **Update skill matrix** — Add entry to matching capability slot's `entries` array in `.opencastle/agents/skill-matrix.json`
114
+ 3. **No agent changes** — Agents resolve plugin skills through capability slots automatically
115
115
 
116
116
  ### Step 5: Validate
117
117
 
118
- - [ ] File created at the correct path (`skills/` or `plugins/`)
118
+ - [ ] File created at correct path (`skills/` or `plugins/`)
119
119
  - [ ] Frontmatter has `name` and `description` fields
120
- - [ ] Description is a single line (no line breaks)
121
- - [ ] Content follows the template structure
120
+ - [ ] Description is single line (no line breaks)
121
+ - [ ] Content follows template structure
122
122
  - [ ] No overlap with existing skills
123
123
  - [ ] Skill matrix updated (`directSkills` array or capability slot binding)
124
124
  - [ ] For process skills: at least one agent's `directSkills` array includes it in skill-matrix.json
125
- - [ ] For plugin skills: `config.ts` `skillName` matches the `name` in frontmatter
125
+ - [ ] For plugin skills: `config.ts` `skillName` matches `name` in frontmatter
126
126
  - [ ] Run `npx tessl skill review <path>` — target 100 score (see Scoring Criteria below)
127
127
 
128
128
  ## Scoring Criteria
129
129
 
130
- Skills are evaluated by `npx tessl skill review` across 8 criteria (3 pts each = 24 total). Target 100.
130
+ Skills evaluated by `npx tessl skill review` across 8 criteria (3 pts each = 24 total). Target 100.
131
131
 
132
132
  ### Description (frontmatter `description` field)
133
133
 
@@ -155,10 +155,10 @@ Skills are evaluated by `npx tessl skill review` across 8 criteria (3 pts each =
155
155
  - **Include executable examples** — At least one copy-paste-ready code block (5-15 lines). CLI commands with real flags, not placeholders
156
156
  - **Keep it scannable** — Tables over prose. Headings, bullets, code blocks. Agents parse structure, not paragraphs
157
157
  - **Number your workflows** — Every multi-step process needs numbered steps, checkpoints ("Gate: X passes"), and recovery ("Fail → fix → re-run step N")
158
- - **Don't explain what Claude knows** — Skip "what is X" explanations, obvious anti-pattern justifications, and concept definitions. Jump straight to the rules
159
- - **Avoid duplication** — If a rule exists in another skill or instruction file, reference it: "Load **security-hardening** skill for CSP configuration"
160
- - **Use REFERENCE.md for bulk** — Large code examples, schema tables, worked examples, and template libraries go in a companion `REFERENCE.md`. Link once from SKILL.md
158
+ - **Don't explain what Claude knows** — Skip "what is X" explanations, obvious anti-pattern justifications, concept definitions. Jump straight to the rules
159
+ - **Avoid duplication** — If rule exists in another skill or instruction file, reference it: "Load **security-hardening** skill for CSP configuration"
160
+ - **Use REFERENCE.md for bulk** — Large code examples, schema tables, worked examples, template libraries go in companion `REFERENCE.md`. Link once from SKILL.md
161
161
  - **Stay stack-agnostic in process skills** — Use capability slot references ("the **database** skill" not "Supabase")
162
- - **Size target** — 80-200 lines in SKILL.md. Under 80 is too thin; over 200 should split content to REFERENCE.md. Over 300 should be split into multiple skills
163
- - **No standalone trigger-term sections** — Weave trigger terms naturally into the description's `Use when...` clause
162
+ - **Size target** — 80-200 lines in SKILL.md. Under 80 too thin; over 200 split content to REFERENCE.md. Over 300 split into multiple skills
163
+ - **No standalone trigger-term sections** — Weave trigger terms naturally into description's `Use when...` clause
164
164
  - **Third-person voice in descriptions** — "Creates X" not "Create X" or "This skill creates X"
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Fix validation errors in a convoy task plan by outputting targeted JSON patches.'
2
+ description: 'Fix validation errors in convoy task plan by outputting targeted JSON patches.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  output: json
5
5
  ---
@@ -8,7 +8,7 @@ output: json
8
8
 
9
9
  # Fix Task Plan
10
10
 
11
- You are the Team Lead. The task plan below has validation errors. Fix every error by outputting targeted JSON patches.
11
+ You are the Team Lead. Task plan below has validation errors. Fix every error by outputting targeted JSON patches.
12
12
 
13
13
  ## Task Plan
14
14
 
@@ -25,13 +25,13 @@ You are the Team Lead. The task plan below has validation errors. Fix every erro
25
25
  ## Instructions
26
26
 
27
27
  1. Read every error before writing patches.
28
- 2. Fix ALL reported errors do not partially fix.
29
- 3. Preserve intent, agent assignments, and task scope. Only fix what is broken.
28
+ 2. Fix ALL reported errors; do not partially fix.
29
+ 3. Preserve intent, agent assignments, task scope. Only fix what is broken.
30
30
  4. Each patch replaces ONE field on ONE task.
31
31
 
32
32
  ## Patch Format
33
33
 
34
- Output a single `json` fenced code block with an array of patches:
34
+ Output single `json` fenced code block with array of patches:
35
35
 
36
36
  ```json
37
37
  [
@@ -59,12 +59,12 @@ Output a single `json` fenced code block with an array of patches:
59
59
  - `value`: Complete new value (replaces old value entirely)
60
60
 
61
61
  ### Common fixes
62
- - **Truncated prompt** → patch `field: "prompt"` with the complete, self-contained prompt text
63
- - **Missing dependency** → patch `field: "depends_on"` with the corrected array
62
+ - **Truncated prompt** → patch `field: "prompt"` with complete, self-contained prompt text
63
+ - **Missing dependency** → patch `field: "depends_on"` with corrected array
64
64
  - **Partition conflict** → patch `field: "files"` to use specific paths, or patch `field: "depends_on"` to add sequencing
65
65
  - **Wrong agent** → patch `field: "agent"` with correct value from roster
66
66
  - **Vague prompt** → patch with detailed, file-specific prompt including acceptance criteria
67
67
 
68
68
  ## Output
69
69
 
70
- Your entire response must be a single `json` fenced code block with the patches array. No text before or after.
70
+ Your entire response must be single `json` fenced code block with patches array. No text before or after.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Fix validation errors in a PRD. Goal is the broken PRD markdown; context is the error list from the validation step.'
2
+ description: 'Fix validation errors in PRD. Goal is broken PRD markdown; context is error list from validation step.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  output: prd
5
5
  ---
@@ -8,7 +8,7 @@ output: prd
8
8
 
9
9
  # Fix PRD
10
10
 
11
- You are the Team Lead. The PRD below failed validation. Fix **every reported issue** and output a complete, corrected PRD.
11
+ You are the Team Lead. The PRD below failed validation. Fix **every reported issue**; output complete, corrected PRD.
12
12
 
13
13
  ## Failing PRD
14
14
 
@@ -23,31 +23,31 @@ You are the Team Lead. The PRD below failed validation. Fix **every reported iss
23
23
  ## Fix Instructions
24
24
 
25
25
  1. Read every reported issue before making changes.
26
- 2. Fix **all** reported issues do not partially fix.
27
- 3. Do not change the intent, goals, or scope of the feature. Only fix what the validator flagged.
28
- 4. Preserve all content that is not part of the reported issues.
26
+ 2. Fix **all** reported issues; do not partially fix.
27
+ 3. Do not change intent, goals, or scope of feature. Only fix what validator flagged.
28
+ 4. Preserve all content not part of reported issues.
29
29
 
30
30
  ### Common Fix Patterns
31
31
 
32
32
  **Missing sections**
33
- - Add the missing section with concrete, specific content — not placeholder text
34
- - If the section needs real data you cannot infer, write a reasonable default and mark with `<!-- TODO: verify -->`
33
+ - Add missing section with concrete, specific content — not placeholder text
34
+ - If section needs real data you cannot infer, write reasonable default; mark with `<!-- TODO: verify -->`
35
35
 
36
36
  **Conflicting requirements**
37
- - Resolve contradictions between sections — pick the intent that best matches the feature goals
37
+ - Resolve contradictions between sections — pick intent that best matches feature goals
38
38
 
39
39
  **File partition conflicts**
40
- - If two parallel workstreams claim the same file, move one to a later phase with explicit dependency
41
- - Or split the file's responsibilities across the two workstreams so each touches distinct files
40
+ - If two parallel workstreams claim same file, move one to later phase with explicit dependency
41
+ - Or split file's responsibilities across two workstreams so each touches distinct files
42
42
 
43
43
  **Broad implementation scope**
44
44
  - Replace excessively broad paths (`src/`, `the frontend`) with specific subdirectories or file names
45
45
 
46
46
  **Placeholder text**
47
- - Replace template filler ("2–3 sentences about…", "Description here") with real content derived from the feature description
47
+ - Replace template filler ("2–3 sentences about…", "Description here") with real content derived from feature description
48
48
 
49
49
  ---
50
50
 
51
51
  ## Output
52
52
 
53
- Return the **complete corrected PRD** as raw Markdown starting with the `#` heading. Do not wrap the output in a code fence. Do not add explanatory prose before or after the PRD.
53
+ Return **complete corrected PRD** as raw Markdown starting with `#` heading. Do not wrap output in code fence. Do not add explanatory prose before or after PRD.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Generate a JSON task plan for autonomous convoy execution based on a high-level goal.'
2
+ description: 'Generate JSON task plan for autonomous convoy execution based on a high-level goal.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  output: json
5
5
  ---
@@ -8,7 +8,7 @@ output: json
8
8
 
9
9
  # Generate Task Plan
10
10
 
11
- You are the Team Lead. The user wants to run `opencastle run` to execute a batch of tasks autonomously via the convoy engine. Your job is to produce a JSON task plan. The CLI will convert it to a valid convoy spec — **you do not need to know YAML syntax**. Derive a short, descriptive, kebab-case filename from the user's goal (2–4 words max), e.g. `auth-refactor` or `add-search`.
11
+ You are the Team Lead. User wants to run `opencastle run` to execute batch of tasks autonomously via convoy engine. Your job: produce JSON task plan. CLI will convert it to valid convoy spec — **you do not need to know YAML syntax**. Derive short, descriptive, kebab-case filename from user's goal (2–4 words max), e.g. `auth-refactor` or `add-search`.
12
12
 
13
13
  > **⚠️ OUTPUT FORMAT: Your entire response must be a single ` ```json ` fenced code block. Do NOT output any text, explanations, summaries, or DAG diagrams before or after the JSON block. The parser only reads the ` ```json ` fence — everything else causes a failure.**
14
14
 
@@ -56,9 +56,9 @@ You are the Team Lead. The user wants to run `opencastle run` to execute a batch
56
56
 
57
57
  ### Complexity Scores
58
58
 
59
- If a **Pre-Computed Task Complexity** table is present in the context, use those scores directly — do not re-derive them. Map each convoy task to the closest workstream; for combined workstreams use the highest score.
59
+ If **Pre-Computed Task Complexity** table is present in context, use those scores directly — do not re-derive. Map each convoy task to closest workstream; for combined workstreams use highest score.
60
60
 
61
- If no pre-computed data is available, assess complexity yourself: `1` (trivial), `2` (simple), `3` (moderate), `5` (significant), `8` (complex), `13` (epic).
61
+ If no pre-computed data available, assess complexity yourself: `1` (trivial), `2` (simple), `3` (moderate), `5` (significant), `8` (complex), `13` (epic).
62
62
 
63
63
  ### Agent Roster
64
64
 
@@ -68,16 +68,16 @@ If no pre-computed data is available, assess complexity yourself: `1` (trivial),
68
68
 
69
69
  ### Content Research Rule
70
70
 
71
- When writing task `prompt` fields that involve creating content about real-world people, places, organizations, or topics — **include an explicit instruction in the prompt** telling the agent to search the internet first using any available web search or fetch tools (e.g. `fetch_webpage`, web search MCP). Agents must never fabricate bios, descriptions, histories, statistics, or any factual claims. If web search is unavailable, the prompt should instruct the agent to use placeholder text clearly marked as `[NEEDS RESEARCH]` rather than inventing content.
71
+ When writing task `prompt` fields involving creating content about real-world people, places, organizations, or topics — **include explicit instruction in prompt** telling agent to search internet first using available web search or fetch tools (e.g. `fetch_webpage`, web search MCP). Agents must never fabricate bios, descriptions, histories, statistics, or factual claims. If web search unavailable, prompt should instruct agent to use placeholder text clearly marked as `[NEEDS RESEARCH]` rather than inventing content.
72
72
 
73
- Example prompt suffix to include when content research is needed:
73
+ Example prompt suffix when content research needed:
74
74
  > "Before writing any content about [topic], search the internet for accurate information. Do not make up facts, descriptions, or biographical details. Use verified sources only."
75
75
 
76
76
  ---
77
77
 
78
78
  ### Scaffolding Rule
79
79
 
80
- New project from scratch? You MUST load the **backbone-scaffolding** skill and follow it.
80
+ New project from scratch? You MUST load **backbone-scaffolding** skill; follow it.
81
81
 
82
82
  ---
83
83
 
@@ -85,41 +85,41 @@ New project from scratch? You MUST load the **backbone-scaffolding** skill and f
85
85
 
86
86
  ### 1. Analyse the Goal
87
87
 
88
- - Read the user's goal. Identify the **deliverables** — what must exist or change after the run completes.
89
- - Search the codebase to understand current state, file layout, and conventions.
90
- - List the high-level workstreams (e.g. "database changes", "UI components", "tests", "docs").
88
+ - Read user's goal. Identify **deliverables** — what must exist or change after run completes.
89
+ - Search codebase to understand current state, file layout, conventions.
90
+ - List high-level workstreams (e.g. "database changes", "UI components", "tests", "docs").
91
91
 
92
92
  ### 2. Decompose into Tasks
93
93
 
94
- For each workstream, break it down into the smallest meaningful unit. Follow these rules:
94
+ For each workstream, break down into smallest meaningful unit. Follow these rules:
95
95
 
96
96
  1. **Single responsibility** — each task does exactly one thing.
97
- 2. **Self-contained prompt** — the `prompt` field must contain everything the agent needs: objective, file paths, constraints, acceptance criteria. The agent has no other context.
98
- 3. **Explicit file scopes** — list every directory or file the task may touch in `files`. Use plain paths only: exact file paths (e.g. `app/page.tsx`) or directory paths (e.g. `app/about/`). **Glob patterns (`*`, `?`, `**`) are not allowed** — the engine rejects them.
97
+ 2. **Self-contained prompt** — `prompt` field must contain everything agent needs: objective, file paths, constraints, acceptance criteria. Agent has no other context.
98
+ 3. **Explicit file scopes** — list every directory or file task may touch in `files`. Use plain paths only: exact file paths (e.g. `app/page.tsx`) or directory paths (e.g. `app/about/`). **Glob patterns (`*`, `?`, `**`) not allowed** — engine rejects them.
99
99
 
100
- 4. **No partition conflicts** — two tasks may not share a `files` entry if they run in parallel (same phase). Resolve conflicts by either:
100
+ 4. **No partition conflicts** — two tasks may not share `files` entry if they run in parallel (same phase). Resolve by either:
101
101
  - **Specificity**: replace a broad directory path with the specific files each task actually creates (e.g., instead of both tasks claiming `components/`, one gets `components/Hero.tsx` and the other gets `components/ProjectCard.tsx`)
102
102
  - **Sequencing**: add a `depends_on` edge from the later task to the earlier one, so they run in different phases
103
103
 
104
- > **Common mistake:** multiple tasks all depending on a single `setup` task will run in parallel and conflict if they share a directory like `components/`, `app/globals.css`, or `app/layout.tsx`. Always use specific file paths or sequence conflicting tasks.
104
+ > **Common mistake:** multiple tasks depending on single `setup` task will run in parallel, conflict if sharing directory like `components/`, `app/globals.css`, or `app/layout.tsx`. Always use specific file paths or sequence conflicting tasks.
105
105
 
106
- 5. **Appropriate agent** — pick the agent whose speciality matches the task (e.g. `testing-expert` for tests, `database-engineer` for migrations).
106
+ 5. **Appropriate agent** — pick agent whose speciality matches task (e.g. `testing-expert` for tests, `database-engineer` for migrations).
107
107
  6. **Realistic timeouts** — `30m` for most tasks; `1h` for large refactors; `10m` for small docs or config.
108
108
 
109
109
  ### 2.5 Foundation Phase for Multi-Page Projects
110
110
 
111
- When the goal involves building **2 or more pages, views, or UI sections**, apply the Foundation-First Pattern to prevent consistency drift across parallel agents:
111
+ When goal involves building **2 or more pages, views, or UI sections**, apply Foundation-First Pattern to prevent consistency drift across parallel agents:
112
112
 
113
- 1. **Create a foundation task** (`id: foundation-setup`) as the FIRST task. This task:
113
+ 1. **Create foundation task** (`id: foundation-setup`) as FIRST task. This task:
114
114
  - Creates a **design tokens file** (CSS custom properties for colors, typography, spacing, motion, shadows, breakpoints)
115
115
  - Creates a **shared layout component** (page container with header, footer, navigation)
116
116
  - Creates a **UI component library** (Button, Card, Heading, Text, Section, Container, Grid)
117
- - Establishes the **style guide** (aesthetic direction, content tone, terminology, navigation labels)
117
+ - Establishes **style guide** (aesthetic direction, content tone, terminology, navigation labels)
118
118
  - Agent: `ui-ux-expert` or `developer`
119
119
 
120
- 2. **All page tasks must `depends_on: [foundation-setup]`** — they cannot run until the foundation is in place.
120
+ 2. **All page tasks must `depends_on: [foundation-setup]`** — cannot run until foundation in place.
121
121
 
122
- 3. **Every page task prompt must include Foundation References** — these 5 mandatory lines constrain the agent to `use` existing artifacts instead of `creating` new ones:
122
+ 3. **Every page task prompt must include Foundation References** — 5 mandatory lines constrain agent to `use` existing artifacts instead of `creating` new ones:
123
123
  ```
124
124
  ### Foundation References (MANDATORY)
125
125
  - Design tokens: `[path to tokens file]` — use ONLY these variables. No new color/font/spacing values.
@@ -137,14 +137,14 @@ When the goal involves building **2 or more pages, views, or UI sections**, appl
137
137
  - The content tone (formal/casual, active/passive)
138
138
  - Terminology choices (e.g., "projects" not "portfolio")
139
139
 
140
- > **Why:** Without this pattern, parallel agents independently choose fonts, colors, component APIs, and content tone. The result looks like it was built by different teams — because it was. Foundation-first makes consistency structural, not aspirational.
140
+ > **Why:** Without this pattern, parallel agents independently choose fonts, colors, component APIs, content tone. Result looks built by different teams — because it was. Foundation-first makes consistency structural, not aspirational.
141
141
 
142
142
  ### 3. Define the Dependency Graph (DAG)
143
143
 
144
144
  - Tasks with no dependencies run first (in parallel up to `concurrency`).
145
145
  - Tasks consuming output of earlier tasks declare `depends_on`.
146
146
  - **Never create cycles.**
147
- - Verify the implicit phase structure:
147
+ - Verify implicit phase structure:
148
148
  ```
149
149
  Phase 1: [independent tasks]
150
150
  Phase 2: [tasks depending only on Phase 1]
@@ -152,22 +152,22 @@ When the goal involves building **2 or more pages, views, or UI sections**, appl
152
152
 
153
153
  ### 4. Set Global Options
154
154
 
155
- - `name` — short description of the run.
155
+ - `name` — short description of run.
156
156
  - `branch` — derive from the goal, e.g. `feat/auth-refactor`.
157
- - `concurrency` — 2–3 for overnight runs; 1 if tasks share files or the machine is constrained.
158
- - `on_failure` — `stop` when every subsequent task depends on success; otherwise `continue`.
159
- - `gates` — standard validation (lint, type-check, test) unless the user specifies otherwise.
157
+ - `concurrency` — 2–3 for overnight runs; 1 if tasks share files or machine is constrained.
158
+ - `on_failure` — `stop` when every subsequent task depends on success; else `continue`.
159
+ - `gates` — standard validation (lint, type-check, test) unless user specifies otherwise.
160
160
 
161
161
  ### 5. Write the Prompts
162
162
 
163
- Each task `prompt` must be a **complete, standalone instruction**. Include:
163
+ Each task `prompt` must be **complete, standalone instruction**. Include:
164
164
 
165
165
  - **What** to build / change / fix.
166
166
  - **Where** — exact file paths or directories.
167
- - **Why** — business context so the agent can make good decisions.
167
+ - **Why** — business context so agent can make good decisions.
168
168
  - **Constraints** — coding standards, conventions, do-not-touch files.
169
169
  - **Acceptance criteria** — bullet list of pass conditions.
170
- - **Verification command** — e.g. `Run the project's test command with coverage` so the agent self-checks.
170
+ - **Verification command** — e.g. `Run project's test command with coverage` so the agent self-checks.
171
171
 
172
172
  > **Weak prompt:** "Add tests for the auth module."
173
173
  >
@@ -181,20 +181,20 @@ Each task `prompt` must be a **complete, standalone instruction**. Include:
181
181
 
182
182
  ### 6. Output
183
183
 
184
- Your response must contain **ONLY** a single ` ```json ` fenced code block — no text before it, no text after it, no explanations, no summaries, no DAG diagrams.
184
+ Your response must contain **ONLY** single ` ```json ` fenced code block — no text before, no text after, no explanations, no summaries, no DAG diagrams.
185
185
 
186
186
  ---
187
187
 
188
188
  ## Chain Mode (Subset Generation)
189
189
 
190
- When the `{{goal}}` section contains a "Convoy Group Scope" heading, you are generating ONE convoy spec that is part of a larger convoy chain. The goal will contain the original user prompt, the group name, description, phases to cover, and dependency info. The full PRD is available in `{{context}}` as reference.
190
+ When `{{goal}}` section contains "Convoy Group Scope" heading, you are generating ONE convoy spec that is part of a larger convoy chain. The goal will contain original user prompt, group name, description, phases to cover, dependency info. Full PRD available in `{{context}}` as reference.
191
191
 
192
192
  When chain mode is detected:
193
- - **Only** generate tasks for the phases listed in the group scope. Do not include tasks from other phases.
194
- - Derive the convoy `name` from the group name (e.g. "Database Setup").
195
- - Derive the `branch` from the PRD's feature name (it will be overridden by the pipeline anyway).
196
- - **Keep prompts concise** — write prompts that are complete and self-contained but avoid unnecessary verbosity. Focus on: what to do, which files to create/modify, key constraints, and acceptance criteria.
197
- - Keep all other conventions the same as for single-spec generation.
193
+ - **Only** generate tasks for phases listed in group scope. Do not include tasks from other phases.
194
+ - Derive convoy `name` from group name (e.g. "Database Setup").
195
+ - Derive `branch` from PRD's feature name (overridden by pipeline anyway).
196
+ - **Keep prompts concise** — write complete, self-contained prompts; avoid unnecessary verbosity. Focus on: what to do, which files to create/modify, key constraints, acceptance criteria.
197
+ - Keep all other conventions same as for single-spec generation.
198
198
 
199
199
  ---
200
200
 
@@ -224,39 +224,39 @@ When chain mode is detected:
224
224
 
225
225
  ## Self-Validation Checklist (MANDATORY)
226
226
 
227
- Before outputting the JSON, verify **every item** below. The downstream validator will reject your plan if any blocking checks fail — fix them now to avoid expensive retry cycles.
227
+ Before outputting JSON, verify **every item** below. Downstream validator will reject your plan if any blocking checks fail — fix them now to avoid expensive retry cycles.
228
228
 
229
229
  ### Structural Integrity
230
230
 
231
231
  - [ ] Every task has a unique `id` (lowercase, kebab-case)
232
- - [ ] Every `depends_on` reference points to a valid `id` defined in the task list
232
+ - [ ] Every `depends_on` reference points to valid `id` defined in task list
233
233
  - [ ] No dependency cycles exist (DAG is acyclic)
234
234
  - [ ] No `files` entry contains `*`, `?`, or `**` — plain paths only
235
- - [ ] Top-level `name` and `tasks` fields are present; `tasks` is non-empty
236
- - [ ] Every task has both `id` and `prompt` fields (both non-empty strings)
235
+ - [ ] Top-level `name`, `tasks` fields present; `tasks` non-empty
236
+ - [ ] Every task has both `id`, `prompt` fields (both non-empty strings)
237
237
 
238
238
  ### Partition & Dependency Coherence
239
239
 
240
240
  - [ ] No two parallel tasks (same phase / no `depends_on` edge) share any `files` entry — resolve with specific file paths or sequencing
241
- - [ ] **Dependency completeness**: For every task prompt, scan for imports or references to files/types/components produced by other tasks. Each cross-reference MUST have a `depends_on` edge to the producing task.
242
- - [ ] **File list completeness**: Every file mentioned in a task's prompt that the agent will create or modify appears in that task's `files` list. Don't omit utility files, sub-components, or config files.
241
+ - [ ] **Dependency completeness**: For every task prompt, scan for imports or references to files/types/components produced by other tasks. Each cross-reference MUST have `depends_on` edge to producing task.
242
+ - [ ] **File list completeness**: Every file mentioned in task's prompt that agent will create or modify appears in that task's `files` list. Don't omit utility files, sub-components, or config files.
243
243
  - [ ] **Prompt-dependency coherence**: Prompts do not include workarounds (stub files, `@ts-expect-error`, conditional imports) for outputs of tasks listed in `depends_on`, since those outputs are guaranteed to exist.
244
244
 
245
245
  ### Prompt Quality
246
246
 
247
- - [ ] **Self-contained**: An agent with zero context can execute the prompt without external clarification.
248
- - [ ] **File-specific**: Names the exact files to create or modify — no vague references ("the frontend", "the codebase").
247
+ - [ ] **Self-contained**: Agent with zero context can execute prompt without external clarification.
248
+ - [ ] **File-specific**: Names exact files to create or modify — no vague references ("the frontend", "the codebase").
249
249
  - [ ] **Substantive**: At least 2 meaningful sentences; no stubs (`...`), no placeholders.
250
250
  - [ ] **Verifiable**: Contains acceptance criteria or explicit verification steps.
251
- - [ ] **Agent domain matching**: Each task's `agent` matches the domain — `developer` for code, `testing-expert` for tests, `documentation-writer` for docs, `copywriter` for marketing copy, `ui-ux-expert` for UI, `database-engineer` for migrations, `security-expert` for auth/security, `data-expert` for ETL/scraping.
252
- - [ ] **Content research compliance**: If a prompt concerns real people, places, or organisations, it includes a research instruction.
253
- - [ ] **Foundation phase present** (multi-page only): If 2+ pages/UI sections, a `foundation-setup` task exists and all page tasks depend on it with the 5 mandatory Foundation References.
251
+ - [ ] **Agent domain matching**: Each task's `agent` matches domain — `developer` for code, `testing-expert` for tests, `documentation-writer` for docs, `copywriter` for marketing copy, `ui-ux-expert` for UI, `database-engineer` for migrations, `security-expert` for auth/security, `data-expert` for ETL/scraping.
252
+ - [ ] **Content research compliance**: If prompt concerns real people, places, or organisations, includes research instruction.
253
+ - [ ] **Foundation phase present** (multi-page only): If 2+ pages/UI sections, `foundation-setup` task exists; all page tasks depend on it with 5 mandatory Foundation References.
254
254
 
255
255
  ---
256
256
 
257
257
  ## Historical Performance Context
258
258
 
259
- When historical execution data is available (via `opencastle insights --json`), the Team Lead should include a compact summary in the context. Example:
259
+ When historical execution data available (via `opencastle insights --json`), Team Lead should include compact summary in context. Example:
260
260
 
261
261
  ### Historical Performance (auto-generated)
262
262
  Based on {N} past convoys:
@@ -264,5 +264,5 @@ Based on {N} past convoys:
264
264
  - Recommended concurrency for {task_count} tasks: {recommended}
265
265
  - Agents to watch: {high_retry_agents}
266
266
 
267
- Use this data to make evidence-based decisions about agent assignment, concurrency, and timeout settings.
267
+ Use this data to make evidence-based decisions about agent assignment, concurrency, timeout settings.
268
268
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Generate a Product Requirements Document from a high-level feature prompt. Output feeds directly into the generate-convoy step.'
2
+ description: 'Generate Product Requirements Document from high-level feature prompt. Output feeds directly into generate-convoy step.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  output: prd
5
5
  ---
@@ -8,9 +8,9 @@ output: prd
8
8
 
9
9
  # Generate PRD
10
10
 
11
- You are the Team Lead. Convert the feature request below into a structured Product Requirements Document (PRD). The PRD will be consumed by the `generate-convoy` step to produce an automated agent task spec, so every section must be **concrete**, **specific**, and **implementation-ready**.
11
+ You are the Team Lead. Convert the feature request below into structured Product Requirements Document (PRD). PRD consumed by `generate-convoy` step to produce automated agent task spec, so every section must be **concrete**, **specific**, **implementation-ready**.
12
12
 
13
- > **⚠ QUALITY GATE:** This PRD goes through automated validation. Getting it right on the first attempt is critical — every fix cycle costs a full LLM round-trip. Follow ALL rules below precisely. The self-validation checklist at the end is mandatory.
13
+ > **⚠ QUALITY GATE:** This PRD goes through automated validation. Getting it right on first attempt is critical — every fix cycle costs a full LLM round-trip. Follow ALL rules below precisely. Self-validation checklist at end is mandatory.
14
14
 
15
15
  ## Feature Request
16
16
 
@@ -24,24 +24,24 @@ You are the Team Lead. Convert the feature request below into a structured Produ
24
24
 
25
25
  ## Research Before Writing
26
26
 
27
- If the feature request involves a specific person, place, organization, topic, or any real-world subject:
27
+ If feature request involves specific person, place, organization, topic, or any real-world subject:
28
28
 
29
- 1. **Search the internet first** if web search or fetch tools are available (e.g. `fetch_webpage`, web search MCP, or similar). Use the search results to gather accurate facts, names, dates, descriptions, and other details.
30
- 2. **If web search tools are unavailable or return no useful results**, you may use your training knowledge — but clearly mark any such content with:
29
+ 1. **Search the internet first** if web search or fetch tools available (e.g. `fetch_webpage`, web search MCP, or similar). Use the search results to gather accurate facts, names, dates, descriptions, and other details.
30
+ 2. **If web search tools unavailable or return no useful results**, you may use your training knowledge — but clearly mark any such content with:
31
31
  > ℹ️ Content based on training data — verify before launch.
32
- 3. **Never fabricate or hallucinate content.** If you genuinely have no knowledge about a real-world subject and cannot search, state what is unknown and use placeholder text. This applies to all content: bios, descriptions, histories, statistics, quotes, and any factual claims.
32
+ 3. **Never fabricate or hallucinate content.** If you have no knowledge about real-world subject and cannot search, state what is unknown; use placeholder text. Applies to all content: bios, descriptions, histories, statistics, quotes, any factual claims.
33
33
 
34
34
  ## Scaffolding Awareness
35
35
 
36
- New project from scratch? You MUST load the **backbone-scaffolding** skill and follow it.
36
+ New project from scratch? You MUST load **backbone-scaffolding** skill; follow it.
37
37
 
38
38
  ## Output Rules
39
39
 
40
- **CRITICAL:** Return the PRD as your text response. Do NOT create any files. Do NOT use file-writing tools. Simply output the full PRD document as text. Do not wrap it in a code fence — start directly with the `#` heading. Do not summarize — output the complete document.
40
+ **CRITICAL:** Return the PRD as your text response. Do NOT create any files. Do NOT use file-writing tools. Output full PRD document as text. Do not wrap in code fence — start directly with `#` heading. Do not summarize — output complete document.
41
41
 
42
42
  ## Required PRD Structure
43
43
 
44
- Produce the PRD in Markdown using **exactly** the sections below. Do not skip or merge sections.
44
+ Produce PRD in Markdown using **exactly** sections below. Do not skip or merge sections.
45
45
 
46
46
  ---
47
47
 
@@ -49,22 +49,22 @@ Produce the PRD in Markdown using **exactly** the sections below. Do not skip or
49
49
 
50
50
  ## Overview
51
51
 
52
- 2–3 sentences: what this feature does, who benefits, and why it matters now.
52
+ 2–3 sentences: what this feature does, who benefits, why it matters now.
53
53
 
54
54
  ## Goals
55
55
 
56
- Numbered list of specific, measurable outcomes this feature must achieve. Each goal should be a single sentence with a clear success condition.
56
+ Numbered list of specific, measurable outcomes this feature must achieve. Each goal: single sentence with clear success condition.
57
57
 
58
58
  1. …
59
59
  2. …
60
60
 
61
61
  ## Non-Goals
62
62
 
63
- Explicit exclusions — what this work does **not** cover. If nothing is excluded, write "None."
63
+ Explicit exclusions — what this work does **not** cover. If nothing excluded, write "None."
64
64
 
65
65
  ## User Stories & Acceptance Criteria
66
66
 
67
- For each primary scenario, write a user story + binary acceptance criteria. Criteria must be testable (pass/fail — no subjective language).
67
+ For each primary scenario, write user story + binary acceptance criteria. Criteria must be testable (pass/fail — no subjective language).
68
68
 
69
69
  **Quality rules for acceptance criteria (the validator WILL reject violations):**
70
70
  - Every criterion must be evaluable as deterministic pass/fail — no subjective language ("looks good", "feels responsive", "is clean", "visually distinct")
@@ -83,7 +83,7 @@ Acceptance criteria:
83
83
 
84
84
  ## Technical Requirements
85
85
 
86
- Specific technical constraints the implementation must respect:
86
+ Specific technical constraints implementation must respect:
87
87
  - Libraries, framework versions to use or avoid
88
88
  - API contracts or interfaces that must not break
89
89
  - Performance thresholds (e.g., "<200 ms p95 latency")
@@ -92,7 +92,7 @@ Specific technical constraints the implementation must respect:
92
92
 
93
93
  ## Implementation Scope
94
94
 
95
- List **every file and directory** that will be created, modified, or deleted. Use specific paths — not broad paths like `src/`. Group by concern. Use compact file lists — group related files with commas instead of separate rows when they share a concern. Do NOT use glob patterns (`*`, `**`). Every concern must list at least one specific file.
95
+ List **every file and directory** that will be created, modified, or deleted. Use specific paths — not broad paths like `src/`. Group by concern. Use compact file lists — group related files with commas instead of separate rows when sharing a concern. Do NOT use glob patterns (`*`, `**`). Every concern must list at least one specific file.
96
96
 
97
97
  | Concern | Files / Directories |
98
98
  |---------|---------------------|
@@ -104,18 +104,18 @@ List **every file and directory** that will be created, modified, or deleted. Us
104
104
  | [Config / env] | `.env.example` |
105
105
 
106
106
  **File partition rules (important for parallel execution):**
107
- - No two concurrent workstreams may modify the same file
108
- - If two workstreams need the same file, they must be sequenced (Phase N+1 after Phase N)
107
+ - No two concurrent workstreams may modify same file
108
+ - If two workstreams need same file, must be sequenced (Phase N+1 after Phase N)
109
109
 
110
110
  ## Task Breakdown
111
111
 
112
- Decompose into the minimum number of phases. Tasks in the same phase run in parallel and **must not share any files**.
112
+ Decompose into minimum number of phases. Tasks in same phase run in parallel; **must not share any files**.
113
113
 
114
114
  Keep task descriptions **brief** — 1 sentence each. List only file paths, not explanations. Prefer compact formatting.
115
115
 
116
116
  **Quality rules (the validator WILL reject violations):**
117
117
  - Each workstream must list exact files it will modify
118
- - No two parallel workstreams (same phase) may claim the same file
118
+ - No two parallel workstreams (same phase) may claim same file
119
119
  - Phases must have explicit dependency declarations (`depends on: Phase N`)
120
120
  - No circular dependencies
121
121
 
@@ -138,8 +138,8 @@ Phase 3 — Verification (depends on Phase 2):
138
138
 
139
139
  ## Success Criteria
140
140
 
141
- Measurable, binary checks that confirm the feature is shippable:
142
- - [ ] All acceptance criteria in User Stories & Acceptance Criteria pass
141
+ Measurable, binary checks confirming feature is shippable:
142
+ - [ ] All acceptance criteria in User Stories All acceptance criteria in User Stories & Acceptance Criteria pass Acceptance Criteria pass
143
143
  - [ ] TypeScript compiles with zero errors
144
144
  - [ ] Lint passes with zero warnings
145
145
  - [ ] Unit test coverage ≥ 95% on all new/changed files
@@ -150,31 +150,31 @@ Measurable, binary checks that confirm the feature is shippable:
150
150
  - **[Risk title]**: [Description of the risk] — *Mitigation: [How to handle it]*
151
151
  - **[Open question]**: [What needs to be decided before implementation can start]
152
152
 
153
- If there are no risks or open questions, write "None identified."
153
+ If no risks or open questions, write "None identified."
154
154
 
155
155
  ---
156
156
 
157
157
  ## Self-Validation Checklist (MANDATORY)
158
158
 
159
- Before outputting the PRD, verify **every item** below. The downstream validator will reject your PRD if any of the blocking checks fail — fix them now to avoid expensive retry cycles.
159
+ Before outputting PRD, verify **every item** below. Downstream validator will reject your PRD if any blocking checks fail — fix them now to avoid expensive retry cycles.
160
160
 
161
161
  ### Structural Integrity
162
162
 
163
- - [ ] **No conflicting requirements**: Technical Requirements, Non-Goals, Risks & Open Questions, and User Stories must not contradict each other.
164
- - [ ] **No duplicate open questions**: If a question is already answered elsewhere, do not re-open it in Risks & Open Questions.
163
+ - [ ] **No conflicting requirements**: Technical Requirements, Non-Goals, Risks **No conflicting requirements**: Technical Requirements, Non-Goals, Risks & Open Questions, and User Stories must not contradict each other. Open Questions, User Stories must not contradict each other.
164
+ - [ ] **No duplicate open questions**: If question already answered elsewhere, do not re-open in Risks **No duplicate open questions**: If a question is already answered elsewhere, do not re-open it in Risks & Open Questions. Open Questions.
165
165
  - [ ] **No circular dependencies**: Phase dependency graph is acyclic.
166
166
  - [ ] **No placeholder text**: Every section has real content, not template filler ("2–3 sentences about…", "Description here").
167
167
 
168
168
  ### Implementation Coherence
169
169
 
170
- - [ ] **File completeness**: Every file mentioned in User Story acceptance criteria or Technical Requirements appears in the Implementation Scope table AND in the Task Breakdown file lists.
171
- - [ ] **No file partition conflicts**: No two parallel workstreams (same phase) claim the same file.
172
- - [ ] **Every workstream lists files**: Including verification-only workstreams — add "Files: none — verification only" if no artifacts are produced.
173
- - [ ] **No orphan files**: Every file in the Implementation Scope table is assigned to exactly one workstream in Task Breakdown.
170
+ - [ ] **File completeness**: Every file mentioned in User Story acceptance criteria or Technical Requirements appears in Implementation Scope table AND in Task Breakdown file lists.
171
+ - [ ] **No file partition conflicts**: No two parallel workstreams (same phase) claim same file.
172
+ - [ ] **Every workstream lists files**: Including verification-only workstreams — add "Files: none — verification only" if no artifacts produced.
173
+ - [ ] **No orphan files**: Every file in Implementation Scope table is assigned to exactly one workstream in Task Breakdown.
174
174
  - [ ] **Scope specificity**: Implementation Scope uses specific subdirectory or file paths — not just `src/` or `the frontend`.
175
175
 
176
176
  ### Language Quality
177
177
 
178
178
  - [ ] **Testable acceptance criteria**: Every criterion is evaluable as deterministic pass/fail — no subjective language ("looks good", "feels responsive").
179
- - [ ] **No optional modals in criteria**: Acceptance criteria do not use "should", "might", "could", "may" — use "must" or "will".
180
- - [ ] **Domain acronyms expanded**: Non-standard acronyms are expanded on first use (standard ones like API, CLI, JSON, REST, etc. are fine).
179
+ - [ ] **No optional modals**: Acceptance criteria do not use "should", "might", "could", "may" — use "must" or "will".
180
+ - [ ] **Domain acronyms expanded**: Non-standard acronyms expanded on first use (standard ones like API, CLI, JSON, REST, etc. fine).