@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,625 @@
1
+ """
2
+ init_conference.py — Scaffold a new autoconference-skill project directory.
3
+
4
+ Usage:
5
+ python init_conference.py --goal "..." --metric "..." --direction {maximize|minimize} \
6
+ [--target "..."] [--researchers 3] [--strategy assigned] \
7
+ [--devils-advocate {yes|no}] [--output ./conference/]
8
+
9
+ python init_conference.py --goal "..." --mode qualitative --criteria "..." \
10
+ [--researchers 3] [--output ./conference/]
11
+ """
12
+
13
+ import argparse
14
+ import os
15
+ import shutil
16
+ import stat
17
+ import string
18
+ import sys
19
+ import tempfile
20
+ import textwrap
21
+ from datetime import datetime
22
+ from pathlib import Path
23
+ from typing import Callable, List
24
+
25
+
26
+ CONFERENCE_TEMPLATE_METRIC = """\
27
+ # Conference: {title}
28
+
29
+ > **Scaffold status: INCOMPLETE.** This file contains labeled placeholders. It is not an approved
30
+ > conference plan. Complete and validate every placeholder through explicit /start-work before any
31
+ > mutation, evaluator execution, or task dispatch.
32
+
33
+ ## Goal
34
+ {goal}
35
+
36
+ ## Mode
37
+ metric
38
+
39
+ ## Success Metric
40
+ - **Metric:** {metric}
41
+ - **Target:** {target}
42
+ - **Direction:** {direction}
43
+
44
+ ## Researchers
45
+ - **Count:** {researchers}
46
+ - **Iterations per round:** {iterations_per_round}
47
+ - **Max rounds:** {max_rounds}
48
+
49
+ ## Pre-Flight Gate
50
+ - **Researcher count:** {researchers}
51
+ - **Iterations per round:** {iterations_per_round}
52
+ - **Max rounds:** {max_rounds}
53
+ - **Max total iterations:** {max_total_iterations}
54
+ - **Success definition:** {gate_success_definition}
55
+ - **Critic / Devil's Advocate:** {critic_setting}
56
+ - **Final confirmation:** pending — Conference Chair must summarize these conditions and get explicit user confirmation before execution.
57
+ - **Missing or vague values:** ask the user for exact values first, then recalculate this gate and request final confirmation. Do not start Phase 1 until confirmation is explicit.
58
+
59
+ ## Search Space
60
+ - **Allowed changes:** _Define what researchers can modify._
61
+ - **Forbidden changes:** _Define what must NOT change (e.g., test data, eval scripts)._
62
+
63
+ ## Search Space Partitioning
64
+ - **Strategy:** {strategy}
65
+
66
+ {researcher_sections}
67
+
68
+ ## Guard
69
+ {guard}
70
+
71
+ ## Noise Handling
72
+ - **Noise runs:** {noise_runs}
73
+ - **Min consensus delta:** {min_delta}
74
+
75
+ ## Constraints
76
+ - **Max total iterations:** {max_total_iterations}
77
+ - **Time budget:** 2h
78
+ - **Researcher timeout:** 30m
79
+
80
+ ## Current Approach
81
+ _Describe the baseline. What exists now?_
82
+
83
+ ## Shared Knowledge
84
+ <!-- Auto-populated after each round with validated findings -->
85
+
86
+ ## Context & References
87
+ _Add relevant papers, docs, or URLs here._
88
+
89
+ ---
90
+
91
+ ## Conference Log
92
+ <!-- Auto-maintained by Conference Chair. Do not edit manually. -->
93
+ | Round | Researcher | Best Metric | Key Finding | Status |
94
+ |-------|-----------|-------------|-------------|--------|
95
+ """
96
+
97
+ CONFERENCE_TEMPLATE_QUALITATIVE = """\
98
+ # Conference: {title}
99
+
100
+ > **Scaffold status: INCOMPLETE.** This file contains labeled placeholders. It is not an approved
101
+ > conference plan. Complete and validate every placeholder through explicit /start-work before any
102
+ > mutation, evaluator execution, or task dispatch.
103
+
104
+ ## Goal
105
+ {goal}
106
+
107
+ ## Mode
108
+ qualitative
109
+
110
+ ## Success Criteria
111
+ {criteria}
112
+
113
+ ## Researchers
114
+ - **Count:** {researchers}
115
+ - **Iterations per round:** {iterations_per_round}
116
+ - **Max rounds:** {max_rounds}
117
+
118
+ ## Pre-Flight Gate
119
+ - **Researcher count:** {researchers}
120
+ - **Iterations per round:** {iterations_per_round}
121
+ - **Max rounds:** {max_rounds}
122
+ - **Max total iterations:** {max_total_iterations}
123
+ - **Success definition:** {gate_success_definition}
124
+ - **Critic / Devil's Advocate:** {critic_setting}
125
+ - **Final confirmation:** pending — Conference Chair must summarize these conditions and get explicit user confirmation before execution.
126
+ - **Missing or vague values:** ask the user for exact values first, then recalculate this gate and request final confirmation. Do not start Phase 1 until confirmation is explicit.
127
+
128
+ ## Search Space
129
+ - **Allowed changes:** _Define what researchers can modify._
130
+ - **Forbidden changes:** _Define what must NOT change._
131
+
132
+ ## Search Space Partitioning
133
+ - **Strategy:** {strategy}
134
+
135
+ {researcher_sections}
136
+
137
+ ## Guard
138
+ {guard}
139
+
140
+ ## Noise Handling
141
+ - **Noise runs:** {noise_runs}
142
+ - **Min consensus delta:** {min_delta}
143
+
144
+ ## Constraints
145
+ - **Max total iterations:** {max_total_iterations}
146
+ - **Time budget:** 2h
147
+ - **Researcher timeout:** 30m
148
+
149
+ ## Current Approach
150
+ _Describe the baseline. What exists now?_
151
+
152
+ ## Shared Knowledge
153
+ <!-- Auto-populated after each round with validated findings -->
154
+
155
+ ## Context & References
156
+ _Add relevant papers, docs, or URLs here._
157
+
158
+ ---
159
+
160
+ ## Conference Log
161
+ <!-- Auto-maintained by Conference Chair. Do not edit manually. -->
162
+ | Round | Researcher | Best Metric | Key Finding | Status |
163
+ |-------|-----------|-------------|-------------|--------|
164
+ """
165
+
166
+ LOG_TEMPLATE = """\
167
+ # Researcher {rid} Log
168
+
169
+ > Auto-generated by init_conference.py on {date}
170
+ > Conference goal: {goal}
171
+
172
+ ---
173
+
174
+ """
175
+
176
+ RESEARCHER_TSV_HEADER = "iteration\tmetric_value\tdelta\tdelta_pct\tstatus\tdescription\tevaluator_source\ttimestamp\n"
177
+ RESEARCHER_TSV_BASELINE = "0\tTBD\t-\t-\tbaseline\tInitial state\tmanual\t{date}\n"
178
+
179
+ CONFERENCE_TSV_HEADER = (
180
+ "round\tresearcher\titeration\tmetric_value\tdelta\tdelta_pct\t"
181
+ "status\tdescription\tevaluator_source\tpeer_review_verdict\ttimestamp\n"
182
+ )
183
+ SYSTEM_PATH_ALIASES = {
184
+ "/etc": "/private/etc",
185
+ "/tmp": "/private/tmp",
186
+ "/var": "/private/var",
187
+ }
188
+
189
+
190
+ def _identity(path: Path):
191
+ try:
192
+ value = path.lstat()
193
+ except FileNotFoundError:
194
+ return None
195
+ return (
196
+ value.st_dev,
197
+ value.st_ino,
198
+ stat.S_IFMT(value.st_mode),
199
+ value.st_ctime_ns,
200
+ getattr(value, "st_birthtime_ns", 0),
201
+ )
202
+
203
+
204
+ def _allowed_system_alias(path: Path) -> bool:
205
+ expected = SYSTEM_PATH_ALIASES.get(str(path))
206
+ return expected is not None and os.path.realpath(str(path)) == expected
207
+
208
+
209
+ def validate_output_tree(output: Path) -> Path:
210
+ """Reject symlink ancestors, symlink roots, and non-regular tree entries."""
211
+ absolute = Path(os.path.abspath(str(output)))
212
+ for ancestor in reversed(absolute.parents):
213
+ try:
214
+ mode = ancestor.lstat().st_mode
215
+ except FileNotFoundError:
216
+ continue
217
+ if stat.S_ISLNK(mode) and not _allowed_system_alias(ancestor):
218
+ raise RuntimeError(f"refusing symlink output ancestor: {ancestor}")
219
+ if not stat.S_ISLNK(mode) and not stat.S_ISDIR(mode):
220
+ raise RuntimeError(f"refusing non-directory output ancestor: {ancestor}")
221
+
222
+ root_identity = _identity(absolute)
223
+ if root_identity is None:
224
+ return absolute
225
+ root_mode = absolute.lstat().st_mode
226
+ if stat.S_ISLNK(root_mode):
227
+ raise RuntimeError(f"refusing symlink output root: {absolute}")
228
+ if not stat.S_ISDIR(root_mode):
229
+ raise RuntimeError(f"refusing non-directory output root: {absolute}")
230
+
231
+ for current, directories, files in os.walk(str(absolute), followlinks=False):
232
+ for name in directories + files:
233
+ candidate = Path(current) / name
234
+ mode = candidate.lstat().st_mode
235
+ if stat.S_ISLNK(mode):
236
+ raise RuntimeError(f"refusing symlink output entry: {candidate}")
237
+ if not (stat.S_ISDIR(mode) or stat.S_ISREG(mode)):
238
+ raise RuntimeError(f"refusing special output entry: {candidate}")
239
+ return absolute
240
+
241
+
242
+ def atomic_publish(output: Path, populate: Callable[[Path], None]) -> None:
243
+ """Populate a sibling staging tree and publish it with rollback."""
244
+ output = validate_output_tree(output)
245
+ output.parent.mkdir(parents=True, exist_ok=True)
246
+ output = validate_output_tree(output)
247
+ stage = Path(tempfile.mkdtemp(prefix=f".{output.name}.stage-", dir=str(output.parent)))
248
+ parent_identity = _identity(output.parent)
249
+ output_identity = _identity(output)
250
+ backup = None
251
+ published = False
252
+ try:
253
+ if output_identity is not None:
254
+ shutil.copytree(str(output), str(stage), dirs_exist_ok=True, symlinks=True)
255
+ validate_output_tree(stage)
256
+ populate(stage)
257
+ validate_output_tree(stage)
258
+ if _identity(output.parent) != parent_identity or _identity(output) != output_identity:
259
+ raise RuntimeError("output identity changed before publication")
260
+
261
+ if output_identity is not None:
262
+ backup = Path(tempfile.mkdtemp(prefix=f".{output.name}.backup-", dir=str(output.parent)))
263
+ backup.rmdir()
264
+ os.replace(str(output), str(backup))
265
+ try:
266
+ os.replace(str(stage), str(output))
267
+ except BaseException:
268
+ os.replace(str(backup), str(output))
269
+ backup = None
270
+ raise
271
+ shutil.rmtree(str(backup))
272
+ backup = None
273
+ else:
274
+ os.replace(str(stage), str(output))
275
+ published = True
276
+ finally:
277
+ if not published and stage.exists():
278
+ shutil.rmtree(str(stage))
279
+
280
+
281
+ def goal_to_title(goal: str) -> str:
282
+ words = goal.split()
283
+ short = " ".join(words[:8])
284
+ if len(words) > 8:
285
+ short += "..."
286
+ return short.title()
287
+
288
+
289
+ def researcher_ids(count: int) -> List[str]:
290
+ return [string.ascii_uppercase[i] for i in range(count)]
291
+
292
+
293
+ def remove_known_run_artifacts(output: Path) -> List[str]:
294
+ """Remove only prior-run files owned by this workflow."""
295
+ candidates = [
296
+ output / "synthesis.md",
297
+ output / "final_report.md",
298
+ output / "results.png",
299
+ output / ".autoconference-loop.pid",
300
+ ]
301
+ for pattern in [
302
+ "researcher_*_log.md",
303
+ "researcher_*_results.tsv",
304
+ "poster_session_round_*.md",
305
+ "peer_review_round_*.md",
306
+ ]:
307
+ candidates.extend(output.glob(pattern))
308
+
309
+ candidates = sorted(set(candidates), key=lambda item: item.name)
310
+ for artifact in candidates:
311
+ if artifact.is_symlink():
312
+ raise RuntimeError(f"refusing to remove symlink run artifact: {artifact}")
313
+ if artifact.exists() and not artifact.is_file():
314
+ raise RuntimeError(f"refusing to remove non-file run artifact: {artifact}")
315
+
316
+ removed = []
317
+ for artifact in candidates:
318
+ if artifact.is_file():
319
+ artifact.unlink()
320
+ removed.append(artifact.name)
321
+ return removed
322
+
323
+
324
+ def make_researcher_sections(rids: List[str], strategy: str) -> str:
325
+ if strategy != "assigned":
326
+ return ""
327
+ lines = []
328
+ for rid in rids:
329
+ lines.append(f"### Researcher {rid} Focus")
330
+ lines.append(f"_Describe Researcher {rid}'s exploration area._")
331
+ lines.append("")
332
+ return "\n".join(lines)
333
+
334
+
335
+ def parse_args() -> argparse.Namespace:
336
+ parser = argparse.ArgumentParser(
337
+ description="Scaffold a new autoconference-skill project.",
338
+ formatter_class=argparse.RawDescriptionHelpFormatter,
339
+ epilog=textwrap.dedent("""\
340
+ Examples:
341
+ # Metric mode
342
+ python init_conference.py \\
343
+ --goal "Optimize inference latency" \\
344
+ --metric "p95_latency_ms" \\
345
+ --direction minimize \\
346
+ --target "< 50" \\
347
+ --researchers 3 \\
348
+ --devils-advocate yes \\
349
+ --strategy assigned \\
350
+ --output ./my-conference/
351
+
352
+ # Qualitative mode
353
+ python init_conference.py \\
354
+ --goal "Survey LLM agent papers" \\
355
+ --mode qualitative \\
356
+ --criteria "Comprehensive taxonomy with 15+ papers" \\
357
+ --researchers 2 \\
358
+ --output ./lit-review/
359
+ """),
360
+ )
361
+ parser.add_argument("--goal", required=True, help="Conference goal description.")
362
+ parser.add_argument(
363
+ "--mode",
364
+ default="metric",
365
+ choices=["metric", "qualitative"],
366
+ help="Conference mode. Default: metric",
367
+ )
368
+ parser.add_argument(
369
+ "--metric",
370
+ default=None,
371
+ help="Metric name to track (required for metric mode).",
372
+ )
373
+ parser.add_argument(
374
+ "--direction",
375
+ default=None,
376
+ choices=["maximize", "minimize"],
377
+ help="Whether to maximize or minimize the metric (required for metric mode).",
378
+ )
379
+ parser.add_argument(
380
+ "--target",
381
+ default=None,
382
+ help="Target value or expression (e.g. '> 0.9', '< 50'). Required for metric mode.",
383
+ )
384
+ parser.add_argument(
385
+ "--criteria",
386
+ default=None,
387
+ help="Success criteria text (required for qualitative mode).",
388
+ )
389
+ parser.add_argument(
390
+ "--researchers",
391
+ type=int,
392
+ default=3,
393
+ metavar="N",
394
+ help="Number of researchers. Default: 3",
395
+ )
396
+ parser.add_argument(
397
+ "--strategy",
398
+ default="free",
399
+ choices=["assigned", "free"],
400
+ help="Search space partitioning strategy. Default: free",
401
+ )
402
+ parser.add_argument(
403
+ "--iterations-per-round",
404
+ type=int,
405
+ default=5,
406
+ metavar="N",
407
+ help="Iterations per round per researcher. Default: 5",
408
+ )
409
+ parser.add_argument(
410
+ "--max-rounds",
411
+ type=int,
412
+ default=4,
413
+ metavar="N",
414
+ help="Maximum number of rounds. Default: 4",
415
+ )
416
+ parser.add_argument(
417
+ "--devils-advocate",
418
+ default=None,
419
+ choices=["yes", "no"],
420
+ help=(
421
+ "Whether one researcher should be assigned as a Devil's Advocate. "
422
+ "If omitted, conference.md marks this as a required user prompt before running."
423
+ ),
424
+ )
425
+ parser.add_argument(
426
+ "--guard",
427
+ default=None,
428
+ help="Safety constraint applied to all researchers (e.g., 'Do not modify the test set').",
429
+ )
430
+ parser.add_argument(
431
+ "--noise-runs",
432
+ type=int,
433
+ default=1,
434
+ metavar="N",
435
+ help="Repeated evaluations to average for noise reduction. Default: 1",
436
+ )
437
+ parser.add_argument(
438
+ "--min-delta",
439
+ type=float,
440
+ default=0.0,
441
+ metavar="F",
442
+ help="Minimum average improvement across kept researchers to advance. Default: 0.0",
443
+ )
444
+ parser.add_argument(
445
+ "--output",
446
+ default="./conference/",
447
+ metavar="PATH",
448
+ help="Output directory. Default: ./conference/",
449
+ )
450
+ parser.add_argument(
451
+ "--force",
452
+ action="store_true",
453
+ help=(
454
+ "Reinitialize managed scaffold files while preserving regular user files "
455
+ "without prompting."
456
+ ),
457
+ )
458
+ return parser.parse_args()
459
+
460
+
461
+ def validate_args(args: argparse.Namespace) -> None:
462
+ if args.mode == "metric":
463
+ if not args.metric:
464
+ print("Error: --metric is required when --mode is metric.", file=sys.stderr)
465
+ sys.exit(1)
466
+ if not args.direction:
467
+ print("Error: --direction is required when --mode is metric.", file=sys.stderr)
468
+ sys.exit(1)
469
+ normalized_target = args.target.strip().lower() if args.target else ""
470
+ if not normalized_target or normalized_target in {"tbd", "todo", "unknown"}:
471
+ print("Error: --target is required when --mode is metric.", file=sys.stderr)
472
+ sys.exit(1)
473
+ elif args.mode == "qualitative":
474
+ if not args.criteria:
475
+ print("Error: --criteria is required when --mode is qualitative.", file=sys.stderr)
476
+ sys.exit(1)
477
+
478
+ if args.researchers < 1:
479
+ print("Error: --researchers must be >= 1.", file=sys.stderr)
480
+ sys.exit(1)
481
+
482
+ if args.researchers > 26:
483
+ print("Error: --researchers must be <= 26.", file=sys.stderr)
484
+ sys.exit(1)
485
+
486
+ if args.iterations_per_round < 1:
487
+ print("Error: --iterations-per-round must be >= 1.", file=sys.stderr)
488
+ sys.exit(1)
489
+
490
+ if args.max_rounds < 1:
491
+ print("Error: --max-rounds must be >= 1.", file=sys.stderr)
492
+ sys.exit(1)
493
+
494
+ if args.noise_runs < 1:
495
+ print("Error: --noise-runs must be >= 1.", file=sys.stderr)
496
+ sys.exit(1)
497
+
498
+
499
+ def scaffold(args: argparse.Namespace, output: Path) -> tuple:
500
+ date = datetime.now().strftime("%Y-%m-%d")
501
+ title = goal_to_title(args.goal)
502
+ rids = researcher_ids(args.researchers)
503
+ max_total_iterations = args.researchers * args.iterations_per_round * args.max_rounds
504
+ researcher_sections = make_researcher_sections(rids, args.strategy)
505
+ guard_text = args.guard if args.guard else "_No guard constraint. Leave blank or define a safety invariant._"
506
+ noise_runs = args.noise_runs
507
+ min_delta = args.min_delta
508
+ if args.devils_advocate == "yes":
509
+ critic_setting = "enabled"
510
+ elif args.devils_advocate == "no":
511
+ critic_setting = "disabled"
512
+ else:
513
+ critic_setting = "ask user before run"
514
+
515
+ # Create workspace subdirectory
516
+ (output / "workspace").mkdir(exist_ok=True)
517
+
518
+ # Write conference.md
519
+ if args.mode == "metric":
520
+ gate_success_definition = f"metric {args.metric} ({args.direction}) target {args.target}"
521
+ conf_text = CONFERENCE_TEMPLATE_METRIC.format(
522
+ title=title,
523
+ goal=args.goal,
524
+ metric=args.metric,
525
+ target=args.target,
526
+ direction=args.direction,
527
+ researchers=args.researchers,
528
+ iterations_per_round=args.iterations_per_round,
529
+ max_rounds=args.max_rounds,
530
+ strategy=args.strategy,
531
+ researcher_sections=researcher_sections,
532
+ max_total_iterations=max_total_iterations,
533
+ guard=guard_text,
534
+ noise_runs=noise_runs,
535
+ min_delta=min_delta,
536
+ gate_success_definition=gate_success_definition,
537
+ critic_setting=critic_setting,
538
+ )
539
+ else:
540
+ gate_success_definition = f"criteria: {args.criteria}"
541
+ conf_text = CONFERENCE_TEMPLATE_QUALITATIVE.format(
542
+ title=title,
543
+ goal=args.goal,
544
+ criteria=args.criteria,
545
+ researchers=args.researchers,
546
+ iterations_per_round=args.iterations_per_round,
547
+ max_rounds=args.max_rounds,
548
+ strategy=args.strategy,
549
+ researcher_sections=researcher_sections,
550
+ max_total_iterations=max_total_iterations,
551
+ guard=guard_text,
552
+ noise_runs=noise_runs,
553
+ min_delta=min_delta,
554
+ gate_success_definition=gate_success_definition,
555
+ critic_setting=critic_setting,
556
+ )
557
+ (output / "conference.md").write_text(conf_text)
558
+
559
+ # Write per-researcher files
560
+ for rid in rids:
561
+ log = LOG_TEMPLATE.format(rid=rid, date=date, goal=args.goal)
562
+ (output / f"researcher_{rid}_log.md").write_text(log)
563
+
564
+ tsv = RESEARCHER_TSV_HEADER + RESEARCHER_TSV_BASELINE.format(date=date)
565
+ (output / f"researcher_{rid}_results.tsv").write_text(tsv)
566
+
567
+ # Write conference_results.tsv (header only)
568
+ (output / "conference_results.tsv").write_text(CONFERENCE_TSV_HEADER)
569
+
570
+ # Write conference_events.jsonl (empty)
571
+ (output / "conference_events.jsonl").write_text("")
572
+
573
+ return (rids, max_total_iterations, gate_success_definition, critic_setting)
574
+
575
+
576
+ def print_success(output: Path, details: tuple) -> None:
577
+ rids, max_total_iterations, gate_success_definition, critic_setting = details
578
+ print(f"\nINCOMPLETE scaffold created at: {output.resolve()}")
579
+ print("\nFiles created:")
580
+ print(" conference.md")
581
+ for rid in rids:
582
+ print(f" researcher_{rid}_log.md")
583
+ print(f" researcher_{rid}_results.tsv")
584
+ print(" conference_results.tsv")
585
+ print(" conference_events.jsonl")
586
+ print(" workspace/")
587
+ print("\nPre-flight gate:")
588
+ print(f" Researcher count: {len(rids)}")
589
+ print(f" Max total iterations: {max_total_iterations}")
590
+ print(f" Success definition: {gate_success_definition}")
591
+ print(f" Critic / Devil's Advocate: {critic_setting}")
592
+ print(" Final confirmation: pending before Phase 1")
593
+ print("\nNext steps — this is an incomplete scaffold with placeholders:")
594
+ print(" 1. Through explicit /start-work, fill in 'Current Approach' and 'Search Space'.")
595
+ print(" 2. Edit researcher focus areas if using 'assigned' strategy.")
596
+ print(" 3. Validate every placeholder, evaluator receipt, root, and task packet.")
597
+ print(" 4. Only then may the approved finite conference continue through explicit /start-work.")
598
+
599
+
600
+ def main() -> None:
601
+ args = parse_args()
602
+ validate_args(args)
603
+ output = validate_output_tree(Path(args.output))
604
+ if output.exists() and any(output.iterdir()) and not args.force:
605
+ print(
606
+ f"Error: output directory '{output}' already exists and is not empty. "
607
+ "Use --force to reinitialize managed scaffold files.",
608
+ file=sys.stderr,
609
+ )
610
+ sys.exit(1)
611
+
612
+ removed = []
613
+ details = []
614
+ def populate(stage: Path) -> None:
615
+ removed.extend(remove_known_run_artifacts(stage))
616
+ details.append(scaffold(args, stage))
617
+
618
+ atomic_publish(output, populate)
619
+ if removed:
620
+ print(f"Removed stale run artifacts: {', '.join(removed)}")
621
+ print_success(output, details[0])
622
+
623
+
624
+ if __name__ == "__main__":
625
+ main()