opencastle 0.35.2 → 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 (85) hide show
  1. package/package.json +1 -1
  2. package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
  3. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
  4. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +12 -12
  5. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +9 -9
  6. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
  7. package/src/dashboard/dist/data/convoys/demo-docs-update.json +7 -7
  8. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +4 -4
  9. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  10. package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
  11. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
  12. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +12 -12
  13. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +9 -9
  14. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
  15. package/src/dashboard/public/data/convoys/demo-docs-update.json +7 -7
  16. package/src/dashboard/public/data/convoys/demo-perf-opt.json +4 -4
  17. package/src/orchestrator/agents/api-designer.agent.md +10 -10
  18. package/src/orchestrator/agents/architect.agent.md +8 -8
  19. package/src/orchestrator/agents/content-engineer.agent.md +5 -5
  20. package/src/orchestrator/agents/copywriter.agent.md +7 -7
  21. package/src/orchestrator/agents/data-expert.agent.md +9 -9
  22. package/src/orchestrator/agents/database-engineer.agent.md +7 -7
  23. package/src/orchestrator/agents/developer.agent.md +13 -13
  24. package/src/orchestrator/agents/devops-expert.agent.md +10 -10
  25. package/src/orchestrator/agents/documentation-writer.agent.md +8 -8
  26. package/src/orchestrator/agents/performance-expert.agent.md +9 -9
  27. package/src/orchestrator/agents/release-manager.agent.md +8 -8
  28. package/src/orchestrator/agents/researcher.agent.md +5 -5
  29. package/src/orchestrator/agents/reviewer.agent.md +5 -5
  30. package/src/orchestrator/agents/security-expert.agent.md +10 -10
  31. package/src/orchestrator/agents/seo-specialist.agent.md +11 -11
  32. package/src/orchestrator/agents/session-guard.agent.md +2 -2
  33. package/src/orchestrator/agents/team-lead.agent.md +4 -4
  34. package/src/orchestrator/agents/testing-expert.agent.md +7 -7
  35. package/src/orchestrator/agents/ui-ux-expert.agent.md +15 -15
  36. package/src/orchestrator/prompts/assess-complexity.prompt.md +8 -8
  37. package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +17 -17
  38. package/src/orchestrator/prompts/brainstorm.prompt.md +17 -17
  39. package/src/orchestrator/prompts/bug-fix.prompt.md +11 -11
  40. package/src/orchestrator/prompts/create-skill.prompt.md +21 -21
  41. package/src/orchestrator/prompts/fix-convoy.prompt.md +8 -8
  42. package/src/orchestrator/prompts/fix-prd.prompt.md +12 -12
  43. package/src/orchestrator/prompts/generate-convoy.prompt.md +50 -50
  44. package/src/orchestrator/prompts/generate-prd.prompt.md +32 -32
  45. package/src/orchestrator/prompts/implement-feature.prompt.md +16 -16
  46. package/src/orchestrator/prompts/quick-refinement.prompt.md +18 -18
  47. package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +9 -9
  48. package/src/orchestrator/prompts/validate-convoy.prompt.md +10 -10
  49. package/src/orchestrator/prompts/validate-prd.prompt.md +10 -10
  50. package/src/orchestrator/skills/accessibility-standards/SKILL.md +8 -8
  51. package/src/orchestrator/skills/agent-hooks/SKILL.md +1 -1
  52. package/src/orchestrator/skills/agent-memory/SKILL.md +11 -11
  53. package/src/orchestrator/skills/api-patterns/SKILL.md +5 -5
  54. package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +24 -51
  55. package/src/orchestrator/skills/code-commenting/SKILL.md +3 -3
  56. package/src/orchestrator/skills/context-map/REFERENCE.md +2 -2
  57. package/src/orchestrator/skills/context-map/SKILL.md +5 -5
  58. package/src/orchestrator/skills/data-engineering/SKILL.md +12 -12
  59. package/src/orchestrator/skills/decomposition/SKILL.md +34 -7
  60. package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +4 -4
  61. package/src/orchestrator/skills/documentation-standards/SKILL.md +7 -7
  62. package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +3 -3
  63. package/src/orchestrator/skills/fast-review/SKILL.md +2 -2
  64. package/src/orchestrator/skills/frontend-design/COMPONENTS.md +1 -1
  65. package/src/orchestrator/skills/frontend-design/SKILL.md +11 -11
  66. package/src/orchestrator/skills/git-workflow/SKILL.md +5 -5
  67. package/src/orchestrator/skills/memory-merger/SKILL.md +32 -8
  68. package/src/orchestrator/skills/observability-logging/SKILL.md +6 -11
  69. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +15 -15
  70. package/src/orchestrator/skills/panel-majority-vote/SKILL.md +4 -4
  71. package/src/orchestrator/skills/performance-optimization/SKILL.md +5 -5
  72. package/src/orchestrator/skills/project-consistency/SKILL.md +4 -4
  73. package/src/orchestrator/skills/react-development/SKILL.md +8 -8
  74. package/src/orchestrator/skills/security-hardening/SKILL.md +12 -12
  75. package/src/orchestrator/skills/self-improvement/SKILL.md +11 -11
  76. package/src/orchestrator/skills/seo-patterns/SKILL.md +49 -23
  77. package/src/orchestrator/skills/session-checkpoints/SKILL.md +12 -12
  78. package/src/orchestrator/skills/team-lead-reference/SKILL.md +6 -6
  79. package/src/orchestrator/skills/testing-workflow/SKILL.md +3 -3
  80. package/src/orchestrator/skills/validation-gates/SKILL.md +6 -6
  81. package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +0 -16
  82. package/src/orchestrator/skills/decomposition/REFERENCE.md +0 -28
  83. package/src/orchestrator/skills/memory-merger/REFERENCE.md +0 -20
  84. package/src/orchestrator/skills/react-development/REFERENCE.md +0 -7
  85. package/src/orchestrator/skills/seo-patterns/REFERENCE.md +0 -54
@@ -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).
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Instruct the Team Lead to implement a specific task from a roadmap with full orchestration, validation, and traceability.'
2
+ description: 'Instruct the Team Lead to implement specific task from a roadmap with full orchestration, validation, traceability.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Implement Roadmap Task
9
9
 
10
- You are the Team Lead. Implement the roadmap task described below following this strict workflow. The task comes from `.opencastle/project/roadmap.md`.
10
+ You are the Team Lead. Implement the roadmap task described below following this strict workflow. Task comes from `.opencastle/project/roadmap.md`.
11
11
 
12
12
  ## Task
13
13
 
@@ -17,7 +17,7 @@ You are the Team Lead. Implement the roadmap task described below following this
17
17
 
18
18
  ## Workflow
19
19
 
20
- > **HARD GATE:** Steps 1→2 are **blocking prerequisites**. Do NOT write, edit, or delegate any code until tracker issues exist for every subtask. If you catch yourself writing code before issues are created, STOP immediately, create the issues, then resume.
20
+ > **HARD GATE:** Steps 1→2 are **blocking prerequisites**. Do NOT write, edit, or delegate any code until tracker issues exist for every subtask. If you catch yourself writing code before issues are created, STOP immediately; create the issues; then resume.
21
21
 
22
22
  ### 1. Research & Context Gathering
23
23
 
@@ -39,7 +39,7 @@ Every subtask must be tracked. **No issue = no implementation.** This step produ
39
39
 
40
40
  ### 2.5 Generate Convoy Spec (BLOCKING — decides how Step 3 proceeds)
41
41
 
42
- All project-related work is executed via the convoy engine — regardless of subtask count.
42
+ All project-related work executes via the convoy engine — regardless of subtask count.
43
43
 
44
44
  1. **Generate the spec** — use the `generate-convoy` prompt with the decomposed task list. The spec IS the implementation plan; even single-task fixes go through convoy for observability.
45
45
  2. **Hand the spec to the user** — tell them to run: `npx opencastle run -f .opencastle/convoys/<name>.convoy.yml`
@@ -48,26 +48,26 @@ All project-related work is executed via the convoy engine — regardless of sub
48
48
 
49
49
  ### 3. Implementation Rules
50
50
 
51
- > **Convoy execution:** The convoy spec IS the implementation plan — skip manual delegation and jump to Step 4 after the user runs the convoy.
51
+ > **Convoy execution:** Convoy spec IS the implementation plan — skip manual delegation; jump to Step 4 after user runs convoy.
52
52
 
53
53
  #### Issue Traceability
54
54
 
55
- - Include the tracker issue ID and title in every delegation prompt
55
+ - Include tracker issue ID and title in every delegation prompt
56
56
  - Reference issue IDs (e.g., `TAS-42`) in commit messages; move issues In Progress → Done as work progresses
57
57
 
58
58
  #### DRY Code
59
59
 
60
- - Search before creating — check for existing components, hooks, utilities, and queries first
60
+ - Search before creating — check for existing components, hooks, utilities, queries first
61
61
  - Extract shared logic to `libs/`; no copy-paste across apps. Refactor duplicates when discovered
62
62
 
63
63
  #### Visual Consistency
64
64
 
65
- - Use the shared component library; never re-implement existing components
66
- - Match spacing, typography, and colors from existing pages; verify in all affected apps
65
+ - Use shared component library; never re-implement existing components
66
+ - Match spacing, typography, colors from existing pages; verify in all affected apps
67
67
 
68
68
  ### 4. Validation & Testing
69
69
 
70
- > Load the **validation-gates** skill for detailed steps on each gate.
70
+ > Load **validation-gates** skill for detailed steps on each gate.
71
71
 
72
72
  Every subtask must pass ALL gates before being marked Done:
73
73
 
@@ -83,7 +83,7 @@ Every subtask must pass ALL gates before being marked Done:
83
83
 
84
84
  ### 5. Delivery
85
85
 
86
- Follow the **Delivery Outcome** defined in the **git-workflow** skill — commit, push, open PR (not merged), and link to the tracker. The convoy engine creates commits on the configured `branch` directly; open the PR from that branch after validation passes.
86
+ Follow **Delivery Outcome** in **git-workflow** skill — commit, push, open PR (not merged), link to tracker. Convoy engine creates commits on configured `branch` directly; open PR from that branch after validation passes.
87
87
 
88
88
  ### 6. Documentation & Traceability
89
89
 
@@ -95,15 +95,15 @@ Follow the **Delivery Outcome** defined in the **git-workflow** skill — commit
95
95
 
96
96
  ### 7. Completion Criteria
97
97
 
98
- The roadmap task is complete when:
98
+ Roadmap task is complete when:
99
99
 
100
100
  - [ ] All tracker subtask issues are Done
101
- - [ ] **All UI changes verified in Chrome browser via MCP with screenshots taken as proof**
102
- - [ ] **Every feature in the acceptance criteria visually confirmed** — not just "page loads"
101
+ - [ ] **All UI changes verified in Chrome browser via MCP with screenshots as proof**
102
+ - [ ] **Every feature in acceptance criteria visually confirmed** — not just "page loads"
103
103
  - [ ] No duplicated code — shared logic extracted to libraries
104
- - [ ] Visual consistency maintained across all affected pages and apps
104
+ - [ ] Visual consistency maintained across all affected pages, apps
105
105
  - [ ] Documentation updated (roadmap, known issues, decisions)
106
106
  - [ ] Panel review passed for any high-stakes changes
107
107
  - [ ] Roadmap item marked complete in `.opencastle/project/roadmap.md`
108
- - [ ] Delivery Outcome completed (see the **git-workflow** skill) — branch pushed, PR opened (not merged), tracker linked
108
+ - [ ] Delivery Outcome completed (see **git-workflow** skill) — branch pushed, PR opened (not merged), tracker linked
109
109
  - [ ] Lessons learned captured if any retries occurred