@litfamily/litopencode 1.0.7 → 1.0.9

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 (723) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README-Ko-KR.md +314 -31
  3. package/README.md +312 -29
  4. package/dist/activation-primary-prompts.d.ts +1 -0
  5. package/dist/activation-primary-prompts.js +16 -0
  6. package/dist/activation-probe.js +4 -1
  7. package/dist/activation-prompt-utils.d.ts +1 -1
  8. package/dist/activation-routing.d.ts +6 -1
  9. package/dist/activation-routing.js +174 -16
  10. package/dist/activation-workflow-prompts.d.ts +1 -1
  11. package/dist/activation-workflow-prompts.js +18 -17
  12. package/dist/activation.d.ts +3 -2
  13. package/dist/activation.js +6 -6
  14. package/dist/agents/defaults.js +14 -6
  15. package/dist/cli/command-aliases.js +24 -22
  16. package/dist/cli/doctor.js +3 -0
  17. package/dist/cli/install-report.d.ts +1 -0
  18. package/dist/cli/install-report.js +4 -0
  19. package/dist/cli/install.js +7 -4
  20. package/dist/cli/managed-skill-assets.d.ts +1 -1
  21. package/dist/cli/managed-skill-assets.js +15 -5
  22. package/dist/cli/motion-runtime.d.ts +6 -0
  23. package/dist/cli/motion-runtime.js +46 -0
  24. package/dist/cli/native-skill-install.js +32 -9
  25. package/dist/cli/native-skill-integrity.js +1 -0
  26. package/dist/cli/native-skills.d.ts +2 -0
  27. package/dist/cli/native-skills.js +2 -1
  28. package/dist/cli/office-dependencies.d.ts +14 -0
  29. package/dist/cli/office-dependencies.js +24 -0
  30. package/dist/cli.js +13 -3
  31. package/dist/commands.d.ts +2 -11
  32. package/dist/commands.js +9 -17
  33. package/dist/deliverable-hedge-guard.d.ts +20 -21
  34. package/dist/deliverable-hedge-guard.js +234 -275
  35. package/dist/features.d.ts +81 -2
  36. package/dist/features.js +80 -13
  37. package/dist/hooks.d.ts +3 -2
  38. package/dist/hooks.js +4 -4
  39. package/dist/ignition.d.ts +1 -1
  40. package/dist/ignition.js +15 -4
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/interface-handoff.d.ts +1 -0
  44. package/dist/interface-handoff.js +1 -0
  45. package/dist/motion-image-reads.d.ts +6 -0
  46. package/dist/motion-image-reads.js +46 -0
  47. package/dist/server.js +13 -11
  48. package/dist/skill-renames.d.ts +4 -2
  49. package/dist/skill-renames.js +12 -4
  50. package/dist/skills.d.ts +31 -3
  51. package/dist/skills.js +53 -9
  52. package/dist/tools.js +4 -4
  53. package/docs/ab/S11/baseline-desktop.webp +0 -0
  54. package/docs/ab/S11/baseline-phone.webp +0 -0
  55. package/docs/ab/S11/lit-desktop.webp +0 -0
  56. package/docs/ab/S11/lit-phone.webp +0 -0
  57. package/docs/ab/S3/baseline-desktop.webp +0 -0
  58. package/docs/ab/S3/baseline-phone.webp +0 -0
  59. package/docs/ab/S3/lit-desktop.webp +0 -0
  60. package/docs/ab/S3/lit-phone.webp +0 -0
  61. package/docs/ab/S4/baseline-desktop.webp +0 -0
  62. package/docs/ab/S4/baseline-phone.webp +0 -0
  63. package/docs/ab/S4/lit-desktop.webp +0 -0
  64. package/docs/ab/S4/lit-phone.webp +0 -0
  65. package/docs/ab/S5/lit-slides.webp +0 -0
  66. package/docs/ab/S7/lit-diagram.webp +0 -0
  67. package/docs/ab/S8/baseline-slides.webp +0 -0
  68. package/docs/ab/S8/lit-slides.webp +0 -0
  69. package/docs/ab/S9/lit-pages.webp +0 -0
  70. package/docs/assets/cover-motion-still.webp +0 -0
  71. package/docs/assets/cover-motion.webp +0 -0
  72. package/docs/assets/readme/badge-version.svg +1 -1
  73. package/docs/assets/skills/autoconference.webp +0 -0
  74. package/docs/assets/skills/automatic-guards.webp +0 -0
  75. package/docs/assets/skills/autoresearch.webp +0 -0
  76. package/docs/assets/skills/browser-drive.webp +0 -0
  77. package/docs/assets/skills/debugging.webp +0 -0
  78. package/docs/assets/skills/deep-interview.webp +0 -0
  79. package/docs/assets/skills/doctor-installer.webp +0 -0
  80. package/docs/assets/skills/durable-litgoal.webp +0 -0
  81. package/docs/assets/skills/frontend-ui-ux.webp +0 -0
  82. package/docs/assets/skills/lit-burnoff-file.webp +0 -0
  83. package/docs/assets/skills/lit-burnoff.webp +0 -0
  84. package/docs/assets/skills/lit-code.webp +0 -0
  85. package/docs/assets/skills/lit-commit.webp +0 -0
  86. package/docs/assets/skills/lit-comprehend.webp +0 -0
  87. package/docs/assets/skills/lit-crucible.webp +0 -0
  88. package/docs/assets/skills/lit-diagram-drawer.webp +0 -0
  89. package/docs/assets/skills/lit-docx.webp +0 -0
  90. package/docs/assets/skills/lit-fetch.webp +0 -0
  91. package/docs/assets/skills/lit-handoff.webp +0 -0
  92. package/docs/assets/skills/lit-humanizer.webp +0 -0
  93. package/docs/assets/skills/lit-init.webp +0 -0
  94. package/docs/assets/skills/lit-plan.webp +0 -0
  95. package/docs/assets/skills/lit-pptx.webp +0 -0
  96. package/docs/assets/skills/lit-recap.webp +0 -0
  97. package/docs/assets/skills/lit-scientific-visualization.webp +0 -0
  98. package/docs/assets/skills/lit-typographic-motion.webp +0 -0
  99. package/docs/assets/skills/litresearch.webp +0 -0
  100. package/docs/assets/skills/litwork.webp +0 -0
  101. package/docs/assets/skills/lsp-setup.webp +0 -0
  102. package/docs/assets/skills/lsp.webp +0 -0
  103. package/docs/assets/skills/readme-studio.webp +0 -0
  104. package/docs/assets/skills/refactor.webp +0 -0
  105. package/docs/assets/skills/review-work.webp +0 -0
  106. package/docs/assets/skills/rules.webp +0 -0
  107. package/docs/assets/skills/start-work.webp +0 -0
  108. package/docs/assets/skills/structural-search.webp +0 -0
  109. package/docs/assets/skills/visual-qa.webp +0 -0
  110. package/docs/assets/skills/wikify.webp +0 -0
  111. package/docs/reference-Ko-KR.md +5 -1
  112. package/docs/reference.md +6 -2
  113. package/package.json +1 -1
  114. package/rules/bundled-rules/lit-humanizer.md +12 -0
  115. package/skills/autoconference/SKILL.md +1 -1
  116. package/skills/autoconference/assets/report_template.md +1 -1
  117. package/skills/autoresearch/references/type-checklists.md +1 -1
  118. package/skills/browser-drive/SKILL.md +19 -5
  119. package/skills/browser-drive/scripts/capability-probe.mjs +26 -5
  120. package/skills/frontend-ui-ux/SKILL.md +10 -15
  121. package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +10 -0
  122. package/skills/frontend-ui-ux/references/adaptive-layout.md +3 -11
  123. package/skills/frontend-ui-ux/references/brand-and-imagery.md +6 -11
  124. package/skills/frontend-ui-ux/references/complete-contract.md +10 -3
  125. package/skills/frontend-ui-ux/references/composition.md +1 -7
  126. package/skills/frontend-ui-ux/references/craft-floor.md +94 -0
  127. package/skills/frontend-ui-ux/references/creative-directions.md +1 -7
  128. package/skills/frontend-ui-ux/references/evidence-review.md +2 -12
  129. package/skills/frontend-ui-ux/references/implementation-platforms.md +1 -4
  130. package/skills/frontend-ui-ux/references/inclusive-interface.md +1 -3
  131. package/skills/frontend-ui-ux/references/interaction-motion.md +1 -7
  132. package/skills/frontend-ui-ux/references/motion-guide.md +125 -0
  133. package/skills/frontend-ui-ux/references/operating-lanes.md +2 -8
  134. package/skills/frontend-ui-ux/references/product-direction.md +1 -6
  135. package/skills/frontend-ui-ux/references/production.md +12 -5
  136. package/skills/frontend-ui-ux/references/redesign-playbook.md +1 -7
  137. package/skills/frontend-ui-ux/references/slop-register.md +103 -0
  138. package/skills/frontend-ui-ux/references/system-foundations.md +1 -8
  139. package/skills/frontend-ui-ux/references/taste-direction.md +4 -11
  140. package/skills/frontend-ui-ux/references/visual-language.md +1 -6
  141. package/skills/frontend-ui-ux/references/visual-reconstruction.md +2 -7
  142. package/skills/frontend-ui-ux/scripts/probe-page.mjs +326 -0
  143. package/skills/frontend-ui-ux/scripts/probe-server.mjs +24 -0
  144. package/skills/frontend-ui-ux/scripts/probe-static.mjs +42 -0
  145. package/skills/frontend-ui-ux/scripts/probe-thresholds.json +86 -0
  146. package/skills/frontend-ui-ux/scripts/probe.mjs +183 -0
  147. package/skills/lit-comprehend/SKILL.md +10 -11
  148. package/skills/lit-comprehend/references/artifact-template.md +2 -18
  149. package/skills/lit-comprehend/scripts/verify-explainer.ts +0 -14
  150. package/skills/lit-diagram-drawer/NOTICE.md +33 -0
  151. package/skills/lit-diagram-drawer/SKILL.md +101 -0
  152. package/skills/lit-diagram-drawer/assets/examples/type-architecture-dark.html +1 -0
  153. package/skills/lit-diagram-drawer/assets/examples/type-architecture-full.html +1 -0
  154. package/skills/lit-diagram-drawer/assets/examples/type-architecture-light.html +1 -0
  155. package/skills/lit-diagram-drawer/assets/examples/type-bar-dark.html +1 -0
  156. package/skills/lit-diagram-drawer/assets/examples/type-bar-full.html +1 -0
  157. package/skills/lit-diagram-drawer/assets/examples/type-bar-light.html +1 -0
  158. package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-dark.html +1 -0
  159. package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-full.html +1 -0
  160. package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-light.html +1 -0
  161. package/skills/lit-diagram-drawer/assets/examples/type-bubble-dark.html +1 -0
  162. package/skills/lit-diagram-drawer/assets/examples/type-bubble-full.html +1 -0
  163. package/skills/lit-diagram-drawer/assets/examples/type-bubble-light.html +1 -0
  164. package/skills/lit-diagram-drawer/assets/examples/type-bump-dark.html +1 -0
  165. package/skills/lit-diagram-drawer/assets/examples/type-bump-full.html +1 -0
  166. package/skills/lit-diagram-drawer/assets/examples/type-bump-light.html +1 -0
  167. package/skills/lit-diagram-drawer/assets/examples/type-data-flow-dark.html +1 -0
  168. package/skills/lit-diagram-drawer/assets/examples/type-data-flow-full.html +1 -0
  169. package/skills/lit-diagram-drawer/assets/examples/type-data-flow-light.html +1 -0
  170. package/skills/lit-diagram-drawer/assets/examples/type-datalake-dark.html +1 -0
  171. package/skills/lit-diagram-drawer/assets/examples/type-datalake-full.html +1 -0
  172. package/skills/lit-diagram-drawer/assets/examples/type-datalake-light.html +1 -0
  173. package/skills/lit-diagram-drawer/assets/examples/type-db-schema-dark.html +1 -0
  174. package/skills/lit-diagram-drawer/assets/examples/type-db-schema-full.html +1 -0
  175. package/skills/lit-diagram-drawer/assets/examples/type-db-schema-light.html +1 -0
  176. package/skills/lit-diagram-drawer/assets/examples/type-dependency-dark.html +1 -0
  177. package/skills/lit-diagram-drawer/assets/examples/type-dependency-full.html +1 -0
  178. package/skills/lit-diagram-drawer/assets/examples/type-dependency-light.html +1 -0
  179. package/skills/lit-diagram-drawer/assets/examples/type-deployment-dark.html +1 -0
  180. package/skills/lit-diagram-drawer/assets/examples/type-deployment-full.html +1 -0
  181. package/skills/lit-diagram-drawer/assets/examples/type-deployment-light.html +1 -0
  182. package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-dark.html +1 -0
  183. package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-full.html +1 -0
  184. package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-light.html +1 -0
  185. package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-dark.html +1 -0
  186. package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-full.html +1 -0
  187. package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-light.html +1 -0
  188. package/skills/lit-diagram-drawer/assets/examples/type-er-dark.html +1 -0
  189. package/skills/lit-diagram-drawer/assets/examples/type-er-full.html +1 -0
  190. package/skills/lit-diagram-drawer/assets/examples/type-er-light.html +1 -0
  191. package/skills/lit-diagram-drawer/assets/examples/type-fishbone-dark.html +1 -0
  192. package/skills/lit-diagram-drawer/assets/examples/type-fishbone-full.html +1 -0
  193. package/skills/lit-diagram-drawer/assets/examples/type-fishbone-light.html +1 -0
  194. package/skills/lit-diagram-drawer/assets/examples/type-flowchart-dark.html +1 -0
  195. package/skills/lit-diagram-drawer/assets/examples/type-flowchart-full.html +1 -0
  196. package/skills/lit-diagram-drawer/assets/examples/type-flowchart-light.html +1 -0
  197. package/skills/lit-diagram-drawer/assets/examples/type-gantt-dark.html +1 -0
  198. package/skills/lit-diagram-drawer/assets/examples/type-gantt-full.html +1 -0
  199. package/skills/lit-diagram-drawer/assets/examples/type-gantt-light.html +1 -0
  200. package/skills/lit-diagram-drawer/assets/examples/type-heatmap-dark.html +1 -0
  201. package/skills/lit-diagram-drawer/assets/examples/type-heatmap-full.html +1 -0
  202. package/skills/lit-diagram-drawer/assets/examples/type-heatmap-light.html +1 -0
  203. package/skills/lit-diagram-drawer/assets/examples/type-high-level-dark.html +1 -0
  204. package/skills/lit-diagram-drawer/assets/examples/type-high-level-full.html +1 -0
  205. package/skills/lit-diagram-drawer/assets/examples/type-high-level-light.html +1 -0
  206. package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-dark.html +1 -0
  207. package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-full.html +1 -0
  208. package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-light.html +1 -0
  209. package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-dark.html +1 -0
  210. package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-full.html +1 -0
  211. package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-light.html +1 -0
  212. package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-dark.html +1 -0
  213. package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-full.html +1 -0
  214. package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-light.html +1 -0
  215. package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-dark.html +1 -0
  216. package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-full.html +1 -0
  217. package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-light.html +1 -0
  218. package/skills/lit-diagram-drawer/assets/examples/type-it-state-dark.html +1 -0
  219. package/skills/lit-diagram-drawer/assets/examples/type-it-state-full.html +1 -0
  220. package/skills/lit-diagram-drawer/assets/examples/type-it-state-light.html +1 -0
  221. package/skills/lit-diagram-drawer/assets/examples/type-journey-dark.html +1 -0
  222. package/skills/lit-diagram-drawer/assets/examples/type-journey-full.html +1 -0
  223. package/skills/lit-diagram-drawer/assets/examples/type-journey-light.html +1 -0
  224. package/skills/lit-diagram-drawer/assets/examples/type-kanban-dark.html +1 -0
  225. package/skills/lit-diagram-drawer/assets/examples/type-kanban-full.html +1 -0
  226. package/skills/lit-diagram-drawer/assets/examples/type-kanban-light.html +1 -0
  227. package/skills/lit-diagram-drawer/assets/examples/type-layers-dark.html +1 -0
  228. package/skills/lit-diagram-drawer/assets/examples/type-layers-full.html +1 -0
  229. package/skills/lit-diagram-drawer/assets/examples/type-layers-light.html +1 -0
  230. package/skills/lit-diagram-drawer/assets/examples/type-line-dark.html +1 -0
  231. package/skills/lit-diagram-drawer/assets/examples/type-line-full.html +1 -0
  232. package/skills/lit-diagram-drawer/assets/examples/type-line-light.html +1 -0
  233. package/skills/lit-diagram-drawer/assets/examples/type-loop-dark.html +1 -0
  234. package/skills/lit-diagram-drawer/assets/examples/type-loop-full.html +1 -0
  235. package/skills/lit-diagram-drawer/assets/examples/type-loop-light.html +1 -0
  236. package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-dark.html +1 -0
  237. package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-full.html +1 -0
  238. package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-light.html +1 -0
  239. package/skills/lit-diagram-drawer/assets/examples/type-marimekko-dark.html +1 -0
  240. package/skills/lit-diagram-drawer/assets/examples/type-marimekko-full.html +1 -0
  241. package/skills/lit-diagram-drawer/assets/examples/type-marimekko-light.html +1 -0
  242. package/skills/lit-diagram-drawer/assets/examples/type-medallion-dark.html +1 -0
  243. package/skills/lit-diagram-drawer/assets/examples/type-medallion-full.html +1 -0
  244. package/skills/lit-diagram-drawer/assets/examples/type-medallion-light.html +1 -0
  245. package/skills/lit-diagram-drawer/assets/examples/type-nested-dark.html +1 -0
  246. package/skills/lit-diagram-drawer/assets/examples/type-nested-full.html +1 -0
  247. package/skills/lit-diagram-drawer/assets/examples/type-nested-light.html +1 -0
  248. package/skills/lit-diagram-drawer/assets/examples/type-org-chart-dark.html +1 -0
  249. package/skills/lit-diagram-drawer/assets/examples/type-org-chart-full.html +1 -0
  250. package/skills/lit-diagram-drawer/assets/examples/type-org-chart-light.html +1 -0
  251. package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-dark.html +1 -0
  252. package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-full.html +1 -0
  253. package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-light.html +1 -0
  254. package/skills/lit-diagram-drawer/assets/examples/type-polar-dark.html +1 -0
  255. package/skills/lit-diagram-drawer/assets/examples/type-polar-full.html +1 -0
  256. package/skills/lit-diagram-drawer/assets/examples/type-polar-light.html +1 -0
  257. package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-dark.html +1 -0
  258. package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-full.html +1 -0
  259. package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-light.html +1 -0
  260. package/skills/lit-diagram-drawer/assets/examples/type-process-dark.html +1 -0
  261. package/skills/lit-diagram-drawer/assets/examples/type-process-full.html +1 -0
  262. package/skills/lit-diagram-drawer/assets/examples/type-process-light.html +1 -0
  263. package/skills/lit-diagram-drawer/assets/examples/type-pyramid-dark.html +1 -0
  264. package/skills/lit-diagram-drawer/assets/examples/type-pyramid-full.html +1 -0
  265. package/skills/lit-diagram-drawer/assets/examples/type-pyramid-light.html +1 -0
  266. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-dark.html +1 -0
  267. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-full.html +1 -0
  268. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-light.html +1 -0
  269. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-dark.html +1 -0
  270. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-full.html +1 -0
  271. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-light.html +1 -0
  272. package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-dark.html +1 -0
  273. package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-full.html +1 -0
  274. package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-light.html +1 -0
  275. package/skills/lit-diagram-drawer/assets/examples/type-radar-dark.html +1 -0
  276. package/skills/lit-diagram-drawer/assets/examples/type-radar-full.html +1 -0
  277. package/skills/lit-diagram-drawer/assets/examples/type-radar-light.html +1 -0
  278. package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-dark.html +1 -0
  279. package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-full.html +1 -0
  280. package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-light.html +1 -0
  281. package/skills/lit-diagram-drawer/assets/examples/type-sankey-dark.html +1 -0
  282. package/skills/lit-diagram-drawer/assets/examples/type-sankey-full.html +1 -0
  283. package/skills/lit-diagram-drawer/assets/examples/type-sankey-light.html +1 -0
  284. package/skills/lit-diagram-drawer/assets/examples/type-scatter-dark.html +1 -0
  285. package/skills/lit-diagram-drawer/assets/examples/type-scatter-full.html +1 -0
  286. package/skills/lit-diagram-drawer/assets/examples/type-scatter-light.html +1 -0
  287. package/skills/lit-diagram-drawer/assets/examples/type-sequence-dark.html +1 -0
  288. package/skills/lit-diagram-drawer/assets/examples/type-sequence-full.html +1 -0
  289. package/skills/lit-diagram-drawer/assets/examples/type-sequence-light.html +1 -0
  290. package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-dark.html +1 -0
  291. package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-full.html +1 -0
  292. package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-light.html +1 -0
  293. package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-dark.html +1 -0
  294. package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-full.html +1 -0
  295. package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-light.html +1 -0
  296. package/skills/lit-diagram-drawer/assets/examples/type-state-dark.html +1 -0
  297. package/skills/lit-diagram-drawer/assets/examples/type-state-full.html +1 -0
  298. package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-dark.html +1 -0
  299. package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-full.html +1 -0
  300. package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-light.html +1 -0
  301. package/skills/lit-diagram-drawer/assets/examples/type-state-light.html +1 -0
  302. package/skills/lit-diagram-drawer/assets/examples/type-story-map-dark.html +1 -0
  303. package/skills/lit-diagram-drawer/assets/examples/type-story-map-full.html +1 -0
  304. package/skills/lit-diagram-drawer/assets/examples/type-story-map-light.html +1 -0
  305. package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-dark.html +1 -0
  306. package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-full.html +1 -0
  307. package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-light.html +1 -0
  308. package/skills/lit-diagram-drawer/assets/examples/type-swimlane-dark.html +1 -0
  309. package/skills/lit-diagram-drawer/assets/examples/type-swimlane-full.html +1 -0
  310. package/skills/lit-diagram-drawer/assets/examples/type-swimlane-light.html +1 -0
  311. package/skills/lit-diagram-drawer/assets/examples/type-timeline-dark.html +1 -0
  312. package/skills/lit-diagram-drawer/assets/examples/type-timeline-full.html +1 -0
  313. package/skills/lit-diagram-drawer/assets/examples/type-timeline-light.html +1 -0
  314. package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-dark.html +1 -0
  315. package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-full.html +1 -0
  316. package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-light.html +1 -0
  317. package/skills/lit-diagram-drawer/assets/examples/type-tree-dark.html +1 -0
  318. package/skills/lit-diagram-drawer/assets/examples/type-tree-full.html +1 -0
  319. package/skills/lit-diagram-drawer/assets/examples/type-tree-light.html +1 -0
  320. package/skills/lit-diagram-drawer/assets/examples/type-treemap-dark.html +1 -0
  321. package/skills/lit-diagram-drawer/assets/examples/type-treemap-full.html +1 -0
  322. package/skills/lit-diagram-drawer/assets/examples/type-treemap-light.html +1 -0
  323. package/skills/lit-diagram-drawer/assets/examples/type-uml-class-dark.html +1 -0
  324. package/skills/lit-diagram-drawer/assets/examples/type-uml-class-full.html +1 -0
  325. package/skills/lit-diagram-drawer/assets/examples/type-uml-class-light.html +1 -0
  326. package/skills/lit-diagram-drawer/assets/examples/type-venn-dark.html +1 -0
  327. package/skills/lit-diagram-drawer/assets/examples/type-venn-full.html +1 -0
  328. package/skills/lit-diagram-drawer/assets/examples/type-venn-light.html +1 -0
  329. package/skills/lit-diagram-drawer/assets/examples/type-wardley-dark.html +1 -0
  330. package/skills/lit-diagram-drawer/assets/examples/type-wardley-full.html +1 -0
  331. package/skills/lit-diagram-drawer/assets/examples/type-wardley-light.html +1 -0
  332. package/skills/lit-diagram-drawer/assets/examples/type-waterfall-dark.html +1 -0
  333. package/skills/lit-diagram-drawer/assets/examples/type-waterfall-full.html +1 -0
  334. package/skills/lit-diagram-drawer/assets/examples/type-waterfall-light.html +1 -0
  335. package/skills/lit-diagram-drawer/assets/fonts/OFL.txt +94 -0
  336. package/skills/lit-diagram-drawer/assets/fonts/PretendardVariable.woff2 +0 -0
  337. package/skills/lit-diagram-drawer/assets/fonts/provenance.json +23 -0
  338. package/skills/lit-diagram-drawer/assets/icons.html +231 -0
  339. package/skills/lit-diagram-drawer/assets/licenses/devicon-MIT.txt +20 -0
  340. package/skills/lit-diagram-drawer/assets/licenses/diagram-design-MIT.txt +21 -0
  341. package/skills/lit-diagram-drawer/assets/licenses/log-z-MIT.txt +21 -0
  342. package/skills/lit-diagram-drawer/assets/licenses/simple-icons-CC0.md +30 -0
  343. package/skills/lit-diagram-drawer/assets/licenses/tabler-MIT.txt +21 -0
  344. package/skills/lit-diagram-drawer/examples/01-service-architecture/after.html +1 -0
  345. package/skills/lit-diagram-drawer/examples/01-service-architecture/brief.md +33 -0
  346. package/skills/lit-diagram-drawer/examples/02-release-decision/after.html +1 -0
  347. package/skills/lit-diagram-drawer/examples/02-release-decision/brief.md +18 -0
  348. package/skills/lit-diagram-drawer/examples/03-data-retention/after.html +1 -0
  349. package/skills/lit-diagram-drawer/examples/03-data-retention/brief.md +19 -0
  350. package/skills/lit-diagram-drawer/examples/04-oauth-sequence/after.html +1 -0
  351. package/skills/lit-diagram-drawer/examples/04-oauth-sequence/brief.md +17 -0
  352. package/skills/lit-diagram-drawer/examples/05-review-lanes/after.html +1 -0
  353. package/skills/lit-diagram-drawer/examples/05-review-lanes/brief.md +17 -0
  354. package/skills/lit-diagram-drawer/examples/06-rollout-gates/after.html +1 -0
  355. package/skills/lit-diagram-drawer/examples/06-rollout-gates/brief.md +17 -0
  356. package/skills/lit-diagram-drawer/examples/07-deployment-boundary/after.html +1 -0
  357. package/skills/lit-diagram-drawer/examples/07-deployment-boundary/brief.md +19 -0
  358. package/skills/lit-diagram-drawer/examples/08-policy-traces/after.html +1 -0
  359. package/skills/lit-diagram-drawer/examples/08-policy-traces/brief.md +20 -0
  360. package/skills/lit-diagram-drawer/references/accessibility.md +37 -0
  361. package/skills/lit-diagram-drawer/references/export.md +17 -0
  362. package/skills/lit-diagram-drawer/references/import-drawio.md +13 -0
  363. package/skills/lit-diagram-drawer/references/import-excalidraw.md +11 -0
  364. package/skills/lit-diagram-drawer/references/import-mermaid.md +12 -0
  365. package/skills/lit-diagram-drawer/references/import-schema.md +28 -0
  366. package/skills/lit-diagram-drawer/references/korean-typography.md +34 -0
  367. package/skills/lit-diagram-drawer/references/motion.md +29 -0
  368. package/skills/lit-diagram-drawer/references/office-pptx-docx.md +28 -0
  369. package/skills/lit-diagram-drawer/references/output-spec.md +48 -0
  370. package/skills/lit-diagram-drawer/references/primitive-annotation.md +12 -0
  371. package/skills/lit-diagram-drawer/references/primitive-icons.md +21 -0
  372. package/skills/lit-diagram-drawer/references/primitive-sketchy.md +11 -0
  373. package/skills/lit-diagram-drawer/references/primitive-terminal.md +11 -0
  374. package/skills/lit-diagram-drawer/references/profiles.md +24 -0
  375. package/skills/lit-diagram-drawer/references/semantic-patterns.md +27 -0
  376. package/skills/lit-diagram-drawer/references/style-guide.md +67 -0
  377. package/skills/lit-diagram-drawer/references/type-architecture.md +51 -0
  378. package/skills/lit-diagram-drawer/references/type-bar.md +51 -0
  379. package/skills/lit-diagram-drawer/references/type-beeswarm.md +49 -0
  380. package/skills/lit-diagram-drawer/references/type-bubble.md +49 -0
  381. package/skills/lit-diagram-drawer/references/type-bump.md +49 -0
  382. package/skills/lit-diagram-drawer/references/type-catalog.json +1433 -0
  383. package/skills/lit-diagram-drawer/references/type-data-flow.md +51 -0
  384. package/skills/lit-diagram-drawer/references/type-datalake.md +49 -0
  385. package/skills/lit-diagram-drawer/references/type-db-schema.md +49 -0
  386. package/skills/lit-diagram-drawer/references/type-dependency.md +49 -0
  387. package/skills/lit-diagram-drawer/references/type-deployment.md +49 -0
  388. package/skills/lit-diagram-drawer/references/type-dp-integration.md +49 -0
  389. package/skills/lit-diagram-drawer/references/type-dp-security-matrix.md +49 -0
  390. package/skills/lit-diagram-drawer/references/type-er.md +49 -0
  391. package/skills/lit-diagram-drawer/references/type-fishbone.md +49 -0
  392. package/skills/lit-diagram-drawer/references/type-flowchart.md +49 -0
  393. package/skills/lit-diagram-drawer/references/type-gantt.md +49 -0
  394. package/skills/lit-diagram-drawer/references/type-heatmap.md +53 -0
  395. package/skills/lit-diagram-drawer/references/type-high-level-vertical.md +53 -0
  396. package/skills/lit-diagram-drawer/references/type-high-level.md +53 -0
  397. package/skills/lit-diagram-drawer/references/type-import-drawio.md +53 -0
  398. package/skills/lit-diagram-drawer/references/type-import-excalidraw.md +53 -0
  399. package/skills/lit-diagram-drawer/references/type-import-mermaid.md +53 -0
  400. package/skills/lit-diagram-drawer/references/type-it-state.md +54 -0
  401. package/skills/lit-diagram-drawer/references/type-journey.md +54 -0
  402. package/skills/lit-diagram-drawer/references/type-kanban.md +54 -0
  403. package/skills/lit-diagram-drawer/references/type-layers.md +54 -0
  404. package/skills/lit-diagram-drawer/references/type-line.md +54 -0
  405. package/skills/lit-diagram-drawer/references/type-loop-terminal.md +53 -0
  406. package/skills/lit-diagram-drawer/references/type-loop.md +54 -0
  407. package/skills/lit-diagram-drawer/references/type-marimekko.md +54 -0
  408. package/skills/lit-diagram-drawer/references/type-medallion.md +54 -0
  409. package/skills/lit-diagram-drawer/references/type-nested.md +59 -0
  410. package/skills/lit-diagram-drawer/references/type-org-chart.md +58 -0
  411. package/skills/lit-diagram-drawer/references/type-paved-road-animated.md +72 -0
  412. package/skills/lit-diagram-drawer/references/type-polar.md +67 -0
  413. package/skills/lit-diagram-drawer/references/type-policy-trace-animated.md +69 -0
  414. package/skills/lit-diagram-drawer/references/type-process.md +58 -0
  415. package/skills/lit-diagram-drawer/references/type-pyramid.md +59 -0
  416. package/skills/lit-diagram-drawer/references/type-quadrant-consultant.md +60 -0
  417. package/skills/lit-diagram-drawer/references/type-quadrant.md +57 -0
  418. package/skills/lit-diagram-drawer/references/type-queue-animated.md +63 -0
  419. package/skills/lit-diagram-drawer/references/type-radar.md +57 -0
  420. package/skills/lit-diagram-drawer/references/type-ridgeline.md +63 -0
  421. package/skills/lit-diagram-drawer/references/type-sankey.md +68 -0
  422. package/skills/lit-diagram-drawer/references/type-scatter.md +60 -0
  423. package/skills/lit-diagram-drawer/references/type-sequence-oauth.md +66 -0
  424. package/skills/lit-diagram-drawer/references/type-sequence.md +63 -0
  425. package/skills/lit-diagram-drawer/references/type-slopegraph.md +65 -0
  426. package/skills/lit-diagram-drawer/references/type-state-lifecycle.md +53 -0
  427. package/skills/lit-diagram-drawer/references/type-state.md +59 -0
  428. package/skills/lit-diagram-drawer/references/type-story-map.md +52 -0
  429. package/skills/lit-diagram-drawer/references/type-streamgraph.md +53 -0
  430. package/skills/lit-diagram-drawer/references/type-swimlane.md +52 -0
  431. package/skills/lit-diagram-drawer/references/type-timeline.md +52 -0
  432. package/skills/lit-diagram-drawer/references/type-tree-block-decomposition.md +57 -0
  433. package/skills/lit-diagram-drawer/references/type-tree.md +54 -0
  434. package/skills/lit-diagram-drawer/references/type-treemap.md +54 -0
  435. package/skills/lit-diagram-drawer/references/type-uml-class.md +52 -0
  436. package/skills/lit-diagram-drawer/references/type-venn.md +51 -0
  437. package/skills/lit-diagram-drawer/references/type-wardley.md +52 -0
  438. package/skills/lit-diagram-drawer/references/type-waterfall.md +54 -0
  439. package/skills/lit-diagram-drawer/references/verifier-guide.md +59 -0
  440. package/skills/lit-diagram-drawer/scripts/block-registry.mjs +43 -0
  441. package/skills/lit-diagram-drawer/scripts/brief-contract.mjs +94 -0
  442. package/skills/lit-diagram-drawer/scripts/capability-probe.mjs +132 -0
  443. package/skills/lit-diagram-drawer/scripts/check-visible-text.mjs +15 -0
  444. package/skills/lit-diagram-drawer/scripts/craft-thresholds.json +15 -0
  445. package/skills/lit-diagram-drawer/scripts/diagram-metrics.mjs +216 -0
  446. package/skills/lit-diagram-drawer/scripts/doctor.mjs +8 -0
  447. package/skills/lit-diagram-drawer/scripts/drawio-extract.mjs +214 -0
  448. package/skills/lit-diagram-drawer/scripts/excalidraw-extract.mjs +151 -0
  449. package/skills/lit-diagram-drawer/scripts/export.mjs +133 -0
  450. package/skills/lit-diagram-drawer/scripts/import-shared.mjs +130 -0
  451. package/skills/lit-diagram-drawer/scripts/mermaid-extract.mjs +173 -0
  452. package/skills/lit-diagram-drawer/scripts/office-safety.mjs +120 -0
  453. package/skills/lit-diagram-drawer/scripts/renderer-safety.mjs +46 -0
  454. package/skills/lit-diagram-drawer/scripts/test-block-registry.mjs +20 -0
  455. package/skills/lit-diagram-drawer/scripts/test-brief-contract.mjs +27 -0
  456. package/skills/lit-diagram-drawer/scripts/test-importers.mjs +119 -0
  457. package/skills/lit-diagram-drawer/scripts/test-office-safety.mjs +67 -0
  458. package/skills/lit-diagram-drawer/scripts/test-sequence-verifier.mjs +28 -0
  459. package/skills/lit-diagram-drawer/scripts/test-visual-quality.mjs +68 -0
  460. package/skills/lit-diagram-drawer/scripts/verify-all.mjs +74 -0
  461. package/skills/lit-diagram-drawer/scripts/verify-brief.mjs +47 -0
  462. package/skills/lit-diagram-drawer/scripts/verify-coverage.mjs +56 -0
  463. package/skills/lit-diagram-drawer/scripts/verify-diagram.mjs +26 -0
  464. package/skills/lit-diagram-drawer/scripts/verify-motion.mjs +12 -0
  465. package/skills/lit-diagram-drawer/scripts/verify-type.mjs +48 -0
  466. package/skills/lit-diagram-drawer/scripts/visual-quality.mjs +363 -0
  467. package/skills/lit-docx/LICENSE-MIT.txt +21 -0
  468. package/skills/lit-docx/SKILL.md +78 -0
  469. package/skills/lit-docx/references/frontmatter_schema.md +42 -0
  470. package/skills/lit-docx/references/journal_style_spec.md +17 -0
  471. package/skills/lit-docx/references/markdown_quality_checklist.md +37 -0
  472. package/skills/lit-docx/references/slop_phrase_list.yaml +58 -0
  473. package/skills/lit-docx/references/slop_rules.md +35 -0
  474. package/skills/lit-docx/requirements.in +5 -0
  475. package/skills/lit-docx/requirements.lock +289 -0
  476. package/skills/lit-docx/run.py +64 -0
  477. package/skills/lit-docx/scripts/clean_markdown.py +95 -0
  478. package/skills/lit-docx/scripts/convert_md_to_docx.py +1047 -0
  479. package/skills/lit-docx/scripts/convert_md_to_pdf.py +281 -0
  480. package/skills/lit-docx/scripts/convert_pdf.py +130 -0
  481. package/skills/lit-docx/scripts/craft-thresholds.json +11 -0
  482. package/skills/lit-docx/scripts/craft_docx.py +83 -0
  483. package/skills/lit-docx/scripts/edit_docx.py +297 -0
  484. package/skills/lit-docx/scripts/embed_images.py +78 -0
  485. package/skills/lit-docx/scripts/generate_docx_templates.py +491 -0
  486. package/skills/lit-docx/scripts/slop_lint.py +485 -0
  487. package/skills/lit-docx/scripts/visual_audit.py +41 -0
  488. package/skills/lit-docx/templates/docx/acs.docx +0 -0
  489. package/skills/lit-docx/templates/docx/elsevier.docx +0 -0
  490. package/skills/lit-docx/templates/docx/ieee.docx +0 -0
  491. package/skills/lit-docx/templates/docx/korean-generic.docx +0 -0
  492. package/skills/lit-docx/templates/docx/nature.docx +0 -0
  493. package/skills/lit-docx/templates/latex/acs/README.md +5 -0
  494. package/skills/lit-docx/templates/latex/acs/template.tex +37 -0
  495. package/skills/lit-docx/templates/latex/elsevier/README.md +5 -0
  496. package/skills/lit-docx/templates/latex/elsevier/template.tex +38 -0
  497. package/skills/lit-docx/templates/latex/ieee/README.md +5 -0
  498. package/skills/lit-docx/templates/latex/ieee/template.tex +37 -0
  499. package/skills/lit-docx/templates/latex/korean-generic/README.md +5 -0
  500. package/skills/lit-docx/templates/latex/korean-generic/template.tex +37 -0
  501. package/skills/lit-docx/templates/latex/nature/README.md +5 -0
  502. package/skills/lit-docx/templates/latex/nature/template.tex +37 -0
  503. package/skills/lit-docx/templates/registry.yaml +1366 -0
  504. package/skills/lit-humanizer/NOTICE +160 -0
  505. package/skills/lit-humanizer/SKILL.md +122 -0
  506. package/skills/lit-humanizer/assets/always-on-rule.md +9 -0
  507. package/skills/lit-humanizer/assets/report-skeleton.md +25 -0
  508. package/skills/lit-humanizer/assets/slide-text-skeleton.md +28 -0
  509. package/skills/lit-humanizer/examples/accessibility-note/after.md +7 -0
  510. package/skills/lit-humanizer/examples/accessibility-note/before.md +7 -0
  511. package/skills/lit-humanizer/examples/api-reference/after.md +9 -0
  512. package/skills/lit-humanizer/examples/api-reference/before.md +15 -0
  513. package/skills/lit-humanizer/examples/changelog/after.md +5 -0
  514. package/skills/lit-humanizer/examples/changelog/before.md +12 -0
  515. package/skills/lit-humanizer/examples/code-comments/after.md +10 -0
  516. package/skills/lit-humanizer/examples/code-comments/before.md +19 -0
  517. package/skills/lit-humanizer/examples/commit/after.md +5 -0
  518. package/skills/lit-humanizer/examples/commit/before.md +7 -0
  519. package/skills/lit-humanizer/examples/data-release/after.md +7 -0
  520. package/skills/lit-humanizer/examples/data-release/before.md +9 -0
  521. package/skills/lit-humanizer/examples/english-essay/after.md +5 -0
  522. package/skills/lit-humanizer/examples/english-essay/before.md +5 -0
  523. package/skills/lit-humanizer/examples/incident-update/after.md +7 -0
  524. package/skills/lit-humanizer/examples/incident-update/before.md +7 -0
  525. package/skills/lit-humanizer/examples/ko-essay/after.md +7 -0
  526. package/skills/lit-humanizer/examples/ko-essay/before.md +9 -0
  527. package/skills/lit-humanizer/examples/ko-report/after.md +9 -0
  528. package/skills/lit-humanizer/examples/ko-report/before.md +13 -0
  529. package/skills/lit-humanizer/examples/ko-slide/after.md +19 -0
  530. package/skills/lit-humanizer/examples/ko-slide/before.md +21 -0
  531. package/skills/lit-humanizer/examples/meeting-brief/after.md +9 -0
  532. package/skills/lit-humanizer/examples/meeting-brief/before.md +11 -0
  533. package/skills/lit-humanizer/examples/policy-faq/after.md +9 -0
  534. package/skills/lit-humanizer/examples/policy-faq/before.md +9 -0
  535. package/skills/lit-humanizer/examples/pr/after.md +15 -0
  536. package/skills/lit-humanizer/examples/pr/before.md +17 -0
  537. package/skills/lit-humanizer/examples/project-update/after.md +7 -0
  538. package/skills/lit-humanizer/examples/project-update/before.md +9 -0
  539. package/skills/lit-humanizer/examples/readme/after.md +12 -0
  540. package/skills/lit-humanizer/examples/readme/before.md +14 -0
  541. package/skills/lit-humanizer/examples/report/after.md +13 -0
  542. package/skills/lit-humanizer/examples/report/before.md +11 -0
  543. package/skills/lit-humanizer/examples/research-abstract/after.md +5 -0
  544. package/skills/lit-humanizer/examples/research-abstract/before.md +5 -0
  545. package/skills/lit-humanizer/examples/slides/after.md +19 -0
  546. package/skills/lit-humanizer/examples/slides/before.md +19 -0
  547. package/skills/lit-humanizer/examples/troubleshooting/after.md +11 -0
  548. package/skills/lit-humanizer/examples/troubleshooting/before.md +11 -0
  549. package/skills/lit-humanizer/fixtures/ko-metrics-golden.json +49 -0
  550. package/skills/lit-humanizer/fixtures/office/minimal.docx +0 -0
  551. package/skills/lit-humanizer/fixtures/office/minimal.pptx +0 -0
  552. package/skills/lit-humanizer/fixtures/pos-real.txt +26 -0
  553. package/skills/lit-humanizer/fixtures/rule-cases.json +306 -0
  554. package/skills/lit-humanizer/references/code-patterns.md +468 -0
  555. package/skills/lit-humanizer/references/deliverable-channels.md +111 -0
  556. package/skills/lit-humanizer/references/en-patterns-checklist.md +43 -0
  557. package/skills/lit-humanizer/references/en-patterns-content.md +243 -0
  558. package/skills/lit-humanizer/references/en-patterns-structure.md +375 -0
  559. package/skills/lit-humanizer/references/en-patterns.md +57 -0
  560. package/skills/lit-humanizer/references/ko-metrics.md +33 -0
  561. package/skills/lit-humanizer/references/ko-patterns-a-d.md +659 -0
  562. package/skills/lit-humanizer/references/ko-patterns-e-j.md +387 -0
  563. package/skills/lit-humanizer/references/ko-patterns.md +31 -0
  564. package/skills/lit-humanizer/references/rewrite-playbook.md +54 -0
  565. package/skills/lit-humanizer/references/taxonomy.md +153 -0
  566. package/skills/lit-humanizer/rules.json +884 -0
  567. package/skills/lit-humanizer/scripts/core.mjs +208 -0
  568. package/skills/lit-humanizer/scripts/detect.mjs +91 -0
  569. package/skills/lit-humanizer/scripts/extract_office_text.py +89 -0
  570. package/skills/lit-humanizer/scripts/guard-scan.mjs +36 -0
  571. package/skills/lit-humanizer/scripts/ko-metrics.mjs +124 -0
  572. package/skills/lit-humanizer/scripts/test-fixtures.mjs +54 -0
  573. package/skills/lit-humanizer/scripts/test-ko-metrics.mjs +27 -0
  574. package/skills/lit-pptx/FORBIDDEN_TERMS.json +55 -0
  575. package/skills/lit-pptx/NOTICE.md +3 -0
  576. package/skills/lit-pptx/SKILL.md +76 -0
  577. package/skills/lit-pptx/agents/analyst.md +49 -0
  578. package/skills/lit-pptx/agents/antithesis.md +59 -0
  579. package/skills/lit-pptx/agents/architect.md +44 -0
  580. package/skills/lit-pptx/agents/critic.md +42 -0
  581. package/skills/lit-pptx/agents/synthesizer.md +47 -0
  582. package/skills/lit-pptx/agents/thesis.md +33 -0
  583. package/skills/lit-pptx/assets/azure/circle-lg.png +0 -0
  584. package/skills/lit-pptx/assets/azure/circle-md.png +0 -0
  585. package/skills/lit-pptx/assets/azure/circle-sm.png +0 -0
  586. package/skills/lit-pptx/fonts/a2z-font/A2Z-Black.otf +0 -0
  587. package/skills/lit-pptx/fonts/a2z-font/A2Z-Bold.otf +0 -0
  588. package/skills/lit-pptx/fonts/a2z-font/A2Z-Light.otf +0 -0
  589. package/skills/lit-pptx/fonts/a2z-font/A2Z-Medium.otf +0 -0
  590. package/skills/lit-pptx/fonts/a2z-font/A2Z-Regular.otf +0 -0
  591. package/skills/lit-pptx/fonts/a2z-font/OFL.txt +94 -0
  592. package/skills/lit-pptx/fonts/a2z-font/SOURCE.md +29 -0
  593. package/skills/lit-pptx/package-lock.json +747 -0
  594. package/skills/lit-pptx/package.json +13 -0
  595. package/skills/lit-pptx/pretendard-font/LICENSE.txt +94 -0
  596. package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Bold.otf +0 -0
  597. package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Regular.otf +0 -0
  598. package/skills/lit-pptx/requirements.in +2 -0
  599. package/skills/lit-pptx/requirements.lock +285 -0
  600. package/skills/lit-pptx/run.mjs +71 -0
  601. package/skills/lit-pptx/scripts/check_ooxml.py +47 -0
  602. package/skills/lit-pptx/scripts/compile-deck.js +447 -0
  603. package/skills/lit-pptx/scripts/craft-thresholds.json +26 -0
  604. package/skills/lit-pptx/scripts/craft_extras.py +224 -0
  605. package/skills/lit-pptx/scripts/embed_fonts.py +204 -0
  606. package/skills/lit-pptx/scripts/layout_inventory.py +70 -0
  607. package/skills/lit-pptx/scripts/learn_template.py +433 -0
  608. package/skills/lit-pptx/scripts/lib/derive-palette.js +176 -0
  609. package/skills/lit-pptx/scripts/lib/directive-parser.js +244 -0
  610. package/skills/lit-pptx/scripts/lib/font-map.js +79 -0
  611. package/skills/lit-pptx/scripts/lib/gen-bg.js +85 -0
  612. package/skills/lit-pptx/scripts/lib/gen-gradient-assets.js +36 -0
  613. package/skills/lit-pptx/scripts/lib/layout-resolver.js +737 -0
  614. package/skills/lit-pptx/scripts/lib/markdown-loader.js +136 -0
  615. package/skills/lit-pptx/scripts/lib/render-adapter-html.js +364 -0
  616. package/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +1848 -0
  617. package/skills/lit-pptx/scripts/lib/slide-ast.js +534 -0
  618. package/skills/lit-pptx/scripts/lib/spec-validator.js +94 -0
  619. package/skills/lit-pptx/scripts/lib/template-registry.js +355 -0
  620. package/skills/lit-pptx/scripts/qa_deck.py +773 -0
  621. package/skills/lit-pptx/scripts/validate_pptx.py +206 -0
  622. package/skills/lit-pptx/specs/markdown-slide-spec-v1.md +251 -0
  623. package/skills/lit-pptx/specs/markdown-slide-spec-v2.md +223 -0
  624. package/skills/lit-pptx/specs/slide-ast-v1.schema.json +229 -0
  625. package/skills/lit-pptx/specs/slide-ast-v2.schema.json +144 -0
  626. package/skills/lit-pptx/specs/template-enrollment-contract.md +379 -0
  627. package/skills/lit-pptx/templates/bauhaus_light.css +4 -0
  628. package/skills/lit-pptx/templates/boilerplate_professional.css +508 -0
  629. package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/capabilities.yaml +146 -0
  630. package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +454 -0
  631. package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +37 -0
  632. package/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +154 -0
  633. package/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +483 -0
  634. package/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +37 -0
  635. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/capabilities.yaml +179 -0
  636. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/layout-mapping.yaml +299 -0
  637. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/template.yaml +45 -0
  638. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +181 -0
  639. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml +299 -0
  640. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +44 -0
  641. package/skills/lit-scientific-visualization/SKILL.md +2 -0
  642. package/skills/lit-typographic-motion/NOTICE +23 -0
  643. package/skills/lit-typographic-motion/SKILL.md +77 -0
  644. package/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +25 -0
  645. package/skills/lit-typographic-motion/audio-analysis.py +52 -0
  646. package/skills/lit-typographic-motion/engine/browser.mjs +83 -0
  647. package/skills/lit-typographic-motion/engine/constants.mjs +177 -0
  648. package/skills/lit-typographic-motion/engine/contrast.mjs +101 -0
  649. package/skills/lit-typographic-motion/engine/encode.mjs +46 -0
  650. package/skills/lit-typographic-motion/engine/flash.mjs +216 -0
  651. package/skills/lit-typographic-motion/engine/look.mjs +166 -0
  652. package/skills/lit-typographic-motion/engine/page/common.js +105 -0
  653. package/skills/lit-typographic-motion/engine/page/engine.js +451 -0
  654. package/skills/lit-typographic-motion/engine/page/gl.js +213 -0
  655. package/skills/lit-typographic-motion/engine/page/lines.js +88 -0
  656. package/skills/lit-typographic-motion/engine/page/passes.js +144 -0
  657. package/skills/lit-typographic-motion/engine/page/post.js +119 -0
  658. package/skills/lit-typographic-motion/engine/page/scenes.js +187 -0
  659. package/skills/lit-typographic-motion/engine/page/type.js +321 -0
  660. package/skills/lit-typographic-motion/engine/png.mjs +139 -0
  661. package/skills/lit-typographic-motion/engine/sound.mjs +291 -0
  662. package/skills/lit-typographic-motion/engine/stage/capture.mjs +133 -0
  663. package/skills/lit-typographic-motion/engine/stage/clock.js +171 -0
  664. package/skills/lit-typographic-motion/engine/stage/frame-worker.mjs +47 -0
  665. package/skills/lit-typographic-motion/engine/stage/gate.mjs +119 -0
  666. package/skills/lit-typographic-motion/engine/stage/qa-page.js +158 -0
  667. package/skills/lit-typographic-motion/engine/stage/qa.mjs +208 -0
  668. package/skills/lit-typographic-motion/engine/stage/render.mjs +418 -0
  669. package/skills/lit-typographic-motion/engine/stage/scan.mjs +162 -0
  670. package/skills/lit-typographic-motion/engine/stage/stage-kit.js +310 -0
  671. package/skills/lit-typographic-motion/engine/stills.mjs +60 -0
  672. package/skills/lit-typographic-motion/engine/text.mjs +126 -0
  673. package/skills/lit-typographic-motion/engine/timing.mjs +289 -0
  674. package/skills/lit-typographic-motion/engine/treatment.mjs +254 -0
  675. package/skills/lit-typographic-motion/fonts/Archivo-100-400.ttf +0 -0
  676. package/skills/lit-typographic-motion/fonts/Archivo-100-700.ttf +0 -0
  677. package/skills/lit-typographic-motion/fonts/Archivo-100-900.ttf +0 -0
  678. package/skills/lit-typographic-motion/fonts/Archivo-125-400.ttf +0 -0
  679. package/skills/lit-typographic-motion/fonts/Archivo-125-700.ttf +0 -0
  680. package/skills/lit-typographic-motion/fonts/Archivo-125-900.ttf +0 -0
  681. package/skills/lit-typographic-motion/fonts/Archivo-75-400.ttf +0 -0
  682. package/skills/lit-typographic-motion/fonts/Archivo-75-700.ttf +0 -0
  683. package/skills/lit-typographic-motion/fonts/Archivo-75-900.ttf +0 -0
  684. package/skills/lit-typographic-motion/fonts/Archivo-OFL.txt +93 -0
  685. package/skills/lit-typographic-motion/fonts/Silkscreen-Bold.ttf +0 -0
  686. package/skills/lit-typographic-motion/fonts/Silkscreen-OFL.txt +93 -0
  687. package/skills/lit-typographic-motion/fonts/Silkscreen-Regular.ttf +0 -0
  688. package/skills/lit-typographic-motion/fonts/VT323-OFL.txt +93 -0
  689. package/skills/lit-typographic-motion/fonts/VT323-Regular.ttf +0 -0
  690. package/skills/lit-typographic-motion/fonts/pins.json +44 -0
  691. package/skills/lit-typographic-motion/fonts/stroke/CREDITS +52 -0
  692. package/skills/lit-typographic-motion/fonts/stroke/EMSAllure.svg +216 -0
  693. package/skills/lit-typographic-motion/fonts/stroke/EMSFelix.svg +216 -0
  694. package/skills/lit-typographic-motion/fonts/stroke/EMSOsmotron.svg +216 -0
  695. package/skills/lit-typographic-motion/fonts/stroke/EMSReadability.svg +216 -0
  696. package/skills/lit-typographic-motion/fonts/stroke/EMSTech.svg +217 -0
  697. package/skills/lit-typographic-motion/fonts/stroke/OFL.txt +85 -0
  698. package/skills/lit-typographic-motion/gate.mjs +593 -0
  699. package/skills/lit-typographic-motion/package-lock.json +78 -0
  700. package/skills/lit-typographic-motion/package.json +11 -0
  701. package/skills/lit-typographic-motion/probe.mjs +74 -0
  702. package/skills/lit-typographic-motion/references/authoring.md +110 -0
  703. package/skills/lit-typographic-motion/references/craft-loop.md +110 -0
  704. package/skills/lit-typographic-motion/references/runtime.md +88 -0
  705. package/skills/lit-typographic-motion/references/stage.md +164 -0
  706. package/skills/lit-typographic-motion/references/style-bibles.md +88 -0
  707. package/skills/lit-typographic-motion/references/treatment.md +143 -0
  708. package/skills/lit-typographic-motion/references/type-craft.md +55 -0
  709. package/skills/lit-typographic-motion/render.mjs +654 -0
  710. package/skills/lit-typographic-motion/requirements-audio.in +1 -0
  711. package/skills/lit-typographic-motion/requirements-audio.txt +790 -0
  712. package/skills/lit-typographic-motion/runtime.mjs +259 -0
  713. package/skills/lit-typographic-motion/word-timing-models.json +25 -0
  714. package/skills/litresearch/SKILL.md +41 -12
  715. package/skills/managed-skill-manifest.json +2367 -63
  716. package/skills/skill-rename-aliases.json +6 -1
  717. package/tools/check-pack-payload.mjs +22 -1
  718. package/tools/check-payload-substance.mjs +2 -2
  719. package/tools/payload-reference-exemptions.json +4 -0
  720. package/tools/payload-substance-allowlist.json +2 -3
  721. package/tools/payload-substance-parity.json +7 -7
  722. package/tools/version-manifests.json +4 -4
  723. package/skills/lit-korean/SKILL.md +0 -231
@@ -9,12 +9,13 @@ import { openCodeHostCapabilities } from "./host-capabilities.js";
9
9
  import { describeHostLimitMutation, ensureHostLimits } from "./host-limits.js";
10
10
  import { assertExistingModelRoutesSafe, describeInstallRoutes, describeLitConfigMutation, ensureLitConfig, readExistingOutputStyle, readInstallModelClassification, readInstallModelSelection, writeTextAtomically } from "./install-config.js";
11
11
  import { readJsonObjectIfPresent, readPackageMetadata } from "./json.js";
12
- import { renderInstallReport } from "./install-report.js";
12
+ import { renderInstallReport, wrapReceiptLine } from "./install-report.js";
13
13
  import { renderLitOpenCodeWordmark } from "./install-tui.js";
14
14
  import { promptModelSelection, promptOutputStyle, promptPermissionMode } from "./model-routing.js";
15
15
  import { litOpenCodeConfigFileForOpenCodeRoot } from "../state.js";
16
16
  import { describeNativeSkillMutation, ensureNativeSkills, inspectNativeSkills } from "./native-skills.js";
17
17
  import { applyPluginMutation, describePluginMutation, isLitOpenCodeEntry } from "./plugin-mutation.js";
18
+ import { prewarmMotionRuntime } from "./motion-runtime.js";
18
19
  const execFileAsync = promisify(execFile);
19
20
  function withProgress(progress, label, task) {
20
21
  return progress === undefined ? task() : progress.run(label, task);
@@ -230,8 +231,8 @@ export async function install(root, dryRun, modelSelection = undefined, modelPro
230
231
  }
231
232
  await withProgress(activeProgress, "Write litopencode.json", async () => {
232
233
  await ensureLitConfig(root, selectedModel, selectedPermissionMode, selectedPermissionExplicit, selectedOutputStyle);
233
- await ensureCommandAliases(root);
234
234
  await ensureNativeSkills(root, metadata);
235
+ await ensureCommandAliases(root);
235
236
  });
236
237
  await withProgress(activeProgress, "Register plugin", async () => {
237
238
  if (resolved.useOpenCodeInstaller) {
@@ -255,10 +256,12 @@ export async function install(root, dryRun, modelSelection = undefined, modelPro
255
256
  });
256
257
  await withProgress(activeProgress, "Verify install", async () => verifyInstalledSurfaces(root, configFile, resolved.target, metadata, selectedModel, selectedPermissionMode, selectedPermissionExplicit, selectedOutputStyle));
257
258
  await activeProgress?.complete();
259
+ // MO-A-42: the installer attempts the motion pre-warm; a failure never fails the install.
260
+ const motionReceipt = wrapReceiptLine(prewarmMotionRuntime(metadata.packageRoot));
258
261
  return {
259
262
  exitCode: 0,
260
263
  stdout: activeProgress === undefined
261
- ? renderLitOpenCodeWordmark(pluginSpec(metadata), false) + "\n" + renderInstallReport(report)
262
- : undefined
264
+ ? renderLitOpenCodeWordmark(pluginSpec(metadata), false) + "\n" + renderInstallReport(report) + "\n" + motionReceipt
265
+ : motionReceipt
263
266
  };
264
267
  }
@@ -1,5 +1,5 @@
1
1
  import type { LitOpenCodeRuntimeSkillId } from "../skills.ts";
2
- export type ManagedSkillId = "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "readme-studio" | "frontend-ui-ux" | "visual-qa" | "lit-plan" | "browser-drive" | "autoresearch" | "autoconference" | "wikify";
2
+ export type ManagedSkillId = "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "lit-diagram-drawer" | "lit-pptx" | "lit-typographic-motion" | "lit-docx" | "readme-studio" | "frontend-ui-ux" | "visual-qa" | "lit-plan" | "browser-drive" | "lit-humanizer" | "autoresearch" | "autoconference" | "wikify";
3
3
  export type CanonicalManagedAsset = {
4
4
  readonly path: string;
5
5
  readonly sha256: string;
@@ -9,7 +9,12 @@ export function managedSkillDefinition(id) {
9
9
  if (id !== "lit-comprehend" &&
10
10
  id !== "lit-handoff" &&
11
11
  id !== "lit-scientific-visualization" &&
12
+ id !== "lit-diagram-drawer" &&
13
+ id !== "lit-pptx" &&
14
+ id !== "lit-typographic-motion" &&
15
+ id !== "lit-docx" &&
12
16
  id !== "browser-drive" &&
17
+ id !== "lit-humanizer" &&
13
18
  id !== "readme-studio" &&
14
19
  id !== "frontend-ui-ux" &&
15
20
  id !== "visual-qa" &&
@@ -27,9 +32,10 @@ export function managedVendorAssets() {
27
32
  export function previousManagedSkillId(id) {
28
33
  const previous = managedSkillManifest.renamedSkills?.[id];
29
34
  const expected = Object.entries(renamedSkillIds).find(([canonical]) => canonical === id)?.[1];
30
- if (previous !== expected)
35
+ const first = Array.isArray(previous) ? previous[0] : previous;
36
+ if (first !== expected)
31
37
  throw new Error(`Managed skill rename manifest drift: ${id}`);
32
- return previous;
38
+ return first;
33
39
  }
34
40
  export function assetPathsForManagedSkill(id) {
35
41
  const definition = managedSkillDefinition(id);
@@ -100,13 +106,17 @@ const skillDiscoveryDescriptions = Object.freeze({
100
106
  "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
107
  "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
108
  "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.",
103
- "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.",
104
- "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.",
109
+ "lit-humanizer": "Trigger when a reader-facing draft needs a focused prose revision — translated-sounding or templated wording, a request to 자연스럽게 / 다듬기 / revise for the reader, or review of documentation, reports, slides, comments, or README text — while preserving meaning, facts, citations, useful qualifiers, and the author's voice.",
110
+ "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 with delta-anchored themes, intuition-first diagrams, and a micro-world, not a chronological recap.",
105
111
  "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.",
106
112
  "lit-handoff": "Trigger only for explicit `/lit-handoff`, an exact bare `handoff` message, or native selection by the exact `lit-handoff` id.",
107
113
  "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.",
114
+ "lit-diagram-drawer": "Select this skill from OpenCode's native skill picker when the user needs an architecture map, workflow, schema, decision path, schedule, or conceptual chart. Route product pages and interface layouts to frontend-ui-ux; route measured scientific data and statistical figures to lit-scientific-visualization. Do not claim a slash command or bare-chat route.",
115
+ "lit-pptx": "Select for a PowerPoint deck or presentation, including a bounded lit request for slides. Keep editable Markdown and PPTX together, run the QA gate, and inspect the render.",
116
+ "lit-typographic-motion": "Select for a new film or video. Write the treatment first, then render on the stage path (a captured page) or the type path (words alone), gate it and look at the frames; editing existing footage or embedding a video in a page is outside this route.",
117
+ "lit-docx": "Select for a Word report, proposal, or document, including a bounded lit report request. Keep editable Markdown and DOCX together; select publisher profiles when specified and inspect rendered pages.",
108
118
  "readme-studio": "Select by native skill name for factual README writing and local cover composition. Inspect actual session image capability; never infer generation support or authorize publication from selection.",
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 compact direction and existing tokens shape the authorized build. Evolve the contract with implementation and inspect renders; review and plan intent remains read-only. Also on the exact `frontend-ui-ux` id. The SKILL.md reference router names which of the fifteen shipped reference documents answers which question.",
119
+ "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 compact direction and existing tokens shape the authorized build. Evolve the contract with implementation and inspect renders; review and plan intent remains read-only. Also on the exact `frontend-ui-ux` id. The SKILL.md reference router names which of the sixteen shipped reference documents answers which question.",
110
120
  "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
121
  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
122
  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.",
@@ -0,0 +1,6 @@
1
+ import type { CliResult } from "./types.ts";
2
+ export declare const motionInstallCommand = "litopencode motion-runtime install";
3
+ export declare function runMotionRuntime(packageRoot: string, args: readonly string[]): CliResult;
4
+ export declare function motionPrewarmSkipped(env?: NodeJS.ProcessEnv): string | undefined;
5
+ export declare function prewarmMotionRuntime(packageRoot: string, env?: NodeJS.ProcessEnv): string;
6
+ export declare function probeMotionRuntime(packageRoot: string): unknown;
@@ -0,0 +1,46 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import path from "node:path";
3
+ // lit-typographic-motion's runtime lives in the managed skill (runtime.mjs, probe.mjs). The CLI verb
4
+ // `litopencode motion-runtime install|status` runs it under this same Node binary; the installer
5
+ // attempts the same pre-warm and reduces the outcome to one receipt line.
6
+ function motionScript(packageRoot, file) {
7
+ return path.join(packageRoot, "skills", "lit-typographic-motion", file);
8
+ }
9
+ export const motionInstallCommand = "litopencode motion-runtime install";
10
+ export function runMotionRuntime(packageRoot, args) {
11
+ const result = spawnSync(process.execPath, [motionScript(packageRoot, "runtime.mjs"), ...args], { stdio: "inherit" });
12
+ return { exitCode: typeof result.status === "number" ? result.status : 1 };
13
+ }
14
+ // A test run never reaches the network or the real cache from the installer: node --test marks its
15
+ // child processes with NODE_TEST_CONTEXT. LITOPENCODE_MOTION_PREWARM=force (a test proving this path
16
+ // against a fixture mirror) or =off overrides that.
17
+ export function motionPrewarmSkipped(env = process.env) {
18
+ if (env.LITOPENCODE_MOTION_PREWARM === "force")
19
+ return undefined;
20
+ if (env.LITOPENCODE_MOTION_PREWARM === "off")
21
+ return "LITOPENCODE_MOTION_PREWARM=off";
22
+ if (env.NODE_TEST_CONTEXT !== undefined)
23
+ return "test run";
24
+ return undefined;
25
+ }
26
+ export function prewarmMotionRuntime(packageRoot, env = process.env) {
27
+ const skipped = motionPrewarmSkipped(env);
28
+ if (skipped !== undefined)
29
+ return `Motion runtime: pre-warm skipped (${skipped}); run ${motionInstallCommand} before rendering.`;
30
+ const result = spawnSync(process.execPath, [motionScript(packageRoot, "runtime.mjs"), "install"], { encoding: "utf8", env, timeout: 600_000, maxBuffer: 8_000_000 });
31
+ if (result.status === 0)
32
+ return "Motion runtime: pre-warmed; litopencode motion-runtime status shows the five probes.";
33
+ const reason = `${result.stderr ?? ""}\n${result.stdout ?? ""}`.split("\n").map((line) => line.trim()).filter(Boolean)[0] ?? result.error?.message ?? `exit ${String(result.status)}`;
34
+ return `Motion runtime: pre-warm not completed (${reason}); run ${motionInstallCommand} outside any sandboxed session before rendering.`;
35
+ }
36
+ export function probeMotionRuntime(packageRoot) {
37
+ const result = spawnSync(process.execPath, [motionScript(packageRoot, "probe.mjs"), "--json"], { encoding: "utf8", timeout: 90_000, maxBuffer: 4_000_000 });
38
+ if (result.status !== 0 || !result.stdout)
39
+ return { error: (result.stderr || result.error?.message || "motion probe unavailable").trim() };
40
+ try {
41
+ return JSON.parse(result.stdout);
42
+ }
43
+ catch {
44
+ return { error: "motion probe returned invalid JSON" };
45
+ }
46
+ }
@@ -1,9 +1,10 @@
1
- import { randomUUID } from "node:crypto";
1
+ import { createHash, randomUUID } from "node:crypto";
2
2
  import { prepareCanonicalBackup } from "./native-canonical-backup.js";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import { litOpenCodeRuntimeSkills } from "../skills.js";
6
6
  import { assetPathsForManagedSkill, installedCanonicalDirectory, managedSkillDefinition, previousManagedSkillId } from "./managed-skill-assets.js";
7
+ import { retiredManagedSkillEntrypointHashes } from "../skill-renames.js";
7
8
  import { destinationState, assertInstalledCanonicalOwnership, invalidInstalledAssets, nativeSkillContent, nativeSkillsRoot, sourceSkillDir, validateSkillSource } from "./native-skill-integrity.js";
8
9
  import { assertContained, lstatIfPresent } from "./native-skill-tree.js";
9
10
  async function createStagedSkill(skillsRoot, metadata, skill) {
@@ -87,12 +88,40 @@ async function stagedCleanup(stage) {
87
88
  await fs.rm(stage, { recursive: true, force: true });
88
89
  };
89
90
  }
91
+ async function retirePreviousSkill(root, skillsRoot, skill) {
92
+ const previousId = previousManagedSkillId(skill.id);
93
+ if (previousId === undefined)
94
+ return;
95
+ const previousRoot = path.join(skillsRoot, previousId);
96
+ assertContained(skillsRoot, previousRoot, `Previous native skill ${skill.id}`);
97
+ const previous = await destinationState(root, { id: previousId });
98
+ if (previous.kind === "absent")
99
+ return;
100
+ const expectedHash = retiredManagedSkillEntrypointHashes[previousId];
101
+ if (previous.kind === "managed" && expectedHash === undefined) {
102
+ await fs.rm(previousRoot, { recursive: true });
103
+ return;
104
+ }
105
+ if (previous.kind === "managed" && expectedHash !== undefined) {
106
+ const entries = await fs.readdir(previousRoot);
107
+ const content = entries.length === 1 && entries[0] === "SKILL.md"
108
+ ? await fs.readFile(previous.entrypoint, "utf8")
109
+ : undefined;
110
+ const actualHash = content === undefined ? undefined : createHash("sha256").update(content).digest("hex");
111
+ if (actualHash === expectedHash) {
112
+ await fs.rm(previousRoot, { recursive: true });
113
+ return;
114
+ }
115
+ }
116
+ if (expectedHash !== undefined) {
117
+ process.stderr.write(`LitOpenCode: kept previous skill ${previousId}; it is modified or user-owned. Review ${previousRoot} before removal.\n`);
118
+ }
119
+ }
90
120
  export async function ensureNativeSkills(root, metadata) {
91
121
  const skillsRoot = await nativeSkillsRoot(root);
92
122
  await fs.mkdir(skillsRoot, { recursive: true });
93
123
  for (const skill of litOpenCodeRuntimeSkills) {
94
124
  await validateSkillSource(metadata, skill);
95
- const previousId = previousManagedSkillId(skill.id);
96
125
  const destination = await destinationState(root, skill);
97
126
  if (destination.kind === "preserved")
98
127
  continue;
@@ -107,13 +136,7 @@ export async function ensureNativeSkills(root, metadata) {
107
136
  }
108
137
  const caches = await assertInstalledCanonicalOwnership(root, skill);
109
138
  await swapStagedSkill(root, skillsRoot, path.join(skillsRoot, skill.id), stage, skill, caches);
110
- if (previousId !== undefined) {
111
- const previousRoot = path.join(skillsRoot, previousId);
112
- assertContained(skillsRoot, previousRoot, `Previous native skill ${skill.id}`);
113
- const previous = await destinationState(root, { id: previousId });
114
- if (previous.kind === "managed")
115
- await fs.rm(previousRoot, { recursive: true });
116
- }
139
+ await retirePreviousSkill(root, skillsRoot, skill);
117
140
  }
118
141
  catch (error) {
119
142
  try {
@@ -112,6 +112,7 @@ export async function nativeSkillContent(metadata, skill) {
112
112
  ...description.split("\n").map((line) => " " + line),
113
113
  "metadata:",
114
114
  ` ${litOpenCodeGeneratedFrontmatterMarker.replace(": true", ': "true"')}`,
115
+ ...(skill.id === "lit-diagram-drawer" ? [" reader_projection: shared_rule"] : []),
115
116
  "---",
116
117
  "",
117
118
  body.trimEnd(),
@@ -1,5 +1,6 @@
1
1
  import { type NativeSkillsRootLink, type ShadowedSkill } from "./native-skill-integrity.ts";
2
2
  import { inspectScientificVisualizationDependencies } from "./scientific-visualization-dependencies.ts";
3
+ import { inspectOfficeDependencies } from "./office-dependencies.ts";
3
4
  import type { InstallReport, PackageMetadata } from "./types.ts";
4
5
  export { validateManagedSkillSource } from "./native-skill-integrity.ts";
5
6
  export { ensureNativeSkills } from "./native-skill-install.ts";
@@ -18,6 +19,7 @@ export type NativeSkillInspection = {
18
19
  readonly canonicalCacheFiles: readonly string[];
19
20
  readonly dependencies: {
20
21
  readonly "lit-scientific-visualization": ReturnType<typeof inspectScientificVisualizationDependencies>;
22
+ readonly office: ReturnType<typeof inspectOfficeDependencies>;
21
23
  };
22
24
  readonly link?: NativeSkillsRootLink;
23
25
  readonly shadowedSkills: readonly ShadowedSkill[];
@@ -2,6 +2,7 @@ import path from "node:path";
2
2
  import { litOpenCodeRuntimeSkills } from "../skills.js";
3
3
  import { destinationState, assertInstalledCanonicalOwnership, detectShadowedSkills, invalidInstalledAssets, nativeSkillsRoot, nativeSkillsRootLink, validateSkillSource } from "./native-skill-integrity.js";
4
4
  import { inspectScientificVisualizationDependencies } from "./scientific-visualization-dependencies.js";
5
+ import { inspectOfficeDependencies } from "./office-dependencies.js";
5
6
  export { validateManagedSkillSource } from "./native-skill-integrity.js";
6
7
  export { ensureNativeSkills } from "./native-skill-install.js";
7
8
  // nativeSkillsRoot() follows the same intentional-symlink resolution install uses; if it fails,
@@ -113,7 +114,7 @@ export async function inspectNativeSkills(root, metadata, options = {}) {
113
114
  invalidAssets: [...new Set(invalidAssets)],
114
115
  sourceInvalid,
115
116
  canonicalCacheFiles,
116
- dependencies: { "lit-scientific-visualization": inspectScientificVisualizationDependencies() },
117
+ dependencies: { "lit-scientific-visualization": inspectScientificVisualizationDependencies(), office: inspectOfficeDependencies() },
117
118
  ...(link === undefined ? {} : { link }),
118
119
  shadowedSkills,
119
120
  ok: missing.length === 0 && uniqueInvalid.length === 0
@@ -0,0 +1,14 @@
1
+ export declare function inspectOfficeDependencies(): {
2
+ pptx: {
3
+ nodeReady: boolean;
4
+ pythonReady: boolean;
5
+ };
6
+ docx: {
7
+ pythonReady: boolean;
8
+ };
9
+ optional: {
10
+ pandoc: boolean;
11
+ xelatex: boolean;
12
+ soffice: boolean;
13
+ };
14
+ };
@@ -0,0 +1,24 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
7
+ const cacheRoot = path.join(process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), ".cache"), "litopencode", "office");
8
+ function cached(label, lock, marker) {
9
+ const digest = createHash("sha256").update(readFileSync(path.join(packageRoot, lock))).digest("hex").slice(0, 16);
10
+ return existsSync(path.join(cacheRoot, `${label}-${digest}`, marker));
11
+ }
12
+ export function inspectOfficeDependencies() {
13
+ const onPath = (name) => (process.env.PATH ?? "").split(path.delimiter).some((dir) => existsSync(path.join(dir, name)));
14
+ return {
15
+ pptx: {
16
+ nodeReady: cached("node", "skills/lit-pptx/package-lock.json", "node_modules/pptxgenjs"),
17
+ pythonReady: cached("python-pptx", "skills/lit-pptx/requirements.lock", "bin/python")
18
+ },
19
+ docx: {
20
+ pythonReady: cached("python-docx", "skills/lit-docx/requirements.lock", "bin/python")
21
+ },
22
+ optional: { pandoc: onPath("pandoc"), xelatex: onPath("xelatex"), soffice: onPath("soffice") }
23
+ };
24
+ }
package/dist/cli.js CHANGED
@@ -9,6 +9,7 @@ import { LitOpenCodeConfigError } from "./config.js";
9
9
  import { defaultOpenAiRoutes, legacyFastAliasHelp, modelEffortHelp, openaiModelHelpLine, shippedDefaultsSummary } from "./cli/model-catalog.js";
10
10
  import { fetchPublicSource } from "./lit-fetch.js";
11
11
  import { readPackageMetadata } from "./cli/json.js";
12
+ import { runMotionRuntime } from "./cli/motion-runtime.js";
12
13
  import path from "node:path";
13
14
  import { pathToFileURL } from "node:url";
14
15
  function helpText() {
@@ -33,6 +34,7 @@ function helpText() {
33
34
  " litopencode install [--permission-prompt | --no-permission-prompt] [--permission-mode <safe|balanced|yolo>]",
34
35
  " litopencode install|doctor [--no-auto-update]",
35
36
  " litopencode doctor [--json] [--root <dir>]",
37
+ " litopencode motion-runtime install|status [--audio] [--word-timing]",
36
38
  " litopencode fetch-public <url> [--json] [--timeout <ms>] [--max-bytes <n>]",
37
39
  " litopencode fetch-public <local-url> --json --allow-private-network # trusted fixtures only",
38
40
  " OpenCode /start-work init|resume|cancel|complete|status <schema-3 JSON>",
@@ -76,11 +78,15 @@ function helpText() {
76
78
  "",
77
79
  "Native offline skills:",
78
80
  " frontend-ui-ux provides deterministic design-contract retrieval from a packaged MIT corpus,",
79
- " plus fifteen shipped reference documents routed from its SKILL.md.",
81
+ " plus sixteen shipped reference documents routed from its SKILL.md.",
80
82
  " visual-qa validates evidence, PNGs, terminal layouts, and independent review receipts,",
81
83
  " ships a per-channel capture playbook, and keeps blocked codes separate from fail codes.",
82
- " Each skill resolves its own helpers inside its own installed tree; neither adds command,",
83
- " browser, MCP, tool, agent, authentication, or write authority.",
84
+ " lit-diagram-drawer creates conceptual, editorial, and technical diagrams with packaged type guides,",
85
+ " local verifiers, bounded importers, and exports that never install tools.",
86
+ " lit-typographic-motion directs films from a treatment: a captured stage page or the type engine.",
87
+ " Typographic-motion engine adapted from mexicat/pdoom-video (MIT, Giacomo Magnanini), commit `ca251e3`.",
88
+ " Each skill resolves its own helpers inside its own installed tree; these skills add no command,",
89
+ " MCP, agent, authentication, or write authority.",
84
90
  "",
85
91
  "Model routing:",
86
92
  " Interactive terminal installs ask provider (openai | xai), LEAD model (planning/review) and HELPER model (execution/research),",
@@ -110,6 +116,10 @@ function helpText() {
110
116
  ].join("\n");
111
117
  }
112
118
  export async function runCli(argv = process.argv.slice(2), options = {}) {
119
+ if (argv[0] === "motion-runtime") {
120
+ const metadata = await readPackageMetadata();
121
+ return runMotionRuntime(metadata.packageRoot, argv.slice(1));
122
+ }
113
123
  let parsed;
114
124
  try {
115
125
  parsed = parseArgs(argv);
@@ -1,6 +1,6 @@
1
1
  import type { Hooks } from "@opencode-ai/plugin";
2
2
  import type { BoundedAuthorityOptions } from "./bounded-authority.ts";
3
- export type LitOpenCodeCommandId = "lit" | "lit-loop" | "litwork" | "lit-work" | "start-work" | "review-work" | "lit-plan" | "litgoal" | "lit-goal" | "litresearch" | "lit-research" | "lit-init" | "lit-crucible" | "lit-burnoff-file" | "lit-fetch" | "refactor" | "lit-burnoff" | "lit-code" | "debugging" | "lit-commit" | "lsp" | "lsp-setup" | "rules" | "deep-interview" | "structural-search" | "browser-drive" | "lit-recap" | "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "lit-korean" | "text-neutralization" | "autoresearch" | "autoresearch-debug" | "autoresearch-fix" | "autoresearch-learn" | "autoresearch-plan" | "autoresearch-predict" | "autoresearch-reason" | "autoresearch-scenario" | "autoresearch-security" | "autoresearch-ship" | "autoconference" | "autoconference-analyze" | "autoconference-debate" | "autoconference-plan" | "autoconference-resume" | "autoconference-ship" | "autoconference-survey" | "wikify-init" | "wikify-ingest" | "wikify-query" | "wikify-save" | "wikify-lint";
3
+ export type LitOpenCodeCommandId = "lit" | "lit-loop" | "litwork" | "lit-work" | "start-work" | "review-work" | "lit-plan" | "litgoal" | "lit-goal" | "litresearch" | "lit-research" | "lit-init" | "lit-crucible" | "lit-burnoff-file" | "lit-fetch" | "refactor" | "lit-burnoff" | "lit-code" | "debugging" | "lit-commit" | "lsp" | "lsp-setup" | "rules" | "deep-interview" | "structural-search" | "browser-drive" | "lit-recap" | "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization" | "lit-humanizer" | "autoresearch" | "autoresearch-debug" | "autoresearch-fix" | "autoresearch-learn" | "autoresearch-plan" | "autoresearch-predict" | "autoresearch-reason" | "autoresearch-scenario" | "autoresearch-security" | "autoresearch-ship" | "autoconference" | "autoconference-analyze" | "autoconference-debate" | "autoconference-plan" | "autoconference-resume" | "autoconference-ship" | "autoconference-survey" | "wikify-init" | "wikify-ingest" | "wikify-query" | "wikify-save" | "wikify-lint";
4
4
  export type LitOpenCodeCommand = {
5
5
  readonly id: LitOpenCodeCommandId;
6
6
  readonly slash: string;
@@ -300,16 +300,7 @@ export declare const litOpenCodeCommands: readonly ({
300
300
  agent?: undefined;
301
301
  readOnly?: undefined;
302
302
  } | {
303
- id: "lit-korean";
304
- slash: string;
305
- title: string;
306
- description: string;
307
- banner: string;
308
- activationText: string;
309
- agent?: undefined;
310
- readOnly?: undefined;
311
- } | {
312
- id: "text-neutralization";
303
+ id: "lit-humanizer";
313
304
  slash: string;
314
305
  title: string;
315
306
  description: string;
package/dist/commands.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { activationBanner } from "./activation-probe.js";
2
2
  import { renamedSkillId, skillRenameNote } from "./skill-renames.js";
3
- import { comprehendPromptInjection, debuggingPromptInjection, deepInterviewPromptInjection, gitMasterPromptInjection, lspPromptInjection, lspSetupPromptInjection, rulesPromptInjection, browserDrivePromptInjection, structuralSearchPromptInjection, litGoalPromptInjection, litCruciblePromptInjection, initDeepPromptInjection, litLoopPromptInjection, litPlanPromptInjection, litRecapPromptInjection, litHandoffPromptInjection, litResearchPromptInjection, litCodePromptInjection, refactorPromptInjection, removeAiSlopsPromptInjection, reviewWorkPromptInjection, scientificVisualizationPromptInjection, startWorkPromptInjection, litBurnoffFilePromptInjection, litFetchPromptInjection, textNaturalizationPromptInjection } from "./activation.js";
3
+ import { comprehendPromptInjection, debuggingPromptInjection, deepInterviewPromptInjection, gitMasterPromptInjection, lspPromptInjection, lspSetupPromptInjection, rulesPromptInjection, browserDrivePromptInjection, structuralSearchPromptInjection, litGoalPromptInjection, litCruciblePromptInjection, initDeepPromptInjection, litLoopPromptInjection, litPlanPromptInjection, litRecapPromptInjection, litHandoffPromptInjection, litResearchPromptInjection, litCodePromptInjection, refactorPromptInjection, removeAiSlopsPromptInjection, reviewWorkPromptInjection, scientificVisualizationPromptInjection, startWorkPromptInjection, litBurnoffFilePromptInjection, litFetchPromptInjection, litHumanizerPromptInjection } from "./activation.js";
4
4
  import { createLitGoalOperations } from "./ledger.js";
5
5
  import { commandAliasOwnership } from "./cli/command-alias-ownership.js";
6
6
  import { applyTrustedStartWorkDirective, parseStartWorkLifecycleDirective } from "./bounded-authority-hooks.js";
@@ -257,20 +257,12 @@ export const litOpenCodeCommands = Object.freeze([
257
257
  activationText: scientificVisualizationPromptInjection
258
258
  },
259
259
  {
260
- id: "lit-korean",
261
- slash: "/lit-korean",
262
- title: "LitOpenCode Lit Korean",
263
- description: "Review Korean prose for natural phrasing while reducing overwrought or AI-like phrasing and preserving meaning and author voice.",
264
- banner: activationBanner("lit-korean"),
265
- activationText: textNaturalizationPromptInjection
266
- },
267
- {
268
- id: "text-neutralization",
269
- slash: "/text-neutralization",
270
- title: "LitOpenCode Text Neutralization",
271
- description: "Review Korean prose to reduce overwrought or AI-like phrasing while preserving meaning and author voice.",
272
- banner: activationBanner("text-neutralization"),
273
- activationText: textNaturalizationPromptInjection
260
+ id: "lit-humanizer",
261
+ slash: "/lit-humanizer",
262
+ title: "LitOpenCode Lit Humanizer",
263
+ description: "Revise reader-facing prose across languages and formats while preserving meaning, evidence, citations, useful qualifiers, and author voice.",
264
+ banner: activationBanner("lit-humanizer"),
265
+ activationText: litHumanizerPromptInjection
274
266
  }
275
267
  ]);
276
268
  export function findLitOpenCodeCommand(input) {
@@ -279,7 +271,7 @@ export function findLitOpenCodeCommand(input) {
279
271
  const command = litOpenCodeCommands.find((candidate) => candidate.id === (renamed ?? normalized));
280
272
  return command === undefined || renamed === undefined
281
273
  ? command
282
- : { ...command, activationText: `${skillRenameNote(renamed)}\n${command.activationText}` };
274
+ : { ...command, activationText: `${skillRenameNote(renamed, normalized)}\n${command.activationText}` };
283
275
  }
284
276
  function summarizeCommandArguments(value) {
285
277
  if (typeof value !== "string" || value.length === 0) {
@@ -302,7 +294,7 @@ function commandMode(command) {
302
294
  return "lit-handoff";
303
295
  if (command.id === "lit-scientific-visualization")
304
296
  return "lit-scientific-visualization";
305
- if (command.id === "lit-burnoff-file" || command.id === "lit-fetch" || command.id === "lit-korean")
297
+ if (command.id === "lit-burnoff-file" || command.id === "lit-fetch" || command.id === "lit-humanizer")
306
298
  return command.id;
307
299
  if (command.id === "lit-init")
308
300
  return "lit-init";
@@ -1,26 +1,25 @@
1
1
  import { type ToolGuardAfterOutput, type ToolGuardRequest } from "./tool-guards.ts";
2
- export declare const artifactGenres: readonly ["client_deliverable", "internal_analysis", "audit_report", "working_note", "no_artifact"];
3
- export type ArtifactGenre = (typeof artifactGenres)[number];
4
- export type LimitationsChannel = "reply" | "designated_section" | "methodology_paragraph" | "inline";
5
- export type OutputChannelContract = {
6
- readonly artifactGenre: ArtifactGenre;
7
- readonly limitationsChannel: LimitationsChannel;
8
- };
9
- export type HedgeClass = "deferred" | "absent-evidence" | "scope-limit" | "negated-action" | "self-protection" | "process-meta";
10
- export type DeliverableHedgeFinding = {
11
- readonly className: HedgeClass;
2
+ export type HumanizerFinding = {
3
+ readonly file: string;
4
+ readonly rule: string;
5
+ readonly severity: "block" | "warn";
12
6
  readonly line: number;
7
+ readonly excerpt: string;
8
+ };
9
+ export type HumanizerScanRequest = {
10
+ readonly file: string;
11
+ readonly oldText: string;
12
+ readonly newText: string;
13
+ };
14
+ export type HumanizerScan = (request: HumanizerScanRequest) => Promise<readonly HumanizerFinding[]>;
15
+ export type DeliverableHedgeGuardOptions = {
16
+ readonly projectRoot: string;
17
+ readonly timeoutMs?: number;
18
+ readonly scan?: HumanizerScan;
13
19
  };
14
- export declare function readOutputChannelContract(skillId: string, root?: string): Promise<OutputChannelContract>;
15
- export type DeliverableHedgeSessionState = {
16
- readonly activate: (sessionID: string, routeId: string) => Promise<void>;
17
- readonly clear: (sessionID: string) => void;
20
+ export type DeliverableHedgeGuardState = {
21
+ readonly before: (input: ToolGuardRequest) => Promise<void>;
22
+ readonly after: (input: ToolGuardRequest, output: ToolGuardAfterOutput) => Promise<void>;
18
23
  readonly dispose: () => void;
19
- readonly contractFor: (sessionID: string) => {
20
- readonly skillId: string;
21
- readonly contract: OutputChannelContract;
22
- } | undefined;
23
24
  };
24
- export declare function createDeliverableHedgeSessionState(root?: string): DeliverableHedgeSessionState;
25
- export declare function inspectDeliverableHedges(text: string, genre: ArtifactGenre): readonly DeliverableHedgeFinding[];
26
- export declare function applyDeliverableHedgeAfterHook(state: DeliverableHedgeSessionState, input: ToolGuardRequest, output: ToolGuardAfterOutput): Promise<void>;
25
+ export declare function createDeliverableHedgeGuard(options: DeliverableHedgeGuardOptions): DeliverableHedgeGuardState;