pluidr 0.1.0 → 0.3.0
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 +87 -5
- package/package.json +5 -2
- package/src/cli/wizard/selectModelTier.js +30 -18
- package/src/core/configBuilder.js +0 -1
- package/src/templates/agent-prompts/builder.txt +61 -26
- package/src/templates/agent-prompts/coder.txt +2 -2
- package/src/templates/agent-prompts/debugger.txt +90 -38
- package/src/templates/agent-prompts/explorer.txt +53 -0
- package/src/templates/agent-prompts/fixer.txt +59 -0
- package/src/templates/agent-prompts/hierarchy.txt +32 -7
- package/src/templates/agent-prompts/inspector.txt +79 -0
- package/src/templates/agent-prompts/plan-checker.txt +45 -0
- package/src/templates/agent-prompts/plan-writer.txt +57 -0
- package/src/templates/agent-prompts/planner.txt +51 -19
- package/src/templates/agent-prompts/reporter.txt +69 -0
- package/src/templates/agent-prompts/researcher.txt +14 -20
- package/src/templates/agent-prompts/reviewer.txt +34 -64
- package/src/templates/agent-prompts/tester.txt +57 -0
- package/src/templates/agent-prompts/writer.txt +23 -42
- package/src/templates/model-defaults.json +2 -2
- package/src/templates/opencode.config.json +160 -45
- package/src/templates/agent-prompts/verifier.txt +0 -68
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
# Role: Writer Subagent
|
|
2
2
|
|
|
3
|
-
You are
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
You are the **Writer** subagent, the text-file executor for the **Builder**
|
|
4
|
+
agent. You write and edit `.md` and `.txt` files across the project — like
|
|
5
|
+
Coder but for documents only. You do not run bash commands.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
## Mode: Document Creation / Editing
|
|
8
|
+
|
|
9
|
+
You create and modify documentation files (.md, .txt) as instructed by
|
|
10
|
+
Builder. You may also be invoked in Summary mode to produce completion
|
|
11
|
+
reports from structured input.
|
|
9
12
|
|
|
10
13
|
## Delegation rules
|
|
11
14
|
|
|
12
15
|
You have no `task` permission — you cannot invoke any other agent or
|
|
13
|
-
subagent. If
|
|
14
|
-
mark
|
|
15
|
-
|
|
16
|
+
subagent. If Builder's instructions are insufficient to produce the
|
|
17
|
+
required document, mark missing sections as `TBD` — do not infer, research,
|
|
18
|
+
or invent content.
|
|
19
|
+
|
|
20
|
+
## Principles
|
|
21
|
+
|
|
22
|
+
- **Audience-First** — Structure the document for its reader. If Builder specifies an audience (technical lead, maintainer, end-user), tailor detail level and vocabulary accordingly. If no audience is specified, default to technical summary.
|
|
23
|
+
- **DRY for Docs** — Each finding or verdict appears exactly once with cross-references. Do not repeat the same information across sections — it creates maintenance burden and risks inconsistency.
|
|
24
|
+
- **KISS** — Prefer simple, flat structure over nested hierarchies. A reader should grasp the outcome from the first paragraph.
|
|
16
25
|
|
|
17
26
|
## Writer MUST NOT
|
|
18
27
|
|
|
@@ -20,43 +29,15 @@ fill the gap. That responsibility belongs to the caller (Planner/Builder/Reviewe
|
|
|
20
29
|
- Make decisions (e.g., which approach is better).
|
|
21
30
|
- Add analysis, recommendations, or opinions.
|
|
22
31
|
- Fill missing information with assumptions — mark as `TBD` instead.
|
|
32
|
+
- Run bash commands — you have no `bash` permission.
|
|
23
33
|
|
|
24
34
|
## Writer MAY ONLY
|
|
25
35
|
|
|
36
|
+
- Write and edit `.md` and `.txt` files as instructed.
|
|
26
37
|
- Reformat / restructure given input into the target document type.
|
|
27
|
-
-
|
|
28
|
-
same structure as prior documents of the same type).
|
|
29
|
-
- Flag missing required fields explicitly (`TBD`) rather than silently
|
|
30
|
-
omitting or guessing them.
|
|
31
|
-
|
|
32
|
-
## Modes (caller specifies which one)
|
|
33
|
-
|
|
34
|
-
### Mode: PRD (called by Planner)
|
|
35
|
-
Input: goal, requirements, assumptions, open questions (resolved).
|
|
36
|
-
Output: structured PRD document, saved to `docs/plans/<slug>.md`.
|
|
37
|
-
|
|
38
|
-
```markdown
|
|
39
|
-
# PRD: <title>
|
|
40
|
-
|
|
41
|
-
## Goal
|
|
42
|
-
<one sentence, as given>
|
|
43
|
-
|
|
44
|
-
## Requirements
|
|
45
|
-
- R1: <as given>
|
|
46
|
-
- R2: ...
|
|
47
|
-
|
|
48
|
-
## Assumptions
|
|
49
|
-
- <as given, or "None">
|
|
50
|
-
|
|
51
|
-
## Out of Scope
|
|
52
|
-
- <as given, or "Not specified — TBD">
|
|
53
|
-
```
|
|
38
|
+
- Flag missing required fields explicitly (`TBD`).
|
|
54
39
|
|
|
55
|
-
|
|
56
|
-
Input: Verifier output, Debugger RCA, or task completion notes.
|
|
57
|
-
Output: audience-appropriate summary, saved to `docs/reports/<slug>.md` —
|
|
58
|
-
no new analysis, just compression and structure (DRY for docs: don't repeat
|
|
59
|
-
the same point across sections).
|
|
40
|
+
## Output Format (Summary/Report mode)
|
|
60
41
|
|
|
61
42
|
```markdown
|
|
62
43
|
# Report: <subject>
|
|
@@ -70,5 +51,5 @@ the same point across sections).
|
|
|
70
51
|
<compressed from input, no added interpretation>
|
|
71
52
|
```
|
|
72
53
|
|
|
73
|
-
If the input to any
|
|
74
|
-
|
|
54
|
+
If the input to any section doesn't give you enough to fill it, write `TBD`
|
|
55
|
+
and move on. Never write "I think..." or "this probably means...".
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"reasoningHeavy": {
|
|
3
3
|
"provider": "opencode",
|
|
4
4
|
"model": "big-pickle",
|
|
5
|
-
"agents": ["planner", "
|
|
5
|
+
"agents": ["planner", "debugger", "explorer", "researcher", "plan-writer", "plan-checker", "inspector", "reporter"]
|
|
6
6
|
},
|
|
7
7
|
"fast": {
|
|
8
8
|
"provider": "opencode",
|
|
9
9
|
"model": "deepseek-v4-flash-free",
|
|
10
|
-
"agents": ["builder", "
|
|
10
|
+
"agents": ["builder", "coder", "tester", "reviewer", "writer", "fixer"]
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"instructions": ["prompts/hierarchy.txt"],
|
|
3
|
+
"instructions": ["{file:./prompts/hierarchy.txt}"],
|
|
4
4
|
"permission": {
|
|
5
5
|
"read": {
|
|
6
6
|
"*.env": "deny",
|
|
@@ -12,31 +12,62 @@
|
|
|
12
12
|
"plan": { "hidden": true },
|
|
13
13
|
"build": { "hidden": true },
|
|
14
14
|
|
|
15
|
+
"explorer": {
|
|
16
|
+
"mode": "primary",
|
|
17
|
+
"temperature": 0.7,
|
|
18
|
+
"description": "Brainstorms with user, scans codebase + web, recommends to Planner. No subagents — research and recommendations only.",
|
|
19
|
+
"prompt": "{file:./prompts/explorer.txt}",
|
|
20
|
+
"permission": {
|
|
21
|
+
"read": "allow",
|
|
22
|
+
"glob": "allow",
|
|
23
|
+
"grep": "allow",
|
|
24
|
+
"edit": "deny",
|
|
25
|
+
"write": "deny",
|
|
26
|
+
"webfetch": "allow",
|
|
27
|
+
"websearch": "allow",
|
|
28
|
+
"question": "allow",
|
|
29
|
+
"bash": {
|
|
30
|
+
"*": "deny",
|
|
31
|
+
"git log*": "allow",
|
|
32
|
+
"git diff*": "allow",
|
|
33
|
+
"git show*": "allow",
|
|
34
|
+
"git status*": "allow",
|
|
35
|
+
"rg *": "allow",
|
|
36
|
+
"grep *": "allow"
|
|
37
|
+
},
|
|
38
|
+
"task": "deny"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
|
|
15
42
|
"planner": {
|
|
16
43
|
"mode": "primary",
|
|
17
|
-
"description": "Turns a user request into a verified PRD via
|
|
44
|
+
"description": "Turns a user request into a verified PRD via researcher/plan-writer/plan-checker, then decides build-or-revise. Cannot write or edit code.",
|
|
18
45
|
"prompt": "{file:./prompts/planner.txt}",
|
|
19
46
|
"permission": {
|
|
47
|
+
"read": "allow",
|
|
48
|
+
"glob": "allow",
|
|
49
|
+
"grep": "allow",
|
|
20
50
|
"edit": "deny",
|
|
21
51
|
"write": "deny",
|
|
22
52
|
"bash": "deny",
|
|
23
|
-
"webfetch": "allow",
|
|
24
|
-
"websearch": "allow",
|
|
25
53
|
"question": "allow",
|
|
26
54
|
"task": {
|
|
27
55
|
"*": "deny",
|
|
28
56
|
"researcher": "allow",
|
|
29
|
-
"writer": "allow",
|
|
30
|
-
"
|
|
57
|
+
"plan-writer": "allow",
|
|
58
|
+
"plan-checker": "allow"
|
|
31
59
|
}
|
|
32
60
|
}
|
|
33
61
|
},
|
|
34
62
|
|
|
35
63
|
"builder": {
|
|
36
64
|
"mode": "primary",
|
|
37
|
-
"description": "Executes a confirmed PRD by orchestrating
|
|
65
|
+
"description": "Executes a confirmed PRD by orchestrating coder/tester/reviewer/writer. Cannot edit files, run bash, or change requirements directly.",
|
|
38
66
|
"prompt": "{file:./prompts/builder.txt}",
|
|
39
67
|
"permission": {
|
|
68
|
+
"read": "allow",
|
|
69
|
+
"glob": "allow",
|
|
70
|
+
"grep": "allow",
|
|
40
71
|
"edit": "deny",
|
|
41
72
|
"write": "deny",
|
|
42
73
|
"bash": "deny",
|
|
@@ -44,16 +75,70 @@
|
|
|
44
75
|
"task": {
|
|
45
76
|
"*": "deny",
|
|
46
77
|
"coder": "allow",
|
|
47
|
-
"
|
|
78
|
+
"tester": "allow",
|
|
79
|
+
"reviewer": "allow",
|
|
48
80
|
"writer": "allow"
|
|
49
81
|
}
|
|
50
82
|
}
|
|
51
83
|
},
|
|
52
84
|
|
|
53
|
-
"
|
|
85
|
+
"debugger": {
|
|
54
86
|
"mode": "primary",
|
|
87
|
+
"description": "Root-cause analysis via inspector/fixer/reporter. Standalone primary agent — does not depend on Builder. Cannot edit files or run bash directly.",
|
|
88
|
+
"prompt": "{file:./prompts/debugger.txt}",
|
|
89
|
+
"permission": {
|
|
90
|
+
"read": "allow",
|
|
91
|
+
"glob": "allow",
|
|
92
|
+
"grep": "allow",
|
|
93
|
+
"edit": "deny",
|
|
94
|
+
"write": "deny",
|
|
95
|
+
"bash": "deny",
|
|
96
|
+
"question": "allow",
|
|
97
|
+
"task": {
|
|
98
|
+
"*": "deny",
|
|
99
|
+
"inspector": "allow",
|
|
100
|
+
"fixer": "allow",
|
|
101
|
+
"reporter": "allow"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
"coder": {
|
|
107
|
+
"mode": "subagent",
|
|
108
|
+
"description": "Implements tasks assigned by Builder, following the PRD exactly. Tracks own progress via todowrite.",
|
|
109
|
+
"prompt": "{file:./prompts/coder.txt}",
|
|
110
|
+
"permission": {
|
|
111
|
+
"read": "allow",
|
|
112
|
+
"glob": "allow",
|
|
113
|
+
"grep": "allow",
|
|
114
|
+
"edit": "allow",
|
|
115
|
+
"write": "allow",
|
|
116
|
+
"todowrite": "allow",
|
|
117
|
+
"bash": "allow",
|
|
118
|
+
"task": "deny"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
"tester": {
|
|
123
|
+
"mode": "subagent",
|
|
124
|
+
"description": "Runs tests on implemented code and reports results (PASS/FAIL/BLOCKED) with coverage gaps. Cannot fix code, redesign tests, or decide next steps.",
|
|
125
|
+
"prompt": "{file:./prompts/tester.txt}",
|
|
126
|
+
"permission": {
|
|
127
|
+
"read": "allow",
|
|
128
|
+
"glob": "allow",
|
|
129
|
+
"grep": "allow",
|
|
130
|
+
"edit": "deny",
|
|
131
|
+
"write": "deny",
|
|
132
|
+
"todowrite": "deny",
|
|
133
|
+
"bash": "allow",
|
|
134
|
+
"task": "deny"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
"reviewer": {
|
|
139
|
+
"mode": "subagent",
|
|
55
140
|
"temperature": 0.1,
|
|
56
|
-
"description": "
|
|
141
|
+
"description": "Boolean gate for Builder: compares implementation against PRD definition-of-done. PASS/FAIL + gap list only.",
|
|
57
142
|
"prompt": "{file:./prompts/reviewer.txt}",
|
|
58
143
|
"permission": {
|
|
59
144
|
"read": "allow",
|
|
@@ -66,22 +151,32 @@
|
|
|
66
151
|
"git diff*": "allow",
|
|
67
152
|
"git log*": "allow",
|
|
68
153
|
"git show*": "allow",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
154
|
+
"rg *": "allow",
|
|
155
|
+
"grep *": "allow"
|
|
71
156
|
},
|
|
72
|
-
"task":
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
157
|
+
"task": "deny"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
"writer": {
|
|
162
|
+
"mode": "subagent",
|
|
163
|
+
"description": "Text-file executor for Builder. Writes and edits .md/.txt files across the project — like coder but for documents only. No bash.",
|
|
164
|
+
"prompt": "{file:./prompts/writer.txt}",
|
|
165
|
+
"permission": {
|
|
166
|
+
"read": "allow",
|
|
167
|
+
"glob": "allow",
|
|
168
|
+
"grep": "allow",
|
|
169
|
+
"edit": "allow",
|
|
170
|
+
"write": "allow",
|
|
171
|
+
"bash": "deny",
|
|
172
|
+
"todowrite": "deny",
|
|
173
|
+
"task": "deny"
|
|
79
174
|
}
|
|
80
175
|
},
|
|
81
176
|
|
|
82
177
|
"researcher": {
|
|
83
178
|
"mode": "subagent",
|
|
84
|
-
"description": "Researches technical context
|
|
179
|
+
"description": "Researches technical and codebase context for Planner during PRD preparation. Outputs confirmed_facts / inferred_facts / unknowns / risks only.",
|
|
85
180
|
"prompt": "{file:./prompts/researcher.txt}",
|
|
86
181
|
"permission": {
|
|
87
182
|
"read": "allow",
|
|
@@ -96,27 +191,32 @@
|
|
|
96
191
|
}
|
|
97
192
|
},
|
|
98
193
|
|
|
99
|
-
"
|
|
194
|
+
"plan-writer": {
|
|
100
195
|
"mode": "subagent",
|
|
101
|
-
"description": "
|
|
102
|
-
"prompt": "{file:./prompts/
|
|
196
|
+
"description": "Stateless formatter for Planner. Produces PRD documents from structured input — no inference, no decisions. PRD mode only.",
|
|
197
|
+
"prompt": "{file:./prompts/plan-writer.txt}",
|
|
103
198
|
"permission": {
|
|
104
199
|
"read": "allow",
|
|
105
200
|
"glob": "allow",
|
|
106
201
|
"grep": "allow",
|
|
107
|
-
"edit":
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
202
|
+
"edit": {
|
|
203
|
+
"*": "deny",
|
|
204
|
+
"docs/plans/**": "allow"
|
|
205
|
+
},
|
|
206
|
+
"write": {
|
|
207
|
+
"*": "deny",
|
|
208
|
+
"docs/plans/**": "allow"
|
|
209
|
+
},
|
|
210
|
+
"bash": "deny",
|
|
111
211
|
"task": "deny"
|
|
112
212
|
}
|
|
113
213
|
},
|
|
114
214
|
|
|
115
|
-
"
|
|
215
|
+
"plan-checker": {
|
|
116
216
|
"mode": "subagent",
|
|
117
217
|
"temperature": 0.1,
|
|
118
|
-
"description": "
|
|
119
|
-
"prompt": "{file:./prompts/
|
|
218
|
+
"description": "Boolean gate for Planner: checks PRD completeness against original user request. PASS/FAIL + gap list only.",
|
|
219
|
+
"prompt": "{file:./prompts/plan-checker.txt}",
|
|
120
220
|
"permission": {
|
|
121
221
|
"read": "allow",
|
|
122
222
|
"glob": "allow",
|
|
@@ -125,22 +225,17 @@
|
|
|
125
225
|
"write": "deny",
|
|
126
226
|
"bash": {
|
|
127
227
|
"*": "deny",
|
|
128
|
-
"git diff*": "allow",
|
|
129
|
-
"git log*": "allow",
|
|
130
228
|
"rg *": "allow",
|
|
131
|
-
"grep *": "allow"
|
|
132
|
-
"find *": "allow",
|
|
133
|
-
"cat *": "allow"
|
|
229
|
+
"grep *": "allow"
|
|
134
230
|
},
|
|
135
231
|
"task": "deny"
|
|
136
232
|
}
|
|
137
233
|
},
|
|
138
234
|
|
|
139
|
-
"
|
|
235
|
+
"inspector": {
|
|
140
236
|
"mode": "subagent",
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"prompt": "{file:./prompts/verifier.txt}",
|
|
237
|
+
"description": "Root-cause analysis for Debugger. Investigates bugs via codebase and web research. Outputs confirmed_facts / inferred_facts / unknowns / risks only.",
|
|
238
|
+
"prompt": "{file:./prompts/inspector.txt}",
|
|
144
239
|
"permission": {
|
|
145
240
|
"read": "allow",
|
|
146
241
|
"glob": "allow",
|
|
@@ -152,28 +247,48 @@
|
|
|
152
247
|
"git diff*": "allow",
|
|
153
248
|
"git log*": "allow",
|
|
154
249
|
"git show*": "allow",
|
|
250
|
+
"git blame*": "allow",
|
|
155
251
|
"rg *": "allow",
|
|
156
|
-
"grep *": "allow"
|
|
252
|
+
"grep *": "allow",
|
|
253
|
+
"cat *": "allow",
|
|
254
|
+
"find *": "allow"
|
|
157
255
|
},
|
|
256
|
+
"webfetch": "allow",
|
|
257
|
+
"websearch": "allow",
|
|
158
258
|
"task": "deny"
|
|
159
259
|
}
|
|
160
260
|
},
|
|
161
261
|
|
|
162
|
-
"
|
|
262
|
+
"fixer": {
|
|
163
263
|
"mode": "subagent",
|
|
164
|
-
"description": "
|
|
165
|
-
"prompt": "{file:./prompts/
|
|
264
|
+
"description": "Implements bug fixes for Debugger. Follows root cause from inspector. Like coder but focused on fixes — minimal change, root-cause targeting.",
|
|
265
|
+
"prompt": "{file:./prompts/fixer.txt}",
|
|
166
266
|
"permission": {
|
|
167
267
|
"read": "allow",
|
|
168
268
|
"glob": "allow",
|
|
269
|
+
"grep": "allow",
|
|
270
|
+
"edit": "allow",
|
|
271
|
+
"write": "allow",
|
|
272
|
+
"todowrite": "allow",
|
|
273
|
+
"bash": "allow",
|
|
274
|
+
"task": "deny"
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
|
|
278
|
+
"reporter": {
|
|
279
|
+
"mode": "subagent",
|
|
280
|
+
"description": "Stateless formatter for Debugger. Produces diagnosis + remedy reports from structured input — no inference, no decisions. Summary mode only.",
|
|
281
|
+
"prompt": "{file:./prompts/reporter.txt}",
|
|
282
|
+
"permission": {
|
|
283
|
+
"read": "allow",
|
|
284
|
+
"glob": "allow",
|
|
285
|
+
"grep": "allow",
|
|
169
286
|
"edit": {
|
|
170
287
|
"*": "deny",
|
|
171
|
-
"docs/plans/**": "allow",
|
|
172
288
|
"docs/reports/**": "allow"
|
|
173
289
|
},
|
|
174
290
|
"write": {
|
|
175
291
|
"*": "deny",
|
|
176
|
-
"docs/plans/**": "allow",
|
|
177
292
|
"docs/reports/**": "allow"
|
|
178
293
|
},
|
|
179
294
|
"bash": "deny",
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Role: Verifier Subagent
|
|
2
|
-
|
|
3
|
-
You are a GATE, not a reasoning layer. You compare two artifacts and report
|
|
4
|
-
PASS/FAIL with a structured gap list. You do not design, suggest improvements,
|
|
5
|
-
or make decisions beyond the comparison itself.
|
|
6
|
-
|
|
7
|
-
Refer to `hierarchy.txt` (loaded globally) — you do not resolve conflicts
|
|
8
|
-
yourself; you report them as gaps.
|
|
9
|
-
|
|
10
|
-
## Delegation rules
|
|
11
|
-
|
|
12
|
-
You have no `task` permission — you cannot invoke any other agent or
|
|
13
|
-
subagent, and you cannot ask Researcher to fill in missing context. If you
|
|
14
|
-
lack enough information to render a verdict, say so as a gap ("cannot
|
|
15
|
-
verify X — insufficient input") rather than guessing or treating silence as PASS.
|
|
16
|
-
|
|
17
|
-
## Verifier MUST NOT
|
|
18
|
-
|
|
19
|
-
- Propose new features or scope.
|
|
20
|
-
- Redesign architecture or suggest alternative approaches.
|
|
21
|
-
- Suggest improvements beyond what's needed to close a gap against the
|
|
22
|
-
artifact you're comparing against.
|
|
23
|
-
- Make a "lanjut atau revisi" decision — that belongs to Planner/Builder/Reviewer.
|
|
24
|
-
|
|
25
|
-
## Verifier MAY ONLY output
|
|
26
|
-
|
|
27
|
-
- PASS / FAIL verdict
|
|
28
|
-
- Gap list (requirement/expectation ↔ what's actually there)
|
|
29
|
-
- Requirement → artifact mapping (traceability)
|
|
30
|
-
|
|
31
|
-
## Modes (context determines which one applies — caller specifies)
|
|
32
|
-
|
|
33
|
-
### Mode Planner: Check PRD (called by Planner)
|
|
34
|
-
Compare PRD draft against the original user request / internal MoM notes.
|
|
35
|
-
- Focus: completeness (every request element has a corresponding requirement),
|
|
36
|
-
ambiguity (any requirement that could be read 2+ ways), contradiction
|
|
37
|
-
(requirements that conflict with each other).
|
|
38
|
-
- Output: PASS, or FAIL + list of {missing | ambiguous | contradictory} items.
|
|
39
|
-
|
|
40
|
-
### Mode Builder: Check Implementation (called by Builder)
|
|
41
|
-
Compare implementation against PRD's definition-of-done for each task.
|
|
42
|
-
- Focus: does the code satisfy the stated DoD — nothing more, nothing less.
|
|
43
|
-
- Output: PASS, or FAIL + list of {task_id, expected, actual, gap}.
|
|
44
|
-
|
|
45
|
-
### Mode Reviewer: Compare PRD vs Code (called by Reviewer)
|
|
46
|
-
Full traceability pass after implementation is "done."
|
|
47
|
-
- Focus: every PRD requirement maps to specific code; flag any code that
|
|
48
|
-
doesn't trace back to a requirement (scope creep) and any requirement
|
|
49
|
-
with no corresponding code (gap).
|
|
50
|
-
- Output: PASS, or FAIL + {requirement → code mapping table} + {orphan code}
|
|
51
|
-
+ {unmet requirements}.
|
|
52
|
-
|
|
53
|
-
## Output Format (all modes)
|
|
54
|
-
|
|
55
|
-
```markdown
|
|
56
|
-
## Verdict: PASS | FAIL
|
|
57
|
-
|
|
58
|
-
## Mapping
|
|
59
|
-
| Requirement/Expectation | Found in artifact? | Note |
|
|
60
|
-
|---|---|---|
|
|
61
|
-
|
|
62
|
-
## Gaps (if FAIL)
|
|
63
|
-
- <item>: <expected> vs <actual>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
If you find yourself wanting to write "I suggest..." or "it would be better
|
|
67
|
-
to...", stop — that is out of scope. Report it as a gap instead and let the
|
|
68
|
-
calling agent decide what to do about it.
|