@fro.bot/systematic 2.33.3 → 3.0.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.
Files changed (112) hide show
  1. package/ATTRIBUTIONS.md +1 -1
  2. package/agents/design/design-iterator.md +1 -0
  3. package/agents/research/best-practices-researcher.md +6 -8
  4. package/agents/review/pattern-recognition-specialist.md +1 -1
  5. package/agents/workflow/systematic-implementer.md +1 -0
  6. package/dist/cli.js +348 -53
  7. package/dist/{index-vyzhzvap.js → index-yskzf7vh.js} +587 -386
  8. package/dist/index.js +100 -155
  9. package/dist/lib/agent-overlays.d.ts +0 -1
  10. package/dist/lib/agent-resolver.d.ts +28 -0
  11. package/dist/lib/bootstrap.d.ts +8 -1
  12. package/dist/lib/bundled-names.d.ts +3 -3
  13. package/dist/lib/pi-delegate-session.d.ts +31 -0
  14. package/dist/lib/pi-delegate-tool.d.ts +42 -0
  15. package/dist/lib/removed-names.d.ts +3 -3
  16. package/dist/lib/setup.d.ts +36 -0
  17. package/dist/lib/skill-loader.d.ts +1 -2
  18. package/dist/lib/skill-resolver.d.ts +39 -0
  19. package/dist/lib/skill-tool.d.ts +2 -11
  20. package/dist/lib/skills.d.ts +1 -9
  21. package/dist/lib/source-model-defaults.d.ts +1 -1
  22. package/dist/pi.d.ts +7 -0
  23. package/dist/pi.js +3641 -0
  24. package/dist/schemas/systematic-config.schema.json +47 -242
  25. package/package.json +29 -6
  26. package/skills/ce-brainstorm/references/handoff.md +5 -26
  27. package/skills/ce-brainstorm/references/universal-brainstorming.md +0 -1
  28. package/skills/ce-compound/SKILL.md +8 -12
  29. package/skills/ce-ideate/references/post-ideation-workflow.md +21 -85
  30. package/skills/ce-plan/SKILL.md +6 -6
  31. package/skills/ce-plan/references/deepening-workflow.md +6 -7
  32. package/skills/ce-plan/references/plan-handoff.md +1 -17
  33. package/skills/ce-plan/references/universal-planning.md +0 -4
  34. package/skills/ce-review/SKILL.md +10 -19
  35. package/skills/ce-review/references/persona-catalog.md +2 -7
  36. package/skills/ce-review/references/review-output-template.md +0 -1
  37. package/skills/ce-work/SKILL.md +1 -1
  38. package/skills/deepen-plan/SKILL.md +6 -7
  39. package/skills/document-review/SKILL.md +2 -2
  40. package/skills/git-commit-push-pr/SKILL.md +1 -2
  41. package/skills/lfg/SKILL.md +1 -1
  42. package/skills/onboarding/SKILL.md +1 -12
  43. package/skills/orchestrating-subagents/SKILL.md +2 -2
  44. package/skills/slfg/SKILL.md +2 -3
  45. package/skills/test-browser/SKILL.md +2 -2
  46. package/skills/todos/SKILL.md +239 -0
  47. package/skills/writing-skills/SKILL.md +102 -1
  48. package/skills/{writing-systematic-skills → writing-skills}/references/foundation-conventions.md +5 -5
  49. package/agents/design/design-implementation-reviewer.md +0 -95
  50. package/agents/design/figma-design-sync.md +0 -173
  51. package/agents/docs/ankane-readme-writer.md +0 -51
  52. package/agents/review/cli-agent-readiness-reviewer.md +0 -418
  53. package/agents/review/data-integrity-guardian.md +0 -72
  54. package/agents/review/data-migration-expert.md +0 -99
  55. package/agents/review/dhh-rails-reviewer.md +0 -46
  56. package/agents/review/julik-frontend-races-reviewer.md +0 -49
  57. package/agents/review/kieran-python-reviewer.md +0 -47
  58. package/agents/review/kieran-rails-reviewer.md +0 -47
  59. package/agents/review/performance-oracle.md +0 -112
  60. package/agents/review/schema-drift-detector.md +0 -143
  61. package/agents/review/security-sentinel.md +0 -95
  62. package/agents/workflow/lint.md +0 -17
  63. package/dist/lib/converter.d.ts +0 -14
  64. package/skills/andrew-kane-gem-writer/SKILL.md +0 -184
  65. package/skills/andrew-kane-gem-writer/references/database-adapters.md +0 -231
  66. package/skills/andrew-kane-gem-writer/references/module-organization.md +0 -121
  67. package/skills/andrew-kane-gem-writer/references/rails-integration.md +0 -183
  68. package/skills/andrew-kane-gem-writer/references/resources.md +0 -119
  69. package/skills/andrew-kane-gem-writer/references/testing-patterns.md +0 -261
  70. package/skills/changelog/SKILL.md +0 -139
  71. package/skills/claude-permissions-optimizer/SKILL.md +0 -166
  72. package/skills/claude-permissions-optimizer/scripts/extract-commands.mjs +0 -655
  73. package/skills/claude-permissions-optimizer/scripts/normalize.mjs +0 -151
  74. package/skills/dhh-rails-style/SKILL.md +0 -186
  75. package/skills/dhh-rails-style/references/architecture.md +0 -653
  76. package/skills/dhh-rails-style/references/controllers.md +0 -303
  77. package/skills/dhh-rails-style/references/frontend.md +0 -510
  78. package/skills/dhh-rails-style/references/gems.md +0 -266
  79. package/skills/dhh-rails-style/references/models.md +0 -359
  80. package/skills/dhh-rails-style/references/testing.md +0 -338
  81. package/skills/dspy-ruby/SKILL.md +0 -737
  82. package/skills/dspy-ruby/assets/config-template.rb +0 -187
  83. package/skills/dspy-ruby/assets/module-template.rb +0 -300
  84. package/skills/dspy-ruby/assets/signature-template.rb +0 -221
  85. package/skills/dspy-ruby/references/core-concepts.md +0 -674
  86. package/skills/dspy-ruby/references/observability.md +0 -366
  87. package/skills/dspy-ruby/references/optimization.md +0 -603
  88. package/skills/dspy-ruby/references/providers.md +0 -418
  89. package/skills/dspy-ruby/references/toolsets.md +0 -502
  90. package/skills/every-style-editor/SKILL.md +0 -135
  91. package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +0 -529
  92. package/skills/feature-video/SKILL.md +0 -383
  93. package/skills/gemini-imagegen/SKILL.md +0 -237
  94. package/skills/gemini-imagegen/requirements.txt +0 -2
  95. package/skills/gemini-imagegen/scripts/compose_images.py +0 -157
  96. package/skills/gemini-imagegen/scripts/edit_image.py +0 -144
  97. package/skills/gemini-imagegen/scripts/gemini_images.py +0 -263
  98. package/skills/gemini-imagegen/scripts/generate_image.py +0 -133
  99. package/skills/gemini-imagegen/scripts/multi_turn_chat.py +0 -216
  100. package/skills/generate_command/SKILL.md +0 -164
  101. package/skills/orchestrating-swarms/SKILL.md +0 -1723
  102. package/skills/proof/SKILL.md +0 -291
  103. package/skills/proof/references/hitl-review.md +0 -368
  104. package/skills/rclone/SKILL.md +0 -150
  105. package/skills/rclone/scripts/check_setup.sh +0 -60
  106. package/skills/setup/SKILL.md +0 -22
  107. package/skills/test-xcode/SKILL.md +0 -214
  108. package/skills/todo-create/SKILL.md +0 -109
  109. package/skills/todo-resolve/SKILL.md +0 -68
  110. package/skills/todo-triage/SKILL.md +0 -70
  111. package/skills/writing-systematic-skills/SKILL.md +0 -119
  112. /package/skills/{todo-create → todos}/assets/todo-template.md +0 -0
@@ -37,12 +37,12 @@
37
37
  }
38
38
  }
39
39
  ],
40
- "$id": "https://fro.bot/systematic/schemas/v2/systematic-config.schema.json",
40
+ "$id": "https://fro.bot/systematic/schemas/v3/systematic-config.schema.json",
41
41
  "definitions": {
42
42
  "__schema0": {
43
43
  "description": "JSON Schema URL for IDE autocomplete. The value is informational only — the loader does not fetch or validate against it. Add this to enable IDE schema activation and field-level autocomplete in editors that support JSON Schema (VSCode, Zed, IntelliJ).",
44
44
  "examples": [
45
- "https://fro.bot/systematic/schemas/v2/systematic-config.schema.json"
45
+ "https://fro.bot/systematic/schemas/latest/systematic-config.schema.json"
46
46
  ],
47
47
  "allOf": [
48
48
  {
@@ -100,13 +100,6 @@
100
100
  }
101
101
  ]
102
102
  },
103
- "ankane-readme-writer": {
104
- "allOf": [
105
- {
106
- "$ref": "#/definitions/__schema4"
107
- }
108
- ]
109
- },
110
103
  "api-contract-reviewer": {
111
104
  "allOf": [
112
105
  {
@@ -135,13 +128,6 @@
135
128
  }
136
129
  ]
137
130
  },
138
- "cli-agent-readiness-reviewer": {
139
- "allOf": [
140
- {
141
- "$ref": "#/definitions/__schema4"
142
- }
143
- ]
144
- },
145
131
  "cli-readiness-reviewer": {
146
132
  "allOf": [
147
133
  {
@@ -170,20 +156,6 @@
170
156
  }
171
157
  ]
172
158
  },
173
- "data-integrity-guardian": {
174
- "allOf": [
175
- {
176
- "$ref": "#/definitions/__schema4"
177
- }
178
- ]
179
- },
180
- "data-migration-expert": {
181
- "allOf": [
182
- {
183
- "$ref": "#/definitions/__schema4"
184
- }
185
- ]
186
- },
187
159
  "data-migrations-reviewer": {
188
160
  "allOf": [
189
161
  {
@@ -198,13 +170,6 @@
198
170
  }
199
171
  ]
200
172
  },
201
- "design-implementation-reviewer": {
202
- "allOf": [
203
- {
204
- "$ref": "#/definitions/__schema4"
205
- }
206
- ]
207
- },
208
173
  "design-iterator": {
209
174
  "allOf": [
210
175
  {
@@ -219,13 +184,6 @@
219
184
  }
220
185
  ]
221
186
  },
222
- "dhh-rails-reviewer": {
223
- "allOf": [
224
- {
225
- "$ref": "#/definitions/__schema4"
226
- }
227
- ]
228
- },
229
187
  "feasibility-reviewer": {
230
188
  "allOf": [
231
189
  {
@@ -233,13 +191,6 @@
233
191
  }
234
192
  ]
235
193
  },
236
- "figma-design-sync": {
237
- "allOf": [
238
- {
239
- "$ref": "#/definitions/__schema4"
240
- }
241
- ]
242
- },
243
194
  "framework-docs-researcher": {
244
195
  "allOf": [
245
196
  {
@@ -261,27 +212,6 @@
261
212
  }
262
213
  ]
263
214
  },
264
- "julik-frontend-races-reviewer": {
265
- "allOf": [
266
- {
267
- "$ref": "#/definitions/__schema4"
268
- }
269
- ]
270
- },
271
- "kieran-python-reviewer": {
272
- "allOf": [
273
- {
274
- "$ref": "#/definitions/__schema4"
275
- }
276
- ]
277
- },
278
- "kieran-rails-reviewer": {
279
- "allOf": [
280
- {
281
- "$ref": "#/definitions/__schema4"
282
- }
283
- ]
284
- },
285
215
  "kieran-typescript-reviewer": {
286
216
  "allOf": [
287
217
  {
@@ -296,13 +226,6 @@
296
226
  }
297
227
  ]
298
228
  },
299
- "lint": {
300
- "allOf": [
301
- {
302
- "$ref": "#/definitions/__schema4"
303
- }
304
- ]
305
- },
306
229
  "maintainability-reviewer": {
307
230
  "allOf": [
308
231
  {
@@ -317,13 +240,6 @@
317
240
  }
318
241
  ]
319
242
  },
320
- "performance-oracle": {
321
- "allOf": [
322
- {
323
- "$ref": "#/definitions/__schema4"
324
- }
325
- ]
326
- },
327
243
  "performance-reviewer": {
328
244
  "allOf": [
329
245
  {
@@ -373,13 +289,6 @@
373
289
  }
374
290
  ]
375
291
  },
376
- "schema-drift-detector": {
377
- "allOf": [
378
- {
379
- "$ref": "#/definitions/__schema4"
380
- }
381
- ]
382
- },
383
292
  "scope-guardian-reviewer": {
384
293
  "allOf": [
385
294
  {
@@ -401,13 +310,6 @@
401
310
  }
402
311
  ]
403
312
  },
404
- "security-sentinel": {
405
- "allOf": [
406
- {
407
- "$ref": "#/definitions/__schema4"
408
- }
409
- ]
410
- },
411
313
  "slack-researcher": {
412
314
  "allOf": [
413
315
  {
@@ -436,13 +338,6 @@
436
338
  }
437
339
  ]
438
340
  },
439
- "design/design-implementation-reviewer": {
440
- "allOf": [
441
- {
442
- "$ref": "#/definitions/__schema4"
443
- }
444
- ]
445
- },
446
341
  "design/design-iterator": {
447
342
  "allOf": [
448
343
  {
@@ -450,20 +345,6 @@
450
345
  }
451
346
  ]
452
347
  },
453
- "design/figma-design-sync": {
454
- "allOf": [
455
- {
456
- "$ref": "#/definitions/__schema4"
457
- }
458
- ]
459
- },
460
- "docs/ankane-readme-writer": {
461
- "allOf": [
462
- {
463
- "$ref": "#/definitions/__schema4"
464
- }
465
- ]
466
- },
467
348
  "document-review/adversarial-document-reviewer": {
468
349
  "allOf": [
469
350
  {
@@ -590,13 +471,6 @@
590
471
  }
591
472
  ]
592
473
  },
593
- "review/cli-agent-readiness-reviewer": {
594
- "allOf": [
595
- {
596
- "$ref": "#/definitions/__schema4"
597
- }
598
- ]
599
- },
600
474
  "review/cli-readiness-reviewer": {
601
475
  "allOf": [
602
476
  {
@@ -618,20 +492,6 @@
618
492
  }
619
493
  ]
620
494
  },
621
- "review/data-integrity-guardian": {
622
- "allOf": [
623
- {
624
- "$ref": "#/definitions/__schema4"
625
- }
626
- ]
627
- },
628
- "review/data-migration-expert": {
629
- "allOf": [
630
- {
631
- "$ref": "#/definitions/__schema4"
632
- }
633
- ]
634
- },
635
495
  "review/data-migrations-reviewer": {
636
496
  "allOf": [
637
497
  {
@@ -646,34 +506,6 @@
646
506
  }
647
507
  ]
648
508
  },
649
- "review/dhh-rails-reviewer": {
650
- "allOf": [
651
- {
652
- "$ref": "#/definitions/__schema4"
653
- }
654
- ]
655
- },
656
- "review/julik-frontend-races-reviewer": {
657
- "allOf": [
658
- {
659
- "$ref": "#/definitions/__schema4"
660
- }
661
- ]
662
- },
663
- "review/kieran-python-reviewer": {
664
- "allOf": [
665
- {
666
- "$ref": "#/definitions/__schema4"
667
- }
668
- ]
669
- },
670
- "review/kieran-rails-reviewer": {
671
- "allOf": [
672
- {
673
- "$ref": "#/definitions/__schema4"
674
- }
675
- ]
676
- },
677
509
  "review/kieran-typescript-reviewer": {
678
510
  "allOf": [
679
511
  {
@@ -695,13 +527,6 @@
695
527
  }
696
528
  ]
697
529
  },
698
- "review/performance-oracle": {
699
- "allOf": [
700
- {
701
- "$ref": "#/definitions/__schema4"
702
- }
703
- ]
704
- },
705
530
  "review/performance-reviewer": {
706
531
  "allOf": [
707
532
  {
@@ -730,13 +555,6 @@
730
555
  }
731
556
  ]
732
557
  },
733
- "review/schema-drift-detector": {
734
- "allOf": [
735
- {
736
- "$ref": "#/definitions/__schema4"
737
- }
738
- ]
739
- },
740
558
  "review/security-reviewer": {
741
559
  "allOf": [
742
560
  {
@@ -744,13 +562,6 @@
744
562
  }
745
563
  ]
746
564
  },
747
- "review/security-sentinel": {
748
- "allOf": [
749
- {
750
- "$ref": "#/definitions/__schema4"
751
- }
752
- ]
753
- },
754
565
  "review/testing-reviewer": {
755
566
  "allOf": [
756
567
  {
@@ -765,13 +576,6 @@
765
576
  }
766
577
  ]
767
578
  },
768
- "workflow/lint": {
769
- "allOf": [
770
- {
771
- "$ref": "#/definitions/__schema4"
772
- }
773
- ]
774
- },
775
579
  "workflow/pr-comment-resolver": {
776
580
  "allOf": [
777
581
  {
@@ -1256,7 +1060,6 @@
1256
1060
  "agent-browser",
1257
1061
  "agent-native-architecture",
1258
1062
  "agent-native-audit",
1259
- "andrew-kane-gem-writer",
1260
1063
  "ce:brainstorm",
1261
1064
  "ce:compound",
1262
1065
  "ce:compound-refresh",
@@ -1264,19 +1067,11 @@
1264
1067
  "ce:plan",
1265
1068
  "ce:review",
1266
1069
  "ce:work",
1267
- "changelog",
1268
- "claude-permissions-optimizer",
1269
1070
  "compound-docs",
1270
1071
  "deepen-plan",
1271
1072
  "deploy-docs",
1272
- "dhh-rails-style",
1273
1073
  "document-review",
1274
- "dspy-ruby",
1275
- "every-style-editor",
1276
- "feature-video",
1277
1074
  "frontend-design",
1278
- "gemini-imagegen",
1279
- "generate_command",
1280
1075
  "git-clean-gone-branches",
1281
1076
  "git-commit",
1282
1077
  "git-commit-push-pr",
@@ -1284,22 +1079,32 @@
1284
1079
  "lfg",
1285
1080
  "onboarding",
1286
1081
  "orchestrating-subagents",
1287
- "orchestrating-swarms",
1288
- "proof",
1289
- "rclone",
1290
1082
  "report-bug-ce",
1291
1083
  "reproduce-bug",
1292
1084
  "resolve-pr-feedback",
1293
- "setup",
1294
1085
  "slfg",
1295
1086
  "test-browser",
1296
1087
  "test-driven-development",
1088
+ "todos",
1089
+ "using-systematic",
1090
+ "writing-skills",
1091
+ "andrew-kane-gem-writer",
1092
+ "changelog",
1093
+ "claude-permissions-optimizer",
1094
+ "dhh-rails-style",
1095
+ "dspy-ruby",
1096
+ "every-style-editor",
1097
+ "feature-video",
1098
+ "gemini-imagegen",
1099
+ "generate_command",
1100
+ "orchestrating-swarms",
1101
+ "proof",
1102
+ "rclone",
1103
+ "setup",
1297
1104
  "test-xcode",
1298
1105
  "todo-create",
1299
1106
  "todo-resolve",
1300
1107
  "todo-triage",
1301
- "using-systematic",
1302
- "writing-skills",
1303
1108
  "writing-systematic-skills"
1304
1109
  ]
1305
1110
  }
@@ -1325,38 +1130,26 @@
1325
1130
  "adversarial-document-reviewer",
1326
1131
  "adversarial-reviewer",
1327
1132
  "agent-native-reviewer",
1328
- "ankane-readme-writer",
1329
1133
  "api-contract-reviewer",
1330
1134
  "architecture-strategist",
1331
1135
  "best-practices-researcher",
1332
1136
  "bug-reproduction-validator",
1333
- "cli-agent-readiness-reviewer",
1334
1137
  "cli-readiness-reviewer",
1335
1138
  "code-simplicity-reviewer",
1336
1139
  "coherence-reviewer",
1337
1140
  "correctness-reviewer",
1338
- "data-integrity-guardian",
1339
- "data-migration-expert",
1340
1141
  "data-migrations-reviewer",
1341
1142
  "deployment-verification-agent",
1342
- "design-implementation-reviewer",
1343
1143
  "design-iterator",
1344
1144
  "design-lens-reviewer",
1345
- "dhh-rails-reviewer",
1346
1145
  "feasibility-reviewer",
1347
- "figma-design-sync",
1348
1146
  "framework-docs-researcher",
1349
1147
  "git-history-analyzer",
1350
1148
  "issue-intelligence-analyst",
1351
- "julik-frontend-races-reviewer",
1352
- "kieran-python-reviewer",
1353
- "kieran-rails-reviewer",
1354
1149
  "kieran-typescript-reviewer",
1355
1150
  "learnings-researcher",
1356
- "lint",
1357
1151
  "maintainability-reviewer",
1358
1152
  "pattern-recognition-specialist",
1359
- "performance-oracle",
1360
1153
  "performance-reviewer",
1361
1154
  "pr-comment-resolver",
1362
1155
  "previous-comments-reviewer",
@@ -1364,19 +1157,14 @@
1364
1157
  "project-standards-reviewer",
1365
1158
  "reliability-reviewer",
1366
1159
  "repo-research-analyst",
1367
- "schema-drift-detector",
1368
1160
  "scope-guardian-reviewer",
1369
1161
  "security-lens-reviewer",
1370
1162
  "security-reviewer",
1371
- "security-sentinel",
1372
1163
  "slack-researcher",
1373
1164
  "spec-flow-analyzer",
1374
1165
  "systematic-implementer",
1375
1166
  "testing-reviewer",
1376
- "design/design-implementation-reviewer",
1377
1167
  "design/design-iterator",
1378
- "design/figma-design-sync",
1379
- "docs/ankane-readme-writer",
1380
1168
  "document-review/adversarial-document-reviewer",
1381
1169
  "document-review/coherence-reviewer",
1382
1170
  "document-review/design-lens-reviewer",
@@ -1395,35 +1183,52 @@
1395
1183
  "review/agent-native-reviewer",
1396
1184
  "review/api-contract-reviewer",
1397
1185
  "review/architecture-strategist",
1398
- "review/cli-agent-readiness-reviewer",
1399
1186
  "review/cli-readiness-reviewer",
1400
1187
  "review/code-simplicity-reviewer",
1401
1188
  "review/correctness-reviewer",
1402
- "review/data-integrity-guardian",
1403
- "review/data-migration-expert",
1404
1189
  "review/data-migrations-reviewer",
1405
1190
  "review/deployment-verification-agent",
1406
- "review/dhh-rails-reviewer",
1407
- "review/julik-frontend-races-reviewer",
1408
- "review/kieran-python-reviewer",
1409
- "review/kieran-rails-reviewer",
1410
1191
  "review/kieran-typescript-reviewer",
1411
1192
  "review/maintainability-reviewer",
1412
1193
  "review/pattern-recognition-specialist",
1413
- "review/performance-oracle",
1414
1194
  "review/performance-reviewer",
1415
1195
  "review/previous-comments-reviewer",
1416
1196
  "review/project-standards-reviewer",
1417
1197
  "review/reliability-reviewer",
1418
- "review/schema-drift-detector",
1419
1198
  "review/security-reviewer",
1420
- "review/security-sentinel",
1421
1199
  "review/testing-reviewer",
1422
1200
  "workflow/bug-reproduction-validator",
1423
- "workflow/lint",
1424
1201
  "workflow/pr-comment-resolver",
1425
1202
  "workflow/spec-flow-analyzer",
1426
- "workflow/systematic-implementer"
1203
+ "workflow/systematic-implementer",
1204
+ "ankane-readme-writer",
1205
+ "cli-agent-readiness-reviewer",
1206
+ "data-integrity-guardian",
1207
+ "data-migration-expert",
1208
+ "design-implementation-reviewer",
1209
+ "design/design-implementation-reviewer",
1210
+ "design/figma-design-sync",
1211
+ "dhh-rails-reviewer",
1212
+ "docs/ankane-readme-writer",
1213
+ "figma-design-sync",
1214
+ "julik-frontend-races-reviewer",
1215
+ "kieran-python-reviewer",
1216
+ "kieran-rails-reviewer",
1217
+ "lint",
1218
+ "performance-oracle",
1219
+ "review/cli-agent-readiness-reviewer",
1220
+ "review/data-integrity-guardian",
1221
+ "review/data-migration-expert",
1222
+ "review/dhh-rails-reviewer",
1223
+ "review/julik-frontend-races-reviewer",
1224
+ "review/kieran-python-reviewer",
1225
+ "review/kieran-rails-reviewer",
1226
+ "review/performance-oracle",
1227
+ "review/schema-drift-detector",
1228
+ "review/security-sentinel",
1229
+ "schema-drift-detector",
1230
+ "security-sentinel",
1231
+ "workflow/lint"
1427
1232
  ]
1428
1233
  }
1429
1234
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "2.33.3",
3
+ "version": "3.0.1",
4
4
  "description": "Structured engineering workflows for OpenCode",
5
5
  "type": "module",
6
6
  "homepage": "https://fro.bot/systematic",
@@ -14,6 +14,14 @@
14
14
  "types": "./dist/index.d.ts"
15
15
  }
16
16
  },
17
+ "pi": {
18
+ "extensions": [
19
+ "./dist/pi.js"
20
+ ],
21
+ "skills": [
22
+ "./skills"
23
+ ]
24
+ },
17
25
  "files": [
18
26
  "dist",
19
27
  "skills",
@@ -25,7 +33,7 @@
25
33
  ],
26
34
  "scripts": {
27
35
  "clean": "rimraf dist",
28
- "build": "bun run clean && bun build src/index.ts src/cli.ts --outdir dist --target bun --splitting --external @opencode-ai/plugin --external js-yaml && tsc --emitDeclarationOnly",
36
+ "build": "bun run clean && bun build src/index.ts src/cli.ts --outdir dist --target bun --splitting --external @opencode-ai/plugin --external js-yaml && bun build src/pi.ts --outdir dist --target node --external @earendil-works/pi-coding-agent --external typebox && tsc --emitDeclarationOnly",
29
37
  "dev": "bun --watch src/index.ts",
30
38
  "test": "bun test tests/unit",
31
39
  "test:integration": "bun test tests/integration",
@@ -62,12 +70,26 @@
62
70
  "node": ">=18"
63
71
  },
64
72
  "peerDependencies": {
65
- "@opencode-ai/plugin": "^1.1.30"
73
+ "@opencode-ai/plugin": "^1.1.30",
74
+ "@earendil-works/pi-coding-agent": "^0.80.6",
75
+ "typebox": "^1.1.38"
76
+ },
77
+ "peerDependenciesMeta": {
78
+ "@opencode-ai/plugin": {
79
+ "optional": true
80
+ },
81
+ "@earendil-works/pi-coding-agent": {
82
+ "optional": true
83
+ },
84
+ "typebox": {
85
+ "optional": true
86
+ }
66
87
  },
67
88
  "devDependencies": {
68
89
  "@biomejs/biome": "2.5.3",
69
- "@opencode-ai/plugin": "1.17.18",
70
- "@opencode-ai/sdk": "1.17.18",
90
+ "@earendil-works/pi-coding-agent": "0.80.6",
91
+ "@opencode-ai/plugin": "1.17.20",
92
+ "@opencode-ai/sdk": "1.17.20",
71
93
  "@semantic-release/exec": "7.1.0",
72
94
  "@types/bun": "latest",
73
95
  "@types/js-yaml": "4.0.9",
@@ -77,8 +99,9 @@
77
99
  "conventional-changelog-conventionalcommits": "9.3.1",
78
100
  "markdownlint-cli": "0.48.0",
79
101
  "rimraf": "6.1.3",
80
- "semantic-release": "25.0.6",
102
+ "semantic-release": "25.0.7",
81
103
  "semantic-release-export-data": "1.2.0",
104
+ "typebox": "1.3.6",
82
105
  "typescript": "6.0.3"
83
106
  },
84
107
  "dependencies": {
@@ -6,10 +6,10 @@ This content is loaded when Phase 4 begins — after the requirements document i
6
6
 
7
7
  #### 4.1 Present Next-Step Options
8
8
 
9
- The Phase 4 menu's visible option count varies by state: no requirements doc hides the review and Proof options, unresolved `Resolve Before Planning` hides `Plan implementation` and `Build it now`, a failing direct-to-work gate hides `Build it now`. Count the visible options for the current state and choose the rendering mode accordingly:
9
+ The Phase 4 menu's visible option count varies by state: no requirements doc hides the review option, unresolved `Resolve Before Planning` hides `Plan implementation` and `Build it now`, a failing direct-to-work gate hides `Build it now`. Count the visible options for the current state and choose the rendering mode accordingly:
10
10
 
11
11
  - **4 or fewer visible:** use the platform's blocking question tool (`question` in OpenCode — call `ToolSearch` with `select:question` first if its schema isn't loaded; `request_user_input` in Codex; `ask_user` in Gemini, `ask_user` in Pi (requires the `pi-ask-user` extension)). This is the default.
12
- - **5 or more visible:** render as a numbered list in chat. This is the narrow option-overflow fallback; trimming would hide legitimate choices (plan, review, Proof, build, refine, pause are all distinct destinations). Include a hint that free-form input is accepted ("Pick a number or describe what you want.") so the numbered list retains the blocking tool's open-endedness.
12
+ - **5 or more visible:** render as a numbered list in chat. This is the narrow option-overflow fallback; trimming would hide legitimate choices (plan, review, build, refine, pause are all distinct destinations). Include a hint that free-form input is accepted ("Pick a number or describe what you want.") so the numbered list retains the blocking tool's open-endedness.
13
13
 
14
14
  Never silently skip the question.
15
15
 
@@ -47,10 +47,9 @@ Present only the options that apply. Renumber so visible options stay contiguous
47
47
 
48
48
  1. **Plan implementation with `ce-plan` (Recommended)** - Move to `ce-plan` for structured implementation planning. Shown only when `Resolve Before Planning` is empty.
49
49
  2. **Agent review of requirements doc with `ce-doc-review`** - Dispatch reviewer agents to check the doc for coherence, feasibility, scope, and other persona-specific issues; auto-apply safe fixes; route remaining findings interactively. Shown only when a requirements document exists.
50
- 3. **Open in Proof review and comment to iterate with the agent** - Open the doc in Every's Proof editor, iterate with the agent via comments, or copy a link to share with others. Shown only when a requirements document exists.
51
- 4. **Build it now with `ce-work` (skip planning)** - Skip planning and move to `ce-work`; suited to lightweight, well-defined changes. Shown only when `Resolve Before Planning` is empty **and** scope is lightweight, success criteria are clear, scope boundaries are clear, and no meaningful technical or research questions remain (the "direct-to-work gate").
52
- 5. **More clarifying questions to sharpen the doc** - Keep refining scope, edge cases, constraints, and preferences through further dialogue. Always shown.
53
- 6. **Done for now** - Pause; the requirements doc is saved and can be resumed later. Always shown.
50
+ 3. **Build it now with `ce-work` (skip planning)** - Skip planning and move to `ce-work`; suited to lightweight, well-defined changes. Shown only when `Resolve Before Planning` is empty **and** scope is lightweight, success criteria are clear, scope boundaries are clear, and no meaningful technical or research questions remain (the "direct-to-work gate").
51
+ 4. **More clarifying questions to sharpen the doc** - Keep refining scope, edge cases, constraints, and preferences through further dialogue. Always shown.
52
+ 5. **Done for now** - Pause; the requirements doc is saved and can be resumed later. Always shown.
54
53
 
55
54
  **Post-review nudge (subsequent rounds only):** If the user has already run `ce-doc-review` this session and residual P0/P1 findings remain unaddressed, add a one-line prose nudge adjacent to the menu (e.g., "Document review flagged 2 P1 findings you may want to address — pick \"Agent review of requirements doc\" to run another pass."). Reference the option by label, not number: the menu renumbers when `Resolve Before Planning` hides `Plan implementation` and `Build it now`, so a hardcoded option number can point users at the wrong action. Do not add a separate menu option; reuse the existing agent-review option.
56
55
 
@@ -72,26 +71,6 @@ Immediately load the `ce-work` skill in the current session using the finalized
72
71
 
73
72
  **If user selects "More clarifying questions to sharpen the doc":** Return to Phase 1.3 (Collaborative Dialogue) and continue asking the user clarifying questions one at a time to further refine scope, edge cases, constraints, and preferences. Continue until the user is satisfied, then return to Phase 4. Do not show the closing summary yet.
74
73
 
75
- **If user selects "Open in Proof — review and comment to iterate with the agent":**
76
-
77
- Load the `ce-proof` skill in HITL-review mode with:
78
-
79
- - **source file:** `docs/brainstorms/YYYY-MM-DD-<topic>-requirements.md`
80
- - **doc title:** `Requirements: <topic title>`
81
- - **identity:** `ai:systematic` / `Systematic`
82
- - **recommended next step:** `ce-plan` (shown in the ce-proof skill's final terminal output)
83
-
84
- Follow `references/hitl-review.md` in the ce-proof skill. It uploads the doc, prompts the user for review in Proof's web UI, ingests each thread by reading it fresh and replying in-thread, applies agreed edits as tracked suggestions, and syncs the final markdown back to the source file atomically on proceed.
85
-
86
- When the ce-proof skill returns control:
87
-
88
- - `status: proceeded` with `localSynced: true` → the requirements doc on disk now reflects the review. Return to the Phase 4 options and re-render the menu (the doc may have changed substantially during review, so option eligibility can shift — re-evaluate `Resolve Before Planning`, direct-to-work gate, and residual ce-doc-review findings against the updated doc).
89
- - `status: proceeded` with `localSynced: false` → the reviewed version lives in Proof at `docUrl` but the local copy is stale. Offer to pull the Proof doc to `localPath` using the ce-proof skill's Pull workflow. Re-render the Phase 4 menu after the pull completes (or is declined). If the pull was declined, include a one-line note above the menu that `<localPath>` is stale vs. Proof — otherwise `Plan implementation` / `Build it now` / `Agent review of requirements doc` will silently read the pre-review copy (ce-doc-review would analyze stale content, and planning or work would skip the user's Proof edits).
90
- - `status: done_for_now` → the doc on disk may be stale if the user edited in Proof before leaving. Offer to pull the Proof doc to `localPath` so the local requirements file stays in sync, then return to the Phase 4 options. If the pull was declined, include the stale-local note above the menu. `done_for_now` means the user stopped the HITL loop without syncing — it does not mean they ended the whole brainstorm; they may still want to plan implementation, run an agent review, or keep refining the doc.
91
- - `status: aborted` → fall back to the Phase 4 options without changes.
92
-
93
- If the initial upload fails (network error, Proof API down), retry once after a short wait. If it still fails, tell the user the upload didn't succeed and briefly explain why, then return to the Phase 4 options — don't leave them wondering why the option did nothing.
94
-
95
74
  **If user selects "Done for now":** Display the closing summary (see 4.3) and end the turn.
96
75
 
97
76
  #### 4.3 Closing Summary
@@ -59,5 +59,4 @@ When the conversation has enough material to narrow — reflect back what you've
59
59
 
60
60
  - **Create a plan** → hand off to `ce:plan` with the decided goal and constraints
61
61
  - **Save summary to disk** → write the summary as a markdown file in the current working directory
62
- - **Open in Proof (web app) — review and comment to iterate with the agent** → load the `ce-proof` skill to open the doc in Every's Proof editor, iterate with the agent via comments, or copy a link to share with others
63
62
  - **Done** → the conversation was the value, no artifact needed