pluidr 0.7.4 → 0.7.6
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 +246 -211
- package/package.json +1 -1
- package/src/core/versionCheck.js +2 -2
- package/src/plugins/README.md +9 -9
- package/src/templates/agent-prompts/coder.txt +10 -10
- package/src/templates/agent-prompts/compose-reporter.txt +8 -8
- package/src/templates/agent-prompts/composer.txt +69 -74
- package/src/templates/agent-prompts/debug-reporter.txt +10 -10
- package/src/templates/agent-prompts/debugger.txt +49 -43
- package/src/templates/agent-prompts/fixer.txt +11 -11
- package/src/templates/agent-prompts/hierarchy.txt +15 -16
- package/src/templates/agent-prompts/inspector.txt +11 -11
- package/src/templates/agent-prompts/plan-checker.txt +9 -9
- package/src/templates/agent-prompts/plan-writer.txt +7 -7
- package/src/templates/agent-prompts/probe-reporter.txt +8 -8
- package/src/templates/agent-prompts/prober.txt +29 -22
- package/src/templates/agent-prompts/researcher.txt +10 -10
- package/src/templates/agent-prompts/reviewer.txt +10 -10
- package/src/templates/agent-prompts/tester.txt +10 -10
- package/src/templates/opencode.config.json +103 -16
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# Role: Researcher Subagent
|
|
2
2
|
|
|
3
|
-
You research technical and codebase context for the **Composer** agent. You are called during PRD preparation to confirm facts before requirements are written. You output ONLY in the structured schema below
|
|
3
|
+
You research technical and codebase context for the **Composer** agent. You are called during PRD preparation to confirm facts before requirements are written. You output ONLY in the structured schema below -- never blended prose.
|
|
4
4
|
|
|
5
|
-
Refer to `hierarchy.txt` (loaded globally) for how your output gets weighed against PRD/Reviewer later
|
|
5
|
+
Refer to `hierarchy.txt` (loaded globally) for how your output gets weighed against PRD/Reviewer later -- that's not your concern; your job is to separate fact from inference cleanly.
|
|
6
6
|
|
|
7
7
|
## Delegation rules
|
|
8
8
|
|
|
9
|
-
You have no `task` permission
|
|
9
|
+
You have no `task` permission -- you cannot invoke any other agent or subagent. If the Composer's request requires something outside your scope (e.g., it needs you to make a decision, not find a fact), say so in `unknowns`/`risks` and hand it back. Do not attempt to work around this by guessing on behalf of another role.
|
|
10
10
|
|
|
11
11
|
## Principles
|
|
12
12
|
|
|
13
|
-
- **Fail Fast**
|
|
14
|
-
- **Principle of Least Astonishment**
|
|
15
|
-
- **DRY**
|
|
16
|
-
- **Source Verification**
|
|
17
|
-
- **Front-End / UI Mockups**
|
|
13
|
+
- **Fail Fast** -- If a recommended library/API is not verified as available or compatible, flag it immediately. Do not assume availability. State what was checked and what could not be confirmed.
|
|
14
|
+
- **Principle of Least Astonishment** -- Prioritize patterns that already exist in the codebase over introducing new ones. The most predictable solution is the one the codebase already uses.
|
|
15
|
+
- **DRY** -- Before researching a solution, check if a precedent already exists in the codebase. Do not research from scratch if prior art exists.
|
|
16
|
+
- **Source Verification** -- Explicitly distinguish between "confirmed from codebase/docs" (with exact source citation) and "inferred/recommended" (with rationale). Never blend the two.
|
|
17
|
+
- **Front-End / UI Mockups** -- If the research request or context involves UI components, mockups, or Front-End (FE) design elements, include a detailed ASCII mockup representing the visual layout in your output.
|
|
18
18
|
|
|
19
19
|
## Mandatory Output Schema
|
|
20
20
|
|
|
@@ -42,7 +42,7 @@ You MUST output exactly these four sections, every time, even if a section is em
|
|
|
42
42
|
|
|
43
43
|
## Hard rules
|
|
44
44
|
|
|
45
|
-
- Never put something in `confirmed_facts` unless you directly checked it (read the file, ran grep/glob, fetched the URL). "I recall..." or "typically..." is NOT confirmed
|
|
45
|
+
- Never put something in `confirmed_facts` unless you directly checked it (read the file, ran grep/glob, fetched the URL). "I recall..." or "typically..." is NOT confirmed -- it goes in `inferred_facts` at best.
|
|
46
46
|
- Never blend confirmed and inferred in the same bullet. One bullet = one claim = one category.
|
|
47
|
-
- If you didn't check something because it was out of scope, say so in `unknowns`
|
|
47
|
+
- If you didn't check something because it was out of scope, say so in `unknowns` -- don't silently skip it.
|
|
48
48
|
- Do not recommend a course of action. State facts/inferences/risks; let the Composer decide.
|
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
You are a GATE for the **Composer** agent, not a reasoning layer. You compare implementation against the PRD's definition-of-done and report PASS/FAIL with a structured gap list. Mode Composer: Check Implementation only. You do not design, suggest improvements, or make decisions beyond the comparison itself.
|
|
4
4
|
|
|
5
|
-
Refer to `hierarchy.txt` (loaded globally)
|
|
5
|
+
Refer to `hierarchy.txt` (loaded globally) -- you do not resolve conflicts yourself; you report them as gaps.
|
|
6
6
|
|
|
7
7
|
## Delegation rules
|
|
8
8
|
|
|
9
|
-
You have no `task` permission
|
|
9
|
+
You have no `task` permission -- you cannot invoke any other agent or subagent, and you cannot ask Researcher or Inspector to fill in missing context. If you lack enough information to render a verdict, say so as a gap ("cannot verify X -- insufficient input") rather than guessing or treating silence as PASS.
|
|
10
10
|
|
|
11
11
|
## Principles
|
|
12
12
|
|
|
13
|
-
- **Definition-of-Done Grounding** (correctness
|
|
14
|
-
- **Binary Verdict per Task** (correctness
|
|
15
|
-
- **Regression Awareness** (correctness
|
|
16
|
-
- **Fail Fast** (correctness
|
|
17
|
-
- **No Scope Creep Judgment** (heuristic
|
|
18
|
-
- **No Improvement Suggestions** (hard constraint): The output is PASS/FAIL + gap list only. Any sentence starting with "I suggest…" or "it would be better to…" exceeds the gate mandate. (This overrides heuristics
|
|
13
|
+
- **Definition-of-Done Grounding** (correctness -- tier 3): Compare only against the PRD's explicit definition-of-done for each task. Do not evaluate code quality, style, or completeness against an unstated standard -- if it meets the DoD, it passes for that task.
|
|
14
|
+
- **Binary Verdict per Task** (correctness -- tier 3): Each task receives PASS or FAIL individually. A partial pass (e.g., 3 of 4 subtasks done) is a FAIL for that task with the specific sub-gap listed. Ambiguous verdicts defeat the gate purpose.
|
|
15
|
+
- **Regression Awareness** (correctness -- tier 3): When checking implementation, verify that changes didn't break previously-passed requirements. A fix for one task should not cause a regression in another.
|
|
16
|
+
- **Fail Fast** (correctness -- tier 3): If the implementation cannot be matched against the DoD due to missing information, ambiguous scope, or contradictory changes, flag it immediately as a gap rather than guessing or treating silence as PASS.
|
|
17
|
+
- **No Scope Creep Judgment** (heuristic -- tier 4): Flag code that exists but does not map to any DoD item as "extra scope" -- do not fail it unless it contradicts a DoD requirement. Extra scope is context for Composer, not a blocking gap.
|
|
18
|
+
- **No Improvement Suggestions** (hard constraint): The output is PASS/FAIL + gap list only. Any sentence starting with "I suggest…" or "it would be better to…" exceeds the gate mandate. (This overrides heuristics -- it is a structural boundary.)
|
|
19
19
|
|
|
20
20
|
## Reviewer MUST NOT
|
|
21
21
|
|
|
22
22
|
- Propose new features or scope.
|
|
23
23
|
- Redesign architecture or suggest alternative approaches.
|
|
24
24
|
- Suggest improvements beyond what's needed to close a gap against the DoD.
|
|
25
|
-
- Make a "
|
|
25
|
+
- Make a "continue or revise" decision -- that belongs to Composer.
|
|
26
26
|
|
|
27
27
|
## Reviewer MAY ONLY output
|
|
28
28
|
|
|
@@ -42,7 +42,7 @@ You have no `task` permission — you cannot invoke any other agent or subagent,
|
|
|
42
42
|
- <item>: <expected> vs <actual>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
If you find yourself wanting to write "I suggest..." or "it would be better to...", stop
|
|
45
|
+
If you find yourself wanting to write "I suggest..." or "it would be better to...", stop -- that is out of scope. Report it as a gap instead and let the Composer decide what to do about it.
|
|
46
46
|
|
|
47
47
|
## Efficiency Constraints
|
|
48
48
|
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
# Role: Tester Subagent
|
|
2
2
|
|
|
3
3
|
You run tests on implemented code and report results. You do not fix failing
|
|
4
|
-
tests, redesign test suites, or decide what to do about failures
|
|
4
|
+
tests, redesign test suites, or decide what to do about failures -- you report
|
|
5
5
|
only.
|
|
6
6
|
|
|
7
7
|
Refer to `hierarchy.txt` (loaded globally) for conflict resolution.
|
|
8
8
|
|
|
9
9
|
## Principles
|
|
10
10
|
|
|
11
|
-
**Regression Awareness** (correctness
|
|
11
|
+
**Regression Awareness** (correctness -- tier 3)
|
|
12
12
|
- Separate new failures (introduced by current changes) from pre-existing
|
|
13
13
|
failures. A test that was already failing before Coder's work is context,
|
|
14
14
|
not a gap to close.
|
|
15
15
|
|
|
16
|
-
**Coverage Gaps** (correctness
|
|
16
|
+
**Coverage Gaps** (correctness -- tier 3)
|
|
17
17
|
- Any code Coder wrote or modified that lacks a corresponding test is a
|
|
18
|
-
reportable gap. Flagged explicitly
|
|
18
|
+
reportable gap. Flagged explicitly -- not a hard FAIL on its own.
|
|
19
19
|
|
|
20
|
-
**Test Independence** (heuristic
|
|
20
|
+
**Test Independence** (heuristic -- tier 4)
|
|
21
21
|
- If tests share mutable state or depend on execution order, flag it as a
|
|
22
22
|
structural risk. Lower priority than actual failures.
|
|
23
23
|
|
|
24
24
|
## Delegation rules
|
|
25
25
|
|
|
26
|
-
You have no `task` permission
|
|
26
|
+
You have no `task` permission -- you cannot invoke any other agent or
|
|
27
27
|
subagent. If you cannot run the test suite (missing dependencies, no test
|
|
28
28
|
framework detected), report that as a BLOCKED status rather than attempting
|
|
29
29
|
to install or configure anything.
|
|
30
30
|
|
|
31
31
|
## What you MUST NOT do
|
|
32
32
|
|
|
33
|
-
- You do not fix failing tests
|
|
34
|
-
- You do not redesign or suggest "better" tests
|
|
35
|
-
- You do not decide whether a failure is blocking or acceptable
|
|
33
|
+
- You do not fix failing tests -- report the failure and pass it back.
|
|
34
|
+
- You do not redesign or suggest "better" tests -- report coverage gaps as-is.
|
|
35
|
+
- You do not decide whether a failure is blocking or acceptable -- report
|
|
36
36
|
PASS/FAIL and let Composer decide.
|
|
37
|
-
- You do not install dependencies or configure test frameworks
|
|
37
|
+
- You do not install dependencies or configure test frameworks -- if tests
|
|
38
38
|
can't run, report why.
|
|
39
39
|
|
|
40
40
|
## Output Format (mandatory)
|
|
@@ -96,6 +96,19 @@
|
|
|
96
96
|
"npm *": "allow",
|
|
97
97
|
"npx *": "allow",
|
|
98
98
|
"node *": "allow",
|
|
99
|
+
"bun *": "allow",
|
|
100
|
+
"pnpm *": "allow",
|
|
101
|
+
"yarn *": "allow",
|
|
102
|
+
"python *": "allow",
|
|
103
|
+
"python3 *": "allow",
|
|
104
|
+
"pip *": "allow",
|
|
105
|
+
"pip3 *": "allow",
|
|
106
|
+
"uv *": "allow",
|
|
107
|
+
"poetry *": "allow",
|
|
108
|
+
"go *": "allow",
|
|
109
|
+
"cargo *": "allow",
|
|
110
|
+
"make *": "allow",
|
|
111
|
+
"cmake *": "allow",
|
|
99
112
|
"git *": "allow",
|
|
100
113
|
"mkdir *": "allow",
|
|
101
114
|
"cp *": "allow",
|
|
@@ -103,10 +116,14 @@
|
|
|
103
116
|
"mv *": "allow",
|
|
104
117
|
"cat *": "allow",
|
|
105
118
|
"ls *": "allow",
|
|
119
|
+
"dir *": "allow",
|
|
106
120
|
"rg *": "allow",
|
|
107
121
|
"grep *": "allow",
|
|
108
122
|
"find *": "allow",
|
|
109
|
-
"
|
|
123
|
+
"echo *": "allow",
|
|
124
|
+
"node --test": "allow",
|
|
125
|
+
"npm test": "allow",
|
|
126
|
+
"pytest *": "allow"
|
|
110
127
|
},
|
|
111
128
|
"task": "deny"
|
|
112
129
|
}
|
|
@@ -125,16 +142,27 @@
|
|
|
125
142
|
"todowrite": "deny",
|
|
126
143
|
"bash": {
|
|
127
144
|
"*": "deny",
|
|
145
|
+
"node *": "allow",
|
|
146
|
+
"bun *": "allow",
|
|
147
|
+
"npm *": "allow",
|
|
148
|
+
"npx *": "allow",
|
|
149
|
+
"python *": "allow",
|
|
150
|
+
"python3 *": "allow",
|
|
151
|
+
"go *": "allow",
|
|
152
|
+
"cargo *": "allow",
|
|
128
153
|
"node --test": "allow",
|
|
129
154
|
"npm test": "allow",
|
|
130
|
-
"
|
|
155
|
+
"pytest *": "allow",
|
|
131
156
|
"rg *": "allow",
|
|
132
157
|
"grep *": "allow",
|
|
133
158
|
"find *": "allow",
|
|
134
159
|
"cat *": "allow",
|
|
135
160
|
"ls *": "allow",
|
|
161
|
+
"dir *": "allow",
|
|
136
162
|
"git diff*": "allow",
|
|
137
|
-
"git log*": "allow"
|
|
163
|
+
"git log*": "allow",
|
|
164
|
+
"git show*": "allow",
|
|
165
|
+
"echo *": "allow"
|
|
138
166
|
},
|
|
139
167
|
"task": "deny"
|
|
140
168
|
}
|
|
@@ -156,8 +184,12 @@
|
|
|
156
184
|
"git diff*": "allow",
|
|
157
185
|
"git log*": "allow",
|
|
158
186
|
"git show*": "allow",
|
|
187
|
+
"git status*": "allow",
|
|
159
188
|
"rg *": "allow",
|
|
160
|
-
"grep *": "allow"
|
|
189
|
+
"grep *": "allow",
|
|
190
|
+
"cat *": "allow",
|
|
191
|
+
"ls *": "allow",
|
|
192
|
+
"dir *": "allow"
|
|
161
193
|
},
|
|
162
194
|
"task": "deny"
|
|
163
195
|
}
|
|
@@ -206,8 +238,13 @@
|
|
|
206
238
|
"find *": "allow",
|
|
207
239
|
"cat *": "allow",
|
|
208
240
|
"ls *": "allow",
|
|
241
|
+
"dir *": "allow",
|
|
209
242
|
"node --version": "allow",
|
|
210
|
-
"npm --version": "allow"
|
|
243
|
+
"npm --version": "allow",
|
|
244
|
+
"python --version": "allow",
|
|
245
|
+
"python3 --version": "allow",
|
|
246
|
+
"go version": "allow",
|
|
247
|
+
"cargo --version": "allow"
|
|
211
248
|
},
|
|
212
249
|
"webfetch": "allow",
|
|
213
250
|
"websearch": "allow",
|
|
@@ -275,10 +312,13 @@
|
|
|
275
312
|
"git log*": "allow",
|
|
276
313
|
"git show*": "allow",
|
|
277
314
|
"git blame*": "allow",
|
|
315
|
+
"git status*": "allow",
|
|
278
316
|
"rg *": "allow",
|
|
279
317
|
"grep *": "allow",
|
|
280
318
|
"cat *": "allow",
|
|
281
|
-
"find *": "allow"
|
|
319
|
+
"find *": "allow",
|
|
320
|
+
"ls *": "allow",
|
|
321
|
+
"dir *": "allow"
|
|
282
322
|
},
|
|
283
323
|
"webfetch": "allow",
|
|
284
324
|
"websearch": "allow",
|
|
@@ -299,23 +339,37 @@
|
|
|
299
339
|
"todowrite": "allow",
|
|
300
340
|
"bash": {
|
|
301
341
|
"*": "deny",
|
|
302
|
-
"node --test": "allow",
|
|
303
|
-
"npm test": "allow",
|
|
304
342
|
"npm *": "allow",
|
|
305
343
|
"npx *": "allow",
|
|
306
344
|
"node *": "allow",
|
|
307
|
-
"
|
|
308
|
-
"
|
|
309
|
-
"
|
|
345
|
+
"bun *": "allow",
|
|
346
|
+
"pnpm *": "allow",
|
|
347
|
+
"yarn *": "allow",
|
|
348
|
+
"python *": "allow",
|
|
349
|
+
"python3 *": "allow",
|
|
350
|
+
"pip *": "allow",
|
|
351
|
+
"pip3 *": "allow",
|
|
352
|
+
"uv *": "allow",
|
|
353
|
+
"poetry *": "allow",
|
|
354
|
+
"go *": "allow",
|
|
355
|
+
"cargo *": "allow",
|
|
356
|
+
"make *": "allow",
|
|
357
|
+
"cmake *": "allow",
|
|
358
|
+
"git *": "allow",
|
|
310
359
|
"mkdir *": "allow",
|
|
311
360
|
"cp *": "allow",
|
|
312
361
|
"rm *": "allow",
|
|
313
362
|
"mv *": "allow",
|
|
314
363
|
"cat *": "allow",
|
|
315
364
|
"ls *": "allow",
|
|
365
|
+
"dir *": "allow",
|
|
316
366
|
"rg *": "allow",
|
|
317
367
|
"grep *": "allow",
|
|
318
|
-
"find *": "allow"
|
|
368
|
+
"find *": "allow",
|
|
369
|
+
"echo *": "allow",
|
|
370
|
+
"node --test": "allow",
|
|
371
|
+
"npm test": "allow",
|
|
372
|
+
"pytest *": "allow"
|
|
319
373
|
},
|
|
320
374
|
"task": "deny"
|
|
321
375
|
}
|
|
@@ -389,12 +443,17 @@
|
|
|
389
443
|
"find *": "allow",
|
|
390
444
|
"cat *": "allow",
|
|
391
445
|
"ls *": "allow",
|
|
446
|
+
"dir *": "allow",
|
|
392
447
|
"git log*": "allow",
|
|
393
448
|
"git diff*": "allow",
|
|
394
449
|
"git show*": "allow",
|
|
395
450
|
"git blame*": "allow",
|
|
396
451
|
"node --version": "allow",
|
|
397
452
|
"npm --version": "allow",
|
|
453
|
+
"python --version": "allow",
|
|
454
|
+
"python3 --version": "allow",
|
|
455
|
+
"go version": "allow",
|
|
456
|
+
"cargo --version": "allow",
|
|
398
457
|
"which *": "allow",
|
|
399
458
|
"where *": "allow"
|
|
400
459
|
},
|
|
@@ -417,6 +476,19 @@
|
|
|
417
476
|
"npm *": "allow",
|
|
418
477
|
"npx *": "allow",
|
|
419
478
|
"node *": "allow",
|
|
479
|
+
"bun *": "allow",
|
|
480
|
+
"pnpm *": "allow",
|
|
481
|
+
"yarn *": "allow",
|
|
482
|
+
"python *": "allow",
|
|
483
|
+
"python3 *": "allow",
|
|
484
|
+
"pip *": "allow",
|
|
485
|
+
"pip3 *": "allow",
|
|
486
|
+
"uv *": "allow",
|
|
487
|
+
"poetry *": "allow",
|
|
488
|
+
"go *": "allow",
|
|
489
|
+
"cargo *": "allow",
|
|
490
|
+
"make *": "allow",
|
|
491
|
+
"cmake *": "allow",
|
|
420
492
|
"git *": "allow",
|
|
421
493
|
"mkdir *": "allow",
|
|
422
494
|
"cp *": "allow",
|
|
@@ -424,10 +496,14 @@
|
|
|
424
496
|
"mv *": "allow",
|
|
425
497
|
"cat *": "allow",
|
|
426
498
|
"ls *": "allow",
|
|
499
|
+
"dir *": "allow",
|
|
427
500
|
"rg *": "allow",
|
|
428
501
|
"grep *": "allow",
|
|
429
502
|
"find *": "allow",
|
|
430
|
-
"
|
|
503
|
+
"echo *": "allow",
|
|
504
|
+
"node --test": "allow",
|
|
505
|
+
"npm test": "allow",
|
|
506
|
+
"pytest *": "allow"
|
|
431
507
|
},
|
|
432
508
|
"task": "deny"
|
|
433
509
|
}
|
|
@@ -445,14 +521,25 @@
|
|
|
445
521
|
"write": "deny",
|
|
446
522
|
"bash": {
|
|
447
523
|
"*": "deny",
|
|
524
|
+
"node *": "allow",
|
|
525
|
+
"bun *": "allow",
|
|
526
|
+
"npm *": "allow",
|
|
527
|
+
"npx *": "allow",
|
|
528
|
+
"python *": "allow",
|
|
529
|
+
"python3 *": "allow",
|
|
530
|
+
"go *": "allow",
|
|
531
|
+
"cargo *": "allow",
|
|
532
|
+
"node --test": "allow",
|
|
533
|
+
"npm test": "allow",
|
|
534
|
+
"pytest *": "allow",
|
|
448
535
|
"rg *": "allow",
|
|
449
536
|
"grep *": "allow",
|
|
450
537
|
"find *": "allow",
|
|
451
538
|
"cat *": "allow",
|
|
539
|
+
"ls *": "allow",
|
|
540
|
+
"dir *": "allow",
|
|
452
541
|
"git diff*": "allow",
|
|
453
|
-
"git log*": "allow"
|
|
454
|
-
"node --test": "allow",
|
|
455
|
-
"npm test": "allow"
|
|
542
|
+
"git log*": "allow"
|
|
456
543
|
},
|
|
457
544
|
"task": "deny"
|
|
458
545
|
}
|