@litfamily/lithermes 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 (652) hide show
  1. package/README.md +299 -13
  2. package/README_Ko-KR.md +300 -14
  3. package/assets/lithermes-plugin/README.md +17 -6
  4. package/assets/lithermes-plugin/__init__.py +96 -21
  5. package/assets/lithermes-plugin/core.py +15 -6
  6. package/assets/lithermes-plugin/core_commands.py +140 -28
  7. package/assets/lithermes-plugin/core_contexts.py +88 -15
  8. package/assets/lithermes-plugin/core_contract.py +118 -9
  9. package/assets/lithermes-plugin/core_routing.py +197 -8
  10. package/assets/lithermes-plugin/deliverable_hedge_guard.py +378 -357
  11. package/assets/lithermes-plugin/diagnostics.py +76 -8
  12. package/assets/lithermes-plugin/humanizer_detector.py +348 -0
  13. package/assets/lithermes-plugin/humanizer_ko_metrics.py +108 -0
  14. package/assets/lithermes-plugin/humanizer_office.py +18 -0
  15. package/assets/lithermes-plugin/lit_mark.py +1 -1
  16. package/assets/lithermes-plugin/motion_receipts.py +80 -0
  17. package/assets/lithermes-plugin/payload-version.json +2240 -64
  18. package/assets/lithermes-plugin/plugin.yaml +1 -1
  19. package/assets/lithermes-plugin/rules/bundled-rules/lit-humanizer.md +14 -0
  20. package/assets/lithermes-plugin/skills/autoconference/assets/report_template.md +2 -1
  21. package/assets/lithermes-plugin/skills/autoconference/modes/ship/SKILL.md +11 -8
  22. package/assets/lithermes-plugin/skills/autoresearch/modes/ship/type-checklists.md +2 -2
  23. package/assets/lithermes-plugin/skills/browser-drive/ORIGIN.json +17 -0
  24. package/assets/lithermes-plugin/skills/browser-drive/SKILL.md +41 -16
  25. package/assets/lithermes-plugin/skills/browser-drive/scripts/capability_probe.py +122 -10
  26. package/assets/lithermes-plugin/skills/frontend-ui-ux/SKILL.md +45 -13
  27. package/assets/lithermes-plugin/skills/frontend-ui-ux/examples/phase-3-readme-ab/README.md +51 -0
  28. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/README.md +44 -0
  29. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/adaptive-layout.md +34 -62
  30. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/brand-and-imagery.md +22 -70
  31. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/complete-contract.md +18 -4
  32. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/composition.md +27 -78
  33. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/craft-floor.md +74 -0
  34. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/creative-directions.md +25 -69
  35. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/evidence-review.md +18 -97
  36. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/implementation-platforms.md +23 -83
  37. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/inclusive-interface.md +22 -70
  38. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/interaction-motion.md +34 -68
  39. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/motion-guide.md +62 -0
  40. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/operating-lanes.md +14 -78
  41. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/performance-delivery.md +22 -71
  42. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/product-direction.md +17 -70
  43. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/production.md +19 -7
  44. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/redesign-playbook.md +23 -76
  45. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/slop-register.md +69 -0
  46. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/system-foundations.md +22 -67
  47. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/visual-language.md +16 -72
  48. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/visual-reconstruction.md +16 -81
  49. package/assets/lithermes-plugin/skills/frontend-ui-ux/resources/THIRD-PARTY-NOTICE.txt +15 -0
  50. package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe-page.js +311 -0
  51. package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe-rules.json +46 -0
  52. package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe.mjs +231 -0
  53. package/assets/lithermes-plugin/skills/lit-comprehend/SKILL.md +36 -25
  54. package/assets/lithermes-plugin/skills/lit-comprehend/references/artifact-template.md +45 -87
  55. package/assets/lithermes-plugin/skills/lit-comprehend/scripts/verify-explainer.py +3 -27
  56. package/assets/lithermes-plugin/skills/lit-diagram-drawer/NOTICE +33 -0
  57. package/assets/lithermes-plugin/skills/lit-diagram-drawer/SKILL.md +308 -0
  58. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-architecture-dark.html +1 -0
  59. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-architecture-full.html +1 -0
  60. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-architecture-light.html +1 -0
  61. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bar-dark.html +1 -0
  62. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bar-full.html +1 -0
  63. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bar-light.html +1 -0
  64. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-beeswarm-dark.html +1 -0
  65. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-beeswarm-full.html +1 -0
  66. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-beeswarm-light.html +1 -0
  67. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bubble-dark.html +1 -0
  68. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bubble-full.html +1 -0
  69. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bubble-light.html +1 -0
  70. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bump-dark.html +1 -0
  71. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bump-full.html +1 -0
  72. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bump-light.html +1 -0
  73. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-data-flow-dark.html +1 -0
  74. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-data-flow-full.html +1 -0
  75. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-data-flow-light.html +1 -0
  76. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-datalake-dark.html +1 -0
  77. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-datalake-full.html +1 -0
  78. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-datalake-light.html +1 -0
  79. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-db-schema-dark.html +1 -0
  80. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-db-schema-full.html +1 -0
  81. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-db-schema-light.html +1 -0
  82. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dependency-dark.html +1 -0
  83. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dependency-full.html +1 -0
  84. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dependency-light.html +1 -0
  85. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-deployment-dark.html +1 -0
  86. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-deployment-full.html +1 -0
  87. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-deployment-light.html +1 -0
  88. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-integration-dark.html +1 -0
  89. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-integration-full.html +1 -0
  90. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-integration-light.html +1 -0
  91. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-dark.html +1 -0
  92. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-full.html +1 -0
  93. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-light.html +1 -0
  94. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-er-dark.html +1 -0
  95. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-er-full.html +1 -0
  96. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-er-light.html +1 -0
  97. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-fishbone-dark.html +1 -0
  98. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-fishbone-full.html +1 -0
  99. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-fishbone-light.html +1 -0
  100. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-flowchart-dark.html +1 -0
  101. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-flowchart-full.html +1 -0
  102. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-flowchart-light.html +1 -0
  103. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-gantt-dark.html +1 -0
  104. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-gantt-full.html +1 -0
  105. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-gantt-light.html +1 -0
  106. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-heatmap-dark.html +1 -0
  107. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-heatmap-full.html +1 -0
  108. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-heatmap-light.html +1 -0
  109. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-dark.html +1 -0
  110. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-full.html +1 -0
  111. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-light.html +1 -0
  112. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-dark.html +1 -0
  113. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-full.html +1 -0
  114. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-light.html +1 -0
  115. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-drawio-dark.html +1 -0
  116. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-drawio-full.html +1 -0
  117. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-drawio-light.html +1 -0
  118. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-dark.html +1 -0
  119. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-full.html +1 -0
  120. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-light.html +1 -0
  121. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-dark.html +1 -0
  122. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-full.html +1 -0
  123. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-light.html +1 -0
  124. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-it-state-dark.html +1 -0
  125. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-it-state-full.html +1 -0
  126. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-it-state-light.html +1 -0
  127. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-journey-dark.html +1 -0
  128. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-journey-full.html +1 -0
  129. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-journey-light.html +1 -0
  130. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-kanban-dark.html +1 -0
  131. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-kanban-full.html +1 -0
  132. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-kanban-light.html +1 -0
  133. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-layers-dark.html +1 -0
  134. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-layers-full.html +1 -0
  135. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-layers-light.html +1 -0
  136. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-line-dark.html +1 -0
  137. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-line-full.html +1 -0
  138. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-line-light.html +1 -0
  139. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-dark.html +1 -0
  140. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-full.html +1 -0
  141. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-light.html +1 -0
  142. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-dark.html +1 -0
  143. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-full.html +1 -0
  144. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-light.html +1 -0
  145. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-marimekko-dark.html +1 -0
  146. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-marimekko-full.html +1 -0
  147. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-marimekko-light.html +1 -0
  148. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-medallion-dark.html +1 -0
  149. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-medallion-full.html +1 -0
  150. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-medallion-light.html +1 -0
  151. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-nested-dark.html +1 -0
  152. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-nested-full.html +1 -0
  153. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-nested-light.html +1 -0
  154. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-org-chart-dark.html +1 -0
  155. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-org-chart-full.html +1 -0
  156. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-org-chart-light.html +1 -0
  157. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-dark.html +1 -0
  158. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-full.html +1 -0
  159. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-light.html +1 -0
  160. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-polar-dark.html +1 -0
  161. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-polar-full.html +1 -0
  162. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-polar-light.html +1 -0
  163. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-dark.html +1 -0
  164. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-full.html +1 -0
  165. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-light.html +1 -0
  166. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-process-dark.html +1 -0
  167. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-process-full.html +1 -0
  168. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-process-light.html +1 -0
  169. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-pyramid-dark.html +1 -0
  170. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-pyramid-full.html +1 -0
  171. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-pyramid-light.html +1 -0
  172. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-dark.html +1 -0
  173. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-full.html +1 -0
  174. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-light.html +1 -0
  175. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-dark.html +1 -0
  176. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-full.html +1 -0
  177. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-light.html +1 -0
  178. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-queue-animated-dark.html +1 -0
  179. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-queue-animated-full.html +1 -0
  180. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-queue-animated-light.html +1 -0
  181. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-radar-dark.html +1 -0
  182. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-radar-full.html +1 -0
  183. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-radar-light.html +1 -0
  184. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-ridgeline-dark.html +1 -0
  185. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-ridgeline-full.html +1 -0
  186. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-ridgeline-light.html +1 -0
  187. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sankey-dark.html +1 -0
  188. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sankey-full.html +1 -0
  189. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sankey-light.html +1 -0
  190. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-scatter-dark.html +1 -0
  191. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-scatter-full.html +1 -0
  192. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-scatter-light.html +1 -0
  193. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-dark.html +1 -0
  194. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-full.html +1 -0
  195. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-light.html +1 -0
  196. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-dark.html +1 -0
  197. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-full.html +1 -0
  198. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-light.html +1 -0
  199. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-slopegraph-dark.html +1 -0
  200. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-slopegraph-full.html +1 -0
  201. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-slopegraph-light.html +1 -0
  202. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-dark.html +1 -0
  203. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-full.html +1 -0
  204. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-dark.html +1 -0
  205. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-full.html +1 -0
  206. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-light.html +1 -0
  207. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-light.html +1 -0
  208. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-story-map-dark.html +1 -0
  209. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-story-map-full.html +1 -0
  210. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-story-map-light.html +1 -0
  211. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-streamgraph-dark.html +1 -0
  212. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-streamgraph-full.html +1 -0
  213. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-streamgraph-light.html +1 -0
  214. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-swimlane-dark.html +1 -0
  215. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-swimlane-full.html +1 -0
  216. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-swimlane-light.html +1 -0
  217. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-timeline-dark.html +1 -0
  218. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-timeline-full.html +1 -0
  219. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-timeline-light.html +1 -0
  220. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-dark.html +1 -0
  221. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-full.html +1 -0
  222. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-light.html +1 -0
  223. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-dark.html +1 -0
  224. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-full.html +1 -0
  225. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-light.html +1 -0
  226. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-treemap-dark.html +1 -0
  227. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-treemap-full.html +1 -0
  228. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-treemap-light.html +1 -0
  229. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-uml-class-dark.html +1 -0
  230. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-uml-class-full.html +1 -0
  231. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-uml-class-light.html +1 -0
  232. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-venn-dark.html +1 -0
  233. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-venn-full.html +1 -0
  234. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-venn-light.html +1 -0
  235. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-wardley-dark.html +1 -0
  236. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-wardley-full.html +1 -0
  237. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-wardley-light.html +1 -0
  238. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-waterfall-dark.html +1 -0
  239. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-waterfall-full.html +1 -0
  240. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-waterfall-light.html +1 -0
  241. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/fonts/OFL.txt +94 -0
  242. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/fonts/PretendardVariable.woff2 +0 -0
  243. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/fonts/provenance.json +22 -0
  244. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/icons.html +231 -0
  245. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/index.html +1 -0
  246. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/devicon-MIT.txt +20 -0
  247. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/diagram-design-MIT.txt +21 -0
  248. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/log-z-MIT.txt +21 -0
  249. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/simple-icons-CC0.md +30 -0
  250. package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/tabler-MIT.txt +21 -0
  251. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/01-service-architecture/after.html +1 -0
  252. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/01-service-architecture/brief.md +33 -0
  253. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/02-release-decision/after.html +1 -0
  254. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/02-release-decision/brief.md +18 -0
  255. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/03-data-retention/after.html +1 -0
  256. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/03-data-retention/brief.md +19 -0
  257. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/04-oauth-sequence/after.html +1 -0
  258. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/04-oauth-sequence/brief.md +17 -0
  259. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/05-review-lanes/after.html +1 -0
  260. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/05-review-lanes/brief.md +17 -0
  261. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/06-rollout-gates/after.html +1 -0
  262. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/06-rollout-gates/brief.md +17 -0
  263. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/07-deployment-boundary/after.html +1 -0
  264. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/07-deployment-boundary/brief.md +19 -0
  265. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/08-policy-traces/after.html +1 -0
  266. package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/08-policy-traces/brief.md +20 -0
  267. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/accessibility.md +37 -0
  268. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/export.md +29 -0
  269. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-drawio.md +21 -0
  270. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-excalidraw.md +14 -0
  271. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-mermaid.md +18 -0
  272. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-schema.md +28 -0
  273. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/korean-typography.md +34 -0
  274. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/motion.md +29 -0
  275. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/office-pptx-docx.md +40 -0
  276. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/output-spec.md +48 -0
  277. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-annotation.md +12 -0
  278. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-icons.md +21 -0
  279. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-sketchy.md +11 -0
  280. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-terminal.md +11 -0
  281. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/profiles.md +24 -0
  282. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/semantic-patterns.md +27 -0
  283. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/style-guide.md +67 -0
  284. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-architecture.md +51 -0
  285. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-bar.md +51 -0
  286. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-beeswarm.md +49 -0
  287. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-bubble.md +49 -0
  288. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-bump.md +49 -0
  289. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-catalog.json +1433 -0
  290. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-data-flow.md +51 -0
  291. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-datalake.md +49 -0
  292. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-db-schema.md +49 -0
  293. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-dependency.md +49 -0
  294. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-deployment.md +49 -0
  295. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-dp-integration.md +49 -0
  296. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-dp-security-matrix.md +49 -0
  297. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-er.md +49 -0
  298. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-fishbone.md +49 -0
  299. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-flowchart.md +49 -0
  300. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-gantt.md +49 -0
  301. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-heatmap.md +53 -0
  302. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-high-level-vertical.md +53 -0
  303. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-high-level.md +53 -0
  304. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-import-drawio.md +53 -0
  305. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-import-excalidraw.md +53 -0
  306. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-import-mermaid.md +53 -0
  307. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-it-state.md +54 -0
  308. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-journey.md +54 -0
  309. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-kanban.md +54 -0
  310. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-layers.md +54 -0
  311. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-line.md +54 -0
  312. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-loop-terminal.md +53 -0
  313. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-loop.md +54 -0
  314. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-marimekko.md +54 -0
  315. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-medallion.md +54 -0
  316. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-nested.md +59 -0
  317. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-org-chart.md +58 -0
  318. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-paved-road-animated.md +72 -0
  319. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-polar.md +67 -0
  320. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-policy-trace-animated.md +69 -0
  321. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-process.md +58 -0
  322. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-pyramid.md +59 -0
  323. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-quadrant-consultant.md +60 -0
  324. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-quadrant.md +57 -0
  325. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-queue-animated.md +63 -0
  326. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-radar.md +57 -0
  327. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-ridgeline.md +63 -0
  328. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-sankey.md +68 -0
  329. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-scatter.md +60 -0
  330. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-sequence-oauth.md +66 -0
  331. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-sequence.md +63 -0
  332. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-slopegraph.md +65 -0
  333. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-state-lifecycle.md +53 -0
  334. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-state.md +59 -0
  335. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-story-map.md +52 -0
  336. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-streamgraph.md +53 -0
  337. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-swimlane.md +52 -0
  338. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-timeline.md +52 -0
  339. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-tree-block-decomposition.md +57 -0
  340. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-tree.md +54 -0
  341. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-treemap.md +54 -0
  342. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-uml-class.md +52 -0
  343. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-venn.md +51 -0
  344. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-wardley.md +52 -0
  345. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-waterfall.md +54 -0
  346. package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/verifier-guide.md +31 -0
  347. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/block-registry.mjs +43 -0
  348. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/browser-version.mjs +12 -0
  349. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/check-visible-text.py +12 -0
  350. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_brief.py +192 -0
  351. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_catalog.py +135 -0
  352. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_checks.py +123 -0
  353. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_cli.py +94 -0
  354. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_geometry.py +130 -0
  355. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_metrics.py +166 -0
  356. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_quality.py +293 -0
  357. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_quality_geometry.py +200 -0
  358. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_records.py +205 -0
  359. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_sequence.py +55 -0
  360. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/doctor.mjs +24 -0
  361. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/drawio_extract.py +209 -0
  362. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/drawio_source.py +188 -0
  363. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/excalidraw_extract.py +233 -0
  364. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/excalidraw_support.py +64 -0
  365. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/export.mjs +125 -0
  366. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/mermaid_extract.py +240 -0
  367. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/mermaid_source.py +39 -0
  368. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/office-safety.mjs +54 -0
  369. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-all.py +12 -0
  370. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-brief.py +12 -0
  371. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-diagram.py +12 -0
  372. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-motion.py +12 -0
  373. package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-type.py +12 -0
  374. package/assets/lithermes-plugin/skills/lit-docx/NOTICE +1 -0
  375. package/assets/lithermes-plugin/skills/lit-docx/SKILL.md +97 -0
  376. package/assets/lithermes-plugin/skills/lit-docx/references/frontmatter_schema.md +42 -0
  377. package/assets/lithermes-plugin/skills/lit-docx/references/journal_style_spec.md +17 -0
  378. package/assets/lithermes-plugin/skills/lit-docx/references/markdown_quality_checklist.md +37 -0
  379. package/assets/lithermes-plugin/skills/lit-docx/references/slop_phrase_list.yaml +58 -0
  380. package/assets/lithermes-plugin/skills/lit-docx/references/slop_rules.md +35 -0
  381. package/assets/lithermes-plugin/skills/lit-docx/scripts/clean_markdown.py +95 -0
  382. package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_docx.py +1041 -0
  383. package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_pdf.py +281 -0
  384. package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_pdf.py +130 -0
  385. package/assets/lithermes-plugin/skills/lit-docx/scripts/edit_docx.py +297 -0
  386. package/assets/lithermes-plugin/skills/lit-docx/scripts/embed_images.py +78 -0
  387. package/assets/lithermes-plugin/skills/lit-docx/scripts/generate_docx_templates.py +491 -0
  388. package/assets/lithermes-plugin/skills/lit-docx/scripts/slop_lint.py +536 -0
  389. package/assets/lithermes-plugin/skills/lit-docx/scripts/visual_audit.py +41 -0
  390. package/assets/lithermes-plugin/skills/lit-docx/templates/docx/acs.docx +0 -0
  391. package/assets/lithermes-plugin/skills/lit-docx/templates/docx/elsevier.docx +0 -0
  392. package/assets/lithermes-plugin/skills/lit-docx/templates/docx/ieee.docx +0 -0
  393. package/assets/lithermes-plugin/skills/lit-docx/templates/docx/korean-generic.docx +0 -0
  394. package/assets/lithermes-plugin/skills/lit-docx/templates/docx/nature.docx +0 -0
  395. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/acs/README.md +5 -0
  396. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/acs/template.tex +37 -0
  397. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/elsevier/README.md +5 -0
  398. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/elsevier/template.tex +38 -0
  399. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/ieee/README.md +5 -0
  400. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/ieee/template.tex +37 -0
  401. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/korean-generic/README.md +5 -0
  402. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/korean-generic/template.tex +37 -0
  403. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/nature/README.md +5 -0
  404. package/assets/lithermes-plugin/skills/lit-docx/templates/latex/nature/template.tex +37 -0
  405. package/assets/lithermes-plugin/skills/lit-docx/templates/registry.yaml +1366 -0
  406. package/assets/lithermes-plugin/skills/lit-humanizer/NOTICE +170 -0
  407. package/assets/lithermes-plugin/skills/lit-humanizer/SKILL.md +125 -0
  408. package/assets/lithermes-plugin/skills/lit-humanizer/assets/report-skeleton.md +26 -0
  409. package/assets/lithermes-plugin/skills/lit-humanizer/assets/slide-text-skeleton.md +30 -0
  410. package/assets/lithermes-plugin/skills/lit-humanizer/examples/accessibility-note/after.md +7 -0
  411. package/assets/lithermes-plugin/skills/lit-humanizer/examples/accessibility-note/before.md +7 -0
  412. package/assets/lithermes-plugin/skills/lit-humanizer/examples/api-reference/after.md +9 -0
  413. package/assets/lithermes-plugin/skills/lit-humanizer/examples/api-reference/before.md +15 -0
  414. package/assets/lithermes-plugin/skills/lit-humanizer/examples/changelog/after.md +5 -0
  415. package/assets/lithermes-plugin/skills/lit-humanizer/examples/changelog/before.md +12 -0
  416. package/assets/lithermes-plugin/skills/lit-humanizer/examples/code-comments/after.md +10 -0
  417. package/assets/lithermes-plugin/skills/lit-humanizer/examples/code-comments/before.md +19 -0
  418. package/assets/lithermes-plugin/skills/lit-humanizer/examples/commit/after.md +5 -0
  419. package/assets/lithermes-plugin/skills/lit-humanizer/examples/commit/before.md +7 -0
  420. package/assets/lithermes-plugin/skills/lit-humanizer/examples/data-release/after.md +7 -0
  421. package/assets/lithermes-plugin/skills/lit-humanizer/examples/data-release/before.md +9 -0
  422. package/assets/lithermes-plugin/skills/lit-humanizer/examples/detector-validation/ko-metrics-golden.json +49 -0
  423. package/assets/lithermes-plugin/skills/lit-humanizer/examples/detector-validation/pos-real.txt +26 -0
  424. package/assets/lithermes-plugin/skills/lit-humanizer/examples/detector-validation/rule-cases.json +306 -0
  425. package/assets/lithermes-plugin/skills/lit-humanizer/examples/english-essay/after.md +5 -0
  426. package/assets/lithermes-plugin/skills/lit-humanizer/examples/english-essay/before.md +5 -0
  427. package/assets/lithermes-plugin/skills/lit-humanizer/examples/incident-update/after.md +7 -0
  428. package/assets/lithermes-plugin/skills/lit-humanizer/examples/incident-update/before.md +7 -0
  429. package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-essay/after.md +7 -0
  430. package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-essay/before.md +9 -0
  431. package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-report/after.md +9 -0
  432. package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-report/before.md +13 -0
  433. package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-slide/after.md +19 -0
  434. package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-slide/before.md +21 -0
  435. package/assets/lithermes-plugin/skills/lit-humanizer/examples/meeting-brief/after.md +9 -0
  436. package/assets/lithermes-plugin/skills/lit-humanizer/examples/meeting-brief/before.md +11 -0
  437. package/assets/lithermes-plugin/skills/lit-humanizer/examples/policy-faq/after.md +9 -0
  438. package/assets/lithermes-plugin/skills/lit-humanizer/examples/policy-faq/before.md +9 -0
  439. package/assets/lithermes-plugin/skills/lit-humanizer/examples/pr/after.md +15 -0
  440. package/assets/lithermes-plugin/skills/lit-humanizer/examples/pr/before.md +17 -0
  441. package/assets/lithermes-plugin/skills/lit-humanizer/examples/project-update/after.md +7 -0
  442. package/assets/lithermes-plugin/skills/lit-humanizer/examples/project-update/before.md +9 -0
  443. package/assets/lithermes-plugin/skills/lit-humanizer/examples/readme/after.md +12 -0
  444. package/assets/lithermes-plugin/skills/lit-humanizer/examples/readme/before.md +14 -0
  445. package/assets/lithermes-plugin/skills/lit-humanizer/examples/report/after.md +13 -0
  446. package/assets/lithermes-plugin/skills/lit-humanizer/examples/report/before.md +11 -0
  447. package/assets/lithermes-plugin/skills/lit-humanizer/examples/research-abstract/after.md +5 -0
  448. package/assets/lithermes-plugin/skills/lit-humanizer/examples/research-abstract/before.md +5 -0
  449. package/assets/lithermes-plugin/skills/lit-humanizer/examples/slides/after.md +19 -0
  450. package/assets/lithermes-plugin/skills/lit-humanizer/examples/slides/before.md +19 -0
  451. package/assets/lithermes-plugin/skills/lit-humanizer/examples/troubleshooting/after.md +11 -0
  452. package/assets/lithermes-plugin/skills/lit-humanizer/examples/troubleshooting/before.md +11 -0
  453. package/assets/lithermes-plugin/skills/lit-humanizer/references/README.md +16 -0
  454. package/assets/lithermes-plugin/skills/lit-humanizer/references/always-on-rule.md +9 -0
  455. package/assets/lithermes-plugin/skills/lit-humanizer/references/code-patterns.md +468 -0
  456. package/assets/lithermes-plugin/skills/lit-humanizer/references/deliverable-channels.md +111 -0
  457. package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns-checklist.md +43 -0
  458. package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns-content.md +243 -0
  459. package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns-structure.md +375 -0
  460. package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns.md +57 -0
  461. package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-metrics.md +33 -0
  462. package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-patterns-a-d.md +659 -0
  463. package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-patterns-e-j.md +387 -0
  464. package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-patterns.md +31 -0
  465. package/assets/lithermes-plugin/skills/lit-humanizer/references/rewrite-playbook.md +54 -0
  466. package/assets/lithermes-plugin/skills/lit-humanizer/references/taxonomy.md +153 -0
  467. package/assets/lithermes-plugin/skills/lit-humanizer/rules.json +884 -0
  468. package/assets/lithermes-plugin/skills/lit-humanizer/scripts/detect.py +17 -0
  469. package/assets/lithermes-plugin/skills/lit-humanizer/scripts/extract_office_text.py +114 -0
  470. package/assets/lithermes-plugin/skills/lit-humanizer/scripts/ko_metrics.py +35 -0
  471. package/assets/lithermes-plugin/skills/lit-pptx/NOTICE +1 -0
  472. package/assets/lithermes-plugin/skills/lit-pptx/SKILL.md +109 -0
  473. package/assets/lithermes-plugin/skills/lit-pptx/agents/analyst.md +49 -0
  474. package/assets/lithermes-plugin/skills/lit-pptx/agents/antithesis.md +65 -0
  475. package/assets/lithermes-plugin/skills/lit-pptx/agents/architect.md +44 -0
  476. package/assets/lithermes-plugin/skills/lit-pptx/agents/critic.md +42 -0
  477. package/assets/lithermes-plugin/skills/lit-pptx/agents/synthesizer.md +47 -0
  478. package/assets/lithermes-plugin/skills/lit-pptx/agents/thesis.md +33 -0
  479. package/assets/lithermes-plugin/skills/lit-pptx/assets/azure/circle-lg.png +0 -0
  480. package/assets/lithermes-plugin/skills/lit-pptx/assets/azure/circle-md.png +0 -0
  481. package/assets/lithermes-plugin/skills/lit-pptx/assets/azure/circle-sm.png +0 -0
  482. package/assets/lithermes-plugin/skills/lit-pptx/bin/office.mjs +77 -0
  483. package/assets/lithermes-plugin/skills/lit-pptx/fonts/PRETENDARD-OFL.txt +94 -0
  484. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Black.otf +0 -0
  485. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Bold.otf +0 -0
  486. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-ExtraBold.otf +0 -0
  487. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-ExtraLight.otf +0 -0
  488. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Light.otf +0 -0
  489. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Medium.otf +0 -0
  490. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Regular.otf +0 -0
  491. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-SemiBold.otf +0 -0
  492. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Thin.otf +0 -0
  493. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/OFL.txt +94 -0
  494. package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/SOURCE.md +29 -0
  495. package/assets/lithermes-plugin/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Bold.otf +0 -0
  496. package/assets/lithermes-plugin/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Regular.otf +0 -0
  497. package/assets/lithermes-plugin/skills/lit-pptx/references/anti-slop-checklist.md +71 -0
  498. package/assets/lithermes-plugin/skills/lit-pptx/references/authoring-guide.md +139 -0
  499. package/assets/lithermes-plugin/skills/lit-pptx/references/consensus-protocol.md +125 -0
  500. package/assets/lithermes-plugin/skills/lit-pptx/references/data-display-cookbook.md +45 -0
  501. package/assets/lithermes-plugin/skills/lit-pptx/references/design-system-azure.md +58 -0
  502. package/assets/lithermes-plugin/skills/lit-pptx/runtime/package-lock.json +750 -0
  503. package/assets/lithermes-plugin/skills/lit-pptx/runtime/package.json +15 -0
  504. package/assets/lithermes-plugin/skills/lit-pptx/runtime/requirements.in +7 -0
  505. package/assets/lithermes-plugin/skills/lit-pptx/runtime/requirements.lock +391 -0
  506. package/assets/lithermes-plugin/skills/lit-pptx/scripts/compile-deck.js +447 -0
  507. package/assets/lithermes-plugin/skills/lit-pptx/scripts/craft_extras.py +215 -0
  508. package/assets/lithermes-plugin/skills/lit-pptx/scripts/embed_fonts.py +199 -0
  509. package/assets/lithermes-plugin/skills/lit-pptx/scripts/integrity.py +60 -0
  510. package/assets/lithermes-plugin/skills/lit-pptx/scripts/inventory.py +64 -0
  511. package/assets/lithermes-plugin/skills/lit-pptx/scripts/learn_template.py +433 -0
  512. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/derive-palette.js +176 -0
  513. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/directive-parser.js +244 -0
  514. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/font-map.js +79 -0
  515. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/gen-bg.js +85 -0
  516. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/gen-gradient-assets.js +36 -0
  517. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/layout-resolver.js +736 -0
  518. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/markdown-loader.js +136 -0
  519. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/render-adapter-html.js +357 -0
  520. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +1864 -0
  521. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/slide-ast.js +539 -0
  522. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/spec-validator.js +94 -0
  523. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/template-registry.js +355 -0
  524. package/assets/lithermes-plugin/skills/lit-pptx/scripts/qa_deck.py +791 -0
  525. package/assets/lithermes-plugin/skills/lit-pptx/scripts/validate_pptx.py +206 -0
  526. package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/markdown-slide-spec-v1.md +251 -0
  527. package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/markdown-slide-spec-v2.md +221 -0
  528. package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/slide-ast-v1.schema.json +229 -0
  529. package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/slide-ast-v2.schema.json +144 -0
  530. package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/template-enrollment-contract.md +228 -0
  531. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-A2Z/capabilities.yaml +146 -0
  532. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +384 -0
  533. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +37 -0
  534. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +154 -0
  535. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +405 -0
  536. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +37 -0
  537. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/capabilities.yaml +179 -0
  538. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/layout-mapping.yaml +299 -0
  539. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/template.yaml +45 -0
  540. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +181 -0
  541. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml +299 -0
  542. package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +44 -0
  543. package/assets/lithermes-plugin/skills/lit-scientific-visualization/SKILL.md +2 -0
  544. package/assets/lithermes-plugin/skills/lit-typographic-motion/SKILL.md +71 -0
  545. package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/audio.py +45 -0
  546. package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/motion.mjs +690 -0
  547. package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/runtime.mjs +299 -0
  548. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/NOTICE +23 -0
  549. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/THIRD_PARTY_NOTICES +55 -0
  550. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/browser.mjs +169 -0
  551. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/completion.mjs +52 -0
  552. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/constants.mjs +162 -0
  553. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/director.mjs +33 -0
  554. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/encode.mjs +191 -0
  555. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/flash.mjs +163 -0
  556. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/frame.mjs +428 -0
  557. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/gate.mjs +483 -0
  558. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/look.mjs +223 -0
  559. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/page.js +622 -0
  560. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/presets.mjs +170 -0
  561. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/scenes.mjs +242 -0
  562. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/sound.mjs +382 -0
  563. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-gate.mjs +97 -0
  564. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-init.js +186 -0
  565. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-kit.js +389 -0
  566. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-qa.mjs +358 -0
  567. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-worker.mjs +33 -0
  568. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage.mjs +691 -0
  569. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stills.mjs +71 -0
  570. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stroke.mjs +231 -0
  571. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/timeline.mjs +177 -0
  572. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/treatment.mjs +244 -0
  573. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/type.mjs +183 -0
  574. package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/util.mjs +152 -0
  575. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/craft-loop.md +175 -0
  576. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/engine-contract.md +166 -0
  577. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/runtime.md +122 -0
  578. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/stage.md +261 -0
  579. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/style-bibles.md +122 -0
  580. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/treatment.md +164 -0
  581. package/assets/lithermes-plugin/skills/lit-typographic-motion/references/type-craft.md +92 -0
  582. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/fonts.json +154 -0
  583. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/licenses/CREDITS +20 -0
  584. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/licenses/EMS-OFL.txt +91 -0
  585. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/package-lock.json +88 -0
  586. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/package.json +12 -0
  587. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/requirements.in +1 -0
  588. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/requirements.lock +727 -0
  589. package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/word-timing.json +9 -0
  590. package/assets/lithermes-plugin/skills/litresearch/SKILL.md +19 -18
  591. package/assets/lithermes-plugin/skills/litwork/SKILL.md +28 -0
  592. package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +3 -3
  593. package/package.json +1 -1
  594. package/readme-assets/ab-simple/s11-ui-baseline-desktop.webp +0 -0
  595. package/readme-assets/ab-simple/s11-ui-lithermes-desktop.webp +0 -0
  596. package/readme-assets/ab-simple/s3-ui-baseline-desktop.webp +0 -0
  597. package/readme-assets/ab-simple/s3-ui-lithermes-desktop.webp +0 -0
  598. package/readme-assets/ab-simple/s4-ui-baseline-desktop.webp +0 -0
  599. package/readme-assets/ab-simple/s4-ui-lithermes-desktop.webp +0 -0
  600. package/readme-assets/ab-simple/s5-office-baseline-slides.webp +0 -0
  601. package/readme-assets/ab-simple/s5-office-lithermes-slides.webp +0 -0
  602. package/readme-assets/ab-simple/s7-lithermes-diagram.webp +0 -0
  603. package/readme-assets/ab-simple/s8-office-baseline-slides.webp +0 -0
  604. package/readme-assets/ab-simple/s8-office-lithermes-slides.webp +0 -0
  605. package/readme-assets/ab-simple/s9-office-lithermes-pages.webp +0 -0
  606. package/readme-assets/badge-version.svg +1 -1
  607. package/readme-assets/cover-motion-still.webp +0 -0
  608. package/readme-assets/cover-motion.webp +0 -0
  609. package/readme-assets/skills/autoconference.webp +0 -0
  610. package/readme-assets/skills/autoresearch.webp +0 -0
  611. package/readme-assets/skills/browser-drive.webp +0 -0
  612. package/readme-assets/skills/comment-checker.webp +0 -0
  613. package/readme-assets/skills/debugging.webp +0 -0
  614. package/readme-assets/skills/deep-interview.webp +0 -0
  615. package/readme-assets/skills/frontend-ui-ux.webp +0 -0
  616. package/readme-assets/skills/lit-burnoff-file.webp +0 -0
  617. package/readme-assets/skills/lit-burnoff.webp +0 -0
  618. package/readme-assets/skills/lit-code.webp +0 -0
  619. package/readme-assets/skills/lit-commit.webp +0 -0
  620. package/readme-assets/skills/lit-comprehend.webp +0 -0
  621. package/readme-assets/skills/lit-crucible.webp +0 -0
  622. package/readme-assets/skills/lit-diagram-drawer.webp +0 -0
  623. package/readme-assets/skills/lit-docx.webp +0 -0
  624. package/readme-assets/skills/lit-handoff.webp +0 -0
  625. package/readme-assets/skills/lit-humanizer.webp +0 -0
  626. package/readme-assets/skills/lit-init.webp +0 -0
  627. package/readme-assets/skills/lit-plan.webp +0 -0
  628. package/readme-assets/skills/lit-pptx.webp +0 -0
  629. package/readme-assets/skills/lit-recap.webp +0 -0
  630. package/readme-assets/skills/lit-scientific-visualization.webp +0 -0
  631. package/readme-assets/skills/lit-typographic-motion.webp +0 -0
  632. package/readme-assets/skills/litgoal.webp +0 -0
  633. package/readme-assets/skills/litresearch.webp +0 -0
  634. package/readme-assets/skills/litwork.webp +0 -0
  635. package/readme-assets/skills/lsp-setup.webp +0 -0
  636. package/readme-assets/skills/lsp.webp +0 -0
  637. package/readme-assets/skills/readme-studio.webp +0 -0
  638. package/readme-assets/skills/refactor.webp +0 -0
  639. package/readme-assets/skills/review-work.webp +0 -0
  640. package/readme-assets/skills/rules.webp +0 -0
  641. package/readme-assets/skills/start-work.webp +0 -0
  642. package/readme-assets/skills/structural-search.webp +0 -0
  643. package/readme-assets/skills/visual-qa.webp +0 -0
  644. package/readme-assets/skills/wikify.webp +0 -0
  645. package/src/cli.js +40 -1
  646. package/src/lib/check.js +21 -0
  647. package/src/lib/install.js +262 -7
  648. package/src/lib/skillPayload.js +3 -3
  649. package/assets/lithermes-plugin/skills/lit-korean/SKILL.md +0 -237
  650. package/assets/lithermes-plugin/skills/lit-korean/references/quick-rules.md +0 -24
  651. package/assets/lithermes-plugin/skills/lit-korean/references/safety-checklist.md +0 -23
  652. package/readme-assets/cover.webp +0 -0
@@ -0,0 +1,261 @@
1
+ # Stage path
2
+
3
+ The stage path is for every film that shows things: a drawn subject, shapes,
4
+ diagrams, charts, illustration or interface, and every 9:16 film. You author a
5
+ page; this skill's renderer captures it frame by frame on a virtual clock,
6
+ encodes it with the pinned encode, muxes the sound and runs the gate. Every
7
+ frame passes through that renderer. A hand-encoded film (a PIL frame loop, a
8
+ raw ffmpeg filter graph, a screen recording, a raster flipbook) is not the
9
+ deliverable.
10
+
11
+ ## What you write
12
+
13
+ - `DIR/treatment.json` (`treatment.md`) with `path: stage`.
14
+ - `DIR/stage/index.html` and its local assets: SVG, PNG, JPG, WebP, JS, CSS,
15
+ JSON and WAV files inside `DIR/stage/`.
16
+
17
+ Never install, download or copy a third-party library into the stage dir. Use
18
+ the kit below and your own code. Rasters are textures and stills, never a frame
19
+ sequence: at most 24 raster images and 8 MB in total; 10 or more rasters of the
20
+ same size (a flipbook), or any animated GIF, APNG or WebP, is exit 17.
21
+
22
+ Put all on-screen copy in one `COPY` object at the top of `stage/index.html`,
23
+ so the copy is easy to find and edit:
24
+
25
+ ```text
26
+ const COPY = { title: "<line>", steps: ["<line>", "<line>"], close: "<line>" };
27
+ ```
28
+
29
+ ## The page contract
30
+
31
+ The page loads the kit and the fonts from the renderer's own routes, and then
32
+ declares the film:
33
+
34
+ ```text
35
+ <link rel="stylesheet" href="/lit/fonts.css">
36
+ <script src="/lit/stage-kit.js"></script>
37
+ <script>
38
+ LitStage.define({ width: 1920, height: 1080, fps: 60, duration: <seconds>, render(t) { /* draw the frame at t */ } });
39
+ </script>
40
+ ```
41
+
42
+ - `width` and `height` equal the treatment's format: 1920×1080 for 16:9,
43
+ 1080×1920 for 9:16. `duration` is the treatment's `durationSec`; the render
44
+ must land within ±10 % of it.
45
+ - `fps` is 60. Use 30 only when the treatment says so.
46
+ - `render(t)` draws the frame at time `t` in seconds. It may be omitted when
47
+ the page animates only with CSS or the Web Animations API.
48
+ - Setting `window.litStage` to the same object is equivalent to calling
49
+ `LitStage.define`.
50
+
51
+ The page may also use CSS animations and transitions, the Web Animations API,
52
+ SVG SMIL and `requestAnimationFrame` with Canvas2D or WebGL. The renderer drives
53
+ all of them from one virtual clock.
54
+
55
+ Forbidden, each exit 17 naming the element or API: `<video>`, `<audio>`,
56
+ `<iframe>`, `<object>`, `<embed>`, `<frame>`; `new Audio()`, `AudioContext`,
57
+ `OfflineAudioContext`; `Worker`, `SharedWorker`, service workers. `WebSocket`,
58
+ `WebTransport` and `RTCPeerConnection` are network requests: exit 19. Sound
59
+ belongs in the treatment, not in the page.
60
+
61
+ Network: the page is served from a synthetic origin, `http://lit.stage/`,
62
+ without a listening socket. Any request outside it fails the run with exit 19,
63
+ and so does an absolute `http(s)://` or protocol-relative URL, or a preconnect
64
+ or prefetch link, anywhere in the stage files.
65
+
66
+ ### Fonts
67
+
68
+ `/lit/fonts.css` declares this product's verified faces with
69
+ `font-display: block`, served from the pre-warmed cache and the reused lit-pptx
70
+ Pretendard pair: `Pretendard` (400, 700), `Archivo` (500, 700, 900 at
71
+ `font-stretch` 75 %, 100 %, 125 %), `Galmuri9`, `VT323`, `Silkscreen` (400,
72
+ 700) and `MesloLGS NF`. Use Pretendard for Hangul. Any other family falls back
73
+ to a system face; the QA reports it and fails it on copy.
74
+
75
+ ### Text the QA can read
76
+
77
+ - HTML and SVG text is found automatically. Mark text that is part of a drawn
78
+ subject (a label on a drawn jar, a number on a drawn clock) as decor:
79
+ `LitStage.text(el, { decor: true })`. Decor text is exempt from title-safe
80
+ and reading-floor checks, may not carry a copy line, and may not exceed 25 %
81
+ of the visible text area.
82
+ - Canvas and WebGL text is invisible to the QA unless you register it every
83
+ frame you draw it: `LitStage.text({ content, x, y, w, h })`. Unregistered
84
+ canvas text is reported as "canvas text not measured".
85
+
86
+ ## The kit
87
+
88
+ `/lit/stage-kit.js` is this skill's own code: motion primitives only, no
89
+ scenes, no objects, no layouts, no copy. `window.LitStage` holds:
90
+
91
+ - **Eases.** `LitStage.ease.outCubic(p)` and the rest of the named set
92
+ (`linear`, `inSine`/`outSine`/`inOutSine`, `inQuad`…`inOutQuart`,
93
+ `inExpo`/`outExpo`/`inOutExpo`, `inBack`/`outBack`/`inOutBack`), plus
94
+ `LitStage.bezier(x1, y1, x2, y2)` for a CSS-style cubic-bezier.
95
+
96
+ ```text
97
+ const lift = LitStage.bezier(0.2, 0.8, 0.2, 1)(p);
98
+ ```
99
+
100
+ - **Spring.** An analytic damped spring, a pure function of time:
101
+
102
+ ```text
103
+ const s = LitStage.spring({ from: 0, to: 1, stiffness: 180, damping: 18 });
104
+ el.style.transform = `scale(${s(t - 1.5)})`;
105
+ ```
106
+
107
+ - **Keyframes.** `LitStage.kf(t, keys)` interpolates numbers or number arrays,
108
+ with an optional ease per segment:
109
+
110
+ ```text
111
+ const [x, y] = LitStage.kf(t, [{ t: 0, v: [0, 40] }, { t: 1.2, v: [320, 0], ease: "outCubic" }]);
112
+ ```
113
+
114
+ - **Timing.** `LitStage.at(t, start, dur, ease)` returns the eased progress of
115
+ a window, clamped to 0–1. `LitStage.stagger(i, { each, from })` returns the
116
+ start offset of item `i`. `LitStage.seq(t, [d0, d1, ...])` returns
117
+ `{ index, p }` for back-to-back segments.
118
+
119
+ ```text
120
+ items.forEach((el, i) => { el.style.opacity = LitStage.at(t, 2 + LitStage.stagger(i, { each: 0.08 }), 0.4, "outQuad"); });
121
+ ```
122
+
123
+ - **Seeded randomness.** `LitStage.rand(seed)` returns a deterministic
124
+ generator; `Math.random` is also seeded from the treatment by the renderer.
125
+
126
+ ```text
127
+ const r = LitStage.rand(7); const dots = Array.from({ length: 40 }, () => [r() * 1920, r() * 1080]);
128
+ ```
129
+
130
+ - **Splitting text.** `LitStage.splitText(el, { by: "grapheme" | "word" })`
131
+ wraps each grapheme, or each word (어절 for Hangul), in a span and returns
132
+ them. It uses `Intl.Segmenter`, so a Hangul syllable is never split.
133
+
134
+ ```text
135
+ LitStage.splitText(title, { by: "word" }).forEach((w, i) => w.style.opacity = LitStage.at(t, i * 0.12, 0.3));
136
+ ```
137
+
138
+ - **Path draw.** `LitStage.drawPath(pathEl, p)` reveals an SVG path from its
139
+ start by stroke dash.
140
+
141
+ ```text
142
+ LitStage.drawPath(outline, LitStage.at(t, 0.5, 1.6, "inOutSine"));
143
+ ```
144
+
145
+ - **Morph.** `LitStage.morph(fromD, toD)` returns `p => d` for two
146
+ single-subpath shapes: both are normalized to cubics, resampled by arc length
147
+ and aligned at the best rotation. Multi-subpath morphs are not supported;
148
+ split them into single paths.
149
+
150
+ ```text
151
+ const m = LitStage.morph(bud.getAttribute("d"), bloom.getAttribute("d")); shape.setAttribute("d", m(p));
152
+ ```
153
+
154
+ - **Masks and clips.** `LitStage.clipInset(el, p, "left" | "right" | "top" |
155
+ "bottom")` wipes an element in; `LitStage.clipCircle(el, p, cx, cy)` opens
156
+ an iris; `LitStage.maskWipe(el, p, angleDeg, softPx)` sweeps a soft gradient
157
+ mask.
158
+
159
+ ```text
160
+ LitStage.clipCircle(scene2, LitStage.at(t, 6, 0.8, "inOutCubic"), "50%", "60%");
161
+ ```
162
+
163
+ - **Colour.** `LitStage.mix("#0f3b4c", "#f2c14e", p)` returns an `rgb()`
164
+ string.
165
+
166
+ - **Text registration.** `LitStage.text(el, { decor: true })` and
167
+ `LitStage.text({ content, x, y, w, h })`, above.
168
+
169
+ ## How the capture works
170
+
171
+ The renderer serves the page to a software-rendered Chrome (SwiftShader, CPU
172
+ raster, no GPU rung), so any difference between two captures is a page leak,
173
+ not a driver. An init script replaces `Date`, `performance.now`, `setTimeout`,
174
+ `setInterval`, `requestAnimationFrame`, `requestIdleCallback`,
175
+ `document.timeline.currentTime` and `Math.random` with a virtual clock and a
176
+ seeded generator.
177
+
178
+ Before frame 0 it loads every face in `fonts.css` and decodes every image.
179
+ For each frame `f` it sets `t = f / fps` (computed, never accumulated), seeks
180
+ every running animation to its own time, runs due timers and animation-frame
181
+ callbacks, calls `render(t)`, pauses and records any animation that appeared,
182
+ waits for fonts and images, lets Chrome paint twice, and captures exactly
183
+ `width × height` pixels. The pixels go straight into the pinned H.264 encode.
184
+
185
+ What this means for you:
186
+
187
+ - Drive motion from `t`, CSS or WAAPI. Never from wall-clock time.
188
+ - `performance.timeOrigin` and `crypto.getRandomValues` are not virtualized.
189
+ A frame that depends on them differs between two captures: exit 18.
190
+ - A CSS transition started at `t` runs on the virtual clock like any other
191
+ animation; a `finished.then(...)` chain continues on it.
192
+
193
+ A full render records per-frame timing (p50, p95, total) in the manifest.
194
+ Long films take minutes: give the command a timeout of at least 600 s, or run
195
+ it with `--detach` and poll `DIR/.run/progress.json` and `DIR/run-state.json`.
196
+ Never shorten the film to save render time.
197
+
198
+ ## Determinism
199
+
200
+ After the film, the renderer re-captures 8 to 16 sample frames (frame 0, the
201
+ last frame, the first frame of every beat, then beat midpoints) in a fresh
202
+ Chrome that replays the clock from 0, and compares the SHA-256 of the decoded
203
+ pixels. A mismatch is exit 18, naming the frame and the first differing region.
204
+
205
+ ## Text QA
206
+
207
+ A separate replay reads every visible text run (the nearest `LitStage.text`
208
+ element, otherwise the nearest block; `::before` and `::after` content; and
209
+ registered canvas text). At every beat midpoint, plus two settled frames per
210
+ beat, it captures the frame, hides only the text fill, captures again, and
211
+ takes the difference as the ink. Contrast uses the worst pairing of median ink
212
+ against the dark and light ends of the ground in the text box grown by a quarter
213
+ of the cap height, so a scrim behind type must reach past that margin. Only
214
+ settled text is judged: its box moved less than 2 px since the previous probe
215
+ and its opacity is at least 0.95. The samples sit at every beat's midpoint and
216
+ at 35 % and 80 % of it; runs are also read every 1/10 s for the reading floor
217
+ and the copy-found check. A run counts as visible at opacity 0.6 or more, on
218
+ screen after clipping, with at least 12 ink pixels at a sample. Registered
219
+ canvas text cannot be hidden, so its ink is the pixels in its box that stand
220
+ apart from the box's edge.
221
+
222
+ | Check | Copy text | Decor text |
223
+ |---|---|---|
224
+ | Contrast (3.0 large, 4.5 body; large is at least 3 % of the short side) | FAIL | WARN |
225
+ | Title-safe (inside the central 90 % of the frame) | FAIL | exempt |
226
+ | Reading floor (on screen at least as long as the line takes to read) | FAIL | exempt |
227
+
228
+ Also checked:
229
+
230
+ - Every `copy.lines` entry must appear on screen: exit 17 quoting the line.
231
+ - WARN, and the look must answer it: text that equals or contains the request,
232
+ the idea, a file name or an internal term; canvas text not measured; a
233
+ sample where something other than text moved; less than half of the beat
234
+ midpoints showing any non-text image.
235
+ - Fonts outside the verified set: WARN, FAIL on copy.
236
+
237
+ ## Stage gate
238
+
239
+ `$M gate --out DIR` re-measures the exports and the sound and rewrites the
240
+ report without touching `manifest.json`, so a recorded look round stays valid
241
+ and the viewed count carries over.
242
+
243
+ | Rule | What fails |
244
+ |---|---|
245
+ | MO-C-03 | more than 3 general or 3 red flashes in any 1 s window (the grid turns for 9:16) |
246
+ | MO-C-09 | a sample frame that differs in a fresh replay (exit 18) |
247
+ | MO-C-10 | a film that is not exactly 1920×1080 or 1080×1920 as the format says |
248
+ | MO-C-11 | tags other than yuv420p, bt709, tv, or under 30 fps |
249
+ | MO-C-12 | a length more than 10 % from `durationSec` |
250
+ | MO-C-13 | a preview over 3 MB or a poster over 1 MB |
251
+ | MO-C-14 | a reduced-motion still (the final beat's midpoint) with no ink |
252
+ | MO-D-03 | an empty, near-black run longer than 2.4 s (1 s more at either end of the film) |
253
+ | text rules | the Text QA table above |
254
+ | sound | a missing stream, a length more than 0.1 s off, a peak over −0.5 dBFS, or (generated beds) a silence over 1.5 s in the first 3 s |
255
+
256
+ ## Effects and determinism
257
+
258
+ `filter: blur()`, `backdrop-filter`, `mix-blend-mode`, `box-shadow`, SVG
259
+ `feGaussianBlur`, Canvas2D `shadowBlur` and WebGL shaders all capture the same
260
+ way twice on the software renderer. A WebGL context needs the software GL;
261
+ without it the stage exits 11.
@@ -0,0 +1,122 @@
1
+ # Style bibles
2
+
3
+ On the type path the treatment (`treatment.md`) already fixes the idea, the
4
+ audience, the arc, the palette and the sound. The style bible adds the look
5
+ decisions the type engine will not make by itself. Write it in your own words
6
+ for this film. Under bare `lit` do not ask the user; choose, then label each
7
+ choice as a default in the final reply.
8
+
9
+ ## The style-bible template
10
+
11
+ Fill every field. A field left open is decided by the engine's preset default.
12
+ The right-hand column says what a useful answer contains; it is not an answer
13
+ to copy.
14
+
15
+ | Field | What to write | A useful answer names |
16
+ |---|---|---|
17
+ | Idea | The treatment's `idea`, unchanged | <the treatment's one sentence> |
18
+ | Preset | `swiss-signal`, `terminalcore` or `tidal`, and why | <the preset> because <what in this film calls for it> |
19
+ | Palette | The preset palette, or one stated swap inside its rules | <the swap and the brief key that sets it> |
20
+ | Voices | Which text is display, body, machine | <which line takes which voice> |
21
+ | Motion tone | The preset's named tokens you rely on | <entrance, hold and cut tokens> |
22
+ | Shot list | One line per shot: scene id, text, what moves | <scene id>: <line>, <what moves> |
23
+ | Accent | The one moment that gets the accent, or none | <the line index and why> |
24
+ | Anti-slop | Two or three things this film must not do | <habits this film avoids> |
25
+ | Originality | The visual idea that belongs to this film only | <a device drawn from the subject's specifics> |
26
+
27
+ The shot list maps directly to the brief JSON: `text` is the list of lines in
28
+ order and `scenes` is the optional list of scene ids in the same order.
29
+
30
+ ## Auto-pick (MO-B-00)
31
+
32
+ The engine reads the brief's `text`, `mood` and `topic` and takes the first row
33
+ that matches. Latin keywords match as whole words only; Korean keywords match
34
+ only at the start of a token, so a keyword never fires inside a longer word it
35
+ merely ends. An explicit `"style"` in the brief always wins over this table.
36
+ The report labels a style you chose as `agent default`; it says
37
+ `user-specified` only when the user's own request named that style.
38
+
39
+ | Brief mentions | Preset |
40
+ |---|---|
41
+ | 터미널, 해커 / terminal, hacker, CRT | `terminalcore` |
42
+ | 물결, 파도, 잔잔한, 흐름 / gradient, wave, tide, calm | `tidal` |
43
+ | anything else | `swiss-signal` |
44
+
45
+ `system`, `status` and a bare `flow` are deliberately not keywords: they appear
46
+ in payment-system, design-system and workflow briefs that have nothing to do
47
+ with a terminal or a tide. The manifest records the pick and the reason, and the
48
+ gate report prints them on its `preset:` line.
49
+
50
+ ## swiss-signal (MO-B-01)
51
+
52
+ Print precision on paper. The ground is bone `#E9EBE4`; type is ink `#0C0E13`
53
+ (16:1 either way round). One signal hue, teal `#0F7A82`, is for large type (32 px
54
+ and up, or 25 px bold), rules and bars, never small body copy: it measures about
55
+ 4.2:1 on bone. One accent, `#D9A441`, belongs to a single moment and never to
56
+ text; the engine shows it as a small square at the title's rule for at most two
57
+ beats and never on more than 10% of the film's frames. Graphite `#4B5058` is
58
+ reserved for non-text marks.
59
+
60
+ Voices: Archivo for display type (fetched width instances 75/100/125 at weights
61
+ 500/700/900; 500 stands in for 400 because that is what the pinned set ships),
62
+ PretendardGOV Regular or Bold for any Hangul, MesloLGS NF for annotations.
63
+ Motion tokens: `slam` (180 ms on the proven deceleration curve, entrance scale
64
+ 0.96 to 1, never from zero), `hold` for the reading time, `snap-cut` at the beat.
65
+ The title slam steps Latin width from 125 to 100 halfway through its landing;
66
+ Hangul never takes that step. Passes: `swiss-grid` hairline rules as the layout
67
+ backbone, then `dither` at low strength as a printed grain. Grid: 12 columns,
68
+ 24 px gutter, 96 px margin, 8 px baseline, compositions left-anchored rather than
69
+ centred.
70
+
71
+ Anti-slop: centred fade-in words as the only move; one ease for every beat;
72
+ glitch without a reason; any rainbow or second signal hue; bloom on anything but
73
+ the signal; a hold so long it reads as a stall.
74
+
75
+ ## terminalcore (MO-B-02)
76
+
77
+ A terminal interface, not a code-rain poster. Background navy `#05070A`, window
78
+ panel `#0C1116`, one signal hue per film: phosphor green `#39FF6A` by default or
79
+ electric blue `#2FB6FF` (`"signalHue": "blue"`), never both. Both clear 4.5:1 on
80
+ navy and panel, so body-size readouts are safe; grey `#7C8B93` (5.7:1) is for
81
+ chrome labels.
82
+
83
+ Voices: Galmuri9 for Hangul (always at a multiple of its 9 px grid, 45 px or
84
+ more on screen), VT323 for Latin display, MesloLGS NF for status readouts,
85
+ Silkscreen for window-chrome labels only. Galmuri and VT323 never share one line
86
+ cell for cell. Motion tokens: `type-in` at 22 characters per second with no ease
87
+ (Hangul appears a whole 어절 at a time), `boot-flicker` for the first 250 ms of the
88
+ film, bounded by the CRT flicker cap, and `hard-cut` on the beat. Passes, in
89
+ order: `terminal-ui` (window chrome, meters, caret drawn as a Canvas2D layer),
90
+ `crt` (scanlines, curvature, seeded triad grain, capped flicker, phosphor
91
+ persistence over the two previous frames of the same shot), `dither` (Bayer4,
92
+ 2 px cells), `glitch` (at most one scheduled hit per shot of 1.8 s or longer).
93
+
94
+ Anti-slop: falling code rain; neon purple-cyan haze; continuous glitch; both
95
+ signal hues in one film; pixel type too small for its grid.
96
+
97
+ ## tidal (MO-B-03)
98
+
99
+ Slow water. Background indigo `#0E1420` under a moving two-stop gradient of deep
100
+ teal `#124559` and violet `#4C3B6E`; type off-white `#E8ECEF` (15:1 on indigo,
101
+ 8:1 or better on either stop, so no scrim is needed). Coral `#E07856` is a rare
102
+ accent for one moment only.
103
+
104
+ Voices: Archivo at a calmer weight (700) for display, PretendardGOV for Hangul,
105
+ Meslo for small notes. Motion tokens: `drift` (opacity over up to 1.2 s and a
106
+ 24 px rise over up to 2.4 s, both on the in-out sine token, matched to the
107
+ gradient's flow speed) and `surge-punch`, a gradient brightening with attack
108
+ 0.15 s and decay 0.25 s that lands on each shot's opening. Passes: `tidal-gradient`
109
+ (domain-warped flow seeded per shot), `swiss-grid` for layout rules with guides
110
+ off, and `glitch` as rare punctuation: at most one hit in the whole film, on the
111
+ longest middle shot, at 0.5 hits per second or less.
112
+
113
+ Anti-slop: a hue-cycling rainbow; bloom on the gradient; glitch as texture; type
114
+ riding a flow so fast it blurs under motion sampling.
115
+
116
+ ## Originality
117
+
118
+ The pattern transfers, never the values of the film this engine came from: one
119
+ small named palette, one signal, one rare accent, three voices. Invent this
120
+ brief's own visual idea per shot. Do not reuse scene names, motifs or copy from
121
+ any source film. Keep example subjects neutral and fictional unless the user
122
+ supplied them.
@@ -0,0 +1,164 @@
1
+ # Treatment
2
+
3
+ Every film starts here. Write `treatment.json` in the run's output directory
4
+ before any render. The validator runs before every `stage` and `run` call,
5
+ stills-only included, and exits 16 (`BLOCKED_TREATMENT_INVALID`) naming the
6
+ first field that breaks a rule. Nothing renders until it passes.
7
+
8
+ The treatment is a director's plan: what the film is about, who watches it and
9
+ where, how it is shaped over time, what is drawn on screen, how it sounds, and
10
+ what would make it excellent. Write it from the request, not from the example
11
+ below.
12
+
13
+ ## Load order
14
+
15
+ 1. This file, always first.
16
+ 2. Set `path`. Then load only that path's references:
17
+ - `stage`: `stage.md` (authoring contract, kit, capture, QA), then
18
+ `craft-loop.md` (look rounds and done).
19
+ - `type`: `engine-contract.md`, `style-bibles.md`, `type-craft.md`, then
20
+ `craft-loop.md`.
21
+ 3. `runtime.md` only when a command exits 10, 11, 12, 14 or 15.
22
+
23
+ The stage path never needs a type-path reference.
24
+
25
+ ## Path rule
26
+
27
+ - `type` when the words themselves are the film: the user asked for kinetic
28
+ type, a lyric or quote video, a title sequence or typographic motion, or
29
+ supplied words with no other subject. Type films are 16:9.
30
+ - `stage` for every other film, including any film that needs shapes, drawn
31
+ objects, diagrams or imagery beyond type. Supplied words on the stage path
32
+ become stage copy.
33
+ - A 9:16 film always takes the stage path.
34
+
35
+ The router may add a line "Type-led cue found: ...". It is a hint that the
36
+ request contains a type compound, an explicit lyric or kinetic-type ask, or a
37
+ quoted phrase. It never decides the path; you do, from the whole request.
38
+
39
+ ## Fields
40
+
41
+ Normalization, used by several rules: NFC, lowercase, then remove whitespace,
42
+ punctuation and symbols. Before any comparison against `request`, every quoted
43
+ span is removed from it.
44
+
45
+ | Field | Rule |
46
+ |---|---|
47
+ | `request` | The user's words, verbatim. |
48
+ | `genre` | `announcement`, `brand-mood`, `event`, `explainer`, `motion-graphics`, `type-led` or `other`. |
49
+ | `path`, `pathReason` | `type` or `stage`, per the path rule. `type` needs `copy.source: user` or a type-led cue in `request`, and `format: 16:9`. |
50
+ | `idea` | One sentence: the film's own idea. It must not share a normalized run of min(10, half the normalized request length) characters with the request. |
51
+ | `audience`, `channel` | Who watches, and where it plays. |
52
+ | `format`, `formatReason` | `16:9` (1920×1080) or `9:16` (1080×1920), with a reason tied to `channel`. |
53
+ | `durationSec` | 4 to 90. Unless the user asked for a length, `announcement`, `event`, `explainer` and `motion-graphics` run at least 10 s. |
54
+ | `beats[]` | `{t0, t1, purpose, onScreen, motion, sound}` each. They cover 0 to `durationSec` with no gap over 0.25 s, every beat lasts at least 1.2 s, and there are at least as many beats as the genre's arc has stages. |
55
+ | `subject` | `{name, source: user or invented, specifics[]}`. When the request names no specific subject, invent one: a name plus at least 2 concrete specifics (what it is or does, for whom, one distinctive detail). |
56
+ | `visualDevices[]` | `{kind, role: subject, support or texture, beats[]}`, where `beats` lists beat indexes from 0. Kinds: `illustration`, `diagram`, `chart`, `icon`, `shape`, `path`, `mask`, `depth3d`, `particles`, `grid`, `gradient`, `photo-texture`. |
57
+ | `typePlan` | `{faces[], hierarchy, maxWordsOnScreen}`. Faces come from this product's verified set: Pretendard, Archivo, Galmuri9, VT323, Silkscreen, MesloLGS NF. |
58
+ | `palette[]` | 3 to 6 `{color: "#rrggbb", role}` entries. |
59
+ | `sound` | `{mode, plan, palette}`; `file` for `supplied` and `authored`. |
60
+ | `copy` | `{source: user or invented, lines[]}`. |
61
+ | `inventions[]` | Every invented part. Required when the subject or the copy is invented, and it must contain `subject.name` when the subject is invented. |
62
+ | `ambition` | One or two sentences, in craft terms, on what would make this film excellent for this request. |
63
+
64
+ ### Stage-path device rules
65
+
66
+ - At least one `role: subject` device. It is a drawn depiction of what the film
67
+ is about, not a background, and its beats cover at least half of
68
+ `durationSec`.
69
+ - At least 2 distinct counting kinds. `grid`, `gradient`, `particles` and
70
+ `photo-texture` are always `texture` and never count.
71
+
72
+ ### Copy rules
73
+
74
+ - `copy.source: user` when the user supplied the words. Every normalized line
75
+ must be a substring of the normalized request, quoted spans included. Keep
76
+ the user's words exactly; line breaks are yours.
77
+ - `copy.source: invented` when the request supplies no film words. Write the
78
+ copy from `subject.specifics`, never from the request's wording: no invented
79
+ line may share the idea's substring limit with the request. List the copy in
80
+ `inventions[]`.
81
+ - A line that could be pasted unchanged into a film about a different subject
82
+ is not copy yet. Name the specific thing.
83
+
84
+ ### Sound rules
85
+
86
+ - `generated` is the default under bare `lit`, on both paths. The `sound`
87
+ subcommand builds a deterministic bed from the treatment: tempo, pulse and a
88
+ pad chord progression, plus accents only where a beat's `sound` field asks
89
+ (a hit on a cut, a rise into a change, a closing cadence). `sound.palette` is
90
+ one of `soft-mallet`, `warm-keys`, `glass-pulse` or `low-strings`; key and
91
+ tempo follow from the treatment, so two films rarely share a bed. The reply
92
+ labels the bed as generated.
93
+ - `supplied`: the user's WAV, named in `sound.file`, relative to the output dir.
94
+ - `authored`: a WAV you wrote into the stage dir (`stage/*.wav`).
95
+ - `none` only when the user asked for silence, or when the channel plays muted
96
+ by design (say so in `channel`).
97
+
98
+ Any supplied, authored or generated track is muxed on either path. It is
99
+ padded or trimmed to the film with a 50 ms fade; it never shortens the film.
100
+
101
+ ## Genre arcs
102
+
103
+ The arc sets the minimum number of beats. Length comes from the arc, never
104
+ from a wish to be short.
105
+
106
+ - **announcement:** hook → context → key moment → details → close.
107
+ - **brand-mood:** motif → variation → peak → resolve.
108
+ - **event:** hook → what, when, where → highlight → close.
109
+ - **explainer:** question → steps → result → recap.
110
+ - **motion-graphics:** opening motif → set piece → set piece → peak → resolve.
111
+ - **type-led:** one breath per line, with emphasis and pause.
112
+ - **other:** at least 3 beats with a clear opening, middle and close.
113
+
114
+ ## Craft rules
115
+
116
+ - Show the subject; do not only name it. With the sound muted and every word hidden, the drawn subject alone should still suggest what the film is about.
117
+ - Aim for professional motion-design craft in every film: varied transitions (match cuts, masks, morphs), rhythm locked to the sound, layered depth, clear hierarchy, deliberate easing. Every beat shows something new. Length comes from the arc; never shorten the film or merge beats to pass a check.
118
+
119
+ ## Placeholder example
120
+
121
+ This shows the shape of every field. Its values are placeholders: the validator
122
+ rejects any `<...>` value, and it rejects a treatment whose free-text values
123
+ mostly equal this example's (`copiedExample`). Do not copy it; write your own.
124
+
125
+ ```json
126
+ {
127
+ "request": "<the user's words, verbatim>",
128
+ "genre": "<one genre id>",
129
+ "path": "<type or stage>",
130
+ "pathReason": "<why this path fits>",
131
+ "idea": "<one sentence: the film's own idea>",
132
+ "audience": "<who watches>",
133
+ "channel": "<where it plays>",
134
+ "format": "<16:9 or 9:16>",
135
+ "formatReason": "<why this format suits the channel>",
136
+ "durationSec": "<4–90>",
137
+ "beats": [
138
+ { "t0": "<start s>", "t1": "<end s>", "purpose": "<arc stage>", "onScreen": "<what is drawn>", "motion": "<how it moves>", "sound": "<what the sound does here>" }
139
+ ],
140
+ "subject": { "name": "<a specific name>", "source": "<user or invented>", "specifics": ["<what it is or does>", "<for whom>", "<one distinctive detail>"] },
141
+ "visualDevices": [
142
+ { "kind": "<device kind>", "role": "<subject, support or texture>", "beats": ["<beat index>"] }
143
+ ],
144
+ "typePlan": { "faces": ["<verified face>"], "hierarchy": "<levels of type>", "maxWordsOnScreen": "<n>" },
145
+ "palette": [
146
+ { "color": "<#rrggbb>", "role": "<what this colour does>" }
147
+ ],
148
+ "sound": { "mode": "<generated, supplied, authored or none>", "plan": "<how the sound follows the arc>", "palette": "<timbre palette>" },
149
+ "copy": { "source": "<user or invented>", "lines": ["<line>"] },
150
+ "inventions": ["<every invented part>"],
151
+ "ambition": "<one or two sentences in craft terms>"
152
+ }
153
+ ```
154
+
155
+ ## Never downgrade to pass
156
+
157
+ Do not answer a gate failure by shortening the film, removing a beat, removing
158
+ the subject device, switching `sound.mode` to `none`, switching `path` to
159
+ `type`, or deleting effects. Fix the cause instead: a scrim behind type, a
160
+ larger size, a new placement, different timing, seeded randomness. Or deliver
161
+ with the failure stated. The done-check compares the final treatment with the
162
+ first valid one and records `downgraded` when the duration dropped by more than
163
+ 20 %, there are fewer subject beats, sound became `none` without a user
164
+ request, or the path went from stage to type. The reply must then say so.
@@ -0,0 +1,92 @@
1
+ # Korean and Latin type craft
2
+
3
+ The engine enforces most of these rules in code; this page is what to aim for
4
+ when you write the brief and read the stills.
5
+
6
+ ## Fonts per voice
7
+
8
+ | Voice | Latin | Hangul |
9
+ |---|---|---|
10
+ | display (swiss, tidal) | Archivo width instance 75/100/125 x weight 500/700/900 | PretendardGOV Bold (700) |
11
+ | body (swiss, tidal) | Archivo 100 width | PretendardGOV Regular or Bold |
12
+ | display and body (terminalcore) | VT323 | Galmuri9 |
13
+ | machine | MesloLGS NF | PretendardGOV Regular (swiss, tidal) or Galmuri9 (terminalcore) |
14
+ | chrome label (terminalcore) | Silkscreen | Galmuri9 |
15
+ | stroke | EMS single-stroke SVG (Allure for signatures) | none; stroke text is Latin only |
16
+
17
+ PretendardGOV Regular and Bold are this product's own lit-pptx pair, reused by
18
+ path and checked against its recorded hashes. Hangul weight moves only between
19
+ those two files. Every other font is fetched by the pre-warm from a pinned URL
20
+ and checked by sha256 before a render may use it. Galmuri and Pretendard carry
21
+ reserved names, so they are only ever used unmodified, never subset.
22
+
23
+ ## Script runs
24
+
25
+ A line is split into Latin and Hangul runs. Digits, punctuation and spaces are
26
+ not a script: they join the run on their left, or the run on their right when
27
+ nothing precedes them. So `2026년` is one Hangul run and `LIT팀` is `LIT` plus
28
+ `팀`. Each run takes its own font, and tracking or width motion applies to Latin
29
+ runs only. A Hangul run is always untracked and never condensed, expanded or
30
+ stepped through width instances, even inside a Latin line.
31
+
32
+ ## Kerning and split words
33
+
34
+ The engine lays out a whole line once with the font's kerning, then places each
35
+ piece of a split word at its glyph position inside that line. It never measures
36
+ `text.slice(0, i)`, which silently drops the kern between the last drawn glyph
37
+ and the next one. Karaoke words and list items all come from the whole-line
38
+ layout.
39
+
40
+ ## Line breaks and 어절
41
+
42
+ Korean lines break only at whitespace between 어절. A word too wide for the
43
+ measure stays whole on its own line. Karaoke reveal steps and terminal type-in
44
+ never show half a 어절.
45
+
46
+ ## Punctuation
47
+
48
+ Display strings go through `smart()`: straight quotes become curly, leading
49
+ elisions ('til, 'cause, '90s) get an apostrophe, `...` becomes `…`. Terminalcore
50
+ keeps typewriter punctuation (`plain()`), because a terminal types straight
51
+ quotes.
52
+
53
+ ## Tracking, line height, measure
54
+
55
+ | Rule | Floor or range |
56
+ |---|---|
57
+ | Display tracking | not tighter than -0.04 em (the engine uses -0.02 em on Latin titles) |
58
+ | Machine, body and label tracking | 0 or looser |
59
+ | Two wrapped lines, Latin | line height >= 1.5 |
60
+ | Two wrapped lines, Hangul or mixed | >= 1.6 |
61
+ | Three or more lines | >= 1.4 (the engine uses 1.6) |
62
+ | Latin paragraph card | 60-75 characters per line |
63
+ | Korean paragraph card | 30-45 characters, advisory only |
64
+
65
+ ## Contrast
66
+
67
+ Body type needs 4.5:1 against what is actually painted behind it; large type
68
+ (32 px and up, or 25 px at weight 700 and up) needs 3:1. The gate measures the
69
+ median of the glyph pixels under a mask eroded by 1 px against the 5th and 95th
70
+ percentile of the background around the word, so very thin small strokes read
71
+ lighter than their palette colour suggests. Give small annotations full ink or
72
+ a larger size rather than a mid tint. Never fix contrast with an outline or a
73
+ halo: move the word, change its colour inside the palette, or pick a calmer
74
+ background moment.
75
+
76
+ ## Size floors
77
+
78
+ - Galmuri9 renders on a 9 px grid: use multiples of 9 px and at least 45 px on
79
+ screen, or it blurs into its own strokes.
80
+ - Hold small type at weight 400 or heavier; large Hangul slams use Bold, because
81
+ thin strokes break down under motion sampling.
82
+ - Every glyph's ink stays inside the title-safe rectangle 96-1824 x 54-1026 at
83
+ 1080p; non-type graphics stay inside 48-1872 x 27-1053.
84
+
85
+ ## Reading time
86
+
87
+ Every unit holds at least its floor: 0.2 s per Hangul syllable plus one word per
88
+ 0.3 s (3.3 words/s), at least 0.9 s for a Latin line and 1.0 s for any line with
89
+ Hangul, 0.5 s for a word shown alone, 0.35 s for a reveal step inside a line that
90
+ stays visible, and never more than 17 Latin characters per second on a line. A
91
+ 4-어절 line of 14 syllables therefore needs 2.8 s; the generator gives it 3.5 s
92
+ before snapping to the beat.