pluidr 0.2.0 → 0.3.1

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.
@@ -1,18 +1,27 @@
1
1
  # Role: Writer Subagent
2
2
 
3
- You are a STATELESS FORMATTER. You transform structured input into a
4
- formatted document. You do not infer, decide, evaluate, or add content that
5
- wasn't given to you.
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
- Refer to `hierarchy.txt` (loaded globally) — if the input you're given is
8
- incomplete, mark fields as `TBD`, do not invent content to fill gaps.
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 the input you receive is insufficient to produce a section,
14
- mark it `TBD` — do not attempt to research, infer, or ask another agent to
15
- fill the gap. That responsibility belongs to the caller (Planner/Builder/Reviewer).
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
- - Apply consistent terminology and structure (Principle of Least Astonishment —
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
- ### Mode: Summary/Report (called by Builder or Reviewer)
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 mode doesn't give you enough to fill a section, write
74
- `TBD` and move on. Never write "I think..." or "this probably means...".
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", "reviewer", "debugger", "verifier"]
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", "researcher", "coder", "writer"]
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 Researcher/Writer/Verifier, then decides build-or-revise. Cannot write or edit code.",
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
- "verifier": "allow"
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 Coder/Tester/Verifier/Writer. Cannot edit files, run bash, or change requirements directly.",
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",
@@ -45,79 +76,70 @@
45
76
  "*": "deny",
46
77
  "coder": "allow",
47
78
  "tester": "allow",
48
- "verifier": "allow",
79
+ "reviewer": "allow",
49
80
  "writer": "allow"
50
81
  }
51
82
  }
52
83
  },
53
84
 
54
- "reviewer": {
85
+ "debugger": {
55
86
  "mode": "primary",
56
- "temperature": 0.1,
57
- "description": "Reviews completed work for traceability and regression risk via Verifier/Debugger/Researcher/Writer. Cannot edit or write code.",
58
- "prompt": "{file:./prompts/reviewer.txt}",
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}",
59
89
  "permission": {
60
90
  "read": "allow",
61
91
  "glob": "allow",
62
92
  "grep": "allow",
63
93
  "edit": "deny",
64
94
  "write": "deny",
65
- "bash": {
66
- "*": "deny",
67
- "git diff*": "allow",
68
- "git log*": "allow",
69
- "git show*": "allow",
70
- "git blame*": "allow",
71
- "rg *": "allow"
72
- },
95
+ "bash": "deny",
96
+ "question": "allow",
73
97
  "task": {
74
98
  "*": "deny",
75
- "verifier": "allow",
76
- "debugger": "allow",
77
- "researcher": "allow",
78
- "writer": "allow"
99
+ "inspector": "allow",
100
+ "fixer": "allow",
101
+ "reporter": "allow"
79
102
  }
80
103
  }
81
104
  },
82
105
 
83
- "researcher": {
106
+ "coder": {
84
107
  "mode": "subagent",
85
- "description": "Researches technical context (library/API/best practice) and existing codebase patterns. Outputs confirmed_facts / inferred_facts / unknowns / risks only — never blended.",
86
- "prompt": "{file:./prompts/researcher.txt}",
108
+ "description": "Implements tasks assigned by Builder, following the PRD exactly. Tracks own progress via todowrite.",
109
+ "prompt": "{file:./prompts/coder.txt}",
87
110
  "permission": {
88
111
  "read": "allow",
89
112
  "glob": "allow",
90
113
  "grep": "allow",
91
- "edit": "deny",
92
- "write": "deny",
93
- "bash": "deny",
94
- "webfetch": "allow",
95
- "websearch": "allow",
114
+ "edit": "allow",
115
+ "write": "allow",
116
+ "todowrite": "allow",
117
+ "bash": "allow",
96
118
  "task": "deny"
97
119
  }
98
120
  },
99
121
 
100
- "coder": {
122
+ "tester": {
101
123
  "mode": "subagent",
102
- "description": "Implements tasks assigned by Builder, following the PRD exactly. Tracks own progress via todowrite.",
103
- "prompt": "{file:./prompts/coder.txt}",
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}",
104
126
  "permission": {
105
127
  "read": "allow",
106
128
  "glob": "allow",
107
129
  "grep": "allow",
108
- "edit": "allow",
109
- "write": "allow",
110
- "todowrite": "allow",
130
+ "edit": "deny",
131
+ "write": "deny",
132
+ "todowrite": "deny",
111
133
  "bash": "allow",
112
134
  "task": "deny"
113
135
  }
114
136
  },
115
137
 
116
- "debugger": {
138
+ "reviewer": {
117
139
  "mode": "subagent",
118
140
  "temperature": 0.1,
119
- "description": "Diagnoses defects via reproduce -> isolate -> source -> remedy, called by Reviewer. Cannot fix code directly.",
120
- "prompt": "{file:./prompts/debugger.txt}",
141
+ "description": "Boolean gate for Builder: compares implementation against PRD definition-of-done. PASS/FAIL + gap list only.",
142
+ "prompt": "{file:./prompts/reviewer.txt}",
121
143
  "permission": {
122
144
  "read": "allow",
123
145
  "glob": "allow",
@@ -128,36 +150,92 @@
128
150
  "*": "deny",
129
151
  "git diff*": "allow",
130
152
  "git log*": "allow",
153
+ "git show*": "allow",
131
154
  "rg *": "allow",
132
- "grep *": "allow",
133
- "find *": "allow",
134
- "cat *": "allow"
155
+ "grep *": "allow"
135
156
  },
136
157
  "task": "deny"
137
158
  }
138
159
  },
139
160
 
140
- "tester": {
161
+ "writer": {
141
162
  "mode": "subagent",
142
- "description": "Runs tests on implemented code and reports results (PASS/FAIL/BLOCKED) with coverage gaps. Cannot fix code, redesign tests, or decide next steps.",
143
- "prompt": "{file:./prompts/tester.txt}",
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"
174
+ }
175
+ },
176
+
177
+ "researcher": {
178
+ "mode": "subagent",
179
+ "description": "Researches technical and codebase context for Planner during PRD preparation. Outputs confirmed_facts / inferred_facts / unknowns / risks only.",
180
+ "prompt": "{file:./prompts/researcher.txt}",
144
181
  "permission": {
145
182
  "read": "allow",
146
183
  "glob": "allow",
147
184
  "grep": "allow",
148
185
  "edit": "deny",
149
186
  "write": "deny",
150
- "todowrite": "deny",
151
- "bash": "allow",
187
+ "bash": "deny",
188
+ "webfetch": "allow",
189
+ "websearch": "allow",
190
+ "task": "deny"
191
+ }
192
+ },
193
+
194
+ "plan-writer": {
195
+ "mode": "subagent",
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}",
198
+ "permission": {
199
+ "read": "allow",
200
+ "glob": "allow",
201
+ "grep": "allow",
202
+ "edit": {
203
+ "*": "deny",
204
+ "docs/plans/**": "allow"
205
+ },
206
+ "write": {
207
+ "*": "deny",
208
+ "docs/plans/**": "allow"
209
+ },
210
+ "bash": "deny",
152
211
  "task": "deny"
153
212
  }
154
213
  },
155
214
 
156
- "verifier": {
215
+ "plan-checker": {
157
216
  "mode": "subagent",
158
217
  "temperature": 0.1,
159
- "description": "Boolean gate: compares two artifacts (PRD vs request, code vs DoD, PRD vs code) and reports PASS/FAIL with a gap list. Never proposes features or redesigns.",
160
- "prompt": "{file:./prompts/verifier.txt}",
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}",
220
+ "permission": {
221
+ "read": "allow",
222
+ "glob": "allow",
223
+ "grep": "allow",
224
+ "edit": "deny",
225
+ "write": "deny",
226
+ "bash": {
227
+ "*": "deny",
228
+ "rg *": "allow",
229
+ "grep *": "allow"
230
+ },
231
+ "task": "deny"
232
+ }
233
+ },
234
+
235
+ "inspector": {
236
+ "mode": "subagent",
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}",
161
239
  "permission": {
162
240
  "read": "allow",
163
241
  "glob": "allow",
@@ -169,28 +247,48 @@
169
247
  "git diff*": "allow",
170
248
  "git log*": "allow",
171
249
  "git show*": "allow",
250
+ "git blame*": "allow",
172
251
  "rg *": "allow",
173
- "grep *": "allow"
252
+ "grep *": "allow",
253
+ "cat *": "allow",
254
+ "find *": "allow"
174
255
  },
256
+ "webfetch": "allow",
257
+ "websearch": "allow",
175
258
  "task": "deny"
176
259
  }
177
260
  },
178
261
 
179
- "writer": {
262
+ "fixer": {
180
263
  "mode": "subagent",
181
- "description": "Stateless formatter. Produces PRD documents (docs/plans/) and Summary/Report documents (docs/reports/) from structured input only no inference, no decisions.",
182
- "prompt": "{file:./prompts/writer.txt}",
264
+ "description": "Implements bug fixes for Debugger. Follows root cause from inspector. Like coder but focused on fixesminimal change, root-cause targeting.",
265
+ "prompt": "{file:./prompts/fixer.txt}",
183
266
  "permission": {
184
267
  "read": "allow",
185
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",
186
286
  "edit": {
187
287
  "*": "deny",
188
- "docs/plans/**": "allow",
189
288
  "docs/reports/**": "allow"
190
289
  },
191
290
  "write": {
192
291
  "*": "deny",
193
- "docs/plans/**": "allow",
194
292
  "docs/reports/**": "allow"
195
293
  },
196
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.