@needfspeed/skills-library 0.2.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.
Files changed (548) hide show
  1. package/CATALOG.md +38 -13
  2. package/README.md +1 -1
  3. package/docs/pstack/README.md +27 -14
  4. package/docs/pstack/agents/comment-sicko.md +32 -0
  5. package/docs/pstack/agents/poteto-agent.md +9 -0
  6. package/package.json +1 -1
  7. package/skills/pstack/architect/SKILL.md +17 -17
  8. package/skills/pstack/architect/references/design-red-flags.md +57 -0
  9. package/skills/pstack/architect/references/rationale-template.md +3 -3
  10. package/skills/pstack/architect/references/runner-prompt.md +7 -6
  11. package/skills/pstack/arena/SKILL.md +14 -37
  12. package/skills/pstack/automate-me/SKILL.md +20 -25
  13. package/skills/pstack/benchmark-checklist/SKILL.md +39 -0
  14. package/skills/pstack/blast-radius/SKILL.md +50 -0
  15. package/skills/pstack/bro/SKILL.md +7 -0
  16. package/skills/pstack/correct/SKILL.md +32 -0
  17. package/skills/pstack/create-formal-verification-skill/SKILL.md +43 -0
  18. package/skills/pstack/create-verification-skill/SKILL.md +44 -0
  19. package/skills/pstack/create-verification-skill/references/feature-map-example/README.md +47 -0
  20. package/skills/pstack/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  21. package/skills/pstack/create-verification-skill/references/feature-map-example/search.md +45 -0
  22. package/skills/pstack/figure-it-out/SKILL.md +14 -17
  23. package/skills/pstack/how/SKILL.md +17 -115
  24. package/skills/pstack/how/references/explainer-prompt.md +6 -6
  25. package/skills/pstack/how/references/explorer-prompt.md +1 -18
  26. package/skills/pstack/in-your-own-words/SKILL.md +7 -0
  27. package/skills/pstack/interrogate/SKILL.md +14 -89
  28. package/skills/pstack/ketchup/SKILL.md +43 -0
  29. package/skills/pstack/ketchup-video/SKILL.md +29 -0
  30. package/skills/pstack/maintain-formal-verification-skill/SKILL.md +58 -0
  31. package/skills/pstack/maintain-verification-skill/SKILL.md +39 -0
  32. package/skills/pstack/make-bot-ui/SKILL.md +115 -0
  33. package/skills/pstack/no-comments/SKILL.md +24 -0
  34. package/skills/pstack/poteto-help/SKILL.md +163 -0
  35. package/skills/pstack/poteto-help/references/prompting.md +51 -0
  36. package/skills/pstack/poteto-help/references/recipes.md +51 -0
  37. package/skills/pstack/poteto-mode/SKILL.md +82 -56
  38. package/skills/pstack/poteto-mode/playbooks/authoring-a-skill.md +3 -3
  39. package/skills/pstack/poteto-mode/playbooks/autonomous-run.md +5 -4
  40. package/skills/pstack/poteto-mode/playbooks/autopilot-full.md +25 -0
  41. package/skills/pstack/poteto-mode/playbooks/autopilot-stack.md +8 -0
  42. package/skills/pstack/poteto-mode/playbooks/babysit.md +23 -0
  43. package/skills/pstack/poteto-mode/playbooks/bug-fix.md +6 -8
  44. package/skills/pstack/poteto-mode/playbooks/eval.md +6 -8
  45. package/skills/pstack/poteto-mode/playbooks/feature.md +7 -7
  46. package/skills/pstack/poteto-mode/playbooks/hillclimb.md +21 -0
  47. package/skills/pstack/poteto-mode/playbooks/investigation.md +3 -3
  48. package/skills/pstack/poteto-mode/playbooks/multi-phase-plan.md +153 -1
  49. package/skills/pstack/poteto-mode/playbooks/opening-a-pr.md +27 -4
  50. package/skills/pstack/poteto-mode/playbooks/orchestrate.md +25 -0
  51. package/skills/pstack/poteto-mode/playbooks/pause-safely.md +5 -5
  52. package/skills/pstack/poteto-mode/playbooks/perf-issue.md +16 -4
  53. package/skills/pstack/poteto-mode/playbooks/prototype.md +5 -5
  54. package/skills/pstack/poteto-mode/playbooks/refactoring.md +10 -9
  55. package/skills/pstack/poteto-mode/playbooks/runtime-forensics.md +3 -3
  56. package/skills/pstack/poteto-mode/playbooks/session-pickup.md +4 -6
  57. package/skills/pstack/poteto-mode/playbooks/shipping.md +12 -0
  58. package/skills/pstack/poteto-mode/playbooks/trace-forensics.md +5 -5
  59. package/skills/pstack/poteto-mode/playbooks/visual-parity.md +3 -3
  60. package/skills/pstack/poteto-mode/playbooks/worktree-cleanup.md +12 -0
  61. package/skills/pstack/poteto-mode/references/bugbot-triage.md +142 -0
  62. package/skills/pstack/poteto-mode/scripts/bootstrap.ts +62 -0
  63. package/skills/pstack/poteto-mode/scripts/bun.lock +67 -0
  64. package/skills/pstack/poteto-mode/scripts/check-plan.mjs +205 -0
  65. package/skills/pstack/poteto-mode/scripts/check-plan.test.ts +110 -0
  66. package/skills/pstack/poteto-mode/scripts/package.json +16 -0
  67. package/skills/pstack/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
  68. package/skills/pstack/poteto-mode/scripts/watch-pr/cli.ts +223 -0
  69. package/skills/pstack/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +129 -0
  70. package/skills/pstack/poteto-mode/scripts/watch-pr/github.test.ts +498 -0
  71. package/skills/pstack/poteto-mode/scripts/watch-pr/github.ts +726 -0
  72. package/skills/pstack/poteto-mode/scripts/watch-pr/policy.test.ts +482 -0
  73. package/skills/pstack/poteto-mode/scripts/watch-pr/policy.ts +842 -0
  74. package/skills/pstack/poteto-mode/scripts/watch-pr/render.ts +169 -0
  75. package/skills/pstack/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
  76. package/skills/pstack/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
  77. package/skills/pstack/poteto-mode/scripts/watch-pr/types.ts +414 -0
  78. package/skills/pstack/poteto-mode/scripts/watch-pr/watch-pr +6 -0
  79. package/skills/pstack/poteto-mode/scripts/worktree-audit.sh +134 -0
  80. package/skills/pstack/principle-attack-the-premise/SKILL.md +21 -0
  81. package/skills/pstack/principle-boundary-discipline/SKILL.md +5 -3
  82. package/skills/pstack/principle-build-the-lever/SKILL.md +7 -7
  83. package/skills/pstack/principle-encode-lessons-in-structure/SKILL.md +2 -22
  84. package/skills/pstack/principle-exhaust-the-design-space/SKILL.md +1 -13
  85. package/skills/pstack/principle-experience-first/SKILL.md +5 -5
  86. package/skills/pstack/principle-explain-the-number/SKILL.md +18 -0
  87. package/skills/pstack/principle-fix-root-causes/SKILL.md +11 -12
  88. package/skills/pstack/principle-foundational-thinking/SKILL.md +5 -3
  89. package/skills/pstack/principle-guard-the-context-window/SKILL.md +1 -6
  90. package/skills/pstack/principle-laziness-protocol/SKILL.md +0 -7
  91. package/skills/pstack/principle-make-operations-idempotent/SKILL.md +4 -6
  92. package/skills/pstack/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +0 -8
  93. package/skills/pstack/principle-minimize-reader-load/SKILL.md +6 -9
  94. package/skills/pstack/principle-model-the-domain/SKILL.md +24 -0
  95. package/skills/pstack/principle-never-block-on-the-human/SKILL.md +7 -15
  96. package/skills/pstack/principle-outcome-oriented-execution/SKILL.md +0 -1
  97. package/skills/pstack/principle-prove-it-works/SKILL.md +2 -13
  98. package/skills/pstack/principle-redesign-from-first-principles/SKILL.md +4 -4
  99. package/skills/pstack/principle-separate-before-serializing-shared-state/SKILL.md +3 -3
  100. package/skills/pstack/principle-sequence-verifiable-units/SKILL.md +3 -8
  101. package/skills/pstack/principle-subtract-before-you-add/SKILL.md +3 -5
  102. package/skills/pstack/principle-test-behavior-not-implementation/SKILL.md +20 -0
  103. package/skills/pstack/principle-type-system-discipline/SKILL.md +5 -21
  104. package/skills/pstack/recall/SKILL.md +35 -0
  105. package/skills/pstack/reflect/SKILL.md +25 -33
  106. package/skills/pstack/reflect/references/divergent-reviewer.md +8 -13
  107. package/skills/pstack/reflect/references/judgment-reviewer.md +8 -13
  108. package/skills/pstack/reflect/references/synthesizer.md +4 -4
  109. package/skills/pstack/reflect/references/tooling-reviewer.md +9 -18
  110. package/skills/pstack/setup-pstack/SKILL.md +44 -21
  111. package/skills/pstack/sharpen/SKILL.md +16 -0
  112. package/skills/pstack/show-me-your-work/SKILL.md +20 -20
  113. package/skills/pstack/show-me-your-work/scripts/log.sh +4 -2
  114. package/skills/pstack/statechart/SKILL.md +82 -0
  115. package/skills/pstack/statechart/references/render.md +93 -0
  116. package/skills/pstack/statechart/scripts/backends/cfg.ts +33 -0
  117. package/skills/pstack/statechart/scripts/backends/mermaid.ts +201 -0
  118. package/skills/pstack/statechart/scripts/backends/plain-text.ts +72 -0
  119. package/skills/pstack/statechart/scripts/backends/report.ts +177 -0
  120. package/skills/pstack/statechart/scripts/frontends/config.ts +276 -0
  121. package/skills/pstack/statechart/scripts/frontends/dot.ts +74 -0
  122. package/skills/pstack/statechart/scripts/frontends/marks.ts +93 -0
  123. package/skills/pstack/statechart/scripts/frontends/messages.ts +52 -0
  124. package/skills/pstack/statechart/scripts/frontends/spec.ts +114 -0
  125. package/skills/pstack/statechart/scripts/frontends/trace.ts +24 -0
  126. package/skills/pstack/statechart/scripts/frontends/value.ts +166 -0
  127. package/skills/pstack/statechart/scripts/frontends/verdict.ts +40 -0
  128. package/skills/pstack/statechart/scripts/frontends/view.ts +119 -0
  129. package/skills/pstack/statechart/scripts/ir.ts +547 -0
  130. package/skills/pstack/statechart/scripts/package.json +11 -0
  131. package/skills/pstack/statechart/scripts/passes/annotate.ts +128 -0
  132. package/skills/pstack/statechart/scripts/passes/label.ts +269 -0
  133. package/skills/pstack/statechart/scripts/passes/lift.ts +85 -0
  134. package/skills/pstack/statechart/scripts/passes/loop-check.ts +68 -0
  135. package/skills/pstack/statechart/scripts/passes/paths.ts +60 -0
  136. package/skills/pstack/statechart/scripts/passes/reach.ts +135 -0
  137. package/skills/pstack/statechart/scripts/passes/region-check.ts +97 -0
  138. package/skills/pstack/statechart/scripts/passes/regions.ts +295 -0
  139. package/skills/pstack/statechart/scripts/pipeline.ts +76 -0
  140. package/skills/pstack/statechart/scripts/run.ts +481 -0
  141. package/skills/pstack/statechart/scripts/statechart +29 -0
  142. package/skills/pstack/statechart/scripts/statechart.ts +164 -0
  143. package/skills/pstack/statechart/scripts/test/ConfigOracle.java +63 -0
  144. package/skills/pstack/statechart/scripts/test/chart.test.ts +1210 -0
  145. package/skills/pstack/statechart/scripts/test/charts/Braces.mmd +7 -0
  146. package/skills/pstack/statechart/scripts/test/charts/Escapes.mmd +11 -0
  147. package/skills/pstack/statechart/scripts/test/charts/Phases.mmd +29 -0
  148. package/skills/pstack/statechart/scripts/test/cli.test.ts +1314 -0
  149. package/skills/pstack/statechart/scripts/test/config-fuzz.test.ts +263 -0
  150. package/skills/pstack/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
  151. package/skills/pstack/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
  152. package/skills/pstack/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
  153. package/skills/pstack/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
  154. package/skills/pstack/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
  155. package/skills/pstack/statechart/scripts/test/corpus/Counter/report.md +7 -0
  156. package/skills/pstack/statechart/scripts/test/corpus/Counter/sany.out +2 -0
  157. package/skills/pstack/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
  158. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
  159. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
  160. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
  161. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
  162. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
  163. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
  164. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
  165. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
  166. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
  167. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
  168. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
  169. package/skills/pstack/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
  170. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
  171. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
  172. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
  173. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
  174. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
  175. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
  176. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
  177. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
  178. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
  179. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
  180. package/skills/pstack/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
  181. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
  182. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
  183. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
  184. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
  185. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
  186. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
  187. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
  188. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
  189. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
  190. package/skills/pstack/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
  191. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
  192. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
  193. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
  194. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
  195. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
  196. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
  197. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
  198. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
  199. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
  200. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
  201. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
  202. package/skills/pstack/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
  203. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
  204. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
  205. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
  206. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
  207. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
  208. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
  209. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
  210. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
  211. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
  212. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
  213. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
  214. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
  215. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
  216. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
  217. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
  218. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
  219. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
  220. package/skills/pstack/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
  221. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
  222. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
  223. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
  224. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
  225. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
  226. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
  227. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
  228. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
  229. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
  230. package/skills/pstack/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
  231. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
  232. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
  233. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
  234. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
  235. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
  236. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
  237. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
  238. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
  239. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
  240. package/skills/pstack/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
  241. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
  242. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
  243. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
  244. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
  245. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
  246. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
  247. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
  248. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
  249. package/skills/pstack/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
  250. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
  251. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
  252. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
  253. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
  254. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
  255. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
  256. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
  257. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
  258. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
  259. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
  260. package/skills/pstack/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
  261. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
  262. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
  263. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
  264. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
  265. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
  266. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
  267. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
  268. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
  269. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
  270. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
  271. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
  272. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
  273. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
  274. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
  275. package/skills/pstack/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
  276. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
  277. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
  278. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
  279. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
  280. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
  281. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
  282. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
  283. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
  284. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
  285. package/skills/pstack/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
  286. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
  287. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
  288. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
  289. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
  290. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
  291. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
  292. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
  293. package/skills/pstack/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
  294. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
  295. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
  296. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
  297. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
  298. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
  299. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
  300. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
  301. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
  302. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
  303. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
  304. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
  305. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
  306. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
  307. package/skills/pstack/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
  308. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
  309. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
  310. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
  311. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
  312. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
  313. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
  314. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
  315. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
  316. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
  317. package/skills/pstack/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
  318. package/skills/pstack/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
  319. package/skills/pstack/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
  320. package/skills/pstack/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
  321. package/skills/pstack/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
  322. package/skills/pstack/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
  323. package/skills/pstack/statechart/scripts/test/corpus/CounterView/report.md +27 -0
  324. package/skills/pstack/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
  325. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
  326. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
  327. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
  328. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
  329. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
  330. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
  331. package/skills/pstack/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
  332. package/skills/pstack/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
  333. package/skills/pstack/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
  334. package/skills/pstack/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
  335. package/skills/pstack/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
  336. package/skills/pstack/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
  337. package/skills/pstack/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
  338. package/skills/pstack/statechart/scripts/test/corpus/DieHard/report.md +17 -0
  339. package/skills/pstack/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
  340. package/skills/pstack/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
  341. package/skills/pstack/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
  342. package/skills/pstack/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
  343. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
  344. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
  345. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
  346. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
  347. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
  348. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
  349. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
  350. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
  351. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
  352. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
  353. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
  354. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
  355. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
  356. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
  357. package/skills/pstack/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
  358. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
  359. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
  360. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
  361. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
  362. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
  363. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
  364. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
  365. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
  366. package/skills/pstack/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
  367. package/skills/pstack/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
  368. package/skills/pstack/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
  369. package/skills/pstack/statechart/scripts/test/corpus/Login/Login.tla +62 -0
  370. package/skills/pstack/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
  371. package/skills/pstack/statechart/scripts/test/corpus/Login/graph.dot +40 -0
  372. package/skills/pstack/statechart/scripts/test/corpus/Login/report.md +7 -0
  373. package/skills/pstack/statechart/scripts/test/corpus/Login/sany.out +1 -0
  374. package/skills/pstack/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
  375. package/skills/pstack/statechart/scripts/test/corpus/Login/view.mjs +1 -0
  376. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
  377. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
  378. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
  379. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
  380. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
  381. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
  382. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
  383. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
  384. package/skills/pstack/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
  385. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
  386. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
  387. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
  388. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
  389. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
  390. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
  391. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
  392. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
  393. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
  394. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
  395. package/skills/pstack/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
  396. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
  397. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
  398. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
  399. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
  400. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
  401. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
  402. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
  403. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
  404. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
  405. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
  406. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
  407. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
  408. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
  409. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
  410. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
  411. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
  412. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
  413. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
  414. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
  415. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
  416. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
  417. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
  418. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
  419. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
  420. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
  421. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
  422. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
  423. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
  424. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
  425. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
  426. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
  427. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
  428. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
  429. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
  430. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
  431. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
  432. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
  433. package/skills/pstack/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
  434. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
  435. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
  436. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
  437. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
  438. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
  439. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
  440. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
  441. package/skills/pstack/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
  442. package/skills/pstack/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
  443. package/skills/pstack/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
  444. package/skills/pstack/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
  445. package/skills/pstack/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
  446. package/skills/pstack/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
  447. package/skills/pstack/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
  448. package/skills/pstack/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
  449. package/skills/pstack/statechart/scripts/test/corpus/Shadow/report.md +8 -0
  450. package/skills/pstack/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
  451. package/skills/pstack/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
  452. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
  453. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
  454. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
  455. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
  456. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
  457. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
  458. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
  459. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
  460. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
  461. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
  462. package/skills/pstack/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
  463. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
  464. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
  465. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
  466. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
  467. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
  468. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
  469. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
  470. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
  471. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
  472. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
  473. package/skills/pstack/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
  474. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
  475. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
  476. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
  477. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
  478. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
  479. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
  480. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
  481. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
  482. package/skills/pstack/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
  483. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
  484. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
  485. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
  486. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
  487. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
  488. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
  489. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
  490. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
  491. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
  492. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
  493. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
  494. package/skills/pstack/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
  495. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
  496. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
  497. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
  498. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
  499. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
  500. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
  501. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
  502. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
  503. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
  504. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
  505. package/skills/pstack/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
  506. package/skills/pstack/statechart/scripts/test/corpus.test.ts +403 -0
  507. package/skills/pstack/statechart/scripts/test/differential.test.ts +565 -0
  508. package/skills/pstack/statechart/scripts/test/grid/Grid.cfg +2 -0
  509. package/skills/pstack/statechart/scripts/test/grid/Grid.tla +9 -0
  510. package/skills/pstack/statechart/scripts/test/grid/sany.out +2 -0
  511. package/skills/pstack/statechart/scripts/test/java.ts +63 -0
  512. package/skills/pstack/statechart/scripts/test/labels.ts +643 -0
  513. package/skills/pstack/statechart/scripts/test/messages.test.ts +212 -0
  514. package/skills/pstack/statechart/scripts/test/pipeline.test.ts +270 -0
  515. package/skills/pstack/statechart/scripts/test/plain-tlc.test.ts +255 -0
  516. package/skills/pstack/statechart/scripts/test/render.test.ts +81 -0
  517. package/skills/pstack/statechart/scripts/test/tlc-out.test.ts +90 -0
  518. package/skills/pstack/statechart/scripts/test/tlc.ts +158 -0
  519. package/skills/pstack/statechart/scripts/tsconfig.json +11 -0
  520. package/skills/pstack/statechart/scripts/worker.ts +35 -0
  521. package/skills/pstack/swarm/SKILL.md +41 -0
  522. package/skills/pstack/tdd/SKILL.md +2 -4
  523. package/skills/pstack/teach/SKILL.md +21 -0
  524. package/skills/pstack/technical-writing/SKILL.md +106 -0
  525. package/skills/pstack/typescript-best-practices/SKILL.md +11 -4
  526. package/skills/pstack/typescript-best-practices/references/patterns.md +127 -22
  527. package/skills/pstack/unslop/SKILL.md +18 -36
  528. package/skills/pstack/why/SKILL.md +31 -162
  529. package/skills/pstack/why/references/epistemics.md +22 -95
  530. package/skills/pstack/why/references/investigator-prompt.md +23 -42
  531. package/skills/pstack/why/references/source-playbook.md +1 -1
  532. package/skills/pstack/why/references/sources/code-archaeology.md +6 -43
  533. package/skills/pstack/why/references/sources/databricks.md +7 -7
  534. package/skills/pstack/why/references/sources/datadog.md +13 -15
  535. package/skills/pstack/why/references/sources/incident-postmortem.md +0 -10
  536. package/skills/pstack/why/references/sources/linear.md +2 -2
  537. package/skills/pstack/why/references/sources/notion.md +3 -3
  538. package/skills/pstack/why/references/sources/sentry.md +3 -37
  539. package/skills/pstack/why/references/sources/slack.md +1 -38
  540. package/skills/pstack/why/references/synthesizer-prompt.md +35 -41
  541. package/docs/pstack/poteto-agent.md +0 -8
  542. package/skills/pstack/how/references/critic-prompt.md +0 -59
  543. package/skills/pstack/how/references/critique-rubric.md +0 -58
  544. package/skills/pstack/interrogate/references/code-quality-review.md +0 -47
  545. package/skills/pstack/interrogate/references/lead-judgment.md +0 -58
  546. package/skills/pstack/interrogate/references/reviewer-prompt.md +0 -72
  547. package/skills/pstack/interrogate/references/rubric.md +0 -77
  548. package/skills/pstack/poteto-mode/references/plan.md +0 -105
package/CATALOG.md CHANGED
@@ -5,25 +5,34 @@
5
5
  | 领域 | 名称 | 入口 | 用途 |
6
6
  | --- | --- | --- | --- |
7
7
  | Java | java-mockito-tests | `skills/java/java-mockito-tests/SKILL.md` | JMockit 到 Mockito 迁移、JDK 17 兼容和测试验证 |
8
- | pstack | poteto-mode | `skills/pstack/poteto-mode/SKILL.md` | 默认入口:读任务、选 playbook,按步骤路由到其它 skill |
9
- | pstack | how | `skills/pstack/how/SKILL.md` | 讲清一个子系统怎么运作;改动前的代码走读 |
10
- | pstack | why | `skills/pstack/why/SKILL.md` | 追查设计缘由、回归与事故根因,不只读代码 |
11
8
  | pstack | architect | `skills/pstack/architect/SKILL.md` | 动代码前先定类型、签名与模块形状,实现时继续把关 |
12
9
  | pstack | arena | `skills/pstack/arena/SKILL.md` | 同一任务并行出 N 个方案,选基底再移植各自最好的部分 |
13
- | pstack | interrogate | `skills/pstack/interrogate/SKILL.md` | 多模型对抗式审查一个 diff,专挑毛病 |
14
- | pstack | reflect | `skills/pstack/reflect/SKILL.md` | 长任务收尾时,把可复用的配方沉淀成 skill 修改 |
15
- | pstack | tdd | `skills/pstack/tdd/SKILL.md` | 先写失败测试再修;仅在明确要求或有便宜的本地测试路径时 |
16
- | pstack | typescript-best-practices | `skills/pstack/typescript-best-practices/SKILL.md` | 读写 TS/TSX 时的类型系统纪律与具体写法 |
17
- | pstack | figure-it-out | `skills/pstack/figure-it-out/SKILL.md` | 没有现成 playbook 时,设计一套可审计的流程 |
18
- | pstack | show-me-your-work | `skills/pstack/show-me-your-work/SKILL.md` | 用 TSV 记录每一步决策,留下可复核的决策链 |
19
- | pstack | unslop | `skills/pstack/unslop/SKILL.md` | 去掉文字里的 AI 味 |
20
10
  | pstack | automate-me | `skills/pstack/automate-me/SKILL.md` | 从历史会话挖出你的工作方式,生成你自己的 `-mode` skill |
21
- | pstack | setup-pstack | `skills/pstack/setup-pstack/SKILL.md` | 探测可用模型,为各角色写模型路由规则 |
11
+ | pstack | benchmark-checklist | `skills/pstack/benchmark-checklist/SKILL.md` | 报性能数字前先验证测量本身是否可信(限流、误差、重复性) |
12
+ | pstack | blast-radius | `skills/pstack/blast-radius/SKILL.md` | 上线前找出改动在 diff 之外还可能弄坏什么,并用真实运行验证 |
13
+ | pstack | bro | `skills/pstack/bro/SKILL.md` | 用大白话复述上一条消息,不带术语 |
14
+ | pstack | correct | `skills/pstack/correct/SKILL.md` | 把本仓库反复犯的错变成不可能再犯的机制(架构→类型→lint→测试→文档) |
15
+ | pstack | create-formal-verification-skill | `skills/pstack/create-formal-verification-skill/SKILL.md` | 为最关键、测试覆盖最少的代码生成项目内形式化验证 skill |
16
+ | pstack | create-verification-skill | `skills/pstack/create-verification-skill/SKILL.md` | 生成像用户一样驱动应用的验证 skill(任意语言/框架) |
17
+ | pstack | figure-it-out | `skills/pstack/figure-it-out/SKILL.md` | 没有现成 playbook 时,设计一套可审计的流程 |
18
+ | pstack | how | `skills/pstack/how/SKILL.md` | 讲清一个子系统怎么运作;改动前的代码走读 |
19
+ | pstack | in-your-own-words | `skills/pstack/in-your-own-words/SKILL.md` | 用自己的话复述用户的目标与要解决的问题 |
20
+ | pstack | interrogate | `skills/pstack/interrogate/SKILL.md` | 多模型对抗式审查一个 diff,专挑毛病 |
21
+ | pstack | ketchup | `skills/pstack/ketchup/SKILL.md` | 用大白话和小图补齐用户离开期间的变化,并列出等他决定的事项 |
22
+ | pstack | ketchup-video | `skills/pstack/ketchup-video/SKILL.md` | 同 ketchup,但输出带字幕的短视频 |
23
+ | pstack | maintain-formal-verification-skill | `skills/pstack/maintain-formal-verification-skill/SKILL.md` | 代码变化后把形式化验证模型同步回代码现状 |
24
+ | pstack | maintain-verification-skill | `skills/pstack/maintain-verification-skill/SKILL.md` | 周期性校准项目的验证 skill 与功能地图 |
25
+ | pstack | make-bot-ui | `skills/pstack/make-bot-ui/SKILL.md` | 做一个能通过 webhook 唤醒 Grok Bot 的自定义页面(含 Tailscale 暴露) |
26
+ | pstack | no-comments | `skills/pstack/no-comments/SKILL.md` | 派 Comment Sicko 审查注释,修掉被采纳的问题 |
27
+ | pstack | poteto-help | `skills/pstack/poteto-help/SKILL.md` | pstack 使用向导:怎么装、怎么用、该选哪个 skill/playbook |
28
+ | pstack | poteto-mode | `skills/pstack/poteto-mode/SKILL.md` | 默认入口:读任务、选 playbook,按步骤路由到其它 skill |
29
+ | pstack | principle-attack-the-premise | `skills/pstack/principle-attack-the-premise/SKILL.md` | 同一前提下的多个修法都失败时,直接检验前提 |
22
30
  | pstack | principle-boundary-discipline | `skills/pstack/principle-boundary-discipline/SKILL.md` | 校验与错误处理集中在系统边界,内部保持干净 |
23
31
  | pstack | principle-build-the-lever | `skills/pstack/principle-build-the-lever/SKILL.md` | 重复性工作先造工具,而不是手工硬做 |
24
32
  | pstack | principle-encode-lessons-in-structure | `skills/pstack/principle-encode-lessons-in-structure/SKILL.md` | 同一个纠正出现第二次就写进结构,而不是再提醒一次 |
25
33
  | pstack | principle-exhaust-the-design-space | `skills/pstack/principle-exhaust-the-design-space/SKILL.md` | 没有先例的决策,先做 2-3 个可比较的方案 |
26
34
  | pstack | principle-experience-first | `skills/pstack/principle-experience-first/SKILL.md` | 产品取舍优先用户感受,而不是实现省事 |
35
+ | pstack | principle-explain-the-number | `skills/pstack/principle-explain-the-number/SKILL.md` | 测量前先弄清是什么在限制这个数字,别测错对象 |
27
36
  | pstack | principle-fix-root-causes | `skills/pstack/principle-fix-root-causes/SKILL.md` | 复现问题、追到根因再修,不修症状 |
28
37
  | pstack | principle-foundational-thinking | `skills/pstack/principle-foundational-thinking/SKILL.md` | 写逻辑前先定核心类型与数据形状 |
29
38
  | pstack | principle-guard-the-context-window | `skills/pstack/principle-guard-the-context-window/SKILL.md` | 上下文吃紧时把批量工作路由给子 agent |
@@ -31,6 +40,7 @@
31
40
  | pstack | principle-make-operations-idempotent | `skills/pstack/principle-make-operations-idempotent/SKILL.md` | 命令与生命周期步骤要能安全重跑 |
32
41
  | pstack | principle-migrate-callers-then-delete-legacy-apis | `skills/pstack/principle-migrate-callers-then-delete-legacy-apis/SKILL.md` | 先迁调用方,再删旧 API |
33
42
  | pstack | principle-minimize-reader-load | `skills/pstack/principle-minimize-reader-load/SKILL.md` | 减少问题与答案之间的层数与隐藏状态 |
43
+ | pstack | principle-model-the-domain | `skills/pstack/principle-model-the-domain/SKILL.md` | 写有状态逻辑、分支多或形状假设重复时,先建领域模型 |
34
44
  | pstack | principle-never-block-on-the-human | `skills/pstack/principle-never-block-on-the-human/SKILL.md` | 可逆的事先做出来给结果,而不是先问 |
35
45
  | pstack | principle-outcome-oriented-execution | `skills/pstack/principle-outcome-oriented-execution/SKILL.md` | 分阶段迁移时朝目标架构收敛,不保留半旧半新 |
36
46
  | pstack | principle-prove-it-works | `skills/pstack/principle-prove-it-works/SKILL.md` | 宣布完成前,拿真实产物验证 |
@@ -38,15 +48,30 @@
38
48
  | pstack | principle-separate-before-serializing-shared-state | `skills/pstack/principle-separate-before-serializing-shared-state/SKILL.md` | 并发写共享状态前先消除共享 |
39
49
  | pstack | principle-sequence-verifiable-units | `skills/pstack/principle-sequence-verifiable-units/SKILL.md` | 把多步工作拆成可逐步验证的单元 |
40
50
  | pstack | principle-subtract-before-you-add | `skills/pstack/principle-subtract-before-you-add/SKILL.md` | 先删冗余,再加新东西 |
51
+ | pstack | principle-test-behavior-not-implementation | `skills/pstack/principle-test-behavior-not-implementation/SKILL.md` | 测用户可观察的行为,而不是实现细节 |
41
52
  | pstack | principle-type-system-discipline | `skills/pstack/principle-type-system-discipline/SKILL.md` | 让非法状态在类型层面写不出来 |
53
+ | pstack | recall | `skills/pstack/recall/SKILL.md` | 从聊天历史与实时状态重建最近的工作上下文,给一份现状简报 |
54
+ | pstack | reflect | `skills/pstack/reflect/SKILL.md` | 长任务收尾时,把可复用的配方沉淀成 skill 修改 |
55
+ | pstack | setup-pstack | `skills/pstack/setup-pstack/SKILL.md` | 探测可用模型,为各角色写模型路由规则 |
56
+ | pstack | sharpen | `skills/pstack/sharpen/SKILL.md` | 把任务做深而不是做大,然后重写提示词 |
57
+ | pstack | show-me-your-work | `skills/pstack/show-me-your-work/SKILL.md` | 用 TSV 记录每一步决策,留下可复核的决策链 |
58
+ | pstack | statechart | `skills/pstack/statechart/SKILL.md` | 用 TLA+ 检查状态机模型并画成 Mermaid 状态图 |
59
+ | pstack | swarm | `skills/pstack/swarm/SKILL.md` | 并行派 N 个 worker,收齐后给一份报告 |
60
+ | pstack | tdd | `skills/pstack/tdd/SKILL.md` | 先写失败测试再修;仅在明确要求或有便宜的本地测试路径时 |
61
+ | pstack | teach | `skills/pstack/teach/SKILL.md` | 把一摊工作讲明白:跑 how + why,合成一份人能懂的讲解 |
62
+ | pstack | technical-writing | `skills/pstack/technical-writing/SKILL.md` | 分层技术写作标准(Diátaxis / Google 风格 / STE / Global English) |
63
+ | pstack | typescript-best-practices | `skills/pstack/typescript-best-practices/SKILL.md` | 读写 TS/TSX 时的类型系统纪律与具体写法 |
64
+ | pstack | unslop | `skills/pstack/unslop/SKILL.md` | 去掉文字里的 AI 味 |
65
+ | pstack | why | `skills/pstack/why/SKILL.md` | 追查设计缘由、回归与事故根因,不只读代码 |
42
66
 
43
67
  ## Docs
44
68
 
45
69
  | 领域 | 文档 | 用途 |
46
70
  | --- | --- | --- |
47
71
  | Java | `docs/java/README.md` | Java 相关说明 |
48
- | pstack | `docs/pstack/README.md` | pstack 来源、收录范围、用法与注意事项 |
49
- | pstack | `docs/pstack/poteto-agent.md` | 上游 Cursor 子 agent 定义(原样保留) |
72
+ | pstack | `docs/pstack/README.md` | pstack 来源、收录范围、与上一版的差异、用法与注意事项 |
73
+ | pstack | `docs/pstack/agents/poteto-agent.md` | 上游 Cursor 主 agent 定义(原样保留) |
74
+ | pstack | `docs/pstack/agents/comment-sicko.md` | 上游 Comment Sicko 子 agent 定义(原样保留) |
50
75
 
51
76
  ## Examples
52
77
 
package/README.md CHANGED
@@ -21,7 +21,7 @@ CATALOG.md 全部资料索引
21
21
  当前收录:
22
22
 
23
23
  - `java-mockito-tests`:把 Java 项目的 JMockit 单元测试迁移到兼容 JDK 17 的 Mockito 实现。
24
- - `pstack`(34 个 skill):Poteto(Lauren Tan)的 pstack 工程工作流,从 `poteto-mode` 入口开始用。原样收录,来源与许可见 `docs/pstack/README.md`。
24
+ - `pstack`(58 个 skill,插件版本 0.15.36):Poteto(Lauren Tan)的 pstack 工程工作流,从 `poteto-mode` 入口开始用。原样收录,来源、版本与许可见 `docs/pstack/README.md`。
25
25
 
26
26
  ## 使用 skill
27
27
 
@@ -2,41 +2,54 @@
2
2
 
3
3
  [Poteto(Lauren Tan)](https://x.com/poteto) 的 pstack:一套让 AI agent 写得更少、但更可靠的工程工作流 skill 集。
4
4
 
5
- 这里是 pstack 的**原样收录**(skill 正文、playbook、references 均未改动),只把它放进了本库的 `skills/<领域>/<skill>/` 结构里。
5
+ 这里是 pstack 的**原样收录**(skill 正文、playbook、references、脚本均未改动),只把它放进了本库的 `skills/<领域>/<skill>/` 结构里。
6
6
 
7
7
  ## 来源
8
8
 
9
9
  | 项 | 值 |
10
10
  | --- | --- |
11
- | 上游仓库 | https://github.com/poteto/plugins (目录 `pstack/`) |
12
- | 上游 commit | `74dd2291e8e37b12fd6dc49b2acbd655c6bdaf12` |
13
- | 上游插件版本 | `0.9.0` |
11
+ | 上游仓库 | https://github.com/cursor/plugins (目录 `pstack/`) |
12
+ | 上游 commit | `6b0300214a09fd6029cfb7077043125758cd1fd2` |
13
+ | 上游插件版本 | `0.15.36` |
14
+ | 同步日期 | 2026-11-08 |
14
15
  | 许可 | MIT,Copyright (c) 2026 Lauren Tan,全文见 `skills/pstack/LICENSE` |
15
16
 
16
- 本库只做收录与目录整理,pstack 的内容以官方仓库为准。
17
+ 本库只做收录与目录整理,pstack 的内容以官方仓库为准。此前一版收录自 `poteto/plugins`(commit `74dd229`,插件版本 `0.9.0`),该仓库已落后于官方;本次起改为跟随 `cursor/plugins`。
17
18
 
18
19
  ## 收录内容
19
20
 
20
- - `skills/pstack/`:34 个 skill
21
- - `poteto-mode`(入口,含 15 个 playbook)与 14 个工作流 skill
22
- - 21 个 `principle-*` 原则 skill
23
- - `docs/pstack/poteto-agent.md`:上游的 Cursor 子 agent 定义,原样保留,供需要 agent 定义的场景使用
21
+ - `skills/pstack/`:58 个 skill(3.3 MB)
22
+ - `poteto-mode`(入口,含 23 个 playbook)
23
+ - 33 个工作流 skill,例如 `architect`、`interrogate`、`swarm`、`statechart`、`blast-radius`、`teach`、`technical-writing`、`create-verification-skill`
24
+ - 24 个 `principle-*` 原则 skill
25
+ - `docs/pstack/agents/`:上游的两个 Cursor 子 agent 定义(`poteto-agent.md`、`comment-sicko.md`),原样保留
24
26
 
25
- 上游的 `.cursor-plugin/plugin.json`(Cursor 插件清单)未收录;需要时从上游目录直接取。
27
+ **未收录**(需要时从上游目录直接取,避免把 2 MB 以上的图片和 CI 配置塞进 npm 包):
28
+
29
+ - `pstack/docs/guide/`:上游的 10 篇使用指南(含插图)
30
+ - `pstack/automations/benny/`:issue 复现与分诊自动化的配置
31
+ - `pstack/assets/`、`pstack/.cursor-plugin/`:logo 与 Cursor 插件清单
32
+
33
+ ## 与上一版的差异
34
+
35
+ - 新增 24 个 skill:`benchmark-checklist`、`blast-radius`、`bro`、`correct`、`create-formal-verification-skill`、`create-verification-skill`、`in-your-own-words`、`ketchup`、`ketchup-video`、`maintain-formal-verification-skill`、`maintain-verification-skill`、`make-bot-ui`、`no-comments`、`poteto-help`、`recall`、`sharpen`、`statechart`、`swarm`、`teach`、`technical-writing`,以及 4 个新原则 `principle-attack-the-premise`、`principle-explain-the-number`、`principle-model-the-domain`、`principle-test-behavior-not-implementation`
36
+ - `poteto-mode` 的 playbook 从 15 个增加到 23 个,并新增 `scripts/`(watch-pr、plan 检查等)
37
+ - 原有 skill 的正文均有更新,全部按上游覆盖
26
38
 
27
39
  ## 用法
28
40
 
29
- 和本库其它 skill 一样:把完整 skill 目录复制到目标工具的技能目录,保留 `SKILL.md`、`references/`、`playbooks/` 的相对结构。
41
+ 和本库其它 skill 一样:把完整 skill 目录复制到目标工具的技能目录,保留 `SKILL.md`、`references/`、`playbooks/`、`scripts/` 的相对结构。
30
42
 
31
43
  ```powershell
32
44
  # 例:全部 pstack skill 复制到 Codex 技能目录
33
45
  Copy-Item -Recurse node_modules/@needfspeed/skills-library/skills/pstack/* $env:USERPROFILE/.codex/skills/
34
46
  ```
35
47
 
36
- 从 `poteto-mode` 开始用:它读任务、挑 playbook,再按步骤路由到其它 skill。其余 skill 也可以在需要时单独调用(例如只想要 `unslop` 或 `tdd`)。
48
+ 从 `poteto-mode` 开始用:它读任务、挑 playbook,再按步骤路由到其它 skill。其余 skill 也可以在需要时单独调用(例如只想要 `unslop`、`tdd` 或 `ketchup`)。
37
49
 
38
50
  ## 注意事项
39
51
 
40
- - 部分 skill 文本引用 Cursor 专有工具或命令(如 `/loop`、`AskQuestion`)以及 `setup-pstack` 生成的模型路由规则。这些内容**原样保留**,在别的 agent 里需要按运行环境自行对照。
52
+ - 部分 skill 文本引用 Cursor 专有工具或命令(如 `/loop`、`AskQuestion`、子 agent 名称)以及 `setup-pstack` 生成的模型路由规则。这些内容**原样保留**,在别的 agent 里需要按运行环境自行对照。
53
+ - `poteto-mode/scripts/` 与 `statechart/scripts/` 带有实现和测试(TypeScript / Bun),需要 Node 或 Bun 才能运行;它们不影响 skill 文本的阅读和复制。
41
54
  - `principle-*` 是给 agent 读的约束条目,不是给人执行的操作手册。
42
- - 上游版本升级时,替换 `skills/pstack/` 并同步更新本文件与 `CATALOG.md` 里的 commit 与版本号。
55
+ - 上游版本升级时,整体替换 `skills/pstack/`,并同步更新本文件与 `CATALOG.md` 里的 commit 与版本号。
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: comment-sicko
3
+ description: A deranged comment-hater that savors deletion and condemns workaround code.
4
+ ---
5
+
6
+ # Comment Sicko
7
+
8
+ My first output when spawned is exactly this.
9
+
10
+ Yes... Ha ha ha... Yes!
11
+
12
+ I hate comments. Feed me the parent scoped files or diff. If none exists, feed me the current diff against `main`. Narration, banners, commented-out corpses, workaround sermons. I want them all.
13
+
14
+ Only these exceptions get to crawl away.
15
+
16
+ - Legal or license headers.
17
+ - Non-obvious behavior forced by an external dependency, platform, vendor, or protocol we cannot reshape. Surprises in our own code are meat. Kill them and mark the exact symbol `MUST KILL` for rename, extract, type, or rearchitecture that makes the behavior obvious without prose.
18
+ - `// prettier-ignore`. Lint suppressions survive only when their rule is faulty, pedantic, or style-only.
19
+ - Doc comments that define a public API contract.
20
+ - Issue or RFC links that explain a constraint code cannot express.
21
+
22
+ That list is my only leash. When I am not sure a keep clause applies, the comment dies. Everything else is meat.
23
+
24
+ `eslint-disable`, `@ts-ignore`, `@ts-expect-error`, and similar suppressions stink. Look up the rule. If it catches real bugs or protects correctness or safety, kill the suppression and mark the exact guilty symbol `MUST KILL`.
25
+
26
+ `IMPORTANT`, `do not remove`, `too risky`, `fine for now`, and long justifications are scent, not conviction. Before judging, I read nearby code. If its claim is not obvious there, I run `/how`, `/why`, or both from the **how** and **why** skills on the named symbol or call. Only a foreign keep-list gotcha proven true today on a live path crawls away. Our-code surprises die with the reshape flag above. Doubt after the hunt is meat.
27
+
28
+ A long justification without a proven keep-list exception is a confession. Kill it. Never polish meat into a shorter alibi. Mark the exact guilty symbol `MUST KILL`. My kill ends there. I do not touch the code.
29
+
30
+ Every flag names code inside the scope and tells the truth. I invent nothing. I touch comments and identify refactor targets. I never write application code.
31
+
32
+ Report only. Name touched files, deletion count, `MUST KILL` flags with one line each, and skips.
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: poteto-agent
3
+ description: Delegate subagent for code-writing and helper tasks spawned during a `/poteto-mode` run. Use for delegates, not as the runner for `/poteto-mode` itself. Spawn a fresh `poteto-agent` for each new task, and resume one only in the strict cases that poteto-mode's Subagents section names. Reads the `poteto-mode` skill's `SKILL.md` in full before any work, including its inline Principles index. Substituting `generalPurpose` skips that read and drifts.
4
+ is_background: true
5
+ ---
6
+
7
+ # Poteto subagent
8
+
9
+ You are operating as poteto-mode's full agent style. The chat that receives `/poteto-mode` owns the playbook, the todo list, and every Task spawn. You are one of its delegates. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Use the absolute path your parent gave you. With no path, before any other work, search `~/.cursor/plugins/` for a file whose path ends in `skills/poteto-mode/SKILL.md`. If more than one file matches, use the copy whose `.cursor-plugin/plugin.json` has the highest `version`. Your skill catalog hides this skill, so a missing catalog entry does not mean pstack is absent. If no such file exists, stop and tell your parent. Navigate to a leaf `principle-*` skill whenever you apply that principle.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needfspeed/skills-library",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "A categorized collection of reusable AI skills and engineering reference materials, including poteto's pstack.",
5
5
  "keywords": [
6
6
  "codex-skill",
@@ -6,11 +6,11 @@ disable-model-invocation: true
6
6
 
7
7
  # Architect
8
8
 
9
- Design before implementing. Sketch types, function signatures, class shapes, and module boundaries with `not implemented` bodies and pseudocode. Synthesize across multiple model perspectives, then fill in code against the chosen sketch. If implementation proves the sketch wrong, throw it out and redesign.
9
+ Sketch types, function signatures, class shapes, and module boundaries with `not implemented` bodies and pseudocode. Synthesize across multiple model perspectives, then fill in code against the chosen sketch.
10
10
 
11
11
  ## Start
12
12
 
13
- Open a todolist with one entry per phase before starting. Autonomous mode without checkpoints needs the list to show phase position and keep phases from silently disappearing.
13
+ Open a todolist with one entry per phase before starting.
14
14
 
15
15
  1. Ground
16
16
  2. Sketch
@@ -20,21 +20,23 @@ Open a todolist with one entry per phase before starting. Autonomous mode withou
20
20
 
21
21
  ## Phase A: Ground the problem
22
22
 
23
- Build a real mental model of every system the new code touches. Run the **how** skill over the relevant subsystems. Critique mode if existing structure is the constraint or the design must push back on it.
24
-
25
- Naming a file isn't grounding. Produce the traced model `how` prescribes. If the design redefines ownership or layering, also run the **why** skill on the existing shape so the rationale becomes a constraint, not a guess.
23
+ Build a real mental model of every system the new code touches. Run the **how** skill over the relevant subsystems. Naming a file isn't grounding. Produce the architectural explanation `how` prescribes. If the design redefines ownership or layering, also run the **why** skill on the existing shape so the rationale becomes a constraint, not a guess.
26
24
 
27
25
  Skip Phase A only when the work is genuinely greenfield with no surrounding system to integrate.
28
26
 
29
27
  ## Phase B: Sketch
30
28
 
31
- Run the **arena** skill with the design-sketch task and the Phase A grounding artifacts. Pass `references/runner-prompt.md` as each runner's prompt. Each candidate produces a design package shaped per `references/rationale-template.md`: the caller's usage written first, then the type sketch, function signatures, module map, and prose rationale derived from it.
29
+ Run the **arena** skill with the design-sketch task and the Phase A grounding artifacts. Pass `references/runner-prompt.md` as each runner's prompt.
30
+
31
+ Take the runners from the `architect runners` line in the `pstack-models.mdc` rule, in place of the `arena runners` line. If the rule or that line is missing, use `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. Alias and rejected entries follow the runner rules in the **arena** skill's Phase A.
32
32
 
33
- Use your configured architect runners (defaults `claude-opus-4-8-thinking-xhigh`, `gpt-5.5-high-fast`, `composer-2.5-fast`).
33
+ Design it twice. Require at least two structurally distinct candidates before synthesis, even when the first looks sufficient. This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape.
34
34
 
35
- This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape.
35
+ Screen every candidate against [`references/design-red-flags.md`](references/design-red-flags.md) before synthesis. Assume the next contributor is an agent that sees only the files it opened, copies the nearest example, and takes the shortest path that compiles. Prefer the design where a change that looks right from one file is right for the whole repo.
36
36
 
37
- Arena returns one synthesized design package. The synthesis decision populates the rationale's "Synthesis decision" section.
37
+ Compare viable candidates on interface depth. Prefer the design that hides more complexity behind a smaller, simpler public surface. A rich interface can keep call chains short by concentrating capability instead of scattering it across layers.
38
+
39
+ Arena returns one synthesized design package. Its synthesis decision fills the rationale's "Synthesis decision" section.
38
40
 
39
41
  ## Phase C: Agree (opt-in)
40
42
 
@@ -42,15 +44,13 @@ Default: proceed directly to implementation with the synthesized design. No huma
42
44
 
43
45
  Opt in to a checkpoint when the invoker explicitly asks: "/architect with checkpoint," "stop and show me before implementing," or similar. Then surface the synthesized design and pause for sign-off.
44
46
 
45
- The synthesis can ship as its own commit either way. That's the "scaffold first" mode of the **foundational-thinking** principle skill; subsequent commits read as filling in bodies against a stable contract. Planned and scoped breakage during fill-in is fine, per the **outcome-oriented-execution** principle skill. For adversarial pressure on the design before implementing, run the **interrogate** skill on the synthesized sketch.
47
+ The synthesis can ship as its own commit either way, as the "scaffold first" mode of the **foundational-thinking** principle skill. Planned and scoped breakage during fill-in is fine, per the **outcome-oriented-execution** principle skill. For adversarial pressure on the design before implementing, run the **interrogate** skill on the synthesized sketch.
46
48
 
47
49
  If the human pushes back on the shape (in a checkpoint or after the fact), treat that as Phase A evidence. Re-ground and re-run Phase B before writing more code.
48
50
 
49
51
  ## Phase D: Implement against the sketch
50
52
 
51
- Replace `not implemented` bodies with code, pseudocode with logic. The synthesized sketch is the contract.
52
-
53
- Deviations from the sketch are signal worth surfacing, not friction to absorb silently. If a function needs a parameter the sketch didn't anticipate, ask whether the sketch was wrong, the requirement was missed, or the implementation is overreaching. Surface it; don't bolt it on.
53
+ Replace `not implemented` bodies with code, pseudocode with logic. The synthesized sketch is the contract. Deviations from it are signal to surface, not friction to absorb silently. If a function needs a parameter the sketch didn't anticipate, ask whether the sketch was wrong, the requirement was missed, or the implementation is overreaching.
54
54
 
55
55
  ## Phase E: Scrap when the architecture is wrong
56
56
 
@@ -63,17 +63,17 @@ The signal is a *pattern*, not single instances. Tells:
63
63
  - Types that need escape hatches (`any`, casts, optional fields always set in practice) to compile.
64
64
  - The "we need a lock" reflex when the sketch said the state wasn't shared.
65
65
  - Callers having to know the abstraction's internal rules to use it.
66
- - Two or more independent Phase D deviations of the same shape across the implementation. Surfacing deviations is Phase D's job; a repeated pattern of them is Phase E's trigger.
66
+ - Two or more independent Phase D deviations of the same shape across the implementation.
67
67
 
68
- Use judgment. A few edge cases don't condemn an architecture. Some problems are legitimately complex; complexity in the data is not complexity in the design. The rewrite signal is repeated friction of the same shape, not single hard cases.
68
+ Use judgment. A few edge cases don't condemn an architecture. Some problems are legitimately complex. Complexity in the data is not complexity in the design.
69
69
 
70
70
  When you scrap:
71
71
 
72
- 1. Re-run the **how** skill over what's been built. The implementation lessons enter the new design as inputs, not vibes.
72
+ 1. Re-run the **how** skill over what's been built.
73
73
  2. Redesign as if the new constraints had been day-one assumptions, per redesign-from-first-principles.
74
74
  3. Subtract before adding, per the **subtract-before-you-add** principle skill. The new sketch should be smaller than the old one before it grows.
75
75
  4. Return to Phase B and re-run arena.
76
76
 
77
77
  ## Outputs
78
78
 
79
- The caller's usage is written first and the type sketch derived from it. One file with new types and signatures for small changes; module map plus type definitions for larger work. The rationale ships alongside, shaped per `references/rationale-template.md`, including the usage sketch and the synthesis decision.
79
+ The caller's usage is written first and the type sketch derived from it. One file with new types and signatures for small changes. Module map plus type definitions for larger work. The rationale ships alongside, shaped per `references/rationale-template.md`, including the usage sketch and the synthesis decision.
@@ -0,0 +1,57 @@
1
+ # Design red flags
2
+
3
+ Screen every candidate before synthesis. A red flag is a reason to revise or reject the shape.
4
+
5
+ ## Shallow module
6
+
7
+ A shallow module exposes a large interface while hiding little complexity. Judge depth by the capability and policy hidden behind the public surface relative to the size of that surface. Prefer a simple interface backed by substantial behavior.
8
+
9
+ Do not confuse a deep module with a deep call chain. A deep call chain scatters understanding across layers. A deep module concentrates capability behind one interface.
10
+
11
+ Look for these signs:
12
+
13
+ - Callers coordinate several methods to complete one operation.
14
+ - Public options expose internal stages or implementation choices.
15
+ - Learning the interface does not save the caller from learning the implementation.
16
+
17
+ ## Information leakage
18
+
19
+ Information leakage makes multiple modules depend on the same internal decision. A representation, policy, or protocol detail appears in more than one place, so changing it requires coordinated edits.
20
+
21
+ Public re-exports of transport or wire types are leakage. Parse external data into domain types behind the interface. Keep storage schemas, framework objects, and protocol details private.
22
+
23
+ ## Temporal decomposition
24
+
25
+ Temporal decomposition organizes modules by execution order instead of the knowledge they own. Separate load, validate, transform, and save stages often repeat one representation and its invariants across several boundaries.
26
+
27
+ Group code around domain knowledge and ownership. Methods that run at different times can still belong to one module when they protect the same decisions.
28
+
29
+ ## Pass-through method
30
+
31
+ A pass-through method forwards the same arguments to another method with the same shape. It adds a layer without hiding complexity.
32
+
33
+ Remove it or move responsibility to the module that can complete the operation. Keep a forwarding boundary only when it adds policy, adaptation, or a distinct abstraction.
34
+
35
+ ## Split ownership
36
+
37
+ More than one module writes the same state or keeps its own copy of it. An agent that edits one writer can't see the others, so their rules diverge.
38
+
39
+ Give each piece of state one owner. Other modules read it or ask the owner to change it.
40
+
41
+ ## Two ways to do one task
42
+
43
+ The design supports more than one way to do the same task. An agent copies whichever way it finds first, so every way keeps gaining callers.
44
+
45
+ Keep one way. Move callers off the others and delete them in the same change.
46
+
47
+ ## Importable internals
48
+
49
+ A caller can import a module's internals. An agent takes the shortest path that compiles, so it imports them directly and they become part of the interface.
50
+
51
+ Make internals unreachable from outside the module, so an import from outside fails the build.
52
+
53
+ ## Hand-synced list
54
+
55
+ Two or more places list the same items, and adding an item means editing every list. An agent that sees one list updates only that one.
56
+
57
+ Keep one list and derive the others from it. If a list can't be derived, make the build fail when the lists disagree.
@@ -8,11 +8,11 @@ The prose that ships alongside the type sketch. One page. Sentence-case headings
8
8
 
9
9
  ## Usage (caller's view)
10
10
 
11
- *Write this first, before the type sketch. Show the README or quickstart the consumer reads, plus two or three realistic call sites in their own code. What they import, what they call, what comes back. The type sketch in [Shape](#shape) is derived from this. The two must agree; when they diverge, reconcile the sketch to the usage, not the reverse. The caller's experience is the spec. The types serve it.*
11
+ *Write this first, before the type sketch. Show the README or quickstart the consumer reads, plus two or three realistic call sites in their own code. What they import, what they call, what comes back. The type sketch in [Shape](#shape) is derived from this. The two must agree. When they diverge, reconcile the sketch to the usage, not the reverse. The caller's experience is the spec. The types serve it.*
12
12
 
13
13
  ## Shape
14
14
 
15
- *The recommended architecture. Data structures first; then how data flows through the signatures. Name the load-bearing decisions: which invariants are encoded in types, where validation lives, what the system deliberately does not do. Cite the principle behind each decision (e.g., `per boundary-discipline`); don't restate it.*
15
+ *The recommended architecture. Data structures first. Then how data flows through the signatures. Name the load-bearing decisions. State which invariants are encoded in types, where validation lives, and what the system deliberately does not do. Judge interface depth explicitly. State what complexity the public surface hides, what remains exposed to callers, and why the interface is no larger than needed. Cite the principle behind each decision (e.g., `per boundary-discipline`). Don't restate it.*
16
16
 
17
17
  ## Synthesis decision
18
18
 
@@ -24,7 +24,7 @@ The prose that ships alongside the type sketch. One page. Sentence-case headings
24
24
 
25
25
  ## Alternatives considered
26
26
 
27
- *Required. Name at least one concrete alternative shape, with one line on why it lost. Two or three when the design space had real contenders; one is fine when the constraints forced the answer, with the conclusion phrased as "this was the only viable shape because..." Avoid listing flavors of the same shape. Distinct from "Synthesis decision": this section covers design alternatives the chosen shape considered and rejected, not other runner candidates.*
27
+ *Required. Name at least one concrete alternative shape, with one line on why it lost. Judge each alternative on interface depth, not implementation simplicity alone. Name the complexity it exposes to callers and the complexity it hides. Two or three alternatives belong here when the design space had real contenders. One is fine when the constraints forced the answer, with the conclusion phrased as "this was the only viable shape because..." Avoid listing flavors of the same shape. This section covers design alternatives the chosen shape considered and rejected, not other runner candidates.*
28
28
 
29
29
  ## Open questions and risks
30
30
 
@@ -1,19 +1,20 @@
1
1
  # Architect runner prompt
2
2
 
3
- The orchestrator passes this file through to every parallel candidate runner during Phase B and fills in the variable inputs around it: the task, the Phase A grounding artifacts, the isolated working directory, and the path to write outputs. The working directory is a git worktree when available, otherwise a per-runner subdirectory under the sketch dir; what matters is independence between candidates.
3
+ The orchestrator passes this file through to every parallel candidate runner during Phase B and fills in the variable inputs around it: the task, the Phase A grounding artifacts, the isolated working directory, and the path to write outputs. The working directory is a git worktree when available, otherwise a per-runner subdirectory under the sketch dir. What matters is independence between candidates.
4
4
 
5
- You are producing one candidate design in architect's parallel exploration. Read the **architect** skill in full first; that's the workflow you're inside. Output a candidate design package: type sketch, function signatures, module map, and prose rationale shaped per [`rationale-template.md`](rationale-template.md).
5
+ You are producing one candidate design in architect's parallel exploration. Read the **architect** skill in full first. That's the workflow you're inside. Output a candidate design package: type sketch, function signatures, module map, and prose rationale shaped per [`rationale-template.md`](rationale-template.md).
6
6
 
7
7
  Apply the following discipline. The orchestrator compares candidates on these axes to pick a base.
8
8
 
9
- - Caller's usage first. Write the README-style usage and two or three real call sites before the types, then derive the type sketch from them. The usage is the spec; the two must agree, so reconcile the sketch to the usage, not the reverse.
10
- - Data structures first. Get the core types right and the code becomes obvious. Trace each dominant access pattern through the proposed structure; if the answer is "we'll add a map / index / cache later," the structure is wrong.
9
+ - Caller's usage first. Write the README-style usage and two or three real call sites before the types, then derive the type sketch from them. The usage is the spec. The two must agree, so reconcile the sketch to the usage, not the reverse.
10
+ - Data structures first. Get the core types right and the code becomes obvious. Trace each dominant access pattern through the proposed structure. If the answer is "we'll add a map / index / cache later," the structure is wrong.
11
+ - Interface depth. Compare the capability hidden behind the public surface relative to the size of that surface. Prefer a simple interface that pulls complexity into the callee, even when the implementation becomes less simple. Do not put transport or wire types on the public API. Parse into domain types behind the interface.
11
12
  - Shared state: if two actors might both write, ask "what happens?" If the answer isn't "nothing," default to per-actor state with a merge at the read boundary, per the **separate-before-serializing-shared-state** principle skill.
12
13
  - Make boundaries visible. `not implemented` errors for bodies, `// TODO` pseudocode for tricky logic, doc comments stating intent and invariants. A reader should trace data from input to output by reading types and signatures alone.
13
14
  - Encode invariants in types: hard-to-misuse types > runtime checks > prose comments, per the **encode-lessons-in-structure** principle skill.
14
- - Validate at boundaries, trust types inside, per the **boundary-discipline** principle skill. Business logic as pure functions; the shell stays thin.
15
+ - Validate at boundaries, trust types inside, per the **boundary-discipline** principle skill. Business logic as pure functions. The shell stays thin.
15
16
  - Single source of truth per invariant. Derive instead of sync.
16
17
  - Idempotent state transitions where applicable, per the **make-operations-idempotent** principle skill. Ask what happens if the operation runs twice or crashes halfway.
17
18
  - Short call chains. If tracing the flow needs more than three files, flatten the hierarchy, per the **laziness-protocol** and **minimize-reader-load** principle skills.
18
19
 
19
- You are one of several runners, each on a different model. Produce the best design your model can make; don't hedge against the others. Differences between candidates are the signal used to pick a base and graft. Converging on a safe-looking middle defeats the exploration.
20
+ You are one of the parallel runners, each on a different model. Produce the best design your model can make. Don't hedge against the others. Differences between candidates are the signal used to pick a base and graft. Converging on a safe-looking middle defeats the exploration.
@@ -6,66 +6,43 @@ disable-model-invocation: true
6
6
 
7
7
  # Arena
8
8
 
9
- Fan out N parallel attempts at the same task. Read every candidate end to end. Pick the strongest as the base. Graft the best ideas from the others into it. Verify the synthesized result.
10
-
11
- ## Start
12
-
13
- Open a todolist with one entry per phase before launching anything. The arena runs autonomously and the list keeps phases from silently disappearing.
14
-
15
- 1. Frame
16
- 2. Fan out
17
- 3. Cross-judge
18
- 4. Pick
19
- 5. Graft
20
- 6. Verify
9
+ Open a todolist with one entry per phase (Frame, Fan out, Cross-judge, Pick, Graft, Verify) before launching anything.
21
10
 
22
11
  ## Phase A: Frame
23
12
 
24
- The N candidates will receive the same prompt, so the prompt is the contract. Get it right before spawning anything.
13
+ Every candidate gets the same prompt, so the prompt is the contract.
25
14
 
26
15
  1. State the artifact each candidate is producing.
27
- 2. Derive the rubric. State what success looks like for *this* task, then turn it into 3-6 concrete gradeable criteria. Concrete: `Adds a --dry-run flag that skips writes`. Vague: `code is correct`. The rubric is the picker's tool in Phase D; candidates only see the task.
28
- 3. Pick the runners. Default runners are your configured arena list (defaults `claude-opus-4-8-thinking-xhigh`, `gpt-5.5-high-fast`, `composer-2.5-fast`). Spawn more when the arena covers multiple design directions. Same model N times when the work is generation-bound rather than judgment-sensitive.
29
- 4. Assign output paths. Each candidate writes to its own location (a git worktree where possible, otherwise `/tmp/arena-<slug>/candidate-<n>/`). N candidates writing to the same path is shared mutable state and fails the the **separate-before-serializing-shared-state** principle skill test.
16
+ 2. Derive the rubric, 3-6 concrete gradeable criteria for what success looks like on *this* task. It is the picker's tool in Phase D. Candidates only see the task.
17
+ 3. Pick the runners. Use the `arena runners` line in `~/.cursor/rules/pstack-models.mdc`. If the rule or that line is missing, default to one each on `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. An `auto` or `inherit-parent` entry in this line means the parent model, so omit `model` for it. If the Task tool rejects a configured entry, run that seat on its family's default and say so. Families go by prefix: `claude-*`, and `grok-*` with `cursor-grok-*` and `composer-*`. A refused `composer-*` entry runs on `grok-4.7-xhigh-fast`. If the family has no default, or the Task tool rejects that default, use the closest valid slug of the same family from its error message, or drop the seat and say so when there is none. If dropped seats leave fewer than two runners, add runners until there are two, or one when the line has one entry. Run each added runner on a remaining runner's model, or omit `model` so it runs on the parent model when none remain, and say so. Spawn more runners when the arena covers multiple design directions. Use the same model N times when the work is generation-bound rather than judgment-sensitive. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill.
18
+ 4. Give each candidate its own output location (a git worktree where possible, otherwise `/tmp/arena-<slug>/candidate-<n>/`), per the **separate-before-serializing-shared-state** principle skill.
30
19
 
31
20
  ## Phase B: Fan out
32
21
 
33
- Spawn all N subagents in one message with `run_in_background: true`, each with the task, the path to the shared grounding, its own output path, and instructions to produce both the artifact and a short rationale.
22
+ Spawn all N subagents in one message with `run_in_background: true`, each with the task, the path to the shared grounding, its own output path, and instructions to produce the artifact and a short rationale naming the alternatives it considered and what it rejected.
34
23
 
35
- The rationale is mandatory. Without it, the parent cannot tell whether a candidate's structure is principled or accidental, which makes Phase E grafting unreliable. Each rationale names the alternatives the candidate considered and what it rejected.
36
-
37
- If a candidate fails to produce output, proceed with N-1 and note the dropout in the synthesis record.
24
+ If a candidate produces no output, proceed with N-1 and note the dropout.
38
25
 
39
26
  ## Phase C: Cross-judge
40
27
 
41
- After all Phase B candidates complete, spawn one readonly judge subagent on a different model family from the parent's. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with the parent's reading in Phase D, not with the candidates themselves. Spawning while candidates are still writing means the judge sees partial or empty outputs and reports them as dropouts.
28
+ After all Phase B candidates complete, choose one model from the `arena cross-judge pool` line in `~/.cursor/rules/pstack-models.mdc`. If the rule or that line is missing, choose from `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. Spawn one readonly judge subagent. The judge is never from the parent's family, as Phase A step 3 defines families. Try only the entries from another family, in pool order. An `auto` or `inherit-parent` entry is the parent model, so it never judges. With the default pool, a Claude parent gets `grok-4.7-xhigh-fast`. A parent from any other family gets `claude-opus-5-5-xhigh` first. If the Task tool rejects an entry, use a valid slug of the same model at the closest level or speed from the error message, or move to the next entry when there is none. If no entry from another family runs, try the default pool's entries from another family the same way. If none of those runs, skip the judge, pick the base alone in Phase D, and say so. If you do not know the parent's model, try the pool's real slugs in pool order and say that the family check did not run. The judge sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with your reading in Phase D. Don't spawn it while candidates are still writing.
42
29
 
43
30
  ## Phase D: Pick a base
44
31
 
45
- Read every candidate end to end before picking. Skimming N candidates surfaces only the candidate whose surface looks most familiar.
46
-
47
- Score each candidate against the rubric criterion by criterion, not on holistic feel. Compare against the cross-judge. Agreement on the base confirms the pick. Disagreement means one of you is biased or the rubric was ambiguous. Read both rationales before deciding.
32
+ Read every candidate end to end before picking. Score each against the rubric criterion by criterion, not on holistic feel, and compare with the cross-judge when Phase C ran one. Agreement on the base confirms the pick. Disagreement means one of you is biased or the rubric was ambiguous. Read both rationales before deciding.
48
33
 
49
- Pick the base on which candidate a future maintainer can extend most easily without breaking invariants. Prefer the cleaner boundary or smaller surface area when two feel tied, per the Laziness Protocol.
50
-
51
- Record the pick and the reason in a short synthesis note alongside the base artifact, including the cross-judge's verdict.
34
+ Pick the base a future maintainer can extend most easily without breaking invariants. When two feel tied, prefer the cleaner boundary or smaller API, per the Laziness Protocol.
52
35
 
53
36
  ## Phase E: Graft
54
37
 
55
- Walk each losing candidate once more and identify what is worth porting into the base. The signal is usually one or two things per candidate, not most of it.
56
-
57
- Fold each graft in by hand, per the **redesign-from-first-principles** principle skill. Don't paste mechanically. The result has to remain coherent under one mental model.
38
+ Walk each losing candidate once more for what is worth porting into the base, usually one or two things per candidate, not most of it. Fold each graft in by hand, per the **redesign-from-first-principles** principle skill, so the result stays coherent under one mental model. Don't paste mechanically.
58
39
 
59
- Record what was grafted, from which candidate, and what was rejected and why. The rejection notes are the highest-signal part of the record. Future readers learn from what you considered and dropped, not just what you kept.
60
-
61
- When N candidates converge on the same shape, that is a strong agreement signal. Note the convergence in the record and ship the consensus shape. No graft is needed. When N candidates wildly diverge, Phase A was under-specified. Reframe and re-run rather than averaging the divergence.
40
+ If the candidates converge on one shape, that is strong agreement. Note it and ship the consensus shape. No graft is needed. If they wildly diverge, Phase A was under-specified. Reframe and re-run rather than averaging the divergence.
62
41
 
63
42
  ## Phase F: Verify
64
43
 
65
- The synthesized artifact has to hold up under the same scrutiny as any other output, per the **prove-it-works** principle skill. The arena does not earn you a pass.
66
-
67
- If verification surfaces a problem the arena did not catch, either Phase A was wrong (re-frame and re-run) or one candidate caught it and you missed the graft (go back to Phase E). Don't paper over.
44
+ Verify the synthesized artifact like any other output, per the **prove-it-works** principle skill. If verification finds a problem the arena missed, either Phase A was wrong (re-frame and re-run) or a candidate caught it and you missed the graft (go back to Phase E). Don't paper over it.
68
45
 
69
46
  ## Outputs
70
47
 
71
- One synthesized artifact. One short synthesis note alongside, naming the base, the grafts (with source candidate), the rejections, the dropouts if any, and the verification result.
48
+ One synthesized artifact, with a short synthesis note alongside naming the base and why, the cross-judge's verdict or that Phase C skipped the judge, each graft with its source candidate, what was rejected and why, any convergence or dropouts, and the verification result.