@litfamily/litopencode 1.0.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 (690) hide show
  1. package/.gitattributes +8 -0
  2. package/ATTRIBUTION.md +56 -0
  3. package/CHANGELOG.md +267 -0
  4. package/CODE_OF_CONDUCT.md +30 -0
  5. package/CONTRIBUTING.md +82 -0
  6. package/LICENSE +21 -0
  7. package/README-Ko-KR.md +252 -0
  8. package/README.md +252 -0
  9. package/SECURITY.md +36 -0
  10. package/SUPPORT.md +37 -0
  11. package/bin/litopencode +3 -0
  12. package/bin/litopencode.cjs +10 -0
  13. package/dist/activation-managed-prompts.d.ts +2 -0
  14. package/dist/activation-managed-prompts.js +51 -0
  15. package/dist/activation-primary-prompts.d.ts +2 -0
  16. package/dist/activation-primary-prompts.js +176 -0
  17. package/dist/activation-probe.d.ts +3 -0
  18. package/dist/activation-probe.js +19 -0
  19. package/dist/activation-prompt-utils.d.ts +6 -0
  20. package/dist/activation-prompt-utils.js +36 -0
  21. package/dist/activation-routing.d.ts +5 -0
  22. package/dist/activation-routing.js +340 -0
  23. package/dist/activation-workflow-prompts.d.ts +26 -0
  24. package/dist/activation-workflow-prompts.js +295 -0
  25. package/dist/activation.d.ts +24 -0
  26. package/dist/activation.js +152 -0
  27. package/dist/agents/defaults.d.ts +15 -0
  28. package/dist/agents/defaults.js +112 -0
  29. package/dist/agents/registry.d.ts +65 -0
  30. package/dist/agents/registry.js +319 -0
  31. package/dist/agents/specialists.d.ts +49 -0
  32. package/dist/agents/specialists.js +307 -0
  33. package/dist/agents/types.d.ts +55 -0
  34. package/dist/agents/types.js +4 -0
  35. package/dist/agents.d.ts +4 -0
  36. package/dist/agents.js +3 -0
  37. package/dist/benchmark.d.ts +94 -0
  38. package/dist/benchmark.js +172 -0
  39. package/dist/bounded-authority-hooks.d.ts +19 -0
  40. package/dist/bounded-authority-hooks.js +157 -0
  41. package/dist/bounded-authority.d.ts +184 -0
  42. package/dist/bounded-authority.js +825 -0
  43. package/dist/cache-metrics.d.ts +54 -0
  44. package/dist/cache-metrics.js +81 -0
  45. package/dist/cli/args.d.ts +5 -0
  46. package/dist/cli/args.js +415 -0
  47. package/dist/cli/auto-update.d.ts +117 -0
  48. package/dist/cli/auto-update.js +604 -0
  49. package/dist/cli/command-alias-ownership.d.ts +2 -0
  50. package/dist/cli/command-alias-ownership.js +14 -0
  51. package/dist/cli/command-aliases.d.ts +12 -0
  52. package/dist/cli/command-aliases.js +112 -0
  53. package/dist/cli/doctor.d.ts +2 -0
  54. package/dist/cli/doctor.js +175 -0
  55. package/dist/cli/host-capabilities.d.ts +12 -0
  56. package/dist/cli/host-capabilities.js +25 -0
  57. package/dist/cli/host-limits.d.ts +21 -0
  58. package/dist/cli/host-limits.js +83 -0
  59. package/dist/cli/install-config.d.ts +13 -0
  60. package/dist/cli/install-config.js +201 -0
  61. package/dist/cli/install-report.d.ts +2 -0
  62. package/dist/cli/install-report.js +180 -0
  63. package/dist/cli/install-tui.d.ts +12 -0
  64. package/dist/cli/install-tui.js +174 -0
  65. package/dist/cli/install.d.ts +2 -0
  66. package/dist/cli/install.js +264 -0
  67. package/dist/cli/json.d.ts +4 -0
  68. package/dist/cli/json.js +31 -0
  69. package/dist/cli/loop.d.ts +3 -0
  70. package/dist/cli/loop.js +135 -0
  71. package/dist/cli/lsp-capability.d.ts +17 -0
  72. package/dist/cli/lsp-capability.js +92 -0
  73. package/dist/cli/managed-skill-assets.d.ts +23 -0
  74. package/dist/cli/managed-skill-assets.js +117 -0
  75. package/dist/cli/model-catalog.d.ts +21 -0
  76. package/dist/cli/model-catalog.js +107 -0
  77. package/dist/cli/model-policy.d.ts +3 -0
  78. package/dist/cli/model-policy.js +143 -0
  79. package/dist/cli/model-routing.d.ts +5 -0
  80. package/dist/cli/model-routing.js +208 -0
  81. package/dist/cli/native-canonical-backup.d.ts +9 -0
  82. package/dist/cli/native-canonical-backup.js +96 -0
  83. package/dist/cli/native-canonical-cache.d.ts +9 -0
  84. package/dist/cli/native-canonical-cache.js +37 -0
  85. package/dist/cli/native-skill-install.d.ts +2 -0
  86. package/dist/cli/native-skill-install.js +128 -0
  87. package/dist/cli/native-skill-integrity.d.ts +25 -0
  88. package/dist/cli/native-skill-integrity.js +178 -0
  89. package/dist/cli/native-skill-tree.d.ts +12 -0
  90. package/dist/cli/native-skill-tree.js +104 -0
  91. package/dist/cli/native-skills.d.ts +22 -0
  92. package/dist/cli/native-skills.js +105 -0
  93. package/dist/cli/plugin-mutation.d.ts +4 -0
  94. package/dist/cli/plugin-mutation.js +89 -0
  95. package/dist/cli/scientific-visualization-dependencies.d.ts +18 -0
  96. package/dist/cli/scientific-visualization-dependencies.js +91 -0
  97. package/dist/cli/skill-loop.d.ts +3 -0
  98. package/dist/cli/skill-loop.js +649 -0
  99. package/dist/cli/types.d.ts +188 -0
  100. package/dist/cli/types.js +1 -0
  101. package/dist/cli/update-check.d.ts +2 -0
  102. package/dist/cli/update-check.js +15 -0
  103. package/dist/cli/update-notifier.d.ts +70 -0
  104. package/dist/cli/update-notifier.js +717 -0
  105. package/dist/cli/vendor-path-migration.d.ts +9 -0
  106. package/dist/cli/vendor-path-migration.js +96 -0
  107. package/dist/cli.d.ts +7 -0
  108. package/dist/cli.js +250 -0
  109. package/dist/commands.d.ts +331 -0
  110. package/dist/commands.js +600 -0
  111. package/dist/config-parser.d.ts +5 -0
  112. package/dist/config-parser.js +274 -0
  113. package/dist/config.d.ts +72 -0
  114. package/dist/config.js +157 -0
  115. package/dist/deliverable-hedge-guard.d.ts +26 -0
  116. package/dist/deliverable-hedge-guard.js +302 -0
  117. package/dist/durable-plan.d.ts +23 -0
  118. package/dist/durable-plan.js +349 -0
  119. package/dist/features.d.ts +828 -0
  120. package/dist/features.js +1109 -0
  121. package/dist/hooks.d.ts +17 -0
  122. package/dist/hooks.js +83 -0
  123. package/dist/ignition.d.ts +14 -0
  124. package/dist/ignition.js +33 -0
  125. package/dist/index.d.ts +30 -0
  126. package/dist/index.js +30 -0
  127. package/dist/inert-data.d.ts +2 -0
  128. package/dist/inert-data.js +13 -0
  129. package/dist/knowledge.d.ts +98 -0
  130. package/dist/knowledge.js +961 -0
  131. package/dist/ledger.d.ts +181 -0
  132. package/dist/ledger.js +1179 -0
  133. package/dist/lit-fetch-classify.d.ts +8 -0
  134. package/dist/lit-fetch-classify.js +107 -0
  135. package/dist/lit-fetch-content.d.ts +2 -0
  136. package/dist/lit-fetch-content.js +43 -0
  137. package/dist/lit-fetch-http.d.ts +10 -0
  138. package/dist/lit-fetch-http.js +82 -0
  139. package/dist/lit-fetch-result.d.ts +2 -0
  140. package/dist/lit-fetch-result.js +65 -0
  141. package/dist/lit-fetch-ssrf.d.ts +9 -0
  142. package/dist/lit-fetch-ssrf.js +77 -0
  143. package/dist/lit-fetch-url.d.ts +3 -0
  144. package/dist/lit-fetch-url.js +28 -0
  145. package/dist/lit-fetch.d.ts +69 -0
  146. package/dist/lit-fetch.js +84 -0
  147. package/dist/lit-mark.d.ts +17 -0
  148. package/dist/lit-mark.js +129 -0
  149. package/dist/logger.d.ts +9 -0
  150. package/dist/logger.js +21 -0
  151. package/dist/model-route-policy.d.ts +25 -0
  152. package/dist/model-route-policy.js +129 -0
  153. package/dist/reader-facing-output.d.ts +3 -0
  154. package/dist/reader-facing-output.js +28 -0
  155. package/dist/rules/discovery.d.ts +36 -0
  156. package/dist/rules/discovery.js +270 -0
  157. package/dist/rules/engine.d.ts +43 -0
  158. package/dist/rules/engine.js +236 -0
  159. package/dist/rules/frontmatter.d.ts +16 -0
  160. package/dist/rules/frontmatter.js +179 -0
  161. package/dist/rules/glob.d.ts +12 -0
  162. package/dist/rules/glob.js +233 -0
  163. package/dist/rules/hooks.d.ts +25 -0
  164. package/dist/rules/hooks.js +75 -0
  165. package/dist/rules/output-style.d.ts +1 -0
  166. package/dist/rules/output-style.js +20 -0
  167. package/dist/scientific-visualization-banner.d.ts +1 -0
  168. package/dist/scientific-visualization-banner.js +2 -0
  169. package/dist/search-workflow-ideas.d.ts +67 -0
  170. package/dist/search-workflow-ideas.js +128 -0
  171. package/dist/secret-shapes.d.ts +9 -0
  172. package/dist/secret-shapes.js +63 -0
  173. package/dist/server.d.ts +6 -0
  174. package/dist/server.js +129 -0
  175. package/dist/session-lineage.d.ts +8 -0
  176. package/dist/session-lineage.js +12 -0
  177. package/dist/skill-loop/apply.d.ts +19 -0
  178. package/dist/skill-loop/apply.js +483 -0
  179. package/dist/skill-loop/config.d.ts +50 -0
  180. package/dist/skill-loop/config.js +215 -0
  181. package/dist/skill-loop/curator.d.ts +18 -0
  182. package/dist/skill-loop/curator.js +232 -0
  183. package/dist/skill-loop/ledger.d.ts +39 -0
  184. package/dist/skill-loop/ledger.js +344 -0
  185. package/dist/skill-loop/proposals.d.ts +48 -0
  186. package/dist/skill-loop/proposals.js +290 -0
  187. package/dist/skill-loop/storage.d.ts +72 -0
  188. package/dist/skill-loop/storage.js +817 -0
  189. package/dist/skill-loop/time.d.ts +2 -0
  190. package/dist/skill-loop/time.js +23 -0
  191. package/dist/skill-loop/transaction.d.ts +62 -0
  192. package/dist/skill-loop/transaction.js +836 -0
  193. package/dist/skill-loop/usage.d.ts +31 -0
  194. package/dist/skill-loop/usage.js +146 -0
  195. package/dist/skill-observer.d.ts +22 -0
  196. package/dist/skill-observer.js +1154 -0
  197. package/dist/skill-renames.d.ts +5 -0
  198. package/dist/skill-renames.js +8 -0
  199. package/dist/skills.d.ts +307 -0
  200. package/dist/skills.js +450 -0
  201. package/dist/stable-identity.d.ts +14 -0
  202. package/dist/stable-identity.js +15 -0
  203. package/dist/state.d.ts +25 -0
  204. package/dist/state.js +38 -0
  205. package/dist/strict-json.d.ts +2 -0
  206. package/dist/strict-json.js +94 -0
  207. package/dist/tool-guards.d.ts +34 -0
  208. package/dist/tool-guards.js +210 -0
  209. package/dist/tool-kit.d.ts +32 -0
  210. package/dist/tool-kit.js +75 -0
  211. package/dist/tools.d.ts +43 -0
  212. package/dist/tools.js +381 -0
  213. package/dist/uiux-visual-catalog.d.ts +50 -0
  214. package/dist/uiux-visual-catalog.js +103 -0
  215. package/dist/user-facing-markdown.d.ts +5 -0
  216. package/dist/user-facing-markdown.js +93 -0
  217. package/dist/workflow-families.d.ts +16 -0
  218. package/dist/workflow-families.js +95 -0
  219. package/docs/assets/cover.webp +0 -0
  220. package/docs/assets/litopencode-continuity-1600.webp +0 -0
  221. package/docs/assets/litopencode-ignition-1600.webp +0 -0
  222. package/docs/assets/readme/badge-license.svg +1 -0
  223. package/docs/assets/readme/badge-version.svg +1 -0
  224. package/docs/assets/readme/litopencode-clay-icon.png +0 -0
  225. package/docs/assets/readme/litopencode-wordmark.svg +5 -0
  226. package/docs/lit-mark.md +46 -0
  227. package/docs/migration.md +162 -0
  228. package/docs/privacy.md +82 -0
  229. package/docs/reference-Ko-KR.md +309 -0
  230. package/docs/reference.md +444 -0
  231. package/output-styles/asd-ste100-ko.md +41 -0
  232. package/output-styles/asd-ste100.md +40 -0
  233. package/output-styles/eli5-ko.md +13 -0
  234. package/output-styles/eli5.md +11 -0
  235. package/package.json +57 -0
  236. package/qa/fixtures/litfamily-harness-speed-v1.json +38 -0
  237. package/qa/harness-speed-contract.mjs +209 -0
  238. package/qa/harness-speed-v2-contract.mjs +213 -0
  239. package/qa/harness-speed-verdict.mjs +105 -0
  240. package/skills/agent-roster/SKILL.md +262 -0
  241. package/skills/autoconference/LICENSE +21 -0
  242. package/skills/autoconference/PROVENANCE.md +20 -0
  243. package/skills/autoconference/SKILL.md +125 -0
  244. package/skills/autoconference/assets/conference_template.md +76 -0
  245. package/skills/autoconference/assets/report_template.md +53 -0
  246. package/skills/autoconference/assets/synthesis_template.md +39 -0
  247. package/skills/autoconference/modes/analyze.md +255 -0
  248. package/skills/autoconference/modes/core.md +112 -0
  249. package/skills/autoconference/modes/debate.md +373 -0
  250. package/skills/autoconference/modes/plan.md +310 -0
  251. package/skills/autoconference/modes/resume.md +48 -0
  252. package/skills/autoconference/modes/ship.md +57 -0
  253. package/skills/autoconference/modes/survey.md +109 -0
  254. package/skills/autoconference/references/agent-prompts.md +134 -0
  255. package/skills/autoconference/references/conference-protocol.md +102 -0
  256. package/skills/autoconference/references/convergence-guide.md +167 -0
  257. package/skills/autoconference/references/core-principles.md +83 -0
  258. package/skills/autoconference/references/crash-recovery.md +104 -0
  259. package/skills/autoconference/references/results-logging.md +198 -0
  260. package/skills/autoconference/references/upstream-family-contract.md +130 -0
  261. package/skills/autoconference/references/visualization-guide.md +105 -0
  262. package/skills/autoconference/scripts/check_conference.sh +371 -0
  263. package/skills/autoconference/scripts/init_conference.py +625 -0
  264. package/skills/autoconference/scripts/style_presets.py +104 -0
  265. package/skills/autoresearch/LICENSE +21 -0
  266. package/skills/autoresearch/PROVENANCE.md +20 -0
  267. package/skills/autoresearch/SKILL.md +131 -0
  268. package/skills/autoresearch/assets/report_template.md +50 -0
  269. package/skills/autoresearch/assets/research_template.md +38 -0
  270. package/skills/autoresearch/assets/results_template.tsv +1 -0
  271. package/skills/autoresearch/modes/core.md +216 -0
  272. package/skills/autoresearch/modes/debug.md +235 -0
  273. package/skills/autoresearch/modes/fix.md +173 -0
  274. package/skills/autoresearch/modes/learn.md +91 -0
  275. package/skills/autoresearch/modes/plan.md +291 -0
  276. package/skills/autoresearch/modes/predict.md +266 -0
  277. package/skills/autoresearch/modes/reason.md +170 -0
  278. package/skills/autoresearch/modes/scenario.md +164 -0
  279. package/skills/autoresearch/modes/security.md +282 -0
  280. package/skills/autoresearch/modes/ship.md +49 -0
  281. package/skills/autoresearch/references/core-principles.md +80 -0
  282. package/skills/autoresearch/references/evaluator-contract.md +126 -0
  283. package/skills/autoresearch/references/investigation-techniques.md +205 -0
  284. package/skills/autoresearch/references/owasp-checklist.md +161 -0
  285. package/skills/autoresearch/references/persona-templates.md +232 -0
  286. package/skills/autoresearch/references/results-logging.md +96 -0
  287. package/skills/autoresearch/references/scenario-dimensions.md +178 -0
  288. package/skills/autoresearch/references/stride-model.md +196 -0
  289. package/skills/autoresearch/references/stuck-detection.md +107 -0
  290. package/skills/autoresearch/references/type-checklists.md +163 -0
  291. package/skills/autoresearch/references/upstream-family-contract.md +125 -0
  292. package/skills/autoresearch/references/visualization-guide.md +95 -0
  293. package/skills/autoresearch/scripts/check_progress.sh +272 -0
  294. package/skills/autoresearch/scripts/init_research.py +330 -0
  295. package/skills/autoresearch/scripts/run_with_deadline.py +164 -0
  296. package/skills/autoresearch/scripts/style_presets.py +104 -0
  297. package/skills/browser-drive/SKILL.md +133 -0
  298. package/skills/browser-drive/references/snapshot-act-loop.md +37 -0
  299. package/skills/browser-drive/scripts/capability-probe.mjs +262 -0
  300. package/skills/comment-checker/SKILL.md +171 -0
  301. package/skills/debugging/SKILL.md +202 -0
  302. package/skills/debugging/references/README.md +15 -0
  303. package/skills/debugging/references/escalation.md +43 -0
  304. package/skills/debugging/references/runtimes/README.md +17 -0
  305. package/skills/debugging/references/runtimes/bundled-js-binary.md +44 -0
  306. package/skills/debugging/references/runtimes/go.md +37 -0
  307. package/skills/debugging/references/runtimes/native-binary.md +44 -0
  308. package/skills/debugging/references/runtimes/node.md +43 -0
  309. package/skills/debugging/references/runtimes/python.md +41 -0
  310. package/skills/debugging/references/runtimes/rust.md +37 -0
  311. package/skills/debugging/references/tools.md +72 -0
  312. package/skills/deep-interview/SKILL.md +201 -0
  313. package/skills/doctor-installer/SKILL.md +252 -0
  314. package/skills/durable-litgoal/SKILL.md +248 -0
  315. package/skills/frontend-ui-ux/SKILL.md +70 -0
  316. package/skills/frontend-ui-ux/data/LICENSE +21 -0
  317. package/skills/frontend-ui-ux/data/PROVENANCE.json +1088 -0
  318. package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +14 -0
  319. package/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
  320. package/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
  321. package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
  322. package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
  323. package/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +867 -0
  324. package/skills/frontend-ui-ux/references/adaptive-layout.md +85 -0
  325. package/skills/frontend-ui-ux/references/brand-and-imagery.md +79 -0
  326. package/skills/frontend-ui-ux/references/complete-contract.md +282 -0
  327. package/skills/frontend-ui-ux/references/composition.md +87 -0
  328. package/skills/frontend-ui-ux/references/creative-directions.md +83 -0
  329. package/skills/frontend-ui-ux/references/design/README.md +248 -0
  330. package/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
  331. package/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
  332. package/skills/frontend-ui-ux/references/design/airtable.md +92 -0
  333. package/skills/frontend-ui-ux/references/design/apple.md +250 -0
  334. package/skills/frontend-ui-ux/references/design/aside.md +209 -0
  335. package/skills/frontend-ui-ux/references/design/binance.md +348 -0
  336. package/skills/frontend-ui-ux/references/design/bmw.md +183 -0
  337. package/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
  338. package/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
  339. package/skills/frontend-ui-ux/references/design/cal.md +262 -0
  340. package/skills/frontend-ui-ux/references/design/claude.md +315 -0
  341. package/skills/frontend-ui-ux/references/design/clay.md +307 -0
  342. package/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
  343. package/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
  344. package/skills/frontend-ui-ux/references/design/cohere.md +269 -0
  345. package/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
  346. package/skills/frontend-ui-ux/references/design/composio.md +310 -0
  347. package/skills/frontend-ui-ux/references/design/cursor.md +312 -0
  348. package/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
  349. package/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
  350. package/skills/frontend-ui-ux/references/design/expo.md +284 -0
  351. package/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
  352. package/skills/frontend-ui-ux/references/design/figma.md +223 -0
  353. package/skills/frontend-ui-ux/references/design/framer.md +249 -0
  354. package/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
  355. package/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
  356. package/skills/frontend-ui-ux/references/design/ibm.md +335 -0
  357. package/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
  358. package/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
  359. package/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
  360. package/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
  361. package/skills/frontend-ui-ux/references/design/intercom.md +149 -0
  362. package/skills/frontend-ui-ux/references/design/kraken.md +128 -0
  363. package/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
  364. package/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
  365. package/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
  366. package/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
  367. package/skills/frontend-ui-ux/references/design/lovable.md +301 -0
  368. package/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
  369. package/skills/frontend-ui-ux/references/design/meta.md +369 -0
  370. package/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
  371. package/skills/frontend-ui-ux/references/design/minimax.md +260 -0
  372. package/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
  373. package/skills/frontend-ui-ux/references/design/miro.md +111 -0
  374. package/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
  375. package/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
  376. package/skills/frontend-ui-ux/references/design/nike.md +366 -0
  377. package/skills/frontend-ui-ux/references/design/notion.md +312 -0
  378. package/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
  379. package/skills/frontend-ui-ux/references/design/ollama.md +270 -0
  380. package/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
  381. package/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
  382. package/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
  383. package/skills/frontend-ui-ux/references/design/playstation.md +367 -0
  384. package/skills/frontend-ui-ux/references/design/posthog.md +259 -0
  385. package/skills/frontend-ui-ux/references/design/raycast.md +271 -0
  386. package/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
  387. package/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
  388. package/skills/frontend-ui-ux/references/design/renault.md +314 -0
  389. package/skills/frontend-ui-ux/references/design/replicate.md +264 -0
  390. package/skills/frontend-ui-ux/references/design/resend.md +306 -0
  391. package/skills/frontend-ui-ux/references/design/revolut.md +188 -0
  392. package/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
  393. package/skills/frontend-ui-ux/references/design/sanity.md +360 -0
  394. package/skills/frontend-ui-ux/references/design/sentry.md +265 -0
  395. package/skills/frontend-ui-ux/references/design/shopify.md +353 -0
  396. package/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
  397. package/skills/frontend-ui-ux/references/design/spacex.md +197 -0
  398. package/skills/frontend-ui-ux/references/design/spotify.md +249 -0
  399. package/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
  400. package/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
  401. package/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
  402. package/skills/frontend-ui-ux/references/design/stripe.md +325 -0
  403. package/skills/frontend-ui-ux/references/design/supabase.md +258 -0
  404. package/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
  405. package/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
  406. package/skills/frontend-ui-ux/references/design/tesla.md +289 -0
  407. package/skills/frontend-ui-ux/references/design/theverge.md +342 -0
  408. package/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
  409. package/skills/frontend-ui-ux/references/design/uber.md +298 -0
  410. package/skills/frontend-ui-ux/references/design/vercel.md +313 -0
  411. package/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
  412. package/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
  413. package/skills/frontend-ui-ux/references/design/warp.md +256 -0
  414. package/skills/frontend-ui-ux/references/design/webflow.md +95 -0
  415. package/skills/frontend-ui-ux/references/design/wired.md +281 -0
  416. package/skills/frontend-ui-ux/references/design/wise.md +176 -0
  417. package/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
  418. package/skills/frontend-ui-ux/references/design/zapier.md +331 -0
  419. package/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
  420. package/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
  421. package/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
  422. package/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
  423. package/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
  424. package/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
  425. package/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
  426. package/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
  427. package/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
  428. package/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
  429. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  430. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
  431. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
  432. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
  433. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
  434. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
  435. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
  436. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  437. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  438. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
  439. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
  440. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
  441. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
  442. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
  443. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
  444. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
  445. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
  446. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
  447. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
  448. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
  449. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
  450. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
  451. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
  452. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
  453. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
  454. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
  455. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
  456. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
  457. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
  458. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
  459. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
  460. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
  461. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
  462. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
  463. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
  464. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
  465. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
  466. package/skills/frontend-ui-ux/references/evidence-review.md +103 -0
  467. package/skills/frontend-ui-ux/references/implementation-platforms.md +94 -0
  468. package/skills/frontend-ui-ux/references/inclusive-interface.md +85 -0
  469. package/skills/frontend-ui-ux/references/interaction-motion.md +93 -0
  470. package/skills/frontend-ui-ux/references/operating-lanes.md +80 -0
  471. package/skills/frontend-ui-ux/references/perfection/README.md +160 -0
  472. package/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
  473. package/skills/frontend-ui-ux/references/performance-delivery.md +77 -0
  474. package/skills/frontend-ui-ux/references/product-direction.md +84 -0
  475. package/skills/frontend-ui-ux/references/redesign-playbook.md +88 -0
  476. package/skills/frontend-ui-ux/references/system-foundations.md +86 -0
  477. package/skills/frontend-ui-ux/references/taste-direction.md +55 -0
  478. package/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
  479. package/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
  480. package/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
  481. package/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
  482. package/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
  483. package/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
  484. package/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
  485. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
  486. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
  487. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
  488. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
  489. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
  490. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
  491. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
  492. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
  493. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
  494. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
  495. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
  496. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
  497. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
  498. package/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
  499. package/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
  500. package/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
  501. package/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
  502. package/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
  503. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
  504. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
  505. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
  506. package/skills/frontend-ui-ux/references/visual-language.md +84 -0
  507. package/skills/frontend-ui-ux/references/visual-reconstruction.md +87 -0
  508. package/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.json +570 -0
  509. package/skills/frontend-ui-ux/schemas/design-contract-v1beta1.json +32 -0
  510. package/skills/frontend-ui-ux/schemas/design-contract-v1beta2.json +34 -0
  511. package/skills/frontend-ui-ux/scripts/bounded-json.mjs +45 -0
  512. package/skills/frontend-ui-ux/scripts/canonical-json.mjs +26 -0
  513. package/skills/frontend-ui-ux/scripts/contract-error.mjs +15 -0
  514. package/skills/frontend-ui-ux/scripts/csv.mjs +64 -0
  515. package/skills/frontend-ui-ux/scripts/dataset.mjs +65 -0
  516. package/skills/frontend-ui-ux/scripts/design-contract.mjs +609 -0
  517. package/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +193 -0
  518. package/skills/frontend-ui-ux/scripts/retrieval.mjs +92 -0
  519. package/skills/frontend-ui-ux/scripts/stable-file-read.mjs +237 -0
  520. package/skills/frontend-ui-ux/scripts/stdin-json.mjs +16 -0
  521. package/skills/frontend-ui-ux/scripts/strict-json.mjs +102 -0
  522. package/skills/frontend-ui-ux/scripts/uiux.mjs +86 -0
  523. package/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +266 -0
  524. package/skills/lit-burnoff/SKILL.md +227 -0
  525. package/skills/lit-burnoff-file/SKILL.md +175 -0
  526. package/skills/lit-code/SKILL.md +266 -0
  527. package/skills/lit-code/references/README.md +18 -0
  528. package/skills/lit-code/references/go/README.md +12 -0
  529. package/skills/lit-code/references/go/concurrency.md +42 -0
  530. package/skills/lit-code/references/go/error-handling.md +47 -0
  531. package/skills/lit-code/references/go/testing.md +55 -0
  532. package/skills/lit-code/references/go/tooling.md +35 -0
  533. package/skills/lit-code/references/go/type-patterns.md +50 -0
  534. package/skills/lit-code/references/python/README.md +12 -0
  535. package/skills/lit-code/references/python/async.md +50 -0
  536. package/skills/lit-code/references/python/error-handling.md +44 -0
  537. package/skills/lit-code/references/python/testing.md +50 -0
  538. package/skills/lit-code/references/python/tooling.md +38 -0
  539. package/skills/lit-code/references/python/type-patterns.md +46 -0
  540. package/skills/lit-code/references/rust/README.md +12 -0
  541. package/skills/lit-code/references/rust/concurrency.md +45 -0
  542. package/skills/lit-code/references/rust/error-handling.md +43 -0
  543. package/skills/lit-code/references/rust/tooling.md +36 -0
  544. package/skills/lit-code/references/rust/type-patterns.md +46 -0
  545. package/skills/lit-code/references/rust/unsafe.md +47 -0
  546. package/skills/lit-code/references/typescript/README.md +11 -0
  547. package/skills/lit-code/references/typescript/error-handling.md +56 -0
  548. package/skills/lit-code/references/typescript/testing.md +42 -0
  549. package/skills/lit-code/references/typescript/tsconfig-strict.md +40 -0
  550. package/skills/lit-code/references/typescript/type-patterns.md +60 -0
  551. package/skills/lit-commit/SKILL.md +222 -0
  552. package/skills/lit-comprehend/SKILL.md +278 -0
  553. package/skills/lit-comprehend/assets/explainer-scaffold.html +104 -0
  554. package/skills/lit-comprehend/references/artifact-template.md +114 -0
  555. package/skills/lit-comprehend/references/micro-worlds.md +115 -0
  556. package/skills/lit-comprehend/scripts/verify-explainer.ts +339 -0
  557. package/skills/lit-crucible/SKILL.md +212 -0
  558. package/skills/lit-fetch/SKILL.md +242 -0
  559. package/skills/lit-handoff/SKILL.md +199 -0
  560. package/skills/lit-init/SKILL.md +214 -0
  561. package/skills/lit-korean/SKILL.md +231 -0
  562. package/skills/lit-plan/SKILL.md +351 -0
  563. package/skills/lit-plan/scripts/scaffold-plan.mjs +275 -0
  564. package/skills/lit-recap/SKILL.md +233 -0
  565. package/skills/lit-scientific-visualization/SKILL.md +175 -0
  566. package/skills/litresearch/SKILL.md +436 -0
  567. package/skills/litwork/SKILL.md +227 -0
  568. package/skills/lsp/SKILL.md +186 -0
  569. package/skills/lsp-setup/SKILL.md +187 -0
  570. package/skills/lsp-setup/references/README.md +40 -0
  571. package/skills/lsp-setup/references/bash.md +31 -0
  572. package/skills/lsp-setup/references/c-cpp.md +43 -0
  573. package/skills/lsp-setup/references/csharp.md +29 -0
  574. package/skills/lsp-setup/references/dart.md +25 -0
  575. package/skills/lsp-setup/references/elixir.md +30 -0
  576. package/skills/lsp-setup/references/go.md +33 -0
  577. package/skills/lsp-setup/references/haskell.md +27 -0
  578. package/skills/lsp-setup/references/java.md +28 -0
  579. package/skills/lsp-setup/references/julia.md +28 -0
  580. package/skills/lsp-setup/references/kotlin.md +25 -0
  581. package/skills/lsp-setup/references/lua.md +26 -0
  582. package/skills/lsp-setup/references/php.md +30 -0
  583. package/skills/lsp-setup/references/python.md +33 -0
  584. package/skills/lsp-setup/references/ruby.md +34 -0
  585. package/skills/lsp-setup/references/rust.md +34 -0
  586. package/skills/lsp-setup/references/swift.md +26 -0
  587. package/skills/lsp-setup/references/terraform.md +26 -0
  588. package/skills/lsp-setup/references/typescript.md +35 -0
  589. package/skills/lsp-setup/references/yaml.md +27 -0
  590. package/skills/lsp-setup/references/zig.md +28 -0
  591. package/skills/managed-skill-manifest.json +1386 -0
  592. package/skills/native-goal-verdict/SKILL.md +216 -0
  593. package/skills/refactor/SKILL.md +221 -0
  594. package/skills/reference-benchmark-claims/SKILL.md +204 -0
  595. package/skills/release-guardrails/SKILL.md +245 -0
  596. package/skills/review-work/SKILL.md +301 -0
  597. package/skills/rules/SKILL.md +196 -0
  598. package/skills/search-workflow-ideas/SKILL.md +223 -0
  599. package/skills/skill-observer/SKILL.md +148 -0
  600. package/skills/skill-observer/references/review-contract.md +95 -0
  601. package/skills/skill-rename-aliases.json +10 -0
  602. package/skills/start-work/SKILL.md +334 -0
  603. package/skills/structural-search/SKILL.md +234 -0
  604. package/skills/tool-guards/SKILL.md +223 -0
  605. package/skills/visual-qa/SKILL.md +61 -0
  606. package/skills/visual-qa/references/capture-playbook.md +105 -0
  607. package/skills/visual-qa/references/complete-contract.md +411 -0
  608. package/skills/visual-qa/schemas/evidence-manifest-v1alpha1.json +201 -0
  609. package/skills/visual-qa/schemas/evidence-manifest-v1beta1.json +141 -0
  610. package/skills/visual-qa/schemas/review-receipt-v1alpha1.json +113 -0
  611. package/skills/visual-qa/scripts/artifact.mjs +123 -0
  612. package/skills/visual-qa/scripts/bounded-json.mjs +47 -0
  613. package/skills/visual-qa/scripts/canonical-json.mjs +28 -0
  614. package/skills/visual-qa/scripts/capabilities.mjs +66 -0
  615. package/skills/visual-qa/scripts/contract-text.mjs +15 -0
  616. package/skills/visual-qa/scripts/design-contract.mjs +611 -0
  617. package/skills/visual-qa/scripts/evidence-evaluate.mjs +521 -0
  618. package/skills/visual-qa/scripts/evidence.mjs +271 -0
  619. package/skills/visual-qa/scripts/png-decode.mjs +146 -0
  620. package/skills/visual-qa/scripts/png.mjs +154 -0
  621. package/skills/visual-qa/scripts/review.mjs +188 -0
  622. package/skills/visual-qa/scripts/stdin-json.mjs +16 -0
  623. package/skills/visual-qa/scripts/strict-json.mjs +102 -0
  624. package/skills/visual-qa/scripts/tui.mjs +149 -0
  625. package/skills/visual-qa/scripts/visual-qa.mjs +90 -0
  626. package/skills/wikify/LICENSE +21 -0
  627. package/skills/wikify/PROVENANCE.md +18 -0
  628. package/skills/wikify/SKILL.md +176 -0
  629. package/skills/wikify/assets/home-template.md +44 -0
  630. package/skills/wikify/assets/maintenance-report-template.md +46 -0
  631. package/skills/wikify/assets/paper-source-note-template.md +137 -0
  632. package/skills/wikify/assets/source-note-template.md +45 -0
  633. package/skills/wikify/assets/wiki-rules-template.md +117 -0
  634. package/skills/wikify/modes/ingest.md +57 -0
  635. package/skills/wikify/modes/init.md +44 -0
  636. package/skills/wikify/modes/lint.md +60 -0
  637. package/skills/wikify/modes/query.md +38 -0
  638. package/skills/wikify/modes/save.md +45 -0
  639. package/skills/wikify/references-upstream-contract.md +758 -0
  640. package/skills/workflow-loop/SKILL.md +387 -0
  641. package/tools/check-pack-payload.mjs +410 -0
  642. package/tools/check-payload-substance.mjs +738 -0
  643. package/tools/check-version-lockstep.mjs +238 -0
  644. package/tools/gen-canonical-frontend-manifest.mjs +66 -0
  645. package/tools/gen-managed-skill-manifest.mjs +135 -0
  646. package/tools/harness-speed-local.mjs +261 -0
  647. package/tools/payload-reference-exemptions.json +49 -0
  648. package/tools/payload-substance-allowlist.json +46 -0
  649. package/tools/payload-substance-parity.json +571 -0
  650. package/tools/qa-real-surface-fixtures.mjs +428 -0
  651. package/tools/qa-real-surface-harness.mjs +173 -0
  652. package/tools/run-behavior-replacement-probes.mjs +296 -0
  653. package/tools/run-build.mjs +101 -0
  654. package/tools/run-harness-speed-local.mjs +52 -0
  655. package/tools/run-harness-speed-v2.mjs +36 -0
  656. package/tools/run-installed-resource-tamper-probe.mjs +62 -0
  657. package/tools/run-negative-gate-matrix.mjs +516 -0
  658. package/tools/run-rules-glob-differential.mjs +232 -0
  659. package/tools/run-typecheck.mjs +25 -0
  660. package/tools/run-uiux-visual-qa-scenarios.mjs +234 -0
  661. package/tools/run-wikify-surface-probe.mjs +170 -0
  662. package/tools/scan-legacy-tokens.mjs +431 -0
  663. package/tools/version-manifests.json +60 -0
  664. package/tsconfig.build.json +12 -0
  665. package/tsconfig.json +13 -0
  666. package/vendor/NOTICE.md +21 -0
  667. package/vendor/handoff/SKILL.md +199 -0
  668. package/vendor/handoff/evals/evals.json +154 -0
  669. package/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
  670. package/vendor/handoff/templates/HANDOFF.md +121 -0
  671. package/vendor/licenses/022_handoff-MIT.txt +21 -0
  672. package/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
  673. package/vendor/provenance/022_handoff.md +19 -0
  674. package/vendor/provenance/045_scientific-visualization.md +36 -0
  675. package/vendor/scientific-visualization/SKILL.md +283 -0
  676. package/vendor/scientific-visualization/assets/color_palettes.py +197 -0
  677. package/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
  678. package/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
  679. package/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
  680. package/vendor/scientific-visualization/evals/evals.json +158 -0
  681. package/vendor/scientific-visualization/references/color_palettes.md +380 -0
  682. package/vendor/scientific-visualization/references/journal_requirements.md +359 -0
  683. package/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
  684. package/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
  685. package/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
  686. package/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
  687. package/vendor/scientific-visualization/scripts/figure_export.py +238 -0
  688. package/vendor/scientific-visualization/scripts/style_presets.py +467 -0
  689. package/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
  690. package/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: autoconference-skill
3
+ description: |
4
+ Multi-agent research conference that spawns parallel autoresearchers with
5
+ symposium sharing, adversarial peer review, and insight synthesis.
6
+ Reads a conference.md, orchestrates N researchers in structured rounds,
7
+ and produces a synthesized result combining the best findings.
8
+ TRIGGER when: user mentions "autoconference" or "conference" with research context;
9
+ user wants multiple researchers competing or collaborating; user wants parallel
10
+ autoresearch with peer review; user mentions "conference.md"; user wants
11
+ research synthesis from multiple approaches; user wants adversarial evaluation
12
+ of research results.
13
+ DO NOT TRIGGER when: user wants a single autoresearch loop (use autoresearch-skill);
14
+ user wants a simple one-shot answer; user wants to read a single paper.
15
+ allowed-tools:
16
+ - Read
17
+ - Glob
18
+ - Grep
19
+ ---
20
+
21
+ # Autoconference Source-Family Coverage
22
+
23
+ ## OpenCode authority envelope
24
+
25
+ This reference is inert compatibility guidance. `lit-plan` must approve the finite root-owned
26
+ objective, budget, roots, packet schema, and review contract before any mutation or delegation,
27
+ including interactive runs. Only explicit `/start-work` may consume that approval. Children remain
28
+ depth-one and packet-only; children must not write or mutate root-owned state, select models, or
29
+ invoke routes.
30
+
31
+ This retained reference is inert coverage material. The installed `skills/autoconference/SKILL.md`,
32
+ read-only `lit-plan`, explicit `/start-work`, live root OpenCode task probe, and depth-one packet
33
+ contract are authoritative. Historical tool/model assumptions grant no capability.
34
+
35
+ ## Mandatory Start Gate
36
+
37
+ Before dispatching `/autoconference`, require a pre-flight confirmation gate:
38
+
39
+ 1. If the user has exactly specified researcher count, iterations/budget, Success Metric or Success Criteria, and Critic/Devil's Advocate inclusion, calculate the run conditions and produce an approval packet.
40
+ 2. If any of those values are missing or vague, ask the user for exact values first; then calculate conditions and ask for final confirmation.
41
+ 3. Do not write, evaluate, dispatch, or begin the conference loop from planning. After explicit
42
+ confirmation, hand the packet to `/start-work`.
43
+
44
+ The adversarial Reviewer is part of the protocol every round; the gate's Critic/Devil's Advocate choice controls whether an additional researcher is assigned a contrarian role.
45
+
46
+ ## Conference Persistence Directive
47
+
48
+ Once the bounded conference begins through `/start-work`:
49
+
50
+ 1. Complete a round only while task capability, approved authority, and budget remain.
51
+ 2. Stop on cancellation, stale state, a new boundary, malformed packets, or missing review.
52
+ 3. Continue after a valid round receipt without seeking redundant approval inside the same grant.
53
+ 4. **The conference runs until one of these conditions is met:**
54
+ - Target metric achieved (convergence)
55
+ - `max_rounds` or `max_total_iterations` exhausted (budget spent — this is normal, not failure)
56
+ - All researchers simultaneously stalled at Level 2+ (early synthesis)
57
+ - The user manually interrupts
58
+ 5. **If none of these conditions are true, begin the next round immediately.**
59
+
60
+ Think of `max_rounds` as a budget to *spend*, not a limit to *fear*.
61
+
62
+ ## Commands
63
+
64
+ | Command | Description | Skill Path |
65
+ |---------|-------------|------------|
66
+ | `/autoconference` | Core conference loop — N researchers, 4-phase rounds, synthesis | `skills/autoconference/SKILL.md` |
67
+ | `/autoconference-plan` | Planning-only proposal and approval packet | `skills/autoconference/modes/plan.md` |
68
+ | `/autoconference-resume` | Resume interrupted conference from checkpoint | `skills/autoconference/modes/resume.md` |
69
+ | `/autoconference-analyze` | Post-conference insight analysis | `skills/autoconference/modes/analyze.md` |
70
+ | `/autoconference-debate` | Adversarial 2-researcher debate mode | `skills/autoconference/modes/debate.md` |
71
+ | `/autoconference-survey` | Systematic multi-database literature survey | `skills/autoconference/modes/survey.md` |
72
+ | `/autoconference-ship` | Convert results to a local readiness packet | `skills/autoconference/modes/ship.md` |
73
+
74
+ ## Dispatch Logic
75
+
76
+ - **Core command** (`/autoconference`) → load `skills/autoconference/SKILL.md` and `skills/autoconference/modes/core.md`.
77
+ - **Hyphen-native mode command** → load the exact enrolled `skills/autoconference/modes/<name>.md` contract.
78
+ - Unknown and near-miss modes remain inert; never fall back from a miss to an unintended execution route.
79
+
80
+ ## How It Works
81
+
82
+ ```
83
+ ┌─────────────────────────────────────────────────────────┐
84
+ │ CONFERENCE ROUND │
85
+ │ │
86
+ │ Phase 1: INDEPENDENT RESEARCH (parallel) │
87
+ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
88
+ │ │Researcher│ │Researcher│ │Researcher│ Each runs N │
89
+ │ │ A │ │ B │ │ C │ autoresearch │
90
+ │ │ (iter×N) │ │ (iter×N) │ │ (iter×N) │ iterations │
91
+ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
92
+ │ │ │ │ │
93
+ │ Phase 2: POSTER SESSION (packet-only comparison) │
94
+ │ Phase 3: PEER REVIEW (independent review packet) │
95
+ │ Phase 4: KNOWLEDGE TRANSFER (validated → shared) │
96
+ └─────────────────────────────────────────────────────────┘
97
+
98
+ ▼ Convergence check → next round or final synthesis
99
+ ```
100
+
101
+ ## Agent Roles
102
+
103
+ | Role | Model | Count | Responsibility |
104
+ |------|-------|-------|----------------|
105
+ | **Root coordinator** | Current root-primary route | 1 | Owns capability probe, phase receipts, and terminal verdict |
106
+ | **Researcher** | OpenCode depth-one task | N | Runs bounded autoresearch within one partition and returns a packet |
107
+ | **Session Chair** | OpenCode depth-one task | 1/round | Produces the poster packet from accepted researcher packets |
108
+ | **Reviewer** | OpenCode depth-one task | 1/round | Challenges claims and returns verdict evidence |
109
+ | **Synthesizer** | Root or approved review task | 1 | Combines only independently validated findings |
110
+
111
+ ## Dependencies
112
+
113
+ - **Required:** live root OpenCode task capability and the installed `autoresearch` managed family
114
+ - **Extends:** `skills/autoresearch/SKILL.md` — each researcher runs the bounded core loop
115
+ - **Python 3.8+** required only for `scripts/init_conference.py` (scaffolding helper)
116
+
117
+ ## Relationship to Other Skills
118
+
119
+ | Skill | Relationship |
120
+ |-------|-------------|
121
+ | `autoresearch` | Required managed dependency for each researcher packet. |
122
+ | `lit-plan` | Read-only proposal and approval-packet route. |
123
+ | `/start-work` | Explicit bounded write/evaluator/task execution handoff after approval. |
124
+ | `/review-work` | Completed-work evidence review before a DoneClaim. |
125
+
126
+ ## OpenCode Port Boundary
127
+
128
+ This file does not dispatch, write, or execute standalone. The package installer recursively installs
129
+ the family, and doctor verifies the exact tree. See `skills/autoconference/SKILL.md` and
130
+ `skills/autoconference/references/conference-protocol.md` for the current orchestration and isolation contracts.
@@ -0,0 +1,105 @@
1
+ # Visualization Guide
2
+
3
+ ## OpenCode authority envelope
4
+
5
+ This reference is inert rendering guidance. `lit-plan` must approve the finite root-owned figure
6
+ objective, budget, source roots, output roots, and review contract before any mutation or delegation,
7
+ including interactive runs. Only explicit `/start-work` may consume that approval. Children remain
8
+ depth-one and packet-only; children must not write or mutate root-owned state, select models, or
9
+ invoke routes.
10
+
11
+ Mandatory rules for all `results.png` figures generated by autoresearch-skill. Based on the `/lit-scientific-visualization` skill standards.
12
+
13
+ ## Setup
14
+
15
+ Every `visualize.py` MUST start with:
16
+
17
+ ```python
18
+ import sys, os
19
+ sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'scripts'))
20
+ from style_presets import rcparams
21
+ rcparams() # MUST be called before plt.subplots()
22
+ ```
23
+
24
+ This loads `scripts/style_presets.py` which sets Pretendard/Arial fonts, inward ticks, Okabe-Ito colors, white background, and DPI 600.
25
+
26
+ ## 7 Mandatory Rules
27
+
28
+ ### 1. Axis endpoints must show numbers
29
+ First and last tick on both axes must be visible. Use `ax.set_xlim()` and `ax.set_ylim()` explicitly.
30
+
31
+ ### 2. Subplots must maintain spacing
32
+ Use `fig.tight_layout(pad=1.5)` or `constrained_layout=True`. No overlapping labels.
33
+
34
+ ### 3. Legend must never obscure data
35
+ Place legend where it doesn't cover data points. Use `loc='upper right'` or `bbox_to_anchor` if needed.
36
+
37
+ ### 4. No titles
38
+ Journal figures use captions, not titles. Do NOT call `ax.set_title()` or `fig.suptitle()`.
39
+
40
+ ### 5. Legend text color must match data color
41
+ Each legend entry's text color matches its data series color:
42
+ ```python
43
+ leg = ax.legend()
44
+ colors = ['#0072B2', '#D55E00', '#009E73']
45
+ for i, text in enumerate(leg.get_texts()):
46
+ text.set_color(colors[i])
47
+ ```
48
+
49
+ ### 6. Legend border: black, framealpha=1
50
+ ```python
51
+ ax.legend(frameon=True, edgecolor='black', framealpha=1)
52
+ ```
53
+
54
+ ### 7. DPI > 500
55
+ Save at 600 DPI. Export both PNG and PDF:
56
+ ```python
57
+ fig.savefig('results.png', dpi=600, bbox_inches='tight')
58
+ fig.savefig('results.pdf', dpi=600, bbox_inches='tight')
59
+ ```
60
+
61
+ ## Figure Structure for Autoresearch
62
+
63
+ Two-panel layout with panel labels:
64
+
65
+ ```python
66
+ fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
67
+
68
+ # Panel labels
69
+ ax1.text(-0.08, 1.08, 'A', transform=ax1.transAxes, fontsize=16, fontweight='bold', va='top')
70
+ ax2.text(-0.08, 1.08, 'B', transform=ax2.transAxes, fontsize=16, fontweight='bold', va='top')
71
+ ```
72
+
73
+ **Panel A — Metric Convergence:**
74
+ - Scatter: kept iterations (blue `#0072B2`) vs reverted (vermillion `#D55E00`)
75
+ - Line: best-so-far envelope (green `#009E73`)
76
+ - Dashed: target threshold (orange `#E69F00`)
77
+ - Annotate baseline and best values
78
+
79
+ **Panel B — Domain-specific result:**
80
+ - Code optimization: bar chart of execution times
81
+ - Function fitting: prediction curve vs data scatter
82
+ - Literature review: category coverage
83
+ - Skill elaboration: component breakdown
84
+
85
+ ## Okabe-Ito Palette Reference
86
+
87
+ | Color | Hex | Use |
88
+ |-------|-----|-----|
89
+ | Orange | `#E69F00` | Target line, warnings |
90
+ | Sky Blue | `#56B4E9` | Train data, secondary |
91
+ | Bluish Green | `#009E73` | Best-so-far, success |
92
+ | Yellow | `#F0E442` | Highlights |
93
+ | Blue | `#0072B2` | Kept iterations, primary |
94
+ | Vermillion | `#D55E00` | Reverted, errors |
95
+ | Reddish Purple | `#CC79A7` | Prediction curves |
96
+ | Black | `#000000` | Baselines, text |
97
+
98
+ ## Conference-Specific Panels
99
+
100
+ For autoconference visualizations, use multi-panel layouts:
101
+
102
+ **Panel A:** Per-researcher metric convergence (one line per researcher, different colors)
103
+ **Panel B:** Best-of-conference envelope (across all researchers)
104
+ **Panel C:** Peer review verdict distribution (validated/challenged/overturned per round)
105
+ **Panel D (optional):** Researcher strategy heatmap or cross-pollination graph
@@ -0,0 +1,371 @@
1
+ #!/usr/bin/env bash
2
+ # check_conference.sh - Lightweight progress monitor for autoconference runs
3
+ # Usage: check_conference.sh [conference_dir]
4
+
5
+ CONF_DIR="${1:-.}"
6
+ CONF_DIR="${CONF_DIR%/}" # strip trailing slash
7
+
8
+ CONF_MD="$CONF_DIR/conference.md"
9
+ RESULTS_TSV="$CONF_DIR/conference_results.tsv"
10
+ EVENTS_JSONL="$CONF_DIR/conference_events.jsonl"
11
+ SYNTHESIS_MD="$CONF_DIR/synthesis.md"
12
+ FINAL_REPORT_MD="$CONF_DIR/final_report.md"
13
+
14
+ if [[ ! -d "$CONF_DIR" || ! -f "$CONF_MD" ]]; then
15
+ printf 'Status: not initialized\n'
16
+ exit 2
17
+ fi
18
+
19
+ NODE_BINARY="${NODE_BINARY:-node}"
20
+ if ! command -v "$NODE_BINARY" >/dev/null 2>&1; then
21
+ printf 'Status: BLOCKED_NODE_UNAVAILABLE\n'
22
+ exit 3
23
+ fi
24
+
25
+ # ── Parse conference.md ───────────────────────────────────────────────────────
26
+
27
+ if [[ -f "$CONF_MD" ]]; then
28
+ # First non-empty line after "## Goal"
29
+ goal=$(awk '/^## Goal/{found=1; next} found && /[^[:space:]]/{print; exit}' \
30
+ "$CONF_MD")
31
+ # max_rounds: line matching "max_rounds", "Rounds:", or scaffolded "Max rounds:"
32
+ max_rounds=$(grep -m1 -iE 'max_rounds|Rounds:' "$CONF_MD" \
33
+ | grep -oE '[0-9]+' \
34
+ | head -1)
35
+ # Researcher count: prefer scaffolded "Count", fall back to named researcher entries
36
+ researcher_count=$(grep -m1 -iE '\*\*Count:\*\*|^count:' "$CONF_MD" \
37
+ | grep -oE '[0-9]+' \
38
+ | head -1)
39
+ if [[ -z "$researcher_count" ]]; then
40
+ researcher_count=$(grep -cE '^\s*-\s+\*\*Name\*\*:|^\s*-\s+name:' "$CONF_MD" 2>/dev/null) || researcher_count=0
41
+ fi
42
+ # Direction
43
+ direction=$(grep -m1 -i '\*\*Direction:\*\*' "$CONF_MD" \
44
+ | sed 's/.*\*\*Direction:\*\*[[:space:]]*//' \
45
+ | sed 's/[[:space:]]*$//' \
46
+ | tr '[:upper:]' '[:lower:]')
47
+ # Target
48
+ target=$(grep -m1 -i '\*\*Target:\*\*' "$CONF_MD" \
49
+ | sed 's/.*\*\*Target:\*\*[[:space:]]*//' \
50
+ | sed 's/[[:space:]]*$//')
51
+ else
52
+ goal="?"; max_rounds="?"; researcher_count="?"; direction="maximize"; target="?"
53
+ fi
54
+
55
+ [[ -z "$goal" ]] && goal="?"
56
+ [[ -z "$max_rounds" ]] && max_rounds="?"
57
+ [[ -z "$researcher_count" ]] && researcher_count="?"
58
+ [[ -z "$direction" ]] && direction="maximize"
59
+ [[ -z "$target" ]] && target="?"
60
+
61
+ # ── Parse conference_results.tsv ──────────────────────────────────────────────
62
+
63
+ best_metric="?"; best_researcher="?"; result_count="0"
64
+
65
+ if [[ -f "$RESULTS_TSV" ]]; then
66
+ # Expect conference-level columns:
67
+ # round, researcher, iteration, metric_value, delta, delta_pct, status, description,
68
+ # evaluator_source, peer_review_verdict, timestamp
69
+ # Track best metric value and which researcher achieved it
70
+ best_val=""
71
+ while IFS=$'\t' read -r f_round f_researcher f_iteration f_metric f_rest; do
72
+ [[ -z "$f_researcher" ]] && continue
73
+ result_count=$(( result_count + 1 ))
74
+ val="$f_metric"
75
+ if [[ "$val" =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
76
+ if [[ -z "$best_val" ]]; then
77
+ best_val="$val"
78
+ best_researcher="$f_researcher"
79
+ else
80
+ if [[ "$direction" == "minimize" ]]; then
81
+ better=$(awk -v a="$val" -v b="$best_val" 'BEGIN{print (a<b)?1:0}')
82
+ else
83
+ better=$(awk -v a="$val" -v b="$best_val" 'BEGIN{print (a>b)?1:0}')
84
+ fi
85
+ if [[ "$better" == "1" ]]; then
86
+ best_val="$val"
87
+ best_researcher="$f_researcher"
88
+ fi
89
+ fi
90
+ fi
91
+ done < <(tail -n +2 "$RESULTS_TSV" | grep -v '^[[:space:]]*$')
92
+
93
+ if [[ -n "$best_val" ]]; then
94
+ best_metric="$best_val"
95
+ fi
96
+ [[ -z "$best_researcher" ]] && best_researcher="?"
97
+ fi
98
+
99
+ # ── Parse conference_events.jsonl ─────────────────────────────────────────────
100
+
101
+ current_round="0"; last_event_type="?"; last_event_ts="?"; stuck_count="0"; terminal_event_state="none"
102
+
103
+ if [[ -f "$EVENTS_JSONL" ]]; then
104
+ # Count current and legacy round completion event names.
105
+ completed_rounds=$(grep -Ec '"round\.completed"|"round\.[0-9]+\.completed"' "$EVENTS_JSONL" 2>/dev/null) || completed_rounds=0
106
+ current_round="$completed_rounds"
107
+
108
+ # Count "researcher.stuck" events
109
+ stuck_count=$(grep -c '"researcher\.stuck"' "$EVENTS_JSONL" 2>/dev/null) || stuck_count=0
110
+ if ! terminal_event_state=$("$NODE_BINARY" - "$EVENTS_JSONL" "$RESULTS_TSV" "$researcher_count" "$max_rounds" "$direction" <<'NODE'
111
+ const fs = require("node:fs");
112
+
113
+ const [eventsPath, resultsPath, researcherCountRaw, maxRoundsRaw, direction] = process.argv.slice(2);
114
+ const researcherCount = Number(researcherCountRaw);
115
+ const maxRounds = Number(maxRoundsRaw);
116
+ const allowedVerdicts = new Set([
117
+ "TARGET_MET", "CONVERGED", "BUDGET_EXHAUSTED", "STALLED", "CANCELLED", "BLOCKED"
118
+ ]);
119
+ const allowedStatuses = new Set(["baseline", "kept", "reverted", "failed"]);
120
+ const allowedPeerVerdicts = new Set(["validated", "challenged", "overturned", "-"]);
121
+ const expectedHeader = ["round", "researcher", "iteration", "metric_value", "delta", "delta_pct", "status", "description", "evaluator_source", "peer_review_verdict", "timestamp"];
122
+
123
+ function validTimestamp(value) {
124
+ if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/u.test(value)) return false;
125
+ const parsed = new Date(value);
126
+ if (!Number.isFinite(parsed.getTime())) return false;
127
+ const normalized = value.includes(".") ? value : value.replace(/Z$/u, ".000Z");
128
+ return parsed.toISOString() === normalized;
129
+ }
130
+
131
+ function finiteNumber(value) {
132
+ return typeof value === "string"
133
+ && /^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/u.test(value)
134
+ && Number.isFinite(Number(value));
135
+ }
136
+
137
+ function parseResults() {
138
+ if (!Number.isInteger(researcherCount) || researcherCount < 1 || researcherCount > 26
139
+ || !Number.isInteger(maxRounds) || maxRounds < 1 || !new Set(["maximize", "minimize"]).has(direction)
140
+ || !fs.existsSync(resultsPath)) return { valid: false, rows: [] };
141
+ const configuredResearchers = new Set(Array.from({ length: researcherCount }, (_, index) => String.fromCharCode(65 + index)));
142
+ const lines = fs.readFileSync(resultsPath, "utf8").split(/\r?\n/u);
143
+ if (lines.at(-1) === "") lines.pop();
144
+ if (lines.length === 0 || lines[0] !== expectedHeader.join("\t")) return { valid: false, rows: [] };
145
+ const keys = new Set();
146
+ const rows = [];
147
+ let experimentCount = 0;
148
+ for (const line of lines.slice(1)) {
149
+ if (line === "") return { valid: false, rows };
150
+ const fields = line.split("\t");
151
+ if (fields.length !== expectedHeader.length) return { valid: false, rows };
152
+ const [roundRaw, researcher, iterationRaw, metricRaw, delta, deltaPct, status, description, evaluator, peerVerdict, timestamp] = fields;
153
+ if (!/^\d+$/u.test(roundRaw) || !/^\d+$/u.test(iterationRaw) || !configuredResearchers.has(researcher)
154
+ || !finiteNumber(metricRaw) || !(delta === "-" || finiteNumber(delta))
155
+ || !(deltaPct === "-" || /^-?(?:\d+(?:\.\d+)?|\.\d+)%$/u.test(deltaPct))
156
+ || !allowedStatuses.has(status) || description.trim() === "" || evaluator.trim() === ""
157
+ || !allowedPeerVerdicts.has(peerVerdict) || !validTimestamp(timestamp)) return { valid: false, rows };
158
+ const round = Number(roundRaw);
159
+ const iteration = Number(iterationRaw);
160
+ const key = `${round}:${researcher}:${iteration}`;
161
+ if (!Number.isSafeInteger(round) || round < 1 || round > maxRounds || !Number.isSafeInteger(iteration)
162
+ || keys.has(key)) return { valid: false, rows };
163
+ if (iteration === 0) {
164
+ if (status !== "baseline" || delta !== "-" || deltaPct !== "-" || peerVerdict !== "-") {
165
+ return { valid: false, rows };
166
+ }
167
+ } else {
168
+ if (status === "baseline") return { valid: false, rows };
169
+ experimentCount += 1;
170
+ }
171
+ keys.add(key);
172
+ rows.push({ round, researcher, iteration, metric: Number(metricRaw), status });
173
+ }
174
+ return { valid: true, rows, configuredResearchers, experimentCount };
175
+ }
176
+
177
+ const results = parseResults();
178
+ if (!results.valid) {
179
+ process.stdout.write("invalid");
180
+ process.exit(0);
181
+ }
182
+ const resultCount = results.experimentCount;
183
+
184
+ let latest;
185
+ const completedRounds = new Map();
186
+ let invalidRoundReceipt = false;
187
+ for (const line of fs.readFileSync(eventsPath, "utf8").split(/\r?\n/u)) {
188
+ if (line.trim() === "") continue;
189
+ let event;
190
+ try {
191
+ event = JSON.parse(line);
192
+ } catch {
193
+ continue;
194
+ }
195
+ if (event !== null && typeof event === "object" && !Array.isArray(event)) {
196
+ if (event.event === "round.completed") {
197
+ const payload = event.payload;
198
+ const validPayload = payload !== null && typeof payload === "object" && !Array.isArray(payload)
199
+ && Number.isInteger(payload.round) && payload.round >= 1 && payload.round <= maxRounds
200
+ && typeof payload.best_metric === "number" && Number.isFinite(payload.best_metric)
201
+ && results.configuredResearchers.has(payload.best_researcher) && typeof payload.converged === "boolean";
202
+ if (!validTimestamp(event.timestamp) || !validPayload || completedRounds.has(payload?.round)) {
203
+ invalidRoundReceipt = true;
204
+ continue;
205
+ }
206
+ const candidates = results.rows.filter((row) => row.round === payload.round && row.status !== "failed");
207
+ const bestMetric = candidates.reduce((best, row) => direction === "minimize"
208
+ ? Math.min(best, row.metric) : Math.max(best, row.metric), direction === "minimize" ? Infinity : -Infinity);
209
+ const reconciled = candidates.length > 0 && payload.best_metric === bestMetric
210
+ && candidates.some((row) => row.researcher === payload.best_researcher && row.metric === bestMetric);
211
+ if (!reconciled) invalidRoundReceipt = true;
212
+ else completedRounds.set(payload.round, payload);
213
+ }
214
+ if (event.event === "conference.completed") latest = event;
215
+ }
216
+ }
217
+
218
+ if (latest === undefined) {
219
+ process.stdout.write("none");
220
+ process.exit(0);
221
+ }
222
+
223
+ const payload = latest.payload;
224
+ const roundCount = completedRounds.size;
225
+ const roundsAreSequential = Array.from({ length: roundCount }, (_, index) => index + 1)
226
+ .every((round) => completedRounds.has(round));
227
+ const resultRounds = new Set(results.rows.map((row) => row.round));
228
+ const rowsReconciled = resultRounds.size === roundCount && [...resultRounds].every((round) => completedRounds.has(round));
229
+ const baselinesReconciled = [...completedRounds.keys()].every((round) =>
230
+ [...results.configuredResearchers].every((researcher) =>
231
+ results.rows.some((row) => row.round === round && row.researcher === researcher
232
+ && row.iteration === 0 && row.status === "baseline")));
233
+ const validPayload = payload !== null
234
+ && typeof payload === "object"
235
+ && !Array.isArray(payload)
236
+ && payload.synthesis_path === "synthesis.md"
237
+ && payload.final_report_path === "final_report.md"
238
+ && Number.isInteger(payload.total_iterations)
239
+ && payload.total_iterations >= 0
240
+ && payload.total_iterations === resultCount
241
+ && Number.isInteger(payload.total_rounds)
242
+ && payload.total_rounds >= 0
243
+ && payload.total_rounds === roundCount
244
+ && roundsAreSequential
245
+ && Number.isInteger(payload.researcher_count)
246
+ && payload.researcher_count >= 1
247
+ && payload.researcher_count === researcherCount
248
+ && rowsReconciled
249
+ && baselinesReconciled;
250
+ const valid = validTimestamp(latest.timestamp)
251
+ && allowedVerdicts.has(latest.terminal_verdict)
252
+ && validPayload
253
+ && !invalidRoundReceipt;
254
+ process.stdout.write(valid ? "valid" : "invalid");
255
+ NODE
256
+ ); then
257
+ printf 'Status: BLOCKED_NODE_RUNTIME_ERROR\n'
258
+ exit 3
259
+ fi
260
+
261
+ # Last event: extract type and timestamp from the last non-empty line
262
+ last_line=$(grep -v '^[[:space:]]*$' "$EVENTS_JSONL" | tail -1)
263
+ if [[ -n "$last_line" ]]; then
264
+ # Extract event type — value of "event" or "type" key
265
+ last_event_type=$(printf '%s' "$last_line" \
266
+ | grep -oE '"(event|type)"\s*:\s*"[^"]+"' \
267
+ | head -1 \
268
+ | grep -oE '"[^"]+"\s*$' \
269
+ | tr -d '"' \
270
+ | sed 's/^[[:space:]]*//')
271
+ # Extract timestamp — value of "ts", "timestamp", or "time" key
272
+ last_event_ts=$(printf '%s' "$last_line" \
273
+ | grep -oE '"(ts|timestamp|time)"\s*:\s*"[^"]+"' \
274
+ | head -1 \
275
+ | grep -oE '"[^"]+"\s*$' \
276
+ | tr -d '"' \
277
+ | sed 's/^[[:space:]]*//')
278
+ fi
279
+ fi
280
+
281
+ [[ -z "$last_event_type" ]] && last_event_type="?"
282
+ [[ -z "$last_event_ts" ]] && last_event_ts=""
283
+
284
+ # ── Determine run status ──────────────────────────────────────────────────────
285
+
286
+ if [[ -f "$CONF_MD" ]] && grep -q 'Scaffold status:[[:space:]]*INCOMPLETE' "$CONF_MD"; then
287
+ run_status="incomplete scaffold"
288
+ elif [[ "$terminal_event_state" == "invalid" ]]; then
289
+ run_status="terminal invalid"
290
+ elif [[ "$terminal_event_state" == "valid" ]] && [[ -s "$SYNTHESIS_MD" ]] && [[ -s "$FINAL_REPORT_MD" ]] && [[ "$result_count" -gt 0 ]]; then
291
+ run_status="COMPLETE"
292
+ elif [[ "$terminal_event_state" == "valid" ]]; then
293
+ run_status="terminal incomplete"
294
+ elif [[ "$current_round" -gt 0 || "$result_count" -gt 0 || "$last_event_type" != "?" ]]; then
295
+ run_status="progress recorded"
296
+ else
297
+ run_status="ready; no progress recorded"
298
+ fi
299
+
300
+ # ── Build display strings ─────────────────────────────────────────────────────
301
+
302
+ round_display="${current_round} / ${max_rounds}"
303
+
304
+ # Format last event with timestamp if available
305
+ if [[ -n "$last_event_ts" ]]; then
306
+ last_event_display="${last_event_type} @ ${last_event_ts}"
307
+ else
308
+ last_event_display="$last_event_type"
309
+ fi
310
+
311
+ # Add stuck researcher info if any
312
+ if [[ "$stuck_count" -gt 0 ]]; then
313
+ researcher_display="${researcher_count} (${stuck_count} stuck)"
314
+ else
315
+ researcher_display="$researcher_count"
316
+ fi
317
+
318
+ # Truncate long strings to keep box tidy (max ~44 chars for value column)
319
+ _trunc() {
320
+ local s="$1" max="${2:-44}"
321
+ if [[ ${#s} -gt $max ]]; then
322
+ printf '%s' "${s:0:$((max-1))}…"
323
+ else
324
+ printf '%s' "$s"
325
+ fi
326
+ }
327
+
328
+ val_w=44
329
+
330
+ conf_val=$(_trunc "${CONF_DIR}/" $val_w)
331
+ goal_val=$(_trunc "$goal" $val_w)
332
+ round_val=$(_trunc "$round_display" $val_w)
333
+ researcher_val=$(_trunc "$researcher_display" $val_w)
334
+ metric_val=$(_trunc "${best_metric} (${best_researcher})" $val_w)
335
+ target_val=$(_trunc "$target" $val_w)
336
+ status_val=$(_trunc "$run_status" $val_w)
337
+ last_val=$(_trunc "$last_event_display" $val_w)
338
+
339
+ # ── Box drawing ───────────────────────────────────────────────────────────────
340
+
341
+ inner_w=54 # fixed inner width for clean alignment
342
+ border=$(printf '─%.0s' $(seq 1 $inner_w))
343
+
344
+ _pad_row() {
345
+ local label="$1" value="$2"
346
+ local content=" ${label}${value}"
347
+ local pad=$(( inner_w - ${#content} ))
348
+ if [[ $pad -lt 0 ]]; then
349
+ local max_val=$(( inner_w - ${#label} - 2 ))
350
+ value="${value:0:$((max_val-1))}…"
351
+ content=" ${label}${value}"
352
+ pad=0
353
+ fi
354
+ printf '│%s%*s│\n' "$content" "$pad" ""
355
+ }
356
+
357
+ printf '┌─ autoconference progress ─%s┐\n' "$(printf '─%.0s' $(seq 1 $((inner_w - 28))))"
358
+ _pad_row "Conference: " "$conf_val"
359
+ _pad_row "Goal: " "$goal_val"
360
+ _pad_row "Round: " "$round_val"
361
+ _pad_row "Researchers: " "$researcher_val"
362
+ _pad_row "Best metric: " "$metric_val"
363
+ _pad_row "Target: " "$target_val"
364
+ _pad_row "Status: " "$status_val"
365
+ _pad_row "Last event: " "$last_val"
366
+ printf '└%s┘\n' "$border"
367
+
368
+ if [[ "$run_status" == "terminal invalid" ]]; then
369
+ exit 4
370
+ fi
371
+ exit 0