@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,3 @@
1
+ import type { CliResult, LoopArgs } from "./types.ts";
2
+ import type { LoopCommand } from "./args.ts";
3
+ export declare function runLoopCommand(command: LoopCommand, loop: LoopArgs): Promise<CliResult>;
@@ -0,0 +1,135 @@
1
+ import { completeGoals, createGoals, EvidenceLedgerError, evaluateGoalGate, readEvidenceLedgerStatus, recordCheckpoint, recordEvidence, recordReviewBlocker, recordSteering, resolveReviewBlocker } from "../ledger.js";
2
+ import { createRuntimePaths } from "../state.js";
3
+ import { readObservations, recordObservation, SkillObserverError } from "../skill-observer.js";
4
+ // Exit codes are distinct so a caller can tell a refusal from a usage error: 2 is a malformed
5
+ // invocation, 3 is a deliberate refusal, 1 is a gate that did not pass.
6
+ const usageExit = 2;
7
+ const refusedExit = 3;
8
+ const gateExit = 1;
9
+ function requireOption(value, option) {
10
+ if (value === undefined || value.trim() === "")
11
+ throw new UsageError(`${option} is required`);
12
+ return value;
13
+ }
14
+ class UsageError extends Error {
15
+ constructor(message) {
16
+ super(message);
17
+ this.name = "UsageError";
18
+ }
19
+ }
20
+ function ok(loop, payload, text) {
21
+ return { exitCode: 0, stdout: loop.json ? `${JSON.stringify(payload, null, 2)}` : text };
22
+ }
23
+ function describeGoal(goal) {
24
+ const gate = evaluateGoalGate(goal);
25
+ const lines = [
26
+ `${goal.id} [${goal.status}] ${goal.title || goal.objective}`,
27
+ ` session: ${goal.sessionId}`,
28
+ ` gate: ${gate.passed ? "PASSED" : "NOT PASSED"}`
29
+ ];
30
+ for (const criterion of goal.criteria) {
31
+ const kinds = criterion.evidence.map((entry) => entry.kind).join(", ") || "no evidence";
32
+ lines.push(` ${criterion.id} [${criterion.status}] ${criterion.scenario} (${kinds})`);
33
+ }
34
+ for (const blocker of goal.reviewBlockers) {
35
+ lines.push(` ${blocker.id} [${blocker.resolved ? "resolved" : "open"}] ${blocker.detail}`);
36
+ }
37
+ if (!gate.passed)
38
+ for (const reason of gate.reasons)
39
+ lines.push(` - ${reason}`);
40
+ return lines.join("\n");
41
+ }
42
+ export async function runLoopCommand(command, loop) {
43
+ const root = loop.projectRoot;
44
+ try {
45
+ if (command === "create-goals") {
46
+ const goal = await createGoals(root, {
47
+ sessionId: requireOption(loop.sessionId, "--session-id"),
48
+ objective: requireOption(loop.objective, "--objective"),
49
+ title: loop.title,
50
+ criteria: loop.criteria,
51
+ force: loop.force
52
+ });
53
+ const paths = createRuntimePaths(root);
54
+ return ok(loop, { created: true, goal }, `created ${goal.id} for session ${goal.sessionId} with ${goal.criteria.length} criteria\n` +
55
+ ` state: ${paths.goalsFile}\n brief: ${paths.briefFile}\n ledger: ${paths.ledgerFile}`);
56
+ }
57
+ if (command === "status") {
58
+ const status = await readEvidenceLedgerStatus(root);
59
+ if (status.goals.length === 0) {
60
+ return ok(loop, { activeGoalId: "", goals: [] }, "no goals recorded; run create-goals to open one");
61
+ }
62
+ return ok(loop, status, status.goals.map(describeGoal).join("\n"));
63
+ }
64
+ if (command === "record-observation") {
65
+ const record = recordObservation(root, {
66
+ signal: requireOption(loop.signal, "--signal"),
67
+ skillId: requireOption(loop.skillId, "--skill-id"),
68
+ observed: requireOption(loop.observed, "--observed"),
69
+ proposal: requireOption(loop.proposal, "--proposal")
70
+ });
71
+ return ok(loop, { recorded: true, observation: record }, `recorded a ${record.signal} observation on ${record.skillId} as an unapplied proposal`);
72
+ }
73
+ if (command === "list-observations") {
74
+ const records = readObservations(root);
75
+ return ok(loop, { observations: records }, records.length === 0
76
+ ? "no observations recorded"
77
+ : records.map((record) => `${record.signal} ${record.skillId}: ${record.proposal}`).join("\n"));
78
+ }
79
+ if (command === "record-evidence") {
80
+ const criterion = await recordEvidence(root, {
81
+ criterionId: requireOption(loop.criterionId, "--criterion-id"),
82
+ kind: requireOption(loop.kind, "--kind"),
83
+ ref: requireOption(loop.ref, "--ref"),
84
+ detail: loop.detail,
85
+ status: loop.status
86
+ });
87
+ return ok(loop, { recorded: true, criterion }, `recorded ${criterion.evidence[criterion.evidence.length - 1]?.kind} evidence on ${criterion.id} ` +
88
+ `(status ${criterion.status}, ${criterion.evidence.length} entries retained)`);
89
+ }
90
+ if (command === "checkpoint") {
91
+ const checkpoint = await recordCheckpoint(root, {
92
+ summary: requireOption(loop.summary, "--summary"),
93
+ activeCriterion: loop.criterionId
94
+ });
95
+ return ok(loop, { recorded: true, checkpoint }, `recorded ${checkpoint.id}${checkpoint.activeCriterion === "" ? "" : ` on ${checkpoint.activeCriterion}`}: ${checkpoint.summary}`);
96
+ }
97
+ if (command === "steer") {
98
+ const steering = await recordSteering(root, {
99
+ directive: requireOption(loop.directive, "--directive"),
100
+ kind: loop.kind
101
+ });
102
+ const text = steering.criterionId === undefined
103
+ ? `recorded ${steering.id} (${steering.kind}): ${steering.directive}`
104
+ : `recorded ${steering.id} (${steering.kind}); added pending ${steering.criterionId}: ${steering.directive}`;
105
+ return ok(loop, { recorded: true, steering }, text);
106
+ }
107
+ if (command === "record-review-blockers") {
108
+ const blocker = loop.resolve === undefined
109
+ ? await recordReviewBlocker(root, {
110
+ detail: requireOption(loop.detail, "--detail"),
111
+ needsUserDecision: loop.needsUserDecision
112
+ })
113
+ : await resolveReviewBlocker(root, { blockerId: loop.resolve });
114
+ const status = await readEvidenceLedgerStatus(root);
115
+ const goalStatus = status.goals.find((goal) => goal.id === status.activeGoalId)?.status ?? "unknown";
116
+ return ok(loop, { recorded: true, blocker, goalStatus }, `recorded ${blocker.id}; goal status is now ${goalStatus}`);
117
+ }
118
+ const result = await completeGoals(root);
119
+ if (!result.completed) {
120
+ const text = [`BLOCKED: ${result.goalId} did not pass the completion gate.`, ...result.reasons.map((reason) => ` - ${reason}`)].join("\n");
121
+ return { exitCode: gateExit, stdout: loop.json ? JSON.stringify(result, null, 2) : undefined, stderr: loop.json ? undefined : text };
122
+ }
123
+ return ok(loop, result, `completed ${result.goalId}`);
124
+ }
125
+ catch (error) {
126
+ if (error instanceof UsageError)
127
+ return { exitCode: usageExit, stderr: error.message };
128
+ if (error instanceof SkillObserverError && error.code === "OBSERVER_SECRET_REFUSED") {
129
+ return { exitCode: refusedExit, stderr: `REFUSED (BLOCKED_OBSERVER_SECRET): ${error.message}` };
130
+ }
131
+ if (error instanceof EvidenceLedgerError)
132
+ return { exitCode: refusedExit, stderr: `REFUSED (${error.code}): ${error.message}` };
133
+ throw error;
134
+ }
135
+ }
@@ -0,0 +1,17 @@
1
+ export type LspServerReport = {
2
+ readonly id: string;
3
+ readonly command: string;
4
+ readonly extensions: readonly string[];
5
+ readonly disabled: boolean;
6
+ };
7
+ export type LspCapabilityReport = {
8
+ readonly declared: boolean;
9
+ readonly servers: readonly LspServerReport[];
10
+ readonly servedExtensions: readonly string[];
11
+ readonly disabledServers: readonly string[];
12
+ readonly malformed: readonly string[];
13
+ readonly verdict: "declared" | "none-declared" | "unknown";
14
+ readonly note: string;
15
+ };
16
+ export declare function inspectLspCapability(hostConfig: Record<string, unknown> | null): LspCapabilityReport;
17
+ export declare function servesExtension(report: LspCapabilityReport, extension: string): boolean;
@@ -0,0 +1,92 @@
1
+ // Reports what language-server coverage the OpenCode host actually declares.
2
+ //
3
+ // LitOpenCode bundles no language server and starts no daemon. The `lsp` and `lsp-setup` skills both
4
+ // depend on one question being answerable before anything else: does a server exist for the file
5
+ // type in front of me? Without this check the answer is a guess, and the failure mode the two skills
6
+ // exist to prevent -- reporting "no errors" from an environment where nothing inspected the file --
7
+ // is exactly what a guess produces.
8
+ //
9
+ // This reads the host's declaration. It never starts a server, never installs one, and never writes
10
+ // configuration.
11
+ function isRecord(value) {
12
+ return typeof value === "object" && value !== null && !Array.isArray(value);
13
+ }
14
+ function readCommand(value) {
15
+ if (typeof value === "string")
16
+ return value;
17
+ if (Array.isArray(value) && value.length > 0 && typeof value[0] === "string")
18
+ return value.join(" ");
19
+ return "";
20
+ }
21
+ // Two spellings exist across the family's config dialects: an `extensions` array and an
22
+ // `extensionToLanguage` map. Both are read, because a host that uses either is still serving.
23
+ function readExtensions(entry) {
24
+ const collected = [];
25
+ const extensions = entry["extensions"];
26
+ if (Array.isArray(extensions)) {
27
+ for (const extension of extensions)
28
+ if (typeof extension === "string")
29
+ collected.push(extension);
30
+ }
31
+ const map = entry["extensionToLanguage"];
32
+ if (isRecord(map))
33
+ collected.push(...Object.keys(map));
34
+ return [...new Set(collected.map((extension) => (extension.startsWith(".") ? extension : `.${extension}`)))].sort();
35
+ }
36
+ export function inspectLspCapability(hostConfig) {
37
+ if (hostConfig === null) {
38
+ return {
39
+ declared: false,
40
+ servers: [],
41
+ servedExtensions: [],
42
+ disabledServers: [],
43
+ malformed: [],
44
+ verdict: "unknown",
45
+ note: "No readable OpenCode config, so language-server coverage could not be determined. Treat an empty diagnostic result as no evidence rather than a clean result."
46
+ };
47
+ }
48
+ const lsp = hostConfig["lsp"];
49
+ if (!isRecord(lsp)) {
50
+ return {
51
+ declared: false,
52
+ servers: [],
53
+ servedExtensions: [],
54
+ disabledServers: [],
55
+ malformed: [],
56
+ verdict: "none-declared",
57
+ note: "The OpenCode config declares no lsp block. The host may still serve some languages natively; confirm before reporting diagnostics as clean, and use the lsp-setup skill for an unserved file type."
58
+ };
59
+ }
60
+ const servers = [];
61
+ const malformed = [];
62
+ for (const [id, rawEntry] of Object.entries(lsp)) {
63
+ if (!isRecord(rawEntry)) {
64
+ malformed.push(id);
65
+ continue;
66
+ }
67
+ servers.push({
68
+ id,
69
+ command: readCommand(rawEntry["command"]),
70
+ extensions: readExtensions(rawEntry),
71
+ disabled: rawEntry["disabled"] === true
72
+ });
73
+ }
74
+ const enabled = servers.filter((server) => !server.disabled);
75
+ const servedExtensions = [...new Set(enabled.flatMap((server) => server.extensions))].sort();
76
+ return {
77
+ declared: servers.length > 0,
78
+ servers,
79
+ servedExtensions,
80
+ disabledServers: servers.filter((server) => server.disabled).map((server) => server.id),
81
+ malformed,
82
+ verdict: enabled.length > 0 ? "declared" : "none-declared",
83
+ note: enabled.length > 0
84
+ ? "Diagnostics for a served extension are real evidence. For any extension not listed here, an empty diagnostic result means nothing was checked; use the lsp-setup skill."
85
+ : "Every declared server is disabled or malformed, so no extension is currently served. Treat empty diagnostics as absence of capability."
86
+ };
87
+ }
88
+ // The question the lsp and lsp-setup skills actually ask, answerable per file.
89
+ export function servesExtension(report, extension) {
90
+ const normalized = extension.startsWith(".") ? extension.toLowerCase() : `.${extension.toLowerCase()}`;
91
+ return report.servedExtensions.some((candidate) => candidate.toLowerCase() === normalized);
92
+ }
@@ -0,0 +1,23 @@
1
+ import type { LitOpenCodeRuntimeSkillId } from "../skills.ts";
2
+ export type ManagedSkillId = "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "frontend-ui-ux" | "visual-qa" | "lit-plan" | "browser-drive" | "skill-observer" | "autoresearch" | "autoconference" | "wikify";
3
+ export type CanonicalManagedAsset = {
4
+ readonly path: string;
5
+ readonly sha256: string;
6
+ };
7
+ export type ManagedSkillDefinition = {
8
+ readonly distributionFiles: readonly string[];
9
+ /** Canonical assets may live outside the native skill wrapper, at this path relative to it. */
10
+ readonly canonicalRoot?: string;
11
+ readonly canonicalFiles: readonly CanonicalManagedAsset[];
12
+ };
13
+ export type ManagedVendorAsset = CanonicalManagedAsset;
14
+ export declare function managedSkillDefinition(id: LitOpenCodeRuntimeSkillId): ManagedSkillDefinition | undefined;
15
+ export declare function managedVendorAssets(): readonly ManagedVendorAsset[];
16
+ export declare function previousManagedSkillId(id: LitOpenCodeRuntimeSkillId): string | undefined;
17
+ export declare function assetPathsForManagedSkill(id: LitOpenCodeRuntimeSkillId): readonly string[];
18
+ export declare function expectedManagedSkillFiles(id: LitOpenCodeRuntimeSkillId): readonly string[];
19
+ export declare const installedCanonicalDirectory = "canonical";
20
+ export declare function nativeManagedSkillReferences(id: LitOpenCodeRuntimeSkillId, content: string): string;
21
+ export declare function expectedInstalledSkillFiles(id: LitOpenCodeRuntimeSkillId): readonly string[];
22
+ export declare function isRecursivelyManagedSkill(id: LitOpenCodeRuntimeSkillId): id is ManagedSkillId;
23
+ export declare function managedSkillDiscoveryDescription(id: LitOpenCodeRuntimeSkillId): string;
@@ -0,0 +1,117 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { renamedSkillIds } from "../skill-renames.js";
3
+ const manifestUrl = new URL("../../skills/managed-skill-manifest.json", import.meta.url);
4
+ const managedSkillManifest = JSON.parse(readFileSync(manifestUrl, "utf8"));
5
+ if (managedSkillManifest.schemaVersion !== 1) {
6
+ throw new Error(`Unsupported managed-skill manifest schema: ${String(managedSkillManifest.schemaVersion)}`);
7
+ }
8
+ export function managedSkillDefinition(id) {
9
+ if (id !== "lit-comprehend" &&
10
+ id !== "lit-handoff" &&
11
+ id !== "lit-scientific-visualization" &&
12
+ id !== "browser-drive" &&
13
+ id !== "skill-observer" &&
14
+ id !== "frontend-ui-ux" &&
15
+ id !== "visual-qa" &&
16
+ id !== "lit-plan" &&
17
+ id !== "autoresearch" &&
18
+ id !== "autoconference" &&
19
+ id !== "wikify") {
20
+ return undefined;
21
+ }
22
+ return managedSkillManifest.skills[id];
23
+ }
24
+ export function managedVendorAssets() {
25
+ return managedSkillManifest.vendorFiles ?? [];
26
+ }
27
+ export function previousManagedSkillId(id) {
28
+ const previous = managedSkillManifest.renamedSkills?.[id];
29
+ const expected = Object.entries(renamedSkillIds).find(([canonical]) => canonical === id)?.[1];
30
+ if (previous !== expected)
31
+ throw new Error(`Managed skill rename manifest drift: ${id}`);
32
+ return previous;
33
+ }
34
+ export function assetPathsForManagedSkill(id) {
35
+ const definition = managedSkillDefinition(id);
36
+ if (definition === undefined)
37
+ return [];
38
+ return [
39
+ ...definition.distributionFiles.filter((relativePath) => relativePath !== "SKILL.md"),
40
+ ...(definition.canonicalRoot === undefined ? definition.canonicalFiles.map((asset) => asset.path) : [])
41
+ ];
42
+ }
43
+ export function expectedManagedSkillFiles(id) {
44
+ const definition = managedSkillDefinition(id);
45
+ return definition === undefined
46
+ ? ["SKILL.md"]
47
+ : [
48
+ ...definition.distributionFiles,
49
+ ...(definition.canonicalRoot === undefined ? definition.canonicalFiles.map((asset) => asset.path) : [])
50
+ ];
51
+ }
52
+ export const installedCanonicalDirectory = "canonical";
53
+ export function nativeManagedSkillReferences(id, content) {
54
+ const root = managedSkillDefinition(id)?.canonicalRoot;
55
+ return root === undefined ? content : content.replaceAll(root, `./${installedCanonicalDirectory}`);
56
+ }
57
+ export function expectedInstalledSkillFiles(id) {
58
+ const definition = managedSkillDefinition(id);
59
+ return definition?.canonicalRoot === undefined
60
+ ? expectedManagedSkillFiles(id)
61
+ : [
62
+ ...definition.distributionFiles,
63
+ ...definition.canonicalFiles.map((asset) => `${installedCanonicalDirectory}/${asset.path}`)
64
+ ];
65
+ }
66
+ export function isRecursivelyManagedSkill(id) {
67
+ return managedSkillDefinition(id) !== undefined;
68
+ }
69
+ // Every runtime skill id must map to a capability-shaped trigger, because this string is the ONLY
70
+ // thing the host reads when deciding whether to surface a skill. A name-echo description ("trigger
71
+ // when the user asks for <id>") fires only when the user already knows the skill exists, so it never
72
+ // surfaces the skill at the moment it is needed. The record is total by type: adding a runtime skill
73
+ // id without writing its trigger is a compile error, not a silent fallback.
74
+ const skillDiscoveryDescriptions = Object.freeze({
75
+ "workflow-loop": "Trigger when the user wants a multi-step LitOpenCode work loop started, resumed, or kept running — bare `lit`, `/lit`, `/litwork`, \"keep going\", \"continue the loop\" — or when a request needs goal binding, ordered execution, and ledger-backed progress across turns instead of one answer.",
76
+ "durable-litgoal": "Trigger when work needs an objective that outlives the current turn: binding a goal with checkable criteria, reading or appending the `.litopencode/litgoal` ledger, resuming a schema-3 bounded-authority work record, or answering \"what was I working on\" from durable state rather than chat memory.",
77
+ "agent-roster": "Trigger when deciding which OpenCode agent should do the work, and again the moment work is about to be split across several lanes at once — before delegating through the task tool, when a request fans out into planning, implementation, review, research, or verification lanes, or when the user asks which agents exist and what each is permitted to touch. Delegation here is depth-one, so lanes need non-overlapping slices, explicit per-lane state, and a completion claim that aggregates every lane's evidence rather than summarising it.",
78
+ "lit-plan": "Trigger when the user asks for a plan, checklist, approach, or design before implementation, or when a request is large or risky enough that execution must not start until scope, non-goals, ordered action/output/verification items, and a falsifiable DoneClaim are agreed. Do not trigger to perform the work itself.",
79
+ "start-work": "Trigger when an approved plan or an explicit go-ahead already exists and implementation should begin or resume — \"start work\", \"execute the plan\", \"pick up where we left off\" — so the loop runs in verifiable slices with delegation lanes, evidence, and an independent verifier before any completion claim.",
80
+ "review-work": "Trigger when something must be judged rather than produced: a draft plan needing a PASS / ITERATE / NEEDS-CONTEXT achievability verdict, or finished work needing the five-lane scope-diff, tests-evidence, package-payload, security-provenance, and real-surface-docs check before it can be called done.",
81
+ litresearch: "Trigger when a question needs sourced investigation rather than recall — comparing options, confirming whether a library, API, or behavior actually works as claimed, gathering public evidence across several sources — so verified facts, hypotheses, contradictions, and residual uncertainty stay separated before a verdict.",
82
+ "reference-benchmark-claims": "Trigger before writing any comparative or superiority claim about this package — \"faster than\", \"better than\", \"always wins\", \"무조건\" — so the wording is classified against the measured benchmark suite and universal all-task claims are blocked rather than shipped.",
83
+ "native-goal-verdict": "Trigger when someone assumes the OpenCode host has a built-in goal primitive — asking for `/goal`, native goal tracking, or host-side objective state — so the answer reflects the verified host capability and routes to LitOpenCode durable goal state instead of promising an integration that does not exist.",
84
+ "doctor-installer": "Trigger when the plugin itself must be installed, inspected, repaired, or previewed: \"install litopencode\", missing commands or skills after an update, a plugin that will not load, editing `litopencode.json` routes, or testing an unpublished local checkout before it reaches a registry.",
85
+ "search-workflow-ideas": "Trigger when planning how to retrieve something from public sources — choosing a route, deciding what counts as evidence for a retrieval claim, or setting the A/B probes that must prove a behavior change across the CLI, plugin, command, tool, and package surfaces.",
86
+ "lit-fetch": "Trigger when a public HTTP(S) page, README, raw file, or API response must actually be fetched, so retrieval runs through the SSRF guards and returns a typed verdict, and so authentication, paywall, rate-limit, consent, and challenge boundaries become stop conditions instead of improvised workarounds.",
87
+ "release-guardrails": "Trigger before any release-shaped action — version bump, tag, publish, changelog, \"is this ready to ship\" — so vocabulary scanning, version lockstep, and a real dry-pack manifest run before the claim is made and publication stays behind explicit user approval.",
88
+ "lit-init": "Trigger when a repository needs agent-facing guidance created or refreshed: \"set up AGENTS.md\", \"document this repo for agents\", onboarding an unfamiliar codebase, or a restructure that left directory guidance stale and misleading.",
89
+ "lit-crucible": "Trigger before planning when the approach itself is uncertain, contested, or expensive to reverse — competing designs, hidden coupling, a request to pressure-test assumptions or find what will go wrong — so independent read-only lanes attack the idea and only surviving evidence-backed insights reach lit-plan.",
90
+ refactor: "Trigger when code should change shape without changing behavior: extracting, renaming, deduplicating, splitting an overgrown module, or paying down structure the user calls messy or hard to follow — so the behavior boundary is pinned by before/after checks and feature work is not smuggled into the diff.",
91
+ "lit-burnoff": "Trigger when text or code reads as machine-written and should not — comments restating the code, hedging filler, decorative headings, invented emphasis — or when the user asks to \"clean this up\", \"make it less AI\", or strip generated padding, while facts, APIs, tests, and accessibility behavior stay intact.",
92
+ "lit-burnoff-file": "Trigger right after a single source file was edited and should be cleaned against its own diff — restated comments, hedging filler, unused scaffolding, an abstraction introduced for one call site — without touching any other file or changing what the code does.",
93
+ "comment-checker": "Trigger right after an edit added or changed comments, to decide per comment whether it survives: delete anything that restates the line below it, keep anything that records a reason, a constraint, or a trap the code cannot state itself.",
94
+ "lit-code": "Trigger whenever code is being written or changed — implementing a feature, fixing a defect, adding a test, wiring a surface — so the smallest correct change wins over an invented abstraction and the change is paired with a real-surface probe before it is claimed done.",
95
+ debugging: "Trigger when something is broken and the cause is not yet known — a failing test, a stack trace, a wrong result, \"it worked yesterday\", flaky or intermittent behavior, a fix that did not take — so the failure is reproduced and the mechanism proven before any code is edited.",
96
+ "lit-commit": "Trigger for any git operation or question: staging, committing, branching, diff review, an unexpectedly dirty worktree, rebase or history inspection, or preparing a PR — so state is inspected before it is mutated and no commit, push, tag, reset, clean, or history rewrite happens without explicit authorization.",
97
+ lsp: "Trigger when a code question is better answered by the language server than by reading files — real diagnostics after an edit, where a symbol is defined, who calls it, what a type actually resolves to — and when a rename or signature change needs its true blast radius before it is made.",
98
+ "lsp-setup": "Trigger when the file type being edited has no language server behind it — diagnostics come back empty for a language the host does not serve, or the user asks why there are no errors, no go-to-definition, no rename — so the gap is named and a compiler or test fallback replaces the missing signal.",
99
+ rules: "Trigger before editing an unfamiliar repository, or when the user invokes house style, conventions, or \"the rules\" — so the shipped rule files are located and ordered before code is written rather than discovered by a reviewer afterwards.",
100
+ "deep-interview": "Trigger when a request is too broad or underspecified to plan — \"make it better\", \"add auth\", \"build the dashboard\", a one-line feature ask with no acceptance criteria — so the forks that change scope, risk, or acceptance get settled into a decision-complete brief before lit-plan starts.",
101
+ "browser-drive": "Trigger only when the answer lives in a running page and the user explicitly asked to drive one \u2014 the exact `browser-drive` name, or a page task that no document can settle. LitOpenCode bundles no browser and no driver: probe by identity, quote the probe, and stop at BLOCKED_BROWSER_DRIVER_UNAVAILABLE, BLOCKED_BROWSER_DRIVER_IDENTITY_UNVERIFIED, or BLOCKED_BROWSER_DRIVER_CLEANUP_FAILED rather than substituting a fetch. A passing mention of a browser or a URL is not a request, and checking how a surface looks is visual-qa.",
102
+ "skill-observer": "Trigger when work has just ended and something in it was instructive \u2014 the exact `skill-observer` name, a repeated correction, or repeated work no skill covered. Observation and review enqueue pending records only; an explicit foreground `litopencode skill-loop apply <id>` is the separate approval act for one agent-marked user skill, with a durable rollback receipt.",
103
+ "structural-search": "Trigger when the target of a search or a rewrite is a syntax SHAPE rather than a string — \"find every call site that passes a callback\", \"rewrite these imports\", \"locate declarations of this form\", any codemod — so the query survives line breaks, argument spread, and comments that defeat a regex. Also when a text search has already produced a match set nobody trusts. LitOpenCode bundles no engine: probe by identity, and label a textual fallback as textual.",
104
+ "lit-korean": "Trigger when Korean prose needs to read naturally — a draft that sounds translated, overwrought, or machine-written, a request to 다듬기 / 자연스럽게 / 문장 정리, or review of Korean documentation — while meaning, technical terms, numbers, citations, and the author's voice are preserved.",
105
+ "lit-comprehend": "Trigger when the user needs to UNDERSTAND completed work rather than just see its status — after a long agent session, an overnight lit-loop, or a multi-file change — so the answer is a self-contained explainer artifact with delta-anchored themes, intuition-first diagrams, a micro-world, and an honesty ledger, not a chronological recap.",
106
+ "lit-recap": "Trigger when the user asks what has happened so far — \"recap\", \"리캡\", \"where are we\", \"summarize this session\", or resuming after a break — so the answer is a read-only Korean-default digest built from the durable ledger and session evidence instead of a new action.",
107
+ "lit-handoff": "Trigger only for explicit `/lit-handoff`, an exact bare `handoff` message, or native selection by the exact `lit-handoff` id.",
108
+ "lit-scientific-visualization": "Trigger only for explicit `/lit-scientific-visualization`, an exact bare `lit-scientific-visualization` message, or native selection by the exact `lit-scientific-visualization` id.",
109
+ "frontend-ui-ux": "Trigger the moment interface work is described, not after it starts — \"design a settings page\", \"redesign the dashboard\", \"build a login screen\", or any making verb aimed at a UI, screen, layout, component, or stylesheet — so the design contract and the existing tokens shape the work before markup exists. Also on the exact `frontend-ui-ux` id. The SKILL.md reference router names which of the fifteen shipped reference documents answers which question.",
110
+ "visual-qa": "Trigger when a rendered surface needs to be checked rather than described — an explicit `visual-qa` request, or verifying that an interface change actually looks and behaves right. Selection does not make a browser callable: the shipped capture playbook names the exact blocked code per unavailable channel, and a blocked check reported honestly outranks an unproven pass.",
111
+ autoresearch: "Trigger when a measurable objective needs repeated hypothesis, experiment, evaluation, and keep/revert decisions, or when its debug, fix, learn, plan, predict, reason, scenario, security, or readiness modes fit the request.",
112
+ autoconference: "Trigger when several genuinely independent research lanes should explore partitions and exchange peer-reviewed packets; block rather than role-play when the current root lacks real OpenCode task capability.",
113
+ wikify: "Trigger when the current project needs a maintained local markdown wiki: initialize structure, ingest inert sources, query grounded pages, save durable context, or lint provenance, navigation, contradictions, and drift."
114
+ });
115
+ export function managedSkillDiscoveryDescription(id) {
116
+ return skillDiscoveryDescriptions[id];
117
+ }
@@ -0,0 +1,21 @@
1
+ import type { InstallModelEffort, InstallModelRoute } from "./types.ts";
2
+ export type ModelProvider = "openai" | "xai";
3
+ export type ModelMenuRow = {
4
+ readonly provider: ModelProvider;
5
+ readonly model: string;
6
+ readonly effort: InstallModelEffort;
7
+ readonly efforts: readonly InstallModelEffort[];
8
+ readonly hint: string;
9
+ };
10
+ export type ProviderMenuRow = {
11
+ readonly provider: ModelProvider;
12
+ readonly label: string;
13
+ readonly credentialEnv: string;
14
+ };
15
+ export declare const providerMenu: readonly ProviderMenuRow[];
16
+ export declare function hostCatalogPath(): string;
17
+ export declare function modelMenuRows(provider: ModelProvider): readonly ModelMenuRow[];
18
+ export declare function isModelProvider(value: string): value is ModelProvider;
19
+ export declare function providerCredentialEnv(provider: string): string | undefined;
20
+ export declare function stripFastSuffix(model: string): string;
21
+ export declare function resolveModelRoute(provider: string, model: string, effort: InstallModelEffort | undefined, optionName: string): InstallModelRoute;
@@ -0,0 +1,107 @@
1
+ import fsSync from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { isRecord } from "./json.js";
5
+ export const providerMenu = [
6
+ { provider: "openai", label: "OpenAI GPT-6 Astra / GPT-5.6 family", credentialEnv: "OPENAI_API_KEY" },
7
+ { provider: "xai", label: "xAI Grok", credentialEnv: "XAI_API_KEY" }
8
+ ];
9
+ const effortRank = ["low", "medium", "high", "xhigh", "max"];
10
+ // The OpenAI rows are the product policy, not the host catalog. Astra is
11
+ // reasoning-only: all five host-supported effort names are carried through
12
+ // the native `variant`/`reasoningEffort` fields.
13
+ const openaiRows = [
14
+ { provider: "openai", model: "gpt-6-astra", effort: "xhigh", efforts: ["low", "medium", "high", "xhigh", "max"], hint: "frontier reasoning (recommended lead)" },
15
+ { provider: "openai", model: "gpt-5.6-sol", effort: "xhigh", efforts: ["high", "xhigh", "max"], hint: "deepest reasoning, slowest (legacy lead)" },
16
+ { provider: "openai", model: "gpt-5.6-luna", effort: "max", efforts: ["high", "max"], hint: "balanced (recommended helper)" },
17
+ { provider: "openai", model: "gpt-5.6", effort: "high", efforts: ["high", "xhigh", "max"], hint: "" },
18
+ { provider: "openai", model: "gpt-5.6-terra", effort: "xhigh", efforts: ["high", "xhigh"], hint: "" }
19
+ ];
20
+ // Used only when the host catalog (~/.cache/opencode/models.json) is absent or unreadable.
21
+ const fallbackXaiRows = [
22
+ { provider: "xai", model: "grok-4.6", effort: "xhigh", efforts: ["low", "medium", "high", "xhigh"], hint: "frontier reasoning (catalog unavailable)" },
23
+ { provider: "xai", model: "grok-4.5", effort: "high", efforts: ["low", "medium", "high"], hint: "catalog unavailable" },
24
+ { provider: "xai", model: "grok-4.3", effort: "high", efforts: ["low", "medium", "high"], hint: "catalog unavailable" }
25
+ ];
26
+ const xaiRowLimit = 3;
27
+ export function hostCatalogPath() {
28
+ const cacheHome = process.env.XDG_CACHE_HOME;
29
+ const base = cacheHome && cacheHome.length > 0 ? cacheHome : path.join(os.homedir(), ".cache");
30
+ return path.join(base, "opencode", "models.json");
31
+ }
32
+ function isEffort(value) {
33
+ return typeof value === "string" && effortRank.includes(value);
34
+ }
35
+ function catalogEfforts(entry) {
36
+ if (!Array.isArray(entry.reasoning_options))
37
+ return [];
38
+ const values = [];
39
+ for (const option of entry.reasoning_options) {
40
+ if (!isRecord(option) || option.type !== "effort" || !Array.isArray(option.values))
41
+ continue;
42
+ for (const value of option.values)
43
+ if (isEffort(value) && !values.includes(value))
44
+ values.push(value);
45
+ }
46
+ return values.sort((left, right) => effortRank.indexOf(left) - effortRank.indexOf(right));
47
+ }
48
+ function xaiRowsFromCatalog() {
49
+ let parsed;
50
+ try {
51
+ parsed = JSON.parse(fsSync.readFileSync(hostCatalogPath(), "utf8"));
52
+ }
53
+ catch {
54
+ return undefined;
55
+ }
56
+ if (!isRecord(parsed) || !isRecord(parsed.xai) || !isRecord(parsed.xai.models))
57
+ return undefined;
58
+ const rows = [];
59
+ for (const [id, entry] of Object.entries(parsed.xai.models)) {
60
+ if (!isRecord(entry) || entry.reasoning !== true)
61
+ continue;
62
+ const efforts = catalogEfforts(entry);
63
+ if (efforts.length === 0)
64
+ continue;
65
+ const release = typeof entry.release_date === "string" ? entry.release_date : "";
66
+ const top = efforts[efforts.length - 1];
67
+ if (top === undefined)
68
+ continue;
69
+ rows.push({ row: { provider: "xai", model: id, effort: top, efforts, hint: "released " + (release || "unknown") }, release });
70
+ }
71
+ if (rows.length === 0)
72
+ return undefined;
73
+ rows.sort((left, right) => (left.row.model === "grok-4.6" ? -1 : right.row.model === "grok-4.6" ? 1 : right.release.localeCompare(left.release)));
74
+ return rows.slice(0, xaiRowLimit).map((entry) => entry.row);
75
+ }
76
+ export function modelMenuRows(provider) {
77
+ if (provider === "openai")
78
+ return openaiRows;
79
+ return xaiRowsFromCatalog() ?? fallbackXaiRows;
80
+ }
81
+ export function isModelProvider(value) {
82
+ return providerMenu.some((row) => row.provider === value);
83
+ }
84
+ export function providerCredentialEnv(provider) {
85
+ return providerMenu.find((row) => row.provider === provider)?.credentialEnv;
86
+ }
87
+ // OpenCode exposes `<id>-fast` as a priority-tier alias for legacy OpenAI
88
+ // rows; Astra has no inferred `-fast` alias and remains an exact model id.
89
+ export function stripFastSuffix(model) {
90
+ return model !== "gpt-6-astra-fast" && model.endsWith("-fast") ? model.slice(0, -"-fast".length) : model;
91
+ }
92
+ export function resolveModelRoute(provider, model, effort, optionName) {
93
+ if (!isModelProvider(provider)) {
94
+ throw new Error(optionName + " provider must be one of " + providerMenu.map((row) => row.provider).join(", ") + " (got " + provider + ")");
95
+ }
96
+ const rows = modelMenuRows(provider);
97
+ const row = rows.find((candidate) => candidate.model === (provider === "openai" ? stripFastSuffix(model) : model));
98
+ if (row === undefined) {
99
+ throw new Error(optionName + " model " + provider + "/" + model + " is not offered; choose one of " + rows.map((candidate) => candidate.model).join(", "));
100
+ }
101
+ if (effort !== undefined && !row.efforts.includes(effort)) {
102
+ if (row.model === "gpt-5.6-luna")
103
+ throw new Error("Luna effort must be high or max");
104
+ throw new Error(provider + "/" + model + " accepts effort " + row.efforts.join(", ") + " (got " + effort + ")");
105
+ }
106
+ return { provider, model, effort: effort ?? row.effort };
107
+ }
@@ -0,0 +1,3 @@
1
+ import type { InstallModelSelection, InstallPermissionMode, ModelConfigClassification } from "./types.ts";
2
+ export declare function classifyModelConfig(rawConfig: Record<string, unknown> | null): ModelConfigClassification;
3
+ export declare function selectedLitConfig(rawConfig: Record<string, unknown> | null, selection: InstallModelSelection | undefined, permissionMode?: InstallPermissionMode, permissionModeExplicit?: boolean, outputStyle?: string): Record<string, unknown>;