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.
@@ -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/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",
@@ -44,16 +75,70 @@
44
75
  "task": {
45
76
  "*": "deny",
46
77
  "coder": "allow",
47
- "verifier": "allow",
78
+ "tester": "allow",
79
+ "reviewer": "allow",
48
80
  "writer": "allow"
49
81
  }
50
82
  }
51
83
  },
52
84
 
53
- "reviewer": {
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": "Reviews completed work for traceability and regression risk via Verifier/Debugger/Researcher/Writer. Cannot edit or write code.",
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
- "git blame*": "allow",
70
- "rg *": "allow"
154
+ "rg *": "allow",
155
+ "grep *": "allow"
71
156
  },
72
- "task": {
73
- "*": "deny",
74
- "verifier": "allow",
75
- "debugger": "allow",
76
- "researcher": "allow",
77
- "writer": "allow"
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 (library/API/best practice) and existing codebase patterns. Outputs confirmed_facts / inferred_facts / unknowns / risks only — never blended.",
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
- "coder": {
194
+ "plan-writer": {
100
195
  "mode": "subagent",
101
- "description": "Implements tasks assigned by Builder, following the PRD exactly. Tracks own progress via todowrite.",
102
- "prompt": "{file:./prompts/coder.txt}",
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": "allow",
108
- "write": "allow",
109
- "todowrite": "allow",
110
- "bash": "allow",
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
- "debugger": {
215
+ "plan-checker": {
116
216
  "mode": "subagent",
117
217
  "temperature": 0.1,
118
- "description": "Diagnoses defects via reproduce -> isolate -> source -> remedy, called by Reviewer. Cannot fix code directly.",
119
- "prompt": "{file:./prompts/debugger.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}",
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
- "verifier": {
235
+ "inspector": {
140
236
  "mode": "subagent",
141
- "temperature": 0.1,
142
- "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.",
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
- "writer": {
262
+ "fixer": {
163
263
  "mode": "subagent",
164
- "description": "Stateless formatter. Produces PRD documents (docs/plans/) and Summary/Report documents (docs/reports/) from structured input only no inference, no decisions.",
165
- "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}",
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.