@touchskyer/opc 0.2.3 → 0.2.5
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/package.json +1 -1
- package/skill.md +119 -9
package/package.json
CHANGED
package/skill.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: opc
|
|
3
|
-
version: 0.2.
|
|
3
|
+
version: 0.2.5
|
|
4
4
|
description: "OPC — One Person Company. A full team in a single skill: 11 specialist agents for review, analysis, execution, and brainstorming. /opc review, /opc -i, or /opc <role>."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -293,9 +293,18 @@ Output not ending with a VERDICT line will be REJECTED.
|
|
|
293
293
|
|
|
294
294
|
## Step 6: Verification Gate
|
|
295
295
|
|
|
296
|
+
**⛔ CHECKPOINT — DO NOT SKIP TO STEP 7.**
|
|
297
|
+
|
|
298
|
+
You MUST show verification work for EVERY agent before writing the final report. "I reviewed it mentally" is NOT acceptable — show the log.
|
|
299
|
+
|
|
296
300
|
CRITICAL: Do Not Trust the Agent Reports.
|
|
297
301
|
|
|
298
|
-
**Re-dispatch
|
|
302
|
+
**Re-dispatch is coordinator's call.** After each round of verification, decide:
|
|
303
|
+
- **SATISFIED** — all findings verified or resolved → proceed to Step 7
|
|
304
|
+
- **NEED MORE** — uncertain findings remain → re-dispatch targeted agents for the specific questions
|
|
305
|
+
- **DIMINISHING RETURNS** — new round didn't resolve uncertainty → accept best-effort and note in report
|
|
306
|
+
|
|
307
|
+
**Safety ceiling: 3 rounds max** (initial dispatch = round 1). If round 3 still has unresolved findings, accept with ⚠️ and move on. This ceiling exists to prevent runaway token consumption, not as a target.
|
|
299
308
|
|
|
300
309
|
### Mechanical Checks (auto-reject on first pass, accept-with-warning on retry)
|
|
301
310
|
|
|
@@ -306,12 +315,18 @@ For EVERY agent output, reject if:
|
|
|
306
315
|
4. **Hedging without evidence** — finding uses "might", "could potentially", "consider" without a concrete scenario → REJECT finding
|
|
307
316
|
5. **Mode C: No verification output** — agent claims IMPLEMENTED but shows no test run or verification results → REJECT, re-dispatch
|
|
308
317
|
|
|
309
|
-
### Spot-Check (Mode A/B
|
|
318
|
+
### Spot-Check (Mode A/B)
|
|
319
|
+
|
|
320
|
+
Two verification methods — use the RIGHT one:
|
|
321
|
+
|
|
322
|
+
**Quick verify (coordinator reads code):** When fact is binary — "does function X exist?", "is line 42 really an `any` type?" → Open the file yourself, confirm, done.
|
|
323
|
+
|
|
324
|
+
**Independent verify (re-dispatch agent):** When finding involves JUDGMENT — "is this really a security risk?", "does the error handling actually cover this case?", "is this test gap critical?" → Re-dispatch a focused agent with the specific question. Your own opinion is not sufficient for judgment calls.
|
|
310
325
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
326
|
+
Rule of thumb: If you need to trace more than 2 files to verify, or if two agents disagree, re-dispatch.
|
|
327
|
+
|
|
328
|
+
Also always:
|
|
329
|
+
- **Deduplicate** — multiple agents reporting same issue → keep best-articulated one
|
|
315
330
|
|
|
316
331
|
### Effort Check
|
|
317
332
|
|
|
@@ -324,9 +339,9 @@ For findings that pass mechanical checks:
|
|
|
324
339
|
For each questionable finding:
|
|
325
340
|
- **Dismiss** with one-line reason (clearly wrong or contradicts Design Context Brief)
|
|
326
341
|
- **Downgrade** severity with explanation
|
|
327
|
-
- **Re-dispatch** for defense (
|
|
342
|
+
- **Re-dispatch** for defense (targeted — expect 1-3 per review session, not rare)
|
|
328
343
|
|
|
329
|
-
Re-dispatch prompt
|
|
344
|
+
Re-dispatch prompt:
|
|
330
345
|
```
|
|
331
346
|
A finding has been challenged. Review independently.
|
|
332
347
|
|
|
@@ -339,6 +354,21 @@ Do NOT default to agreeing with the challenger.
|
|
|
339
354
|
|
|
340
355
|
**Transparency:** If coordinator dismisses > 80% of findings, note it in the report.
|
|
341
356
|
|
|
357
|
+
### Step 6 Output (MUST appear before Step 7)
|
|
358
|
+
|
|
359
|
+
Show the verification log as a table:
|
|
360
|
+
|
|
361
|
+
```
|
|
362
|
+
## Verification Log
|
|
363
|
+
|
|
364
|
+
| Agent | Mechanical | Effort | Spot-Checks | Re-dispatched? | Action |
|
|
365
|
+
|-------|-----------|--------|-------------|----------------|--------|
|
|
366
|
+
| {role} | ✅/❌ which check | N/M files | What you verified + evidence | Yes/No — reason | N dismissed, M downgraded |
|
|
367
|
+
|
|
368
|
+
Re-dispatch results (if any):
|
|
369
|
+
- {role}: Finding: {X}. Challenge: {Y}. Agent response: DEFEND/RETRACT/DOWNGRADE. Decision: {Z}.
|
|
370
|
+
```
|
|
371
|
+
|
|
342
372
|
---
|
|
343
373
|
|
|
344
374
|
## Step 7: Present Results
|
|
@@ -387,6 +417,86 @@ Recommendation: {coordinator's pick with rationale}
|
|
|
387
417
|
|
|
388
418
|
---
|
|
389
419
|
|
|
420
|
+
## Step 8: Save Report
|
|
421
|
+
|
|
422
|
+
After presenting results, save a structured JSON report for the OPC Viewer.
|
|
423
|
+
|
|
424
|
+
**Directory:** `~/.opc/reports/` (create if it doesn't exist)
|
|
425
|
+
**Filename:** `{YYYY-MM-DD}T{HH-mm-ss}_{mode}_{sanitized-task-summary}.json`
|
|
426
|
+
|
|
427
|
+
Use the Bash tool to create the directory, then the Write tool to save the JSON file.
|
|
428
|
+
|
|
429
|
+
### JSON Schema
|
|
430
|
+
|
|
431
|
+
```json
|
|
432
|
+
{
|
|
433
|
+
"version": "1.0",
|
|
434
|
+
"timestamp": "<ISO 8601>",
|
|
435
|
+
"mode": "<review|analysis|execute|brainstorm>",
|
|
436
|
+
"task": "<original task description>",
|
|
437
|
+
"agents": [
|
|
438
|
+
{
|
|
439
|
+
"role": "<role name>",
|
|
440
|
+
"scope": ["<file paths>"],
|
|
441
|
+
"verdict": "<VERDICT string>",
|
|
442
|
+
"findings": [
|
|
443
|
+
{
|
|
444
|
+
"severity": "<critical|warning|suggestion>",
|
|
445
|
+
"file": "<file path>",
|
|
446
|
+
"line": <line number or null>,
|
|
447
|
+
"issue": "<issue description>",
|
|
448
|
+
"fix": "<suggested fix>",
|
|
449
|
+
"reasoning": "<why this matters>",
|
|
450
|
+
"status": "<accepted|dismissed|downgraded>",
|
|
451
|
+
"dismissReason": "<reason if dismissed/downgraded, null otherwise>"
|
|
452
|
+
}
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
],
|
|
456
|
+
"coordinator": {
|
|
457
|
+
"challenged": <number>,
|
|
458
|
+
"dismissed": <number>,
|
|
459
|
+
"downgraded": <number>
|
|
460
|
+
},
|
|
461
|
+
"summary": {
|
|
462
|
+
"critical": <count of accepted critical findings>,
|
|
463
|
+
"warning": <count of accepted warning findings>,
|
|
464
|
+
"suggestion": <count of accepted suggestion findings>
|
|
465
|
+
},
|
|
466
|
+
"timeline": [
|
|
467
|
+
{
|
|
468
|
+
"type": "<triage|roles|context|dispatch|agent-output|verification|report>",
|
|
469
|
+
"role": "<coordinator or agent role name>",
|
|
470
|
+
"content": "<message content — what happened at this step>"
|
|
471
|
+
}
|
|
472
|
+
]
|
|
473
|
+
}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### Timeline
|
|
477
|
+
|
|
478
|
+
The `timeline` array records each step of the OPC process as a chat-like message for the Replay view. Build it as you go:
|
|
479
|
+
|
|
480
|
+
1. **triage** (coordinator): "Mode: REVIEW\nTask: {task}"
|
|
481
|
+
2. **roles** (coordinator): "Dispatching N agents: {role1}, {role2}..."
|
|
482
|
+
3. **context** (coordinator): Brief summary of the Design Context Brief (Mode A only)
|
|
483
|
+
4. **dispatch** (coordinator): "Agents running in parallel..."
|
|
484
|
+
5. **agent-output** (each agent's role): Include their verdict + each finding as "🔴/🟡/🔵 file:line — issue"
|
|
485
|
+
6. **verification** (coordinator): "Verification gate: N challenged, M dismissed..." with details on dismissed/downgraded findings
|
|
486
|
+
7. **report** (coordinator): "Final report: N 🔴 Critical, N 🟡 Warning, N 🔵 Suggestion"
|
|
487
|
+
|
|
488
|
+
Use `**bold**` for emphasis in content. Each entry is one message in the Replay channel view.
|
|
489
|
+
|
|
490
|
+
**Rules:**
|
|
491
|
+
- Sanitize the task summary for filename: lowercase, replace spaces with hyphens, remove special chars, truncate to 50 chars
|
|
492
|
+
- Only include agents that were dispatched (not all 11)
|
|
493
|
+
- `summary` counts only `status: "accepted"` findings
|
|
494
|
+
- For Mode B (Analysis), findings may not have severity — use `"suggestion"` as default
|
|
495
|
+
- For Mode C (Execute), there are no findings — save an empty agents array with just the verdict
|
|
496
|
+
- For Mode D (Brainstorm), save the approaches as findings with severity "suggestion"
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
390
500
|
## Notes
|
|
391
501
|
|
|
392
502
|
- Agents run via the Agent tool with `subagent_type: "general-purpose"`.
|