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.
- package/README.md +1 -1
- package/dist/cli/adapters/antigravity.d.ts +13 -7
- package/dist/cli/adapters/antigravity.d.ts.map +1 -1
- package/dist/cli/adapters/antigravity.js +15 -9
- package/dist/cli/adapters/antigravity.js.map +1 -1
- package/dist/cli/adapters/claude-code.d.ts +1 -1
- package/dist/cli/adapters/claude-code.js +1 -1
- package/dist/cli/adapters/codex.d.ts +1 -1
- package/dist/cli/adapters/codex.js +1 -1
- package/dist/cli/adapters/opencode.d.ts +1 -1
- package/dist/cli/adapters/opencode.js +1 -1
- package/dist/cli/adapters/single-file-base.d.ts.map +1 -1
- package/dist/cli/adapters/single-file-base.js +17 -18
- package/dist/cli/adapters/single-file-base.js.map +1 -1
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.test.js +21 -18
- package/dist/cli/init.test.js.map +1 -1
- package/dist/cli/mcp.js +1 -1
- package/dist/cli/mcp.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/adapters/antigravity.ts +15 -9
- package/src/cli/adapters/claude-code.ts +1 -1
- package/src/cli/adapters/codex.ts +1 -1
- package/src/cli/adapters/opencode.ts +1 -1
- package/src/cli/adapters/single-file-base.ts +20 -17
- package/src/cli/init.test.ts +24 -18
- package/src/cli/init.ts +1 -1
- package/src/cli/mcp.ts +1 -1
- package/src/dashboard/dist/data/convoys/demo-api-v2.json +3 -3
- package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +4 -4
- package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +6 -6
- package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +9 -9
- package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +1 -1
- package/src/dashboard/dist/data/convoys/demo-docs-update.json +3 -3
- package/src/dashboard/dist/data/convoys/demo-perf-opt.json +4 -4
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/dashboard/public/data/convoys/demo-api-v2.json +3 -3
- package/src/dashboard/public/data/convoys/demo-auth-revamp.json +4 -4
- package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +6 -6
- package/src/dashboard/public/data/convoys/demo-data-pipeline.json +9 -9
- package/src/dashboard/public/data/convoys/demo-deploy-ci.json +1 -1
- package/src/dashboard/public/data/convoys/demo-docs-update.json +3 -3
- package/src/dashboard/public/data/convoys/demo-perf-opt.json +4 -4
- package/src/orchestrator/agents/api-designer.agent.md +10 -10
- package/src/orchestrator/agents/architect.agent.md +8 -8
- package/src/orchestrator/agents/content-engineer.agent.md +5 -5
- package/src/orchestrator/agents/copywriter.agent.md +8 -8
- package/src/orchestrator/agents/data-expert.agent.md +10 -10
- package/src/orchestrator/agents/database-engineer.agent.md +7 -7
- package/src/orchestrator/agents/developer.agent.md +13 -13
- package/src/orchestrator/agents/devops-expert.agent.md +11 -11
- package/src/orchestrator/agents/documentation-writer.agent.md +9 -9
- package/src/orchestrator/agents/performance-expert.agent.md +9 -9
- package/src/orchestrator/agents/release-manager.agent.md +9 -9
- package/src/orchestrator/agents/researcher.agent.md +5 -5
- package/src/orchestrator/agents/reviewer.agent.md +6 -6
- package/src/orchestrator/agents/security-expert.agent.md +10 -10
- package/src/orchestrator/agents/seo-specialist.agent.md +12 -12
- package/src/orchestrator/agents/session-guard.agent.md +3 -3
- package/src/orchestrator/agents/team-lead.agent.md +5 -5
- package/src/orchestrator/agents/testing-expert.agent.md +8 -8
- package/src/orchestrator/agents/ui-ux-expert.agent.md +15 -15
- package/src/orchestrator/customizations/agents/agent-registry.md +8 -8
- package/src/orchestrator/prompts/assess-complexity.prompt.md +8 -8
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +17 -17
- package/src/orchestrator/prompts/brainstorm.prompt.md +17 -17
- package/src/orchestrator/prompts/bug-fix.prompt.md +11 -11
- package/src/orchestrator/prompts/create-skill.prompt.md +21 -21
- package/src/orchestrator/prompts/fix-convoy.prompt.md +8 -8
- package/src/orchestrator/prompts/fix-prd.prompt.md +12 -12
- package/src/orchestrator/prompts/generate-convoy.prompt.md +50 -50
- package/src/orchestrator/prompts/generate-prd.prompt.md +32 -32
- package/src/orchestrator/prompts/implement-feature.prompt.md +16 -16
- package/src/orchestrator/prompts/quick-refinement.prompt.md +18 -18
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +9 -9
- package/src/orchestrator/prompts/validate-convoy.prompt.md +10 -10
- package/src/orchestrator/prompts/validate-prd.prompt.md +10 -10
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +8 -8
- package/src/orchestrator/skills/agent-hooks/SKILL.md +1 -1
- package/src/orchestrator/skills/agent-memory/SKILL.md +11 -11
- package/src/orchestrator/skills/api-patterns/SKILL.md +5 -5
- package/src/orchestrator/skills/backbone-scaffolding/SKILL.md +24 -51
- package/src/orchestrator/skills/code-commenting/SKILL.md +3 -3
- package/src/orchestrator/skills/context-map/REFERENCE.md +2 -2
- package/src/orchestrator/skills/context-map/SKILL.md +5 -5
- package/src/orchestrator/skills/data-engineering/SKILL.md +12 -12
- package/src/orchestrator/skills/decomposition/SKILL.md +34 -7
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +4 -4
- package/src/orchestrator/skills/documentation-standards/SKILL.md +7 -7
- package/src/orchestrator/skills/documentation-standards/WRITING-GUIDE.md +3 -3
- package/src/orchestrator/skills/fast-review/SKILL.md +2 -2
- package/src/orchestrator/skills/frontend-design/COMPONENTS.md +1 -1
- package/src/orchestrator/skills/frontend-design/SKILL.md +11 -11
- package/src/orchestrator/skills/git-workflow/SKILL.md +5 -5
- package/src/orchestrator/skills/memory-merger/SKILL.md +32 -8
- package/src/orchestrator/skills/observability-logging/SKILL.md +6 -11
- package/src/orchestrator/skills/orchestration-protocols/SKILL.md +15 -15
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +4 -4
- package/src/orchestrator/skills/performance-optimization/SKILL.md +5 -5
- package/src/orchestrator/skills/project-consistency/SKILL.md +4 -4
- package/src/orchestrator/skills/react-development/SKILL.md +8 -8
- package/src/orchestrator/skills/security-hardening/SKILL.md +12 -12
- package/src/orchestrator/skills/self-improvement/SKILL.md +11 -11
- package/src/orchestrator/skills/seo-patterns/SKILL.md +49 -23
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +12 -12
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +6 -6
- package/src/orchestrator/skills/testing-workflow/SKILL.md +3 -3
- package/src/orchestrator/skills/validation-gates/SKILL.md +6 -6
- package/src/orchestrator/skills/backbone-scaffolding/EXAMPLES.md +0 -16
- package/src/orchestrator/skills/decomposition/REFERENCE.md +0 -28
- package/src/orchestrator/skills/memory-merger/REFERENCE.md +0 -20
- package/src/orchestrator/skills/react-development/REFERENCE.md +0 -7
- package/src/orchestrator/skills/seo-patterns/REFERENCE.md +0 -54
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: 'Scaffold
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
108
|
-
2. **Optional: reference in instructions** — If
|
|
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
|
|
113
|
-
2. **Update
|
|
114
|
-
3. **No agent changes
|
|
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
|
|
118
|
+
- [ ] File created at correct path (`skills/` or `plugins/`)
|
|
119
119
|
- [ ] Frontmatter has `name` and `description` fields
|
|
120
|
-
- [ ] Description is
|
|
121
|
-
- [ ] Content follows
|
|
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
|
|
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
|
|
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,
|
|
159
|
-
- **Avoid duplication** — If
|
|
160
|
-
- **Use REFERENCE.md for bulk** — Large code examples, schema tables, worked examples,
|
|
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
|
|
163
|
-
- **No standalone trigger-term sections** — Weave trigger terms naturally into
|
|
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
|
|
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.
|
|
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
|
|
29
|
-
3. Preserve intent, agent assignments,
|
|
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
|
|
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
|
|
63
|
-
- **Missing dependency** → patch `field: "depends_on"` with
|
|
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
|
|
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
|
|
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
|
|
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
|
|
27
|
-
3. Do not change
|
|
28
|
-
4. Preserve all content
|
|
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
|
|
34
|
-
- If
|
|
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
|
|
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
|
|
41
|
-
- Or split
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
89
|
-
- Search
|
|
90
|
-
- List
|
|
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
|
|
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** —
|
|
98
|
-
3. **Explicit file scopes** — list every directory or file
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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]`** —
|
|
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** —
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
158
|
-
- `on_failure` — `stop` when every subsequent task depends on success;
|
|
159
|
-
- `gates` — standard validation (lint, type-check, test) unless
|
|
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
|
|
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
|
|
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
|
|
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**
|
|
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
|
|
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
|
|
194
|
-
- Derive
|
|
195
|
-
- Derive
|
|
196
|
-
- **Keep prompts concise** — write
|
|
197
|
-
- Keep all other conventions
|
|
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
|
|
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
|
|
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
|
|
236
|
-
- [ ] Every task has both `id
|
|
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
|
|
242
|
-
- [ ] **File list completeness**: Every file mentioned in
|
|
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**:
|
|
248
|
-
- [ ] **File-specific**: Names
|
|
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
|
|
252
|
-
- [ ] **Content research compliance**: If
|
|
253
|
-
- [ ] **Foundation phase present** (multi-page only): If 2+ pages/UI sections,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
30
|
-
2. **If web search tools
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
108
|
-
- If two workstreams need
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
171
|
-
- [ ] **No file partition conflicts**: No two parallel workstreams (same phase) claim
|
|
172
|
-
- [ ] **Every workstream lists files**: Including verification-only workstreams — add "Files: none — verification only" if no artifacts
|
|
173
|
-
- [ ] **No orphan files**: Every file in
|
|
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
|
|
180
|
-
- [ ] **Domain acronyms expanded**: Non-standard acronyms
|
|
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).
|