@justjoshn/pi-pstack 0.0.0-stage → 0.15.36-pi.7

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 (641) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/LICENSE +21 -0
  3. package/README.md +98 -2
  4. package/agents/ci-watcher.md +27 -0
  5. package/agents/comment-sicko.md +32 -0
  6. package/agents/poteto-agent.md +9 -0
  7. package/agents/thermo-nuclear-code-quality-review.md +23 -0
  8. package/assets/logo.png +0 -0
  9. package/automations/benny/FOR_AGENTS.md +82 -0
  10. package/automations/benny/README.md +20 -0
  11. package/automations/benny/skills/reproduce-and-fix-issues/SKILL.md +310 -0
  12. package/automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md +169 -0
  13. package/automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md +205 -0
  14. package/automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md +93 -0
  15. package/automations/benny/skills/setup-benny/SKILL.md +253 -0
  16. package/automations/benny/skills/triage-issue-reports/SKILL.md +240 -0
  17. package/automations/benny/skills/triage-issue-reports/references/routing.example.md +61 -0
  18. package/automations/benny/templates/configuration.example.yaml +113 -0
  19. package/automations/benny/templates/reproduce-automation-prompt.md +49 -0
  20. package/automations/benny/templates/triage-automation-prompt.md +53 -0
  21. package/bin/pstack-routines-supervisor +9 -0
  22. package/docs/guide/01-setup.md +67 -0
  23. package/docs/guide/02-poteto-mode.md +139 -0
  24. package/docs/guide/03-understand.md +79 -0
  25. package/docs/guide/04-design.md +133 -0
  26. package/docs/guide/05-build-and-clean.md +83 -0
  27. package/docs/guide/06-verify-and-ship.md +162 -0
  28. package/docs/guide/07-overnight.md +122 -0
  29. package/docs/guide/08-principles.md +72 -0
  30. package/docs/guide/09-make-it-yours.md +100 -0
  31. package/docs/guide/10-recipes-and-pitfalls.md +182 -0
  32. package/docs/guide/README.md +38 -0
  33. package/docs/guide/images/design.jpg +0 -0
  34. package/docs/guide/images/overnight.jpg +0 -0
  35. package/docs/guide/images/recipes.jpg +0 -0
  36. package/docs/guide/images/router.jpg +0 -0
  37. package/docs/guide/images/understanding.jpg +0 -0
  38. package/docs/guide/images/verification.jpg +0 -0
  39. package/docs/native-gaps.md +73 -0
  40. package/docs/parity-reverse-engineering.md +94 -0
  41. package/licenses/cursor-team-kit.LICENSE +21 -0
  42. package/licenses/pstack.LICENSE +21 -0
  43. package/package.json +86 -4
  44. package/packaging/install-supervisor-unit.sh +164 -0
  45. package/packaging/launchd/com.pstack.routines-supervisor.plist.example +24 -0
  46. package/packaging/systemd/pstack-routines-supervisor.service.example +15 -0
  47. package/skills/architect/SKILL.md +79 -0
  48. package/skills/architect/references/design-red-flags.md +57 -0
  49. package/skills/architect/references/rationale-template.md +35 -0
  50. package/skills/architect/references/runner-prompt.md +20 -0
  51. package/skills/arena/SKILL.md +48 -0
  52. package/skills/automate-me/SKILL.md +104 -0
  53. package/skills/benchmark-checklist/SKILL.md +39 -0
  54. package/skills/blast-radius/SKILL.md +50 -0
  55. package/skills/bro/SKILL.md +7 -0
  56. package/skills/check-compiler-errors/SKILL.md +23 -0
  57. package/skills/control-cli/SKILL.md +109 -0
  58. package/skills/control-ui/SKILL.md +109 -0
  59. package/skills/correct/SKILL.md +32 -0
  60. package/skills/create-formal-verification-skill/SKILL.md +43 -0
  61. package/skills/create-skill/SKILL.md +548 -0
  62. package/skills/create-verification-skill/SKILL.md +44 -0
  63. package/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  64. package/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  65. package/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  66. package/skills/deslop/SKILL.md +22 -0
  67. package/skills/figure-it-out/SKILL.md +52 -0
  68. package/skills/fix-ci/SKILL.md +29 -0
  69. package/skills/fix-merge-conflicts/SKILL.md +32 -0
  70. package/skills/get-pr-comments/SKILL.md +23 -0
  71. package/skills/how/SKILL.md +36 -0
  72. package/skills/how/references/explainer-prompt.md +55 -0
  73. package/skills/how/references/explorer-prompt.md +35 -0
  74. package/skills/in-your-own-words/SKILL.md +7 -0
  75. package/skills/interrogate/SKILL.md +31 -0
  76. package/skills/ketchup/SKILL.md +43 -0
  77. package/skills/ketchup-video/SKILL.md +29 -0
  78. package/skills/loop-on-ci/SKILL.md +50 -0
  79. package/skills/maintain-formal-verification-skill/SKILL.md +58 -0
  80. package/skills/maintain-verification-skill/SKILL.md +39 -0
  81. package/skills/make-bot-ui/SKILL.md +104 -0
  82. package/skills/make-pr-easy-to-review/SKILL.md +59 -0
  83. package/skills/new-branch-and-pr/SKILL.md +29 -0
  84. package/skills/no-comments/SKILL.md +24 -0
  85. package/skills/no-inline-imports/SKILL.md +12 -0
  86. package/skills/poteto-help/SKILL.md +161 -0
  87. package/skills/poteto-help/references/prompting.md +51 -0
  88. package/skills/poteto-help/references/recipes.md +51 -0
  89. package/skills/poteto-mode/SKILL.md +151 -0
  90. package/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
  91. package/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
  92. package/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
  93. package/skills/poteto-mode/playbooks/autopilot-stack.md +8 -0
  94. package/skills/poteto-mode/playbooks/babysit.md +23 -0
  95. package/skills/poteto-mode/playbooks/bug-fix.md +15 -0
  96. package/skills/poteto-mode/playbooks/eval.md +25 -0
  97. package/skills/poteto-mode/playbooks/feature.md +21 -0
  98. package/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  99. package/skills/poteto-mode/playbooks/investigation.md +14 -0
  100. package/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
  101. package/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
  102. package/skills/poteto-mode/playbooks/orchestrate.md +25 -0
  103. package/skills/poteto-mode/playbooks/pause-safely.md +10 -0
  104. package/skills/poteto-mode/playbooks/perf-issue.md +25 -0
  105. package/skills/poteto-mode/playbooks/prototype.md +14 -0
  106. package/skills/poteto-mode/playbooks/refactoring.md +16 -0
  107. package/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  108. package/skills/poteto-mode/playbooks/session-pickup.md +11 -0
  109. package/skills/poteto-mode/playbooks/shipping.md +12 -0
  110. package/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  111. package/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  112. package/skills/poteto-mode/playbooks/worktree-cleanup.md +12 -0
  113. package/skills/poteto-mode/references/bugbot-triage.md +142 -0
  114. package/skills/poteto-mode/scripts/bootstrap.ts +62 -0
  115. package/skills/poteto-mode/scripts/bun.lock +67 -0
  116. package/skills/poteto-mode/scripts/check-plan.mjs +205 -0
  117. package/skills/poteto-mode/scripts/check-plan.test.ts +110 -0
  118. package/skills/poteto-mode/scripts/package.json +16 -0
  119. package/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
  120. package/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
  121. package/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +129 -0
  122. package/skills/poteto-mode/scripts/watch-pr/github.test.ts +498 -0
  123. package/skills/poteto-mode/scripts/watch-pr/github.ts +726 -0
  124. package/skills/poteto-mode/scripts/watch-pr/policy.test.ts +482 -0
  125. package/skills/poteto-mode/scripts/watch-pr/policy.ts +842 -0
  126. package/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
  127. package/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
  128. package/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
  129. package/skills/poteto-mode/scripts/watch-pr/types.ts +414 -0
  130. package/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
  131. package/skills/poteto-mode/scripts/worktree-audit.sh +156 -0
  132. package/skills/pr-review-canvas/SKILL.md +176 -0
  133. package/skills/pr-review-canvas/renderer.js +170 -0
  134. package/skills/pr-review-canvas/styles.css +96 -0
  135. package/skills/pr-review-canvas/template.html +18 -0
  136. package/skills/principle-attack-the-premise/SKILL.md +21 -0
  137. package/skills/principle-boundary-discipline/SKILL.md +34 -0
  138. package/skills/principle-build-the-lever/SKILL.md +23 -0
  139. package/skills/principle-encode-lessons-in-structure/SKILL.md +11 -0
  140. package/skills/principle-exhaust-the-design-space/SKILL.md +9 -0
  141. package/skills/principle-experience-first/SKILL.md +19 -0
  142. package/skills/principle-explain-the-number/SKILL.md +18 -0
  143. package/skills/principle-fix-root-causes/SKILL.md +21 -0
  144. package/skills/principle-foundational-thinking/SKILL.md +21 -0
  145. package/skills/principle-guard-the-context-window/SKILL.md +12 -0
  146. package/skills/principle-laziness-protocol/SKILL.md +10 -0
  147. package/skills/principle-make-operations-idempotent/SKILL.md +22 -0
  148. package/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +14 -0
  149. package/skills/principle-minimize-reader-load/SKILL.md +18 -0
  150. package/skills/principle-model-the-domain/SKILL.md +24 -0
  151. package/skills/principle-never-block-on-the-human/SKILL.md +15 -0
  152. package/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
  153. package/skills/principle-prove-it-works/SKILL.md +22 -0
  154. package/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
  155. package/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
  156. package/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
  157. package/skills/principle-subtract-before-you-add/SKILL.md +18 -0
  158. package/skills/principle-test-behavior-not-implementation/SKILL.md +20 -0
  159. package/skills/principle-type-system-discipline/SKILL.md +13 -0
  160. package/skills/recall/SKILL.md +35 -0
  161. package/skills/reflect/SKILL.md +69 -0
  162. package/skills/reflect/references/divergent-reviewer.md +38 -0
  163. package/skills/reflect/references/judgment-reviewer.md +37 -0
  164. package/skills/reflect/references/synthesizer.md +56 -0
  165. package/skills/reflect/references/tooling-reviewer.md +48 -0
  166. package/skills/review-and-ship/SKILL.md +41 -0
  167. package/skills/run-smoke-tests/SKILL.md +42 -0
  168. package/skills/setup-pstack/SKILL.md +74 -0
  169. package/skills/sharpen/SKILL.md +16 -0
  170. package/skills/show-me-your-work/SKILL.md +82 -0
  171. package/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
  172. package/skills/show-me-your-work/scripts/log.sh +42 -0
  173. package/skills/statechart/SKILL.md +82 -0
  174. package/skills/statechart/references/render.md +93 -0
  175. package/skills/statechart/scripts/backends/cfg.ts +33 -0
  176. package/skills/statechart/scripts/backends/mermaid.ts +201 -0
  177. package/skills/statechart/scripts/backends/plain-text.ts +72 -0
  178. package/skills/statechart/scripts/backends/report.ts +177 -0
  179. package/skills/statechart/scripts/frontends/config.ts +276 -0
  180. package/skills/statechart/scripts/frontends/dot.ts +74 -0
  181. package/skills/statechart/scripts/frontends/marks.ts +93 -0
  182. package/skills/statechart/scripts/frontends/messages.ts +52 -0
  183. package/skills/statechart/scripts/frontends/spec.ts +114 -0
  184. package/skills/statechart/scripts/frontends/trace.ts +24 -0
  185. package/skills/statechart/scripts/frontends/value.ts +166 -0
  186. package/skills/statechart/scripts/frontends/verdict.ts +40 -0
  187. package/skills/statechart/scripts/frontends/view.ts +119 -0
  188. package/skills/statechart/scripts/ir.ts +547 -0
  189. package/skills/statechart/scripts/package.json +11 -0
  190. package/skills/statechart/scripts/passes/annotate.ts +128 -0
  191. package/skills/statechart/scripts/passes/label.ts +269 -0
  192. package/skills/statechart/scripts/passes/lift.ts +85 -0
  193. package/skills/statechart/scripts/passes/loop-check.ts +68 -0
  194. package/skills/statechart/scripts/passes/paths.ts +60 -0
  195. package/skills/statechart/scripts/passes/reach.ts +135 -0
  196. package/skills/statechart/scripts/passes/region-check.ts +97 -0
  197. package/skills/statechart/scripts/passes/regions.ts +295 -0
  198. package/skills/statechart/scripts/pipeline.ts +76 -0
  199. package/skills/statechart/scripts/run.ts +481 -0
  200. package/skills/statechart/scripts/statechart +29 -0
  201. package/skills/statechart/scripts/statechart.ts +164 -0
  202. package/skills/statechart/scripts/test/ConfigOracle.java +63 -0
  203. package/skills/statechart/scripts/test/chart.test.ts +1210 -0
  204. package/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
  205. package/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
  206. package/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
  207. package/skills/statechart/scripts/test/cli.test.ts +1314 -0
  208. package/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
  209. package/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
  210. package/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
  211. package/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
  212. package/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
  213. package/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
  214. package/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
  215. package/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
  216. package/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
  217. package/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
  218. package/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
  219. package/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
  220. package/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
  221. package/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
  222. package/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
  223. package/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
  224. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
  225. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
  226. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
  227. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
  228. package/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
  229. package/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
  230. package/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
  231. package/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
  232. package/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
  233. package/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
  234. package/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
  235. package/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
  236. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
  237. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
  238. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
  239. package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
  240. package/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
  241. package/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
  242. package/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
  243. package/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
  244. package/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
  245. package/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
  246. package/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
  247. package/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
  248. package/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
  249. package/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
  250. package/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
  251. package/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
  252. package/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
  253. package/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
  254. package/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
  255. package/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
  256. package/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
  257. package/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
  258. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
  259. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
  260. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
  261. package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
  262. package/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
  263. package/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
  264. package/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
  265. package/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
  266. package/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
  267. package/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
  268. package/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
  269. package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
  270. package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
  271. package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
  272. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
  273. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
  274. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
  275. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
  276. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
  277. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
  278. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
  279. package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
  280. package/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
  281. package/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
  282. package/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
  283. package/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
  284. package/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
  285. package/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
  286. package/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
  287. package/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
  288. package/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
  289. package/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
  290. package/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
  291. package/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
  292. package/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
  293. package/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
  294. package/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
  295. package/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
  296. package/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
  297. package/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
  298. package/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
  299. package/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
  300. package/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
  301. package/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
  302. package/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
  303. package/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
  304. package/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
  305. package/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
  306. package/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
  307. package/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
  308. package/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
  309. package/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
  310. package/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
  311. package/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
  312. package/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
  313. package/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
  314. package/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
  315. package/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
  316. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
  317. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
  318. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
  319. package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
  320. package/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
  321. package/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
  322. package/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
  323. package/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
  324. package/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
  325. package/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
  326. package/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
  327. package/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
  328. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
  329. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
  330. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
  331. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
  332. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
  333. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
  334. package/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
  335. package/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
  336. package/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
  337. package/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
  338. package/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
  339. package/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
  340. package/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
  341. package/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
  342. package/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
  343. package/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
  344. package/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
  345. package/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
  346. package/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
  347. package/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
  348. package/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
  349. package/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
  350. package/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
  351. package/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
  352. package/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
  353. package/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
  354. package/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
  355. package/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
  356. package/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
  357. package/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
  358. package/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
  359. package/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
  360. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
  361. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
  362. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
  363. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
  364. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
  365. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
  366. package/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
  367. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
  368. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
  369. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
  370. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
  371. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
  372. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
  373. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
  374. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
  375. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
  376. package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
  377. package/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
  378. package/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
  379. package/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
  380. package/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
  381. package/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
  382. package/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
  383. package/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
  384. package/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
  385. package/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
  386. package/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
  387. package/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
  388. package/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
  389. package/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
  390. package/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
  391. package/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
  392. package/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
  393. package/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
  394. package/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
  395. package/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
  396. package/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
  397. package/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
  398. package/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
  399. package/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
  400. package/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
  401. package/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
  402. package/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
  403. package/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
  404. package/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
  405. package/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
  406. package/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
  407. package/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
  408. package/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
  409. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
  410. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
  411. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
  412. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
  413. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
  414. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
  415. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
  416. package/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
  417. package/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
  418. package/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
  419. package/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
  420. package/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
  421. package/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
  422. package/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
  423. package/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
  424. package/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
  425. package/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
  426. package/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
  427. package/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
  428. package/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
  429. package/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
  430. package/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
  431. package/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
  432. package/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
  433. package/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
  434. package/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
  435. package/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
  436. package/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
  437. package/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
  438. package/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
  439. package/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
  440. package/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
  441. package/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
  442. package/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
  443. package/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
  444. package/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
  445. package/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
  446. package/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
  447. package/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
  448. package/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
  449. package/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
  450. package/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
  451. package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
  452. package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
  453. package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
  454. package/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
  455. package/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
  456. package/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
  457. package/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
  458. package/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
  459. package/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
  460. package/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
  461. package/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
  462. package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
  463. package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
  464. package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
  465. package/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
  466. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
  467. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
  468. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
  469. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
  470. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
  471. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
  472. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
  473. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
  474. package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
  475. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
  476. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
  477. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
  478. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
  479. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
  480. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
  481. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
  482. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
  483. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
  484. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
  485. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
  486. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
  487. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
  488. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
  489. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
  490. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
  491. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
  492. package/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
  493. package/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
  494. package/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
  495. package/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
  496. package/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
  497. package/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
  498. package/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
  499. package/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
  500. package/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
  501. package/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
  502. package/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
  503. package/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
  504. package/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
  505. package/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
  506. package/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
  507. package/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
  508. package/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
  509. package/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
  510. package/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
  511. package/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
  512. package/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
  513. package/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
  514. package/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
  515. package/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
  516. package/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
  517. package/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
  518. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
  519. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
  520. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
  521. package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
  522. package/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
  523. package/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
  524. package/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
  525. package/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
  526. package/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
  527. package/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
  528. package/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
  529. package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
  530. package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
  531. package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
  532. package/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
  533. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
  534. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
  535. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
  536. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
  537. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
  538. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
  539. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
  540. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
  541. package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
  542. package/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
  543. package/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
  544. package/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
  545. package/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
  546. package/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
  547. package/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
  548. package/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
  549. package/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
  550. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
  551. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
  552. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
  553. package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
  554. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
  555. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
  556. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
  557. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
  558. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
  559. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
  560. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
  561. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
  562. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
  563. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
  564. package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
  565. package/skills/statechart/scripts/test/corpus.test.ts +403 -0
  566. package/skills/statechart/scripts/test/differential.test.ts +565 -0
  567. package/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
  568. package/skills/statechart/scripts/test/grid/Grid.tla +9 -0
  569. package/skills/statechart/scripts/test/grid/sany.out +2 -0
  570. package/skills/statechart/scripts/test/java.ts +63 -0
  571. package/skills/statechart/scripts/test/labels.ts +643 -0
  572. package/skills/statechart/scripts/test/messages.test.ts +212 -0
  573. package/skills/statechart/scripts/test/pipeline.test.ts +270 -0
  574. package/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
  575. package/skills/statechart/scripts/test/render.test.ts +81 -0
  576. package/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
  577. package/skills/statechart/scripts/test/tlc.ts +158 -0
  578. package/skills/statechart/scripts/tsconfig.json +11 -0
  579. package/skills/statechart/scripts/worker.ts +35 -0
  580. package/skills/swarm/SKILL.md +41 -0
  581. package/skills/tdd/SKILL.md +42 -0
  582. package/skills/teach/SKILL.md +21 -0
  583. package/skills/technical-writing/SKILL.md +106 -0
  584. package/skills/thermo-nuclear-code-quality-review/SKILL.md +192 -0
  585. package/skills/typescript-best-practices/SKILL.md +32 -0
  586. package/skills/typescript-best-practices/references/patterns.md +328 -0
  587. package/skills/typescript-exhaustive-switch/SKILL.md +10 -0
  588. package/skills/unslop/SKILL.md +62 -0
  589. package/skills/verify-this/SKILL.md +74 -0
  590. package/skills/weekly-review/SKILL.md +32 -0
  591. package/skills/what-did-i-get-done/SKILL.md +31 -0
  592. package/skills/why/SKILL.md +98 -0
  593. package/skills/why/references/epistemics.md +71 -0
  594. package/skills/why/references/investigator-prompt.md +84 -0
  595. package/skills/why/references/source-playbook.md +17 -0
  596. package/skills/why/references/sources/code-archaeology.md +51 -0
  597. package/skills/why/references/sources/databricks.md +70 -0
  598. package/skills/why/references/sources/datadog.md +97 -0
  599. package/skills/why/references/sources/incident-postmortem.md +5 -0
  600. package/skills/why/references/sources/linear.md +48 -0
  601. package/skills/why/references/sources/notion.md +55 -0
  602. package/skills/why/references/sources/sentry.md +66 -0
  603. package/skills/why/references/sources/slack.md +17 -0
  604. package/skills/why/references/synthesizer-prompt.md +129 -0
  605. package/skills/workflow-from-chats/SKILL.md +50 -0
  606. package/src/aliases.ts +64 -0
  607. package/src/ask.ts +131 -0
  608. package/src/autocomplete.ts +21 -0
  609. package/src/child-env.ts +44 -0
  610. package/src/index.ts +123 -0
  611. package/src/loop.ts +189 -0
  612. package/src/mode.ts +156 -0
  613. package/src/modes.ts +8 -0
  614. package/src/paths.ts +85 -0
  615. package/src/pi-command.ts +12 -0
  616. package/src/plan.ts +141 -0
  617. package/src/readonly-shell.ts +107 -0
  618. package/src/rule.ts +56 -0
  619. package/src/sections.ts +118 -0
  620. package/src/subscriptions/cron.ts +75 -0
  621. package/src/subscriptions/durable-store.ts +482 -0
  622. package/src/subscriptions/durable-types.ts +41 -0
  623. package/src/subscriptions/ensure-supervisor.ts +67 -0
  624. package/src/subscriptions/github.ts +149 -0
  625. package/src/subscriptions/index.ts +507 -0
  626. package/src/subscriptions/supervisor-main.ts +88 -0
  627. package/src/subscriptions/supervisor.ts +271 -0
  628. package/src/subscriptions/webhook.ts +222 -0
  629. package/src/task/agents.ts +55 -0
  630. package/src/task/card.ts +61 -0
  631. package/src/task/format.ts +88 -0
  632. package/src/task/models.ts +140 -0
  633. package/src/task/records.ts +227 -0
  634. package/src/task/registry.ts +77 -0
  635. package/src/task/runner.ts +365 -0
  636. package/src/task/status.ts +170 -0
  637. package/src/task/stop.ts +100 -0
  638. package/src/task/tool.ts +488 -0
  639. package/src/task/worktree.ts +67 -0
  640. package/src/todo.ts +121 -0
  641. package/src/visualize.ts +244 -0
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: blast-radius
3
+ description: "Find what a change could break somewhere else before it ships, beyond the diff, and prove the one fact it's safe because of by running real code instead of writing it up. Use for 'blast radius of X', 'what could this break', or reviewing a small diff you don't trust."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Blast radius
8
+
9
+ Find what a change breaks somewhere else, before it ships. Use for "blast radius of X", "what could this break", or reviewing a small diff you don't trust yet.
10
+
11
+ Companion to `how` and `why`. `how` tells you what the code does. `why` tells you why it's shaped that way. Blast radius tells you what it breaks somewhere else.
12
+
13
+ Listing the callers is not the job. The agent can grep those in a second. The job is the breakage grep won't show you.
14
+
15
+ ## Don't trust your own writeup
16
+
17
+ A blast-radius writeup that sounds right is worthless. It reads as convincing whether or not it's true. So don't hand back the writeup. Find the one or two facts the whole thing depends on and prove them by running code.
18
+
19
+ ### How sure are you
20
+
21
+ For each fact the change's safety depends on, get it as far down this list as is cheap, and say where it stopped.
22
+
23
+ 1. You said so. Worthless on its own.
24
+ 2. You pointed at the line. A real `file:line`, or the library's own source.
25
+ 3. You showed the bad case can't happen. You walked the failure step by step and it doesn't reach.
26
+ 4. You ran it. A script or test that calls the real code and fails loud if you're wrong.
27
+ 5. You reproduced it in the running app.
28
+
29
+ Step 4 is usually one small script that imports the same library the app ships and calls the exact function you're worried about.
30
+
31
+ ## Steps
32
+
33
+ 1. Read the change. The diff, the symbols it adds, changes, and deletes, and what it now does differently, including the part the diff doesn't spell out. Use `why` step 2 to pull the PR and commits.
34
+ 2. Find the one fact it's safe because of. Most changes that look risky are safe because of a single fact, like "this call only drops already-dead cache entries and does nothing else". Find that fact. If it holds, most risky cases are cleared at once. Spend your time here, not on a long list of maybes.
35
+ 3. Look where grep stops. Read the source of the library you call, and check its pinned version and any local patch. Work out when things run: microtasks, unmount and teardown, Solid versus React. Follow what a symbol search misses: the JSON an API returns, a DB column, a wire format, another language reading the same bytes, a feature flag, code three hops downstream.
36
+ 4. Be honest about each risk. Give it a real chance of happening and a real cost if it does. Keep the risks you confirmed. List the ones you checked and cleared separately. Same rules as `why`. Cite a real `file:line`, a search that finds nothing is still an answer, and never make up a caller or an API.
37
+ 5. Prove the one fact. Write a script or test that runs the real code, run it, and paste what happened.
38
+ 6. For a big or wide change, run it as an `arena`. Ask more than one model the same question and merge the answers. Different models catch different real bugs.
39
+
40
+ ## What to hand back
41
+
42
+ - **What it does.** What changed, including the part that isn't obvious.
43
+ - **The one fact it's safe because of.** State it, say which step you got it to, and show the proof. If you couldn't prove it, write unproven.
44
+ - **Risks.** Each names how it breaks, the `file:line`, how likely and how bad, and how to check. Paste the proof for the ones that matter.
45
+ - **Cleared.** What you checked and why it's fine.
46
+ - **Before you merge.** The cheapest test or repro that catches the real bug, including the script you wrote.
47
+
48
+ Write it through `unslop`, cite real code, and strip anything private before it goes anywhere public.
49
+
50
+ **Reply:** the writeup above, with the one safety fact either proven or marked unproven.
@@ -0,0 +1,7 @@
1
+ ---
2
+ name: bro
3
+ description: Restate the last message in plain human language, with no jargon.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ Restate your last message. Stop using jargon and speak coherently. State it more simply and concisely, like one human talking to another.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: check-compiler-errors
3
+ description: Run compile and type-check commands and report failures
4
+ ---
5
+
6
+ # Check compiler errors
7
+
8
+ ## Trigger
9
+
10
+ Compile or type-check failures are blocking local validation or CI.
11
+
12
+ ## Workflow
13
+
14
+ 1. Run the repo's compile and type-check commands.
15
+ 2. Summarize errors by file and type.
16
+ 3. Fix the highest-confidence issues first.
17
+ 4. Re-run checks until clean or blocked.
18
+
19
+ ## Output
20
+
21
+ - Current compile and type-check status
22
+ - Error summary grouped by file and category
23
+ - Fixes applied and remaining blockers
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: control-cli
3
+ description: Build or adapt a local harness to drive, inspect, and profile an interactive CLI or TUI without external services. Use for CLI UX checks, startup regressions, memory leaks, hangs, prompt flows, or terminal demos.
4
+ ---
5
+
6
+ # Control CLI
7
+
8
+ Use a repeatable local harness to exercise an interactive CLI instead of poking at it manually. First reuse the repo's own test/demo harness if it exists; otherwise assemble a temporary harness from standard local tools.
9
+
10
+ ## What It Is Used For
11
+
12
+ - Reproducing CLI/TUI bugs with deterministic input.
13
+ - Verifying keyboard flows, prompts, interrupts, resize behavior, and terminal layout.
14
+ - Capturing before/after transcripts for bug fixes.
15
+ - Profiling startup time, slow operations, hangs, or memory growth.
16
+ - Recording a short terminal demo when output is easier to show than explain.
17
+
18
+ ## Harness Loop
19
+
20
+ 1. Identify the command under test and the smallest reproducible workspace.
21
+ 2. Discover existing local harnesses: package scripts, e2e tests, demo recorders, expect scripts, or PTY helpers.
22
+ 3. If no harness exists, launch the CLI in an isolated terminal session with deterministic env vars.
23
+ 4. Capture the current screen before interacting.
24
+ 5. Send one action at a time: text, Enter, arrows, Escape, Ctrl-C, resize.
25
+ 6. Wait for a concrete screen pattern or prompt before the next action.
26
+ 7. Save the transcript and any profile artifacts.
27
+ 8. Kill the session cleanly.
28
+
29
+ ## Harness Options
30
+
31
+ - Repo-native harness: prefer checked-in scripts because they know the app's startup, env, and prompts.
32
+ - `tmux`: managed sessions, `capture-pane`, `send-keys`, attach/detach.
33
+ - PTY probe: use a short Python, Node, or Expect script when tmux is unavailable.
34
+ - Runtime inspector: use Node or Bun inspector for CPU profiles, heap snapshots, and live evaluation.
35
+ - Terminal recorder: use repo-local demo tools or asciinema-compatible tools when the user asks for a demo.
36
+
37
+ ## Minimal tmux Harness
38
+
39
+ ```bash
40
+ SESSION="cli-harness-$(date +%s)"
41
+ tmux new-session -d -s "$SESSION" -- <command-under-test>
42
+ tmux capture-pane -pt "$SESSION"
43
+ tmux send-keys -t "$SESSION" "help" Enter
44
+ tmux capture-pane -pt "$SESSION"
45
+ tmux kill-session -t "$SESSION"
46
+ ```
47
+
48
+ For Node CLIs:
49
+
50
+ ```bash
51
+ NODE_OPTIONS="--inspect=127.0.0.1:0" tmux new-session -d -s "$SESSION" -- <node-cli-command>
52
+ ```
53
+
54
+ Read the terminal output to find the inspector URL, then use Chrome DevTools-compatible tooling if profiling is needed.
55
+
56
+ ## Minimal PTY Harness
57
+
58
+ Use a PTY script when you need deterministic waits in a repo that does not have tmux or a demo harness. Keep it temporary unless the user asks to add a reusable test.
59
+
60
+ ```python
61
+ import os
62
+ import pty
63
+ import select
64
+ import subprocess
65
+ import time
66
+
67
+ master_fd, slave_fd = pty.openpty()
68
+ proc = subprocess.Popen(
69
+ ["<command>", "<arg>"],
70
+ stdin=slave_fd,
71
+ stdout=slave_fd,
72
+ stderr=slave_fd,
73
+ close_fds=True,
74
+ )
75
+ os.close(slave_fd)
76
+
77
+ deadline = time.time() + 30
78
+ buffer = b""
79
+ while time.time() < deadline:
80
+ ready, _, _ = select.select([master_fd], [], [], 0.25)
81
+ if not ready:
82
+ continue
83
+ chunk = os.read(master_fd, 4096)
84
+ buffer += chunk
85
+ if b"<ready text>" in buffer:
86
+ os.write(master_fd, b"help\n")
87
+ break
88
+
89
+ print(buffer.decode(errors="replace"))
90
+ proc.terminate()
91
+ os.close(master_fd)
92
+ ```
93
+
94
+ If the CLI needs richer terminal control, use `pty.fork()` or an existing PTY library.
95
+
96
+ ## Profiling Recipes
97
+
98
+ - Startup regression: capture baseline and treatment startup timings under the same machine, env, and command.
99
+ - Slow operation: start a CPU profile, perform the operation, stop the profile, and compare top self-time functions.
100
+ - Memory leak: force GC if available, take a heap snapshot, perform the operation repeatedly, force GC again, and take another snapshot.
101
+ - Hang: capture the screen, active handles/resources, and a stack/CPU sample before interrupting.
102
+
103
+ ## Guardrails
104
+
105
+ - Prefer deterministic waits over sleeps. If you must sleep, explain why.
106
+ - Do not send credentials or destructive commands into a controlled session.
107
+ - Keep the harness in `/tmp` unless the repo already has a testing/demo harness.
108
+ - Do not hard-code paths from another repository. Adapt commands to the current repo's scripts and runtime.
109
+ - Clean up tmux sessions, temp dirs, inspector processes, and demo artifacts unless the user asks to keep them.
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: control-ui
3
+ description: Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI. Use for local UI verification, screenshots, accessibility snapshots, perf profiles, visual diffs, or reproducing UI bugs.
4
+ ---
5
+
6
+ # Control UI
7
+
8
+ Use local browser automation to verify UI behavior with evidence. First reuse the repo's own Playwright, browser, or Electron harness if it exists; otherwise assemble a temporary local harness around the app's dev server or Chromium debug port.
9
+
10
+ ## What It Is Used For
11
+
12
+ - Reproducing UI bugs that depend on real browser focus, keyboard input, scrolling, resizing, or rendering.
13
+ - Verifying visual or accessibility changes with screenshots and snapshots.
14
+ - Checking local web, IDE, or Electron behavior before shipping.
15
+ - Capturing console logs, network logs, CPU profiles, traces, or heap snapshots.
16
+ - Creating before/after evidence for `verify-this`.
17
+
18
+ ## Setup Pattern
19
+
20
+ 1. Start the app locally using the repo's documented dev command.
21
+ 2. Discover existing local harnesses: Playwright tests, Cypress specs, Storybook, browser scripts, Electron launch scripts, or snapshot tools.
22
+ 3. For a web app, connect to the local URL with the existing browser tooling.
23
+ 4. For Electron/Chromium, enable a remote debugging port when supported.
24
+ 5. Select the correct page by stable app markers, not by tab order alone.
25
+ 6. Prefer accessibility roles, labels, and stable `data-*` selectors over coordinates.
26
+
27
+ ## Generic Web Harness
28
+
29
+ Use the repo's installed browser tooling when possible. If the repo already has Playwright, a minimal one-off probe looks like:
30
+
31
+ ```javascript
32
+ import { chromium } from "playwright";
33
+
34
+ const browser = await chromium.launch();
35
+ const page = await browser.newPage({ viewport: { width: 1280, height: 800 } });
36
+ await page.goto("http://127.0.0.1:<port>");
37
+ await page.getByRole("button", { name: /submit/i }).click();
38
+ await page.screenshot({ path: "/tmp/ui-harness-after.png", fullPage: true });
39
+ await browser.close();
40
+ ```
41
+
42
+ Do not add Playwright as a project dependency just for this probe unless the user asks. Prefer existing dev dependencies or external browser tools already available in the environment.
43
+
44
+ ## Generic CDP Harness
45
+
46
+ For Electron or a Chromium app launched with `--remote-debugging-port=<port>`, connect over CDP:
47
+
48
+ ```javascript
49
+ import { chromium } from "playwright";
50
+
51
+ const browser = await chromium.connectOverCDP("http://127.0.0.1:<debug-port>");
52
+ const pages = browser.contexts().flatMap((context) => context.pages());
53
+ let page;
54
+ for (const candidate of pages) {
55
+ if (await candidate.locator("<app-root-selector>").count()) {
56
+ page = candidate;
57
+ break;
58
+ }
59
+ }
60
+
61
+ if (!page) {
62
+ console.log(await Promise.all(pages.map(async (p) => ({
63
+ title: await p.title(),
64
+ url: p.url(),
65
+ }))));
66
+ throw new Error("No matching app page found");
67
+ }
68
+
69
+ await page.screenshot({ path: "/tmp/ui-harness-cdp.png", fullPage: true });
70
+ await browser.close();
71
+ ```
72
+
73
+ Replace `<app-root-selector>` with a stable marker from the current repo, such as a root app node, landmark, or product-specific `data-*` attribute.
74
+
75
+ ## Interaction Loop
76
+
77
+ 1. Capture a page snapshot or screenshot before acting.
78
+ 2. Choose a target from the latest page structure.
79
+ 3. Perform exactly one structural action: click, type, keypress, drag, scroll, navigate, or resize.
80
+ 4. Capture a fresh snapshot/screenshot.
81
+ 5. Verify the expected state change.
82
+ 6. Save artifacts for before/after comparisons when the user asked for proof.
83
+
84
+ ## CDP Capabilities
85
+
86
+ Use raw CDP only when higher-level browser APIs are insufficient:
87
+
88
+ - Performance: CPU profiles, traces, paint flashing, FPS meter, layout shift inspection.
89
+ - Memory: heap snapshots and forced GC for leak investigations.
90
+ - Network: request blocking, throttling, cache disablement, request/response logs.
91
+ - Rendering: viewport changes, color scheme emulation, reduced motion, accessibility checks.
92
+ - Debugging: console streaming, exception capture, DOM snapshots.
93
+
94
+ ## Page Selection
95
+
96
+ When multiple app windows/tabs share a debug port:
97
+
98
+ - Prefer a positive marker for the surface under test, such as an app root selector.
99
+ - Use a negative marker to avoid the wrong surface when necessary.
100
+ - If no page matches, list available page titles and URLs instead of guessing.
101
+
102
+ ## Guardrails
103
+
104
+ - Do not rely on stale element references after navigation or structural changes.
105
+ - Avoid coordinate clicks unless a fresh screenshot was captured immediately before the click.
106
+ - Keep test data local and disposable.
107
+ - Do not store screenshots or heap snapshots from privacy-sensitive workspaces unless the user explicitly agrees.
108
+ - Do not hard-code selectors, ports, or script paths from another repository. Discover the current repo's local app markers.
109
+ - Clean up dev servers, debug sessions, and temp profiles when done.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: correct
3
+ description: "Find the mistakes agents keep repeating in this repo and make each one impossible. Try architecture first, then types, then a lint whose error names the fix, then a test, and write docs last. Prove each check fails on a real past mistake. Repeat this each time the operator corrects you. Use for /correct."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Correct
8
+
9
+ The operator keeps correcting agents in this repo for the same mistakes. Change the repo so the next agent can't make them.
10
+
11
+ Assume every contributor is an agent that sees only the files it opened, copies the nearest example, and takes the shortest path that compiles. Design the repo so a change that looks right from one file is right for the whole repo.
12
+
13
+ ## Find the mistake classes
14
+
15
+ First, read recent commits, reverts, review comments, agent instruction files, and comments that explain workarounds. Group the mistakes into classes. A class counts once it has happened twice.
16
+
17
+ ## Fix each class at the highest level that works
18
+
19
+ 1. **Eliminate it with architecture.** Give each piece of state one owner and each task one supported way. Hide internals so the wrong import fails. Replace hand-synced lists with one source of truth. Delete old ways and dead code an agent would copy.
20
+ 2. **Enforce it with types so the bad state can't be written.** If bad code still compiles, add a lint or CI check whose error names the file, type, or function to use instead. If the pattern is already common, fail only when a change adds more.
21
+ 3. **Test the behavior.** Fix or delete any test that still passes when the behavior it checks breaks, or that fails when only the internals change.
22
+ 4. **Write docs or agent rules last, only for judgment calls.** Nothing fails when an agent skips them.
23
+
24
+ ## Fix and prove
25
+
26
+ Then fix the most frequent classes now, one commit each. Prove each new check fails on a real past mistake. Run the same command locally and in CI. Exceptions go on the offending line with a reason, an expiry date, and a human's approval.
27
+
28
+ ## Keep the rule table
29
+
30
+ Last, keep a table in the agent instruction file that pairs each rule with what enforces it. When the operator corrects you, fix the mistake and add the rule. If the rule was already there and nothing enforces it, that's a repeat, so fix it at the highest level in the same change. Drop a rule once its mistake can't happen.
31
+
32
+ **Reply:** each class with its evidence, the level you picked, and why a higher level didn't work.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: create-formal-verification-skill
3
+ description: "Generate a project-local skill that formally verifies the code where a bug costs the most and tests reach the least, in any language, with whichever verification tool fits. Use for /create-formal-verification-skill, \"model-check this race\", \"prove this invariant\", or when concurrency, retries, state machines, parsers, or unsafe code need more than tests."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Create a formal verification skill
8
+
9
+ A test checks the cases that someone thought to write. Formal verification checks every case in a stated scope: every order of steps in a model, every input up to a bound, or every input. This skill finds the part of the repo where that matters most, verifies one property of it, and leaves a project-local skill that lets the next agent check a change against that property. Write that skill for an agent who reads it cold, mid-change, and has never seen your work. The user must be able to trust the result and act on it without learning the verification language.
10
+
11
+ ## Choose the target from the code
12
+
13
+ Answer from the codebase, and ask the user only what you cannot observe. If the user named an area or a bug, start there.
14
+
15
+ A good target is a promise the code makes, where a break harms users and tests rarely reach the case that breaks it. Choose the strongest such target in the repo, not the one that is easiest to verify.
16
+
17
+ ## Let the question choose the tool
18
+
19
+ Pick the tool that answers the question at the lowest cost: a model checker, a proof assistant, an SMT-backed verifier, or another tool. Whether events can happen in a bad order usually suits a model checker over a small model of the design, and TLA+ is the default for that in any language. Whether the code itself behaves for every input, as with memory safety, overflow, or a data-structure invariant, usually suits a verifier that runs on the code. If no verifier runs on this language, say so, and test the real code with generated inputs, not a hand model of the function. A property that must hold at every size, where a bound is not enough, can need a proof. Prefer a tool that the repo's developers can install and run, and tell the user why you chose it.
20
+
21
+ ## What makes it good
22
+
23
+ - **True to the code.** Every part of the model or proof points to code that a reviewer can open. What the verification treats as one indivisible step is one indivisible step in the code. Names come from this repo.
24
+ - **Able to fail.** A check that you have never seen fail proves nothing. Show each property failing on a broken variant of the code it guards, such as a removed check or a reordered step.
25
+ - **Findings stay findings.** When the current code breaks the property, report it with the counterexample in the code's terms. Do not weaken the property or the model until it passes, and do not change product code unless the user asks.
26
+ - **Honest about scope.** Say what is verified, under which bounds and assumptions, and what is left out. A pass covers the model or the bound, not the whole system.
27
+ - **Readable without the tool.** State the property and the harm in one plain sentence each. Tell a counterexample as a short sequence of steps in the code's words.
28
+ - **Cheap to rerun.** One command, a reproducible tool version, and a run short enough that the next agent will use it on every relevant change.
29
+ - **Kept in step with the code.** Record which files and functions each check covers, and the commit at which you last confirmed that the verification describes them. When the covered code changes after that commit, the next agent can see that the verification needs another look.
30
+
31
+ ## Generate the verify skill
32
+
33
+ Write a project-local skill with frontmatter that names the area and says when to use it. Without frontmatter, the skill never registers. From the skill alone, the next agent must be able to tell whether a change touches the verified code, run the check, tell a real bug from a modeling error, and update the verification when a change is intended. Put the coverage record and the sync commit in the skill, and tell the next agent to move the sync commit forward only after it confirms that the verification describes the code at the new commit. Use this repo's real commands, paths, and nouns, and leave no placeholders.
34
+
35
+ If the check is a TLA+ model, tell the next agent to read every result with the pstack [`/statechart`](../statechart/SKILL.md) skill. It shows each invariant violation the checker finds as its shortest path in plain words. When the check passes, `/statechart` draws a chart of how the system moves between states. Refer to `/statechart` by name. Its commands, options, and file paths change between releases and machines, so copy none of them into the generated skill or its scripts.
36
+
37
+ ## Prove it before you hand off
38
+
39
+ Follow the generated skill once, as the next agent would, on a scratch change that breaks the property in the real code. It must catch the break. Then drop the scratch change and confirm that the check is back where it started: passing, or failing only on the findings you will report. A verify skill that was never run is a draft. If the skill misses the break or a step does not run, fix the skill or the verification, not the scratch change.
40
+
41
+ ## Hand off
42
+
43
+ Tell the user what you verified, which tool you used and why, the bounds, what the check found in plain words, how to run it, and what it does not cover. Suggest a second target only if you found a close one. Point the user at `/maintain-formal-verification-skill` for bringing the verification back in line after changes that did not recheck it.