@litfamily/litopencode 1.0.7 → 1.0.10

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 (726) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README-Ko-KR.md +348 -31
  3. package/README.md +347 -29
  4. package/dist/activation-primary-prompts.d.ts +1 -0
  5. package/dist/activation-primary-prompts.js +16 -0
  6. package/dist/activation-probe.js +4 -1
  7. package/dist/activation-prompt-utils.d.ts +1 -1
  8. package/dist/activation-routing.d.ts +6 -1
  9. package/dist/activation-routing.js +174 -16
  10. package/dist/activation-workflow-prompts.d.ts +1 -1
  11. package/dist/activation-workflow-prompts.js +18 -17
  12. package/dist/activation.d.ts +15 -8
  13. package/dist/activation.js +61 -7
  14. package/dist/agents/defaults.js +14 -6
  15. package/dist/cli/command-aliases.js +24 -22
  16. package/dist/cli/doctor.js +5 -0
  17. package/dist/cli/install-report.d.ts +1 -0
  18. package/dist/cli/install-report.js +4 -0
  19. package/dist/cli/install.js +7 -4
  20. package/dist/cli/managed-skill-assets.d.ts +1 -1
  21. package/dist/cli/managed-skill-assets.js +15 -5
  22. package/dist/cli/motion-runtime.d.ts +6 -0
  23. package/dist/cli/motion-runtime.js +46 -0
  24. package/dist/cli/native-skill-install.js +32 -9
  25. package/dist/cli/native-skill-integrity.js +1 -0
  26. package/dist/cli/native-skills.d.ts +2 -0
  27. package/dist/cli/native-skills.js +2 -1
  28. package/dist/cli/office-dependencies.d.ts +14 -0
  29. package/dist/cli/office-dependencies.js +24 -0
  30. package/dist/cli.js +13 -3
  31. package/dist/commands.d.ts +2 -11
  32. package/dist/commands.js +9 -17
  33. package/dist/deliverable-hedge-guard.d.ts +20 -21
  34. package/dist/deliverable-hedge-guard.js +234 -275
  35. package/dist/features.d.ts +81 -2
  36. package/dist/features.js +80 -13
  37. package/dist/hooks.d.ts +3 -2
  38. package/dist/hooks.js +4 -4
  39. package/dist/ignition.d.ts +1 -1
  40. package/dist/ignition.js +15 -4
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/interface-handoff.d.ts +1 -0
  44. package/dist/interface-handoff.js +1 -0
  45. package/dist/jev-skill-hint.d.ts +48 -0
  46. package/dist/jev-skill-hint.js +291 -0
  47. package/dist/motion-image-reads.d.ts +6 -0
  48. package/dist/motion-image-reads.js +46 -0
  49. package/dist/server.js +38 -20
  50. package/dist/skill-renames.d.ts +4 -2
  51. package/dist/skill-renames.js +12 -4
  52. package/dist/skills.d.ts +31 -3
  53. package/dist/skills.js +53 -9
  54. package/dist/tools.js +4 -4
  55. package/docs/ab/S11/baseline-desktop.webp +0 -0
  56. package/docs/ab/S11/baseline-phone.webp +0 -0
  57. package/docs/ab/S11/lit-desktop.webp +0 -0
  58. package/docs/ab/S11/lit-phone.webp +0 -0
  59. package/docs/ab/S3/baseline-desktop.webp +0 -0
  60. package/docs/ab/S3/baseline-phone.webp +0 -0
  61. package/docs/ab/S3/lit-desktop.webp +0 -0
  62. package/docs/ab/S3/lit-phone.webp +0 -0
  63. package/docs/ab/S4/baseline-desktop.webp +0 -0
  64. package/docs/ab/S4/baseline-phone.webp +0 -0
  65. package/docs/ab/S4/lit-desktop.webp +0 -0
  66. package/docs/ab/S4/lit-phone.webp +0 -0
  67. package/docs/ab/S5/lit-slides.webp +0 -0
  68. package/docs/ab/S7/lit-diagram.webp +0 -0
  69. package/docs/ab/S8/baseline-slides.webp +0 -0
  70. package/docs/ab/S8/lit-slides.webp +0 -0
  71. package/docs/ab/S9/lit-pages.webp +0 -0
  72. package/docs/assets/cover-motion-still.webp +0 -0
  73. package/docs/assets/cover-motion.webp +0 -0
  74. package/docs/assets/readme/badge-version.svg +1 -1
  75. package/docs/assets/skills/autoconference.webp +0 -0
  76. package/docs/assets/skills/automatic-guards.webp +0 -0
  77. package/docs/assets/skills/autoresearch.webp +0 -0
  78. package/docs/assets/skills/browser-drive.webp +0 -0
  79. package/docs/assets/skills/debugging.webp +0 -0
  80. package/docs/assets/skills/deep-interview.webp +0 -0
  81. package/docs/assets/skills/doctor-installer.webp +0 -0
  82. package/docs/assets/skills/durable-litgoal.webp +0 -0
  83. package/docs/assets/skills/frontend-ui-ux.webp +0 -0
  84. package/docs/assets/skills/lit-burnoff-file.webp +0 -0
  85. package/docs/assets/skills/lit-burnoff.webp +0 -0
  86. package/docs/assets/skills/lit-code.webp +0 -0
  87. package/docs/assets/skills/lit-commit.webp +0 -0
  88. package/docs/assets/skills/lit-comprehend.webp +0 -0
  89. package/docs/assets/skills/lit-crucible.webp +0 -0
  90. package/docs/assets/skills/lit-diagram-drawer.webp +0 -0
  91. package/docs/assets/skills/lit-docx.webp +0 -0
  92. package/docs/assets/skills/lit-fetch.webp +0 -0
  93. package/docs/assets/skills/lit-handoff.webp +0 -0
  94. package/docs/assets/skills/lit-humanizer.webp +0 -0
  95. package/docs/assets/skills/lit-init.webp +0 -0
  96. package/docs/assets/skills/lit-plan.webp +0 -0
  97. package/docs/assets/skills/lit-pptx.webp +0 -0
  98. package/docs/assets/skills/lit-recap.webp +0 -0
  99. package/docs/assets/skills/lit-scientific-visualization.webp +0 -0
  100. package/docs/assets/skills/lit-typographic-motion.webp +0 -0
  101. package/docs/assets/skills/litresearch.webp +0 -0
  102. package/docs/assets/skills/litwork.webp +0 -0
  103. package/docs/assets/skills/lsp-setup.webp +0 -0
  104. package/docs/assets/skills/lsp.webp +0 -0
  105. package/docs/assets/skills/readme-studio.webp +0 -0
  106. package/docs/assets/skills/refactor.webp +0 -0
  107. package/docs/assets/skills/review-work.webp +0 -0
  108. package/docs/assets/skills/rules.webp +0 -0
  109. package/docs/assets/skills/start-work.webp +0 -0
  110. package/docs/assets/skills/structural-search.webp +0 -0
  111. package/docs/assets/skills/visual-qa.webp +0 -0
  112. package/docs/assets/skills/wikify.webp +0 -0
  113. package/docs/privacy.md +12 -0
  114. package/docs/reference-Ko-KR.md +44 -1
  115. package/docs/reference.md +49 -2
  116. package/package.json +1 -1
  117. package/rules/bundled-rules/lit-humanizer.md +12 -0
  118. package/skills/autoconference/SKILL.md +1 -1
  119. package/skills/autoconference/assets/report_template.md +1 -1
  120. package/skills/autoresearch/references/type-checklists.md +1 -1
  121. package/skills/browser-drive/SKILL.md +19 -5
  122. package/skills/browser-drive/scripts/capability-probe.mjs +26 -5
  123. package/skills/frontend-ui-ux/SKILL.md +10 -15
  124. package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +10 -0
  125. package/skills/frontend-ui-ux/references/adaptive-layout.md +3 -11
  126. package/skills/frontend-ui-ux/references/brand-and-imagery.md +6 -11
  127. package/skills/frontend-ui-ux/references/complete-contract.md +10 -3
  128. package/skills/frontend-ui-ux/references/composition.md +1 -7
  129. package/skills/frontend-ui-ux/references/craft-floor.md +94 -0
  130. package/skills/frontend-ui-ux/references/creative-directions.md +1 -7
  131. package/skills/frontend-ui-ux/references/evidence-review.md +2 -12
  132. package/skills/frontend-ui-ux/references/implementation-platforms.md +1 -4
  133. package/skills/frontend-ui-ux/references/inclusive-interface.md +1 -3
  134. package/skills/frontend-ui-ux/references/interaction-motion.md +1 -7
  135. package/skills/frontend-ui-ux/references/motion-guide.md +125 -0
  136. package/skills/frontend-ui-ux/references/operating-lanes.md +2 -8
  137. package/skills/frontend-ui-ux/references/product-direction.md +1 -6
  138. package/skills/frontend-ui-ux/references/production.md +12 -5
  139. package/skills/frontend-ui-ux/references/redesign-playbook.md +1 -7
  140. package/skills/frontend-ui-ux/references/slop-register.md +103 -0
  141. package/skills/frontend-ui-ux/references/system-foundations.md +1 -8
  142. package/skills/frontend-ui-ux/references/taste-direction.md +4 -11
  143. package/skills/frontend-ui-ux/references/visual-language.md +1 -6
  144. package/skills/frontend-ui-ux/references/visual-reconstruction.md +2 -7
  145. package/skills/frontend-ui-ux/scripts/probe-page.mjs +326 -0
  146. package/skills/frontend-ui-ux/scripts/probe-server.mjs +24 -0
  147. package/skills/frontend-ui-ux/scripts/probe-static.mjs +42 -0
  148. package/skills/frontend-ui-ux/scripts/probe-thresholds.json +86 -0
  149. package/skills/frontend-ui-ux/scripts/probe.mjs +183 -0
  150. package/skills/lit-comprehend/SKILL.md +10 -11
  151. package/skills/lit-comprehend/references/artifact-template.md +2 -18
  152. package/skills/lit-comprehend/scripts/verify-explainer.ts +0 -14
  153. package/skills/lit-diagram-drawer/NOTICE.md +33 -0
  154. package/skills/lit-diagram-drawer/SKILL.md +101 -0
  155. package/skills/lit-diagram-drawer/assets/examples/type-architecture-dark.html +1 -0
  156. package/skills/lit-diagram-drawer/assets/examples/type-architecture-full.html +1 -0
  157. package/skills/lit-diagram-drawer/assets/examples/type-architecture-light.html +1 -0
  158. package/skills/lit-diagram-drawer/assets/examples/type-bar-dark.html +1 -0
  159. package/skills/lit-diagram-drawer/assets/examples/type-bar-full.html +1 -0
  160. package/skills/lit-diagram-drawer/assets/examples/type-bar-light.html +1 -0
  161. package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-dark.html +1 -0
  162. package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-full.html +1 -0
  163. package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-light.html +1 -0
  164. package/skills/lit-diagram-drawer/assets/examples/type-bubble-dark.html +1 -0
  165. package/skills/lit-diagram-drawer/assets/examples/type-bubble-full.html +1 -0
  166. package/skills/lit-diagram-drawer/assets/examples/type-bubble-light.html +1 -0
  167. package/skills/lit-diagram-drawer/assets/examples/type-bump-dark.html +1 -0
  168. package/skills/lit-diagram-drawer/assets/examples/type-bump-full.html +1 -0
  169. package/skills/lit-diagram-drawer/assets/examples/type-bump-light.html +1 -0
  170. package/skills/lit-diagram-drawer/assets/examples/type-data-flow-dark.html +1 -0
  171. package/skills/lit-diagram-drawer/assets/examples/type-data-flow-full.html +1 -0
  172. package/skills/lit-diagram-drawer/assets/examples/type-data-flow-light.html +1 -0
  173. package/skills/lit-diagram-drawer/assets/examples/type-datalake-dark.html +1 -0
  174. package/skills/lit-diagram-drawer/assets/examples/type-datalake-full.html +1 -0
  175. package/skills/lit-diagram-drawer/assets/examples/type-datalake-light.html +1 -0
  176. package/skills/lit-diagram-drawer/assets/examples/type-db-schema-dark.html +1 -0
  177. package/skills/lit-diagram-drawer/assets/examples/type-db-schema-full.html +1 -0
  178. package/skills/lit-diagram-drawer/assets/examples/type-db-schema-light.html +1 -0
  179. package/skills/lit-diagram-drawer/assets/examples/type-dependency-dark.html +1 -0
  180. package/skills/lit-diagram-drawer/assets/examples/type-dependency-full.html +1 -0
  181. package/skills/lit-diagram-drawer/assets/examples/type-dependency-light.html +1 -0
  182. package/skills/lit-diagram-drawer/assets/examples/type-deployment-dark.html +1 -0
  183. package/skills/lit-diagram-drawer/assets/examples/type-deployment-full.html +1 -0
  184. package/skills/lit-diagram-drawer/assets/examples/type-deployment-light.html +1 -0
  185. package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-dark.html +1 -0
  186. package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-full.html +1 -0
  187. package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-light.html +1 -0
  188. package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-dark.html +1 -0
  189. package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-full.html +1 -0
  190. package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-light.html +1 -0
  191. package/skills/lit-diagram-drawer/assets/examples/type-er-dark.html +1 -0
  192. package/skills/lit-diagram-drawer/assets/examples/type-er-full.html +1 -0
  193. package/skills/lit-diagram-drawer/assets/examples/type-er-light.html +1 -0
  194. package/skills/lit-diagram-drawer/assets/examples/type-fishbone-dark.html +1 -0
  195. package/skills/lit-diagram-drawer/assets/examples/type-fishbone-full.html +1 -0
  196. package/skills/lit-diagram-drawer/assets/examples/type-fishbone-light.html +1 -0
  197. package/skills/lit-diagram-drawer/assets/examples/type-flowchart-dark.html +1 -0
  198. package/skills/lit-diagram-drawer/assets/examples/type-flowchart-full.html +1 -0
  199. package/skills/lit-diagram-drawer/assets/examples/type-flowchart-light.html +1 -0
  200. package/skills/lit-diagram-drawer/assets/examples/type-gantt-dark.html +1 -0
  201. package/skills/lit-diagram-drawer/assets/examples/type-gantt-full.html +1 -0
  202. package/skills/lit-diagram-drawer/assets/examples/type-gantt-light.html +1 -0
  203. package/skills/lit-diagram-drawer/assets/examples/type-heatmap-dark.html +1 -0
  204. package/skills/lit-diagram-drawer/assets/examples/type-heatmap-full.html +1 -0
  205. package/skills/lit-diagram-drawer/assets/examples/type-heatmap-light.html +1 -0
  206. package/skills/lit-diagram-drawer/assets/examples/type-high-level-dark.html +1 -0
  207. package/skills/lit-diagram-drawer/assets/examples/type-high-level-full.html +1 -0
  208. package/skills/lit-diagram-drawer/assets/examples/type-high-level-light.html +1 -0
  209. package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-dark.html +1 -0
  210. package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-full.html +1 -0
  211. package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-light.html +1 -0
  212. package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-dark.html +1 -0
  213. package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-full.html +1 -0
  214. package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-light.html +1 -0
  215. package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-dark.html +1 -0
  216. package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-full.html +1 -0
  217. package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-light.html +1 -0
  218. package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-dark.html +1 -0
  219. package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-full.html +1 -0
  220. package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-light.html +1 -0
  221. package/skills/lit-diagram-drawer/assets/examples/type-it-state-dark.html +1 -0
  222. package/skills/lit-diagram-drawer/assets/examples/type-it-state-full.html +1 -0
  223. package/skills/lit-diagram-drawer/assets/examples/type-it-state-light.html +1 -0
  224. package/skills/lit-diagram-drawer/assets/examples/type-journey-dark.html +1 -0
  225. package/skills/lit-diagram-drawer/assets/examples/type-journey-full.html +1 -0
  226. package/skills/lit-diagram-drawer/assets/examples/type-journey-light.html +1 -0
  227. package/skills/lit-diagram-drawer/assets/examples/type-kanban-dark.html +1 -0
  228. package/skills/lit-diagram-drawer/assets/examples/type-kanban-full.html +1 -0
  229. package/skills/lit-diagram-drawer/assets/examples/type-kanban-light.html +1 -0
  230. package/skills/lit-diagram-drawer/assets/examples/type-layers-dark.html +1 -0
  231. package/skills/lit-diagram-drawer/assets/examples/type-layers-full.html +1 -0
  232. package/skills/lit-diagram-drawer/assets/examples/type-layers-light.html +1 -0
  233. package/skills/lit-diagram-drawer/assets/examples/type-line-dark.html +1 -0
  234. package/skills/lit-diagram-drawer/assets/examples/type-line-full.html +1 -0
  235. package/skills/lit-diagram-drawer/assets/examples/type-line-light.html +1 -0
  236. package/skills/lit-diagram-drawer/assets/examples/type-loop-dark.html +1 -0
  237. package/skills/lit-diagram-drawer/assets/examples/type-loop-full.html +1 -0
  238. package/skills/lit-diagram-drawer/assets/examples/type-loop-light.html +1 -0
  239. package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-dark.html +1 -0
  240. package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-full.html +1 -0
  241. package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-light.html +1 -0
  242. package/skills/lit-diagram-drawer/assets/examples/type-marimekko-dark.html +1 -0
  243. package/skills/lit-diagram-drawer/assets/examples/type-marimekko-full.html +1 -0
  244. package/skills/lit-diagram-drawer/assets/examples/type-marimekko-light.html +1 -0
  245. package/skills/lit-diagram-drawer/assets/examples/type-medallion-dark.html +1 -0
  246. package/skills/lit-diagram-drawer/assets/examples/type-medallion-full.html +1 -0
  247. package/skills/lit-diagram-drawer/assets/examples/type-medallion-light.html +1 -0
  248. package/skills/lit-diagram-drawer/assets/examples/type-nested-dark.html +1 -0
  249. package/skills/lit-diagram-drawer/assets/examples/type-nested-full.html +1 -0
  250. package/skills/lit-diagram-drawer/assets/examples/type-nested-light.html +1 -0
  251. package/skills/lit-diagram-drawer/assets/examples/type-org-chart-dark.html +1 -0
  252. package/skills/lit-diagram-drawer/assets/examples/type-org-chart-full.html +1 -0
  253. package/skills/lit-diagram-drawer/assets/examples/type-org-chart-light.html +1 -0
  254. package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-dark.html +1 -0
  255. package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-full.html +1 -0
  256. package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-light.html +1 -0
  257. package/skills/lit-diagram-drawer/assets/examples/type-polar-dark.html +1 -0
  258. package/skills/lit-diagram-drawer/assets/examples/type-polar-full.html +1 -0
  259. package/skills/lit-diagram-drawer/assets/examples/type-polar-light.html +1 -0
  260. package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-dark.html +1 -0
  261. package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-full.html +1 -0
  262. package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-light.html +1 -0
  263. package/skills/lit-diagram-drawer/assets/examples/type-process-dark.html +1 -0
  264. package/skills/lit-diagram-drawer/assets/examples/type-process-full.html +1 -0
  265. package/skills/lit-diagram-drawer/assets/examples/type-process-light.html +1 -0
  266. package/skills/lit-diagram-drawer/assets/examples/type-pyramid-dark.html +1 -0
  267. package/skills/lit-diagram-drawer/assets/examples/type-pyramid-full.html +1 -0
  268. package/skills/lit-diagram-drawer/assets/examples/type-pyramid-light.html +1 -0
  269. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-dark.html +1 -0
  270. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-full.html +1 -0
  271. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-light.html +1 -0
  272. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-dark.html +1 -0
  273. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-full.html +1 -0
  274. package/skills/lit-diagram-drawer/assets/examples/type-quadrant-light.html +1 -0
  275. package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-dark.html +1 -0
  276. package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-full.html +1 -0
  277. package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-light.html +1 -0
  278. package/skills/lit-diagram-drawer/assets/examples/type-radar-dark.html +1 -0
  279. package/skills/lit-diagram-drawer/assets/examples/type-radar-full.html +1 -0
  280. package/skills/lit-diagram-drawer/assets/examples/type-radar-light.html +1 -0
  281. package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-dark.html +1 -0
  282. package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-full.html +1 -0
  283. package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-light.html +1 -0
  284. package/skills/lit-diagram-drawer/assets/examples/type-sankey-dark.html +1 -0
  285. package/skills/lit-diagram-drawer/assets/examples/type-sankey-full.html +1 -0
  286. package/skills/lit-diagram-drawer/assets/examples/type-sankey-light.html +1 -0
  287. package/skills/lit-diagram-drawer/assets/examples/type-scatter-dark.html +1 -0
  288. package/skills/lit-diagram-drawer/assets/examples/type-scatter-full.html +1 -0
  289. package/skills/lit-diagram-drawer/assets/examples/type-scatter-light.html +1 -0
  290. package/skills/lit-diagram-drawer/assets/examples/type-sequence-dark.html +1 -0
  291. package/skills/lit-diagram-drawer/assets/examples/type-sequence-full.html +1 -0
  292. package/skills/lit-diagram-drawer/assets/examples/type-sequence-light.html +1 -0
  293. package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-dark.html +1 -0
  294. package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-full.html +1 -0
  295. package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-light.html +1 -0
  296. package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-dark.html +1 -0
  297. package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-full.html +1 -0
  298. package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-light.html +1 -0
  299. package/skills/lit-diagram-drawer/assets/examples/type-state-dark.html +1 -0
  300. package/skills/lit-diagram-drawer/assets/examples/type-state-full.html +1 -0
  301. package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-dark.html +1 -0
  302. package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-full.html +1 -0
  303. package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-light.html +1 -0
  304. package/skills/lit-diagram-drawer/assets/examples/type-state-light.html +1 -0
  305. package/skills/lit-diagram-drawer/assets/examples/type-story-map-dark.html +1 -0
  306. package/skills/lit-diagram-drawer/assets/examples/type-story-map-full.html +1 -0
  307. package/skills/lit-diagram-drawer/assets/examples/type-story-map-light.html +1 -0
  308. package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-dark.html +1 -0
  309. package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-full.html +1 -0
  310. package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-light.html +1 -0
  311. package/skills/lit-diagram-drawer/assets/examples/type-swimlane-dark.html +1 -0
  312. package/skills/lit-diagram-drawer/assets/examples/type-swimlane-full.html +1 -0
  313. package/skills/lit-diagram-drawer/assets/examples/type-swimlane-light.html +1 -0
  314. package/skills/lit-diagram-drawer/assets/examples/type-timeline-dark.html +1 -0
  315. package/skills/lit-diagram-drawer/assets/examples/type-timeline-full.html +1 -0
  316. package/skills/lit-diagram-drawer/assets/examples/type-timeline-light.html +1 -0
  317. package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-dark.html +1 -0
  318. package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-full.html +1 -0
  319. package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-light.html +1 -0
  320. package/skills/lit-diagram-drawer/assets/examples/type-tree-dark.html +1 -0
  321. package/skills/lit-diagram-drawer/assets/examples/type-tree-full.html +1 -0
  322. package/skills/lit-diagram-drawer/assets/examples/type-tree-light.html +1 -0
  323. package/skills/lit-diagram-drawer/assets/examples/type-treemap-dark.html +1 -0
  324. package/skills/lit-diagram-drawer/assets/examples/type-treemap-full.html +1 -0
  325. package/skills/lit-diagram-drawer/assets/examples/type-treemap-light.html +1 -0
  326. package/skills/lit-diagram-drawer/assets/examples/type-uml-class-dark.html +1 -0
  327. package/skills/lit-diagram-drawer/assets/examples/type-uml-class-full.html +1 -0
  328. package/skills/lit-diagram-drawer/assets/examples/type-uml-class-light.html +1 -0
  329. package/skills/lit-diagram-drawer/assets/examples/type-venn-dark.html +1 -0
  330. package/skills/lit-diagram-drawer/assets/examples/type-venn-full.html +1 -0
  331. package/skills/lit-diagram-drawer/assets/examples/type-venn-light.html +1 -0
  332. package/skills/lit-diagram-drawer/assets/examples/type-wardley-dark.html +1 -0
  333. package/skills/lit-diagram-drawer/assets/examples/type-wardley-full.html +1 -0
  334. package/skills/lit-diagram-drawer/assets/examples/type-wardley-light.html +1 -0
  335. package/skills/lit-diagram-drawer/assets/examples/type-waterfall-dark.html +1 -0
  336. package/skills/lit-diagram-drawer/assets/examples/type-waterfall-full.html +1 -0
  337. package/skills/lit-diagram-drawer/assets/examples/type-waterfall-light.html +1 -0
  338. package/skills/lit-diagram-drawer/assets/fonts/OFL.txt +94 -0
  339. package/skills/lit-diagram-drawer/assets/fonts/PretendardVariable.woff2 +0 -0
  340. package/skills/lit-diagram-drawer/assets/fonts/provenance.json +23 -0
  341. package/skills/lit-diagram-drawer/assets/icons.html +231 -0
  342. package/skills/lit-diagram-drawer/assets/licenses/devicon-MIT.txt +20 -0
  343. package/skills/lit-diagram-drawer/assets/licenses/diagram-design-MIT.txt +21 -0
  344. package/skills/lit-diagram-drawer/assets/licenses/log-z-MIT.txt +21 -0
  345. package/skills/lit-diagram-drawer/assets/licenses/simple-icons-CC0.md +30 -0
  346. package/skills/lit-diagram-drawer/assets/licenses/tabler-MIT.txt +21 -0
  347. package/skills/lit-diagram-drawer/examples/01-service-architecture/after.html +1 -0
  348. package/skills/lit-diagram-drawer/examples/01-service-architecture/brief.md +33 -0
  349. package/skills/lit-diagram-drawer/examples/02-release-decision/after.html +1 -0
  350. package/skills/lit-diagram-drawer/examples/02-release-decision/brief.md +18 -0
  351. package/skills/lit-diagram-drawer/examples/03-data-retention/after.html +1 -0
  352. package/skills/lit-diagram-drawer/examples/03-data-retention/brief.md +19 -0
  353. package/skills/lit-diagram-drawer/examples/04-oauth-sequence/after.html +1 -0
  354. package/skills/lit-diagram-drawer/examples/04-oauth-sequence/brief.md +17 -0
  355. package/skills/lit-diagram-drawer/examples/05-review-lanes/after.html +1 -0
  356. package/skills/lit-diagram-drawer/examples/05-review-lanes/brief.md +17 -0
  357. package/skills/lit-diagram-drawer/examples/06-rollout-gates/after.html +1 -0
  358. package/skills/lit-diagram-drawer/examples/06-rollout-gates/brief.md +17 -0
  359. package/skills/lit-diagram-drawer/examples/07-deployment-boundary/after.html +1 -0
  360. package/skills/lit-diagram-drawer/examples/07-deployment-boundary/brief.md +19 -0
  361. package/skills/lit-diagram-drawer/examples/08-policy-traces/after.html +1 -0
  362. package/skills/lit-diagram-drawer/examples/08-policy-traces/brief.md +20 -0
  363. package/skills/lit-diagram-drawer/references/accessibility.md +37 -0
  364. package/skills/lit-diagram-drawer/references/export.md +17 -0
  365. package/skills/lit-diagram-drawer/references/import-drawio.md +13 -0
  366. package/skills/lit-diagram-drawer/references/import-excalidraw.md +11 -0
  367. package/skills/lit-diagram-drawer/references/import-mermaid.md +12 -0
  368. package/skills/lit-diagram-drawer/references/import-schema.md +28 -0
  369. package/skills/lit-diagram-drawer/references/korean-typography.md +34 -0
  370. package/skills/lit-diagram-drawer/references/motion.md +29 -0
  371. package/skills/lit-diagram-drawer/references/office-pptx-docx.md +28 -0
  372. package/skills/lit-diagram-drawer/references/output-spec.md +48 -0
  373. package/skills/lit-diagram-drawer/references/primitive-annotation.md +12 -0
  374. package/skills/lit-diagram-drawer/references/primitive-icons.md +21 -0
  375. package/skills/lit-diagram-drawer/references/primitive-sketchy.md +11 -0
  376. package/skills/lit-diagram-drawer/references/primitive-terminal.md +11 -0
  377. package/skills/lit-diagram-drawer/references/profiles.md +24 -0
  378. package/skills/lit-diagram-drawer/references/semantic-patterns.md +27 -0
  379. package/skills/lit-diagram-drawer/references/style-guide.md +67 -0
  380. package/skills/lit-diagram-drawer/references/type-architecture.md +51 -0
  381. package/skills/lit-diagram-drawer/references/type-bar.md +51 -0
  382. package/skills/lit-diagram-drawer/references/type-beeswarm.md +49 -0
  383. package/skills/lit-diagram-drawer/references/type-bubble.md +49 -0
  384. package/skills/lit-diagram-drawer/references/type-bump.md +49 -0
  385. package/skills/lit-diagram-drawer/references/type-catalog.json +1433 -0
  386. package/skills/lit-diagram-drawer/references/type-data-flow.md +51 -0
  387. package/skills/lit-diagram-drawer/references/type-datalake.md +49 -0
  388. package/skills/lit-diagram-drawer/references/type-db-schema.md +49 -0
  389. package/skills/lit-diagram-drawer/references/type-dependency.md +49 -0
  390. package/skills/lit-diagram-drawer/references/type-deployment.md +49 -0
  391. package/skills/lit-diagram-drawer/references/type-dp-integration.md +49 -0
  392. package/skills/lit-diagram-drawer/references/type-dp-security-matrix.md +49 -0
  393. package/skills/lit-diagram-drawer/references/type-er.md +49 -0
  394. package/skills/lit-diagram-drawer/references/type-fishbone.md +49 -0
  395. package/skills/lit-diagram-drawer/references/type-flowchart.md +49 -0
  396. package/skills/lit-diagram-drawer/references/type-gantt.md +49 -0
  397. package/skills/lit-diagram-drawer/references/type-heatmap.md +53 -0
  398. package/skills/lit-diagram-drawer/references/type-high-level-vertical.md +53 -0
  399. package/skills/lit-diagram-drawer/references/type-high-level.md +53 -0
  400. package/skills/lit-diagram-drawer/references/type-import-drawio.md +53 -0
  401. package/skills/lit-diagram-drawer/references/type-import-excalidraw.md +53 -0
  402. package/skills/lit-diagram-drawer/references/type-import-mermaid.md +53 -0
  403. package/skills/lit-diagram-drawer/references/type-it-state.md +54 -0
  404. package/skills/lit-diagram-drawer/references/type-journey.md +54 -0
  405. package/skills/lit-diagram-drawer/references/type-kanban.md +54 -0
  406. package/skills/lit-diagram-drawer/references/type-layers.md +54 -0
  407. package/skills/lit-diagram-drawer/references/type-line.md +54 -0
  408. package/skills/lit-diagram-drawer/references/type-loop-terminal.md +53 -0
  409. package/skills/lit-diagram-drawer/references/type-loop.md +54 -0
  410. package/skills/lit-diagram-drawer/references/type-marimekko.md +54 -0
  411. package/skills/lit-diagram-drawer/references/type-medallion.md +54 -0
  412. package/skills/lit-diagram-drawer/references/type-nested.md +59 -0
  413. package/skills/lit-diagram-drawer/references/type-org-chart.md +58 -0
  414. package/skills/lit-diagram-drawer/references/type-paved-road-animated.md +72 -0
  415. package/skills/lit-diagram-drawer/references/type-polar.md +67 -0
  416. package/skills/lit-diagram-drawer/references/type-policy-trace-animated.md +69 -0
  417. package/skills/lit-diagram-drawer/references/type-process.md +58 -0
  418. package/skills/lit-diagram-drawer/references/type-pyramid.md +59 -0
  419. package/skills/lit-diagram-drawer/references/type-quadrant-consultant.md +60 -0
  420. package/skills/lit-diagram-drawer/references/type-quadrant.md +57 -0
  421. package/skills/lit-diagram-drawer/references/type-queue-animated.md +63 -0
  422. package/skills/lit-diagram-drawer/references/type-radar.md +57 -0
  423. package/skills/lit-diagram-drawer/references/type-ridgeline.md +63 -0
  424. package/skills/lit-diagram-drawer/references/type-sankey.md +68 -0
  425. package/skills/lit-diagram-drawer/references/type-scatter.md +60 -0
  426. package/skills/lit-diagram-drawer/references/type-sequence-oauth.md +66 -0
  427. package/skills/lit-diagram-drawer/references/type-sequence.md +63 -0
  428. package/skills/lit-diagram-drawer/references/type-slopegraph.md +65 -0
  429. package/skills/lit-diagram-drawer/references/type-state-lifecycle.md +53 -0
  430. package/skills/lit-diagram-drawer/references/type-state.md +59 -0
  431. package/skills/lit-diagram-drawer/references/type-story-map.md +52 -0
  432. package/skills/lit-diagram-drawer/references/type-streamgraph.md +53 -0
  433. package/skills/lit-diagram-drawer/references/type-swimlane.md +52 -0
  434. package/skills/lit-diagram-drawer/references/type-timeline.md +52 -0
  435. package/skills/lit-diagram-drawer/references/type-tree-block-decomposition.md +57 -0
  436. package/skills/lit-diagram-drawer/references/type-tree.md +54 -0
  437. package/skills/lit-diagram-drawer/references/type-treemap.md +54 -0
  438. package/skills/lit-diagram-drawer/references/type-uml-class.md +52 -0
  439. package/skills/lit-diagram-drawer/references/type-venn.md +51 -0
  440. package/skills/lit-diagram-drawer/references/type-wardley.md +52 -0
  441. package/skills/lit-diagram-drawer/references/type-waterfall.md +54 -0
  442. package/skills/lit-diagram-drawer/references/verifier-guide.md +59 -0
  443. package/skills/lit-diagram-drawer/scripts/block-registry.mjs +43 -0
  444. package/skills/lit-diagram-drawer/scripts/brief-contract.mjs +94 -0
  445. package/skills/lit-diagram-drawer/scripts/capability-probe.mjs +132 -0
  446. package/skills/lit-diagram-drawer/scripts/check-visible-text.mjs +15 -0
  447. package/skills/lit-diagram-drawer/scripts/craft-thresholds.json +15 -0
  448. package/skills/lit-diagram-drawer/scripts/diagram-metrics.mjs +216 -0
  449. package/skills/lit-diagram-drawer/scripts/doctor.mjs +8 -0
  450. package/skills/lit-diagram-drawer/scripts/drawio-extract.mjs +214 -0
  451. package/skills/lit-diagram-drawer/scripts/excalidraw-extract.mjs +151 -0
  452. package/skills/lit-diagram-drawer/scripts/export.mjs +133 -0
  453. package/skills/lit-diagram-drawer/scripts/import-shared.mjs +130 -0
  454. package/skills/lit-diagram-drawer/scripts/mermaid-extract.mjs +173 -0
  455. package/skills/lit-diagram-drawer/scripts/office-safety.mjs +120 -0
  456. package/skills/lit-diagram-drawer/scripts/renderer-safety.mjs +46 -0
  457. package/skills/lit-diagram-drawer/scripts/test-block-registry.mjs +20 -0
  458. package/skills/lit-diagram-drawer/scripts/test-brief-contract.mjs +27 -0
  459. package/skills/lit-diagram-drawer/scripts/test-importers.mjs +119 -0
  460. package/skills/lit-diagram-drawer/scripts/test-office-safety.mjs +67 -0
  461. package/skills/lit-diagram-drawer/scripts/test-sequence-verifier.mjs +28 -0
  462. package/skills/lit-diagram-drawer/scripts/test-visual-quality.mjs +68 -0
  463. package/skills/lit-diagram-drawer/scripts/verify-all.mjs +74 -0
  464. package/skills/lit-diagram-drawer/scripts/verify-brief.mjs +47 -0
  465. package/skills/lit-diagram-drawer/scripts/verify-coverage.mjs +56 -0
  466. package/skills/lit-diagram-drawer/scripts/verify-diagram.mjs +26 -0
  467. package/skills/lit-diagram-drawer/scripts/verify-motion.mjs +12 -0
  468. package/skills/lit-diagram-drawer/scripts/verify-type.mjs +48 -0
  469. package/skills/lit-diagram-drawer/scripts/visual-quality.mjs +363 -0
  470. package/skills/lit-docx/LICENSE-MIT.txt +21 -0
  471. package/skills/lit-docx/SKILL.md +78 -0
  472. package/skills/lit-docx/references/frontmatter_schema.md +42 -0
  473. package/skills/lit-docx/references/journal_style_spec.md +17 -0
  474. package/skills/lit-docx/references/markdown_quality_checklist.md +37 -0
  475. package/skills/lit-docx/references/slop_phrase_list.yaml +58 -0
  476. package/skills/lit-docx/references/slop_rules.md +35 -0
  477. package/skills/lit-docx/requirements.in +5 -0
  478. package/skills/lit-docx/requirements.lock +289 -0
  479. package/skills/lit-docx/run.py +64 -0
  480. package/skills/lit-docx/scripts/clean_markdown.py +95 -0
  481. package/skills/lit-docx/scripts/convert_md_to_docx.py +1047 -0
  482. package/skills/lit-docx/scripts/convert_md_to_pdf.py +281 -0
  483. package/skills/lit-docx/scripts/convert_pdf.py +130 -0
  484. package/skills/lit-docx/scripts/craft-thresholds.json +11 -0
  485. package/skills/lit-docx/scripts/craft_docx.py +83 -0
  486. package/skills/lit-docx/scripts/edit_docx.py +297 -0
  487. package/skills/lit-docx/scripts/embed_images.py +78 -0
  488. package/skills/lit-docx/scripts/generate_docx_templates.py +491 -0
  489. package/skills/lit-docx/scripts/slop_lint.py +485 -0
  490. package/skills/lit-docx/scripts/visual_audit.py +41 -0
  491. package/skills/lit-docx/templates/docx/acs.docx +0 -0
  492. package/skills/lit-docx/templates/docx/elsevier.docx +0 -0
  493. package/skills/lit-docx/templates/docx/ieee.docx +0 -0
  494. package/skills/lit-docx/templates/docx/korean-generic.docx +0 -0
  495. package/skills/lit-docx/templates/docx/nature.docx +0 -0
  496. package/skills/lit-docx/templates/latex/acs/README.md +5 -0
  497. package/skills/lit-docx/templates/latex/acs/template.tex +37 -0
  498. package/skills/lit-docx/templates/latex/elsevier/README.md +5 -0
  499. package/skills/lit-docx/templates/latex/elsevier/template.tex +38 -0
  500. package/skills/lit-docx/templates/latex/ieee/README.md +5 -0
  501. package/skills/lit-docx/templates/latex/ieee/template.tex +37 -0
  502. package/skills/lit-docx/templates/latex/korean-generic/README.md +5 -0
  503. package/skills/lit-docx/templates/latex/korean-generic/template.tex +37 -0
  504. package/skills/lit-docx/templates/latex/nature/README.md +5 -0
  505. package/skills/lit-docx/templates/latex/nature/template.tex +37 -0
  506. package/skills/lit-docx/templates/registry.yaml +1366 -0
  507. package/skills/lit-humanizer/NOTICE +160 -0
  508. package/skills/lit-humanizer/SKILL.md +122 -0
  509. package/skills/lit-humanizer/assets/always-on-rule.md +9 -0
  510. package/skills/lit-humanizer/assets/report-skeleton.md +25 -0
  511. package/skills/lit-humanizer/assets/slide-text-skeleton.md +28 -0
  512. package/skills/lit-humanizer/examples/accessibility-note/after.md +7 -0
  513. package/skills/lit-humanizer/examples/accessibility-note/before.md +7 -0
  514. package/skills/lit-humanizer/examples/api-reference/after.md +9 -0
  515. package/skills/lit-humanizer/examples/api-reference/before.md +15 -0
  516. package/skills/lit-humanizer/examples/changelog/after.md +5 -0
  517. package/skills/lit-humanizer/examples/changelog/before.md +12 -0
  518. package/skills/lit-humanizer/examples/code-comments/after.md +10 -0
  519. package/skills/lit-humanizer/examples/code-comments/before.md +19 -0
  520. package/skills/lit-humanizer/examples/commit/after.md +5 -0
  521. package/skills/lit-humanizer/examples/commit/before.md +7 -0
  522. package/skills/lit-humanizer/examples/data-release/after.md +7 -0
  523. package/skills/lit-humanizer/examples/data-release/before.md +9 -0
  524. package/skills/lit-humanizer/examples/english-essay/after.md +5 -0
  525. package/skills/lit-humanizer/examples/english-essay/before.md +5 -0
  526. package/skills/lit-humanizer/examples/incident-update/after.md +7 -0
  527. package/skills/lit-humanizer/examples/incident-update/before.md +7 -0
  528. package/skills/lit-humanizer/examples/ko-essay/after.md +7 -0
  529. package/skills/lit-humanizer/examples/ko-essay/before.md +9 -0
  530. package/skills/lit-humanizer/examples/ko-report/after.md +9 -0
  531. package/skills/lit-humanizer/examples/ko-report/before.md +13 -0
  532. package/skills/lit-humanizer/examples/ko-slide/after.md +19 -0
  533. package/skills/lit-humanizer/examples/ko-slide/before.md +21 -0
  534. package/skills/lit-humanizer/examples/meeting-brief/after.md +9 -0
  535. package/skills/lit-humanizer/examples/meeting-brief/before.md +11 -0
  536. package/skills/lit-humanizer/examples/policy-faq/after.md +9 -0
  537. package/skills/lit-humanizer/examples/policy-faq/before.md +9 -0
  538. package/skills/lit-humanizer/examples/pr/after.md +15 -0
  539. package/skills/lit-humanizer/examples/pr/before.md +17 -0
  540. package/skills/lit-humanizer/examples/project-update/after.md +7 -0
  541. package/skills/lit-humanizer/examples/project-update/before.md +9 -0
  542. package/skills/lit-humanizer/examples/readme/after.md +12 -0
  543. package/skills/lit-humanizer/examples/readme/before.md +14 -0
  544. package/skills/lit-humanizer/examples/report/after.md +13 -0
  545. package/skills/lit-humanizer/examples/report/before.md +11 -0
  546. package/skills/lit-humanizer/examples/research-abstract/after.md +5 -0
  547. package/skills/lit-humanizer/examples/research-abstract/before.md +5 -0
  548. package/skills/lit-humanizer/examples/slides/after.md +19 -0
  549. package/skills/lit-humanizer/examples/slides/before.md +19 -0
  550. package/skills/lit-humanizer/examples/troubleshooting/after.md +11 -0
  551. package/skills/lit-humanizer/examples/troubleshooting/before.md +11 -0
  552. package/skills/lit-humanizer/fixtures/ko-metrics-golden.json +49 -0
  553. package/skills/lit-humanizer/fixtures/office/minimal.docx +0 -0
  554. package/skills/lit-humanizer/fixtures/office/minimal.pptx +0 -0
  555. package/skills/lit-humanizer/fixtures/pos-real.txt +26 -0
  556. package/skills/lit-humanizer/fixtures/rule-cases.json +306 -0
  557. package/skills/lit-humanizer/references/code-patterns.md +468 -0
  558. package/skills/lit-humanizer/references/deliverable-channels.md +111 -0
  559. package/skills/lit-humanizer/references/en-patterns-checklist.md +43 -0
  560. package/skills/lit-humanizer/references/en-patterns-content.md +243 -0
  561. package/skills/lit-humanizer/references/en-patterns-structure.md +375 -0
  562. package/skills/lit-humanizer/references/en-patterns.md +57 -0
  563. package/skills/lit-humanizer/references/ko-metrics.md +33 -0
  564. package/skills/lit-humanizer/references/ko-patterns-a-d.md +659 -0
  565. package/skills/lit-humanizer/references/ko-patterns-e-j.md +387 -0
  566. package/skills/lit-humanizer/references/ko-patterns.md +31 -0
  567. package/skills/lit-humanizer/references/rewrite-playbook.md +54 -0
  568. package/skills/lit-humanizer/references/taxonomy.md +153 -0
  569. package/skills/lit-humanizer/rules.json +884 -0
  570. package/skills/lit-humanizer/scripts/core.mjs +208 -0
  571. package/skills/lit-humanizer/scripts/detect.mjs +91 -0
  572. package/skills/lit-humanizer/scripts/extract_office_text.py +89 -0
  573. package/skills/lit-humanizer/scripts/guard-scan.mjs +36 -0
  574. package/skills/lit-humanizer/scripts/ko-metrics.mjs +124 -0
  575. package/skills/lit-humanizer/scripts/test-fixtures.mjs +54 -0
  576. package/skills/lit-humanizer/scripts/test-ko-metrics.mjs +27 -0
  577. package/skills/lit-pptx/FORBIDDEN_TERMS.json +55 -0
  578. package/skills/lit-pptx/NOTICE.md +3 -0
  579. package/skills/lit-pptx/SKILL.md +76 -0
  580. package/skills/lit-pptx/agents/analyst.md +49 -0
  581. package/skills/lit-pptx/agents/antithesis.md +59 -0
  582. package/skills/lit-pptx/agents/architect.md +44 -0
  583. package/skills/lit-pptx/agents/critic.md +42 -0
  584. package/skills/lit-pptx/agents/synthesizer.md +47 -0
  585. package/skills/lit-pptx/agents/thesis.md +33 -0
  586. package/skills/lit-pptx/assets/azure/circle-lg.png +0 -0
  587. package/skills/lit-pptx/assets/azure/circle-md.png +0 -0
  588. package/skills/lit-pptx/assets/azure/circle-sm.png +0 -0
  589. package/skills/lit-pptx/fonts/a2z-font/A2Z-Black.otf +0 -0
  590. package/skills/lit-pptx/fonts/a2z-font/A2Z-Bold.otf +0 -0
  591. package/skills/lit-pptx/fonts/a2z-font/A2Z-Light.otf +0 -0
  592. package/skills/lit-pptx/fonts/a2z-font/A2Z-Medium.otf +0 -0
  593. package/skills/lit-pptx/fonts/a2z-font/A2Z-Regular.otf +0 -0
  594. package/skills/lit-pptx/fonts/a2z-font/OFL.txt +94 -0
  595. package/skills/lit-pptx/fonts/a2z-font/SOURCE.md +29 -0
  596. package/skills/lit-pptx/package-lock.json +747 -0
  597. package/skills/lit-pptx/package.json +13 -0
  598. package/skills/lit-pptx/pretendard-font/LICENSE.txt +94 -0
  599. package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Bold.otf +0 -0
  600. package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Regular.otf +0 -0
  601. package/skills/lit-pptx/requirements.in +2 -0
  602. package/skills/lit-pptx/requirements.lock +285 -0
  603. package/skills/lit-pptx/run.mjs +71 -0
  604. package/skills/lit-pptx/scripts/check_ooxml.py +47 -0
  605. package/skills/lit-pptx/scripts/compile-deck.js +447 -0
  606. package/skills/lit-pptx/scripts/craft-thresholds.json +26 -0
  607. package/skills/lit-pptx/scripts/craft_extras.py +224 -0
  608. package/skills/lit-pptx/scripts/embed_fonts.py +204 -0
  609. package/skills/lit-pptx/scripts/layout_inventory.py +70 -0
  610. package/skills/lit-pptx/scripts/learn_template.py +433 -0
  611. package/skills/lit-pptx/scripts/lib/derive-palette.js +176 -0
  612. package/skills/lit-pptx/scripts/lib/directive-parser.js +244 -0
  613. package/skills/lit-pptx/scripts/lib/font-map.js +79 -0
  614. package/skills/lit-pptx/scripts/lib/gen-bg.js +85 -0
  615. package/skills/lit-pptx/scripts/lib/gen-gradient-assets.js +36 -0
  616. package/skills/lit-pptx/scripts/lib/layout-resolver.js +737 -0
  617. package/skills/lit-pptx/scripts/lib/markdown-loader.js +136 -0
  618. package/skills/lit-pptx/scripts/lib/render-adapter-html.js +364 -0
  619. package/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +1848 -0
  620. package/skills/lit-pptx/scripts/lib/slide-ast.js +534 -0
  621. package/skills/lit-pptx/scripts/lib/spec-validator.js +94 -0
  622. package/skills/lit-pptx/scripts/lib/template-registry.js +355 -0
  623. package/skills/lit-pptx/scripts/qa_deck.py +773 -0
  624. package/skills/lit-pptx/scripts/validate_pptx.py +206 -0
  625. package/skills/lit-pptx/specs/markdown-slide-spec-v1.md +251 -0
  626. package/skills/lit-pptx/specs/markdown-slide-spec-v2.md +223 -0
  627. package/skills/lit-pptx/specs/slide-ast-v1.schema.json +229 -0
  628. package/skills/lit-pptx/specs/slide-ast-v2.schema.json +144 -0
  629. package/skills/lit-pptx/specs/template-enrollment-contract.md +379 -0
  630. package/skills/lit-pptx/templates/bauhaus_light.css +4 -0
  631. package/skills/lit-pptx/templates/boilerplate_professional.css +508 -0
  632. package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/capabilities.yaml +146 -0
  633. package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +454 -0
  634. package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +37 -0
  635. package/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +154 -0
  636. package/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +483 -0
  637. package/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +37 -0
  638. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/capabilities.yaml +179 -0
  639. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/layout-mapping.yaml +299 -0
  640. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/template.yaml +45 -0
  641. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +181 -0
  642. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml +299 -0
  643. package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +44 -0
  644. package/skills/lit-scientific-visualization/SKILL.md +2 -0
  645. package/skills/lit-typographic-motion/NOTICE +23 -0
  646. package/skills/lit-typographic-motion/SKILL.md +77 -0
  647. package/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +25 -0
  648. package/skills/lit-typographic-motion/audio-analysis.py +52 -0
  649. package/skills/lit-typographic-motion/engine/browser.mjs +83 -0
  650. package/skills/lit-typographic-motion/engine/constants.mjs +177 -0
  651. package/skills/lit-typographic-motion/engine/contrast.mjs +101 -0
  652. package/skills/lit-typographic-motion/engine/encode.mjs +46 -0
  653. package/skills/lit-typographic-motion/engine/flash.mjs +216 -0
  654. package/skills/lit-typographic-motion/engine/look.mjs +166 -0
  655. package/skills/lit-typographic-motion/engine/page/common.js +105 -0
  656. package/skills/lit-typographic-motion/engine/page/engine.js +451 -0
  657. package/skills/lit-typographic-motion/engine/page/gl.js +213 -0
  658. package/skills/lit-typographic-motion/engine/page/lines.js +88 -0
  659. package/skills/lit-typographic-motion/engine/page/passes.js +144 -0
  660. package/skills/lit-typographic-motion/engine/page/post.js +119 -0
  661. package/skills/lit-typographic-motion/engine/page/scenes.js +187 -0
  662. package/skills/lit-typographic-motion/engine/page/type.js +321 -0
  663. package/skills/lit-typographic-motion/engine/png.mjs +139 -0
  664. package/skills/lit-typographic-motion/engine/sound.mjs +291 -0
  665. package/skills/lit-typographic-motion/engine/stage/capture.mjs +133 -0
  666. package/skills/lit-typographic-motion/engine/stage/clock.js +171 -0
  667. package/skills/lit-typographic-motion/engine/stage/frame-worker.mjs +47 -0
  668. package/skills/lit-typographic-motion/engine/stage/gate.mjs +119 -0
  669. package/skills/lit-typographic-motion/engine/stage/qa-page.js +158 -0
  670. package/skills/lit-typographic-motion/engine/stage/qa.mjs +208 -0
  671. package/skills/lit-typographic-motion/engine/stage/render.mjs +418 -0
  672. package/skills/lit-typographic-motion/engine/stage/scan.mjs +162 -0
  673. package/skills/lit-typographic-motion/engine/stage/stage-kit.js +310 -0
  674. package/skills/lit-typographic-motion/engine/stills.mjs +60 -0
  675. package/skills/lit-typographic-motion/engine/text.mjs +126 -0
  676. package/skills/lit-typographic-motion/engine/timing.mjs +289 -0
  677. package/skills/lit-typographic-motion/engine/treatment.mjs +254 -0
  678. package/skills/lit-typographic-motion/fonts/Archivo-100-400.ttf +0 -0
  679. package/skills/lit-typographic-motion/fonts/Archivo-100-700.ttf +0 -0
  680. package/skills/lit-typographic-motion/fonts/Archivo-100-900.ttf +0 -0
  681. package/skills/lit-typographic-motion/fonts/Archivo-125-400.ttf +0 -0
  682. package/skills/lit-typographic-motion/fonts/Archivo-125-700.ttf +0 -0
  683. package/skills/lit-typographic-motion/fonts/Archivo-125-900.ttf +0 -0
  684. package/skills/lit-typographic-motion/fonts/Archivo-75-400.ttf +0 -0
  685. package/skills/lit-typographic-motion/fonts/Archivo-75-700.ttf +0 -0
  686. package/skills/lit-typographic-motion/fonts/Archivo-75-900.ttf +0 -0
  687. package/skills/lit-typographic-motion/fonts/Archivo-OFL.txt +93 -0
  688. package/skills/lit-typographic-motion/fonts/Silkscreen-Bold.ttf +0 -0
  689. package/skills/lit-typographic-motion/fonts/Silkscreen-OFL.txt +93 -0
  690. package/skills/lit-typographic-motion/fonts/Silkscreen-Regular.ttf +0 -0
  691. package/skills/lit-typographic-motion/fonts/VT323-OFL.txt +93 -0
  692. package/skills/lit-typographic-motion/fonts/VT323-Regular.ttf +0 -0
  693. package/skills/lit-typographic-motion/fonts/pins.json +44 -0
  694. package/skills/lit-typographic-motion/fonts/stroke/CREDITS +52 -0
  695. package/skills/lit-typographic-motion/fonts/stroke/EMSAllure.svg +216 -0
  696. package/skills/lit-typographic-motion/fonts/stroke/EMSFelix.svg +216 -0
  697. package/skills/lit-typographic-motion/fonts/stroke/EMSOsmotron.svg +216 -0
  698. package/skills/lit-typographic-motion/fonts/stroke/EMSReadability.svg +216 -0
  699. package/skills/lit-typographic-motion/fonts/stroke/EMSTech.svg +217 -0
  700. package/skills/lit-typographic-motion/fonts/stroke/OFL.txt +85 -0
  701. package/skills/lit-typographic-motion/gate.mjs +593 -0
  702. package/skills/lit-typographic-motion/package-lock.json +78 -0
  703. package/skills/lit-typographic-motion/package.json +11 -0
  704. package/skills/lit-typographic-motion/probe.mjs +74 -0
  705. package/skills/lit-typographic-motion/references/authoring.md +110 -0
  706. package/skills/lit-typographic-motion/references/craft-loop.md +110 -0
  707. package/skills/lit-typographic-motion/references/runtime.md +88 -0
  708. package/skills/lit-typographic-motion/references/stage.md +164 -0
  709. package/skills/lit-typographic-motion/references/style-bibles.md +88 -0
  710. package/skills/lit-typographic-motion/references/treatment.md +143 -0
  711. package/skills/lit-typographic-motion/references/type-craft.md +55 -0
  712. package/skills/lit-typographic-motion/render.mjs +654 -0
  713. package/skills/lit-typographic-motion/requirements-audio.in +1 -0
  714. package/skills/lit-typographic-motion/requirements-audio.txt +790 -0
  715. package/skills/lit-typographic-motion/runtime.mjs +259 -0
  716. package/skills/lit-typographic-motion/word-timing-models.json +25 -0
  717. package/skills/litresearch/SKILL.md +41 -12
  718. package/skills/managed-skill-manifest.json +2367 -63
  719. package/skills/skill-rename-aliases.json +6 -1
  720. package/tools/check-pack-payload.mjs +22 -1
  721. package/tools/check-payload-substance.mjs +2 -2
  722. package/tools/payload-reference-exemptions.json +4 -0
  723. package/tools/payload-substance-allowlist.json +2 -3
  724. package/tools/payload-substance-parity.json +7 -7
  725. package/tools/version-manifests.json +2 -8
  726. package/skills/lit-korean/SKILL.md +0 -231
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ validate_pptx.py — lightweight anti-slop validator for PPTX outputs.
4
+
5
+ Checks deck text hygiene, title presence, placeholder/default copy, forbidden
6
+ terms, and coarse visual consistency signals. Prints JSON.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import json
12
+ import re
13
+ import sys
14
+ from collections import Counter
15
+ from pathlib import Path
16
+ from typing import Any
17
+
18
+ from pptx import Presentation
19
+ from pptx.dml.color import RGBColor
20
+ from pptx.enum.shapes import MSO_SHAPE_TYPE, PP_PLACEHOLDER
21
+
22
+
23
+ SKILL_DIR = Path(__file__).resolve().parent.parent # repo root (validate_pptx.py lives in scripts/)
24
+ FORBIDDEN_PATH = SKILL_DIR / "FORBIDDEN_TERMS.json"
25
+ DEFAULT_BAD_FONTS = {"Calibri", "Aptos"}
26
+ DEFAULT_PLACEHOLDER_TEXT = {
27
+ "click to add title",
28
+ "click to add subtitle",
29
+ "click to add text",
30
+ "title",
31
+ "subtitle",
32
+ }
33
+ MAX_DISTINCT_FILLS = 8
34
+ WEIGHTS = {
35
+ "missing_titles": 20,
36
+ "forbidden_terms": 20,
37
+ "default_placeholder_text": 20,
38
+ "default_fonts": 15,
39
+ "rainbow_fills": 10,
40
+ }
41
+
42
+
43
+ def _load_terms() -> tuple[list[str], list[str], bool, bool]:
44
+ if not FORBIDDEN_PATH.exists():
45
+ return [], [], True, False
46
+ data = json.loads(FORBIDDEN_PATH.read_text())
47
+ return (
48
+ data.get("terms", []),
49
+ data.get("soft_terms", []),
50
+ bool(data.get("case_insensitive", True)),
51
+ bool(data.get("whole_word", False)),
52
+ )
53
+
54
+
55
+ def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool) -> re.Pattern[str] | None:
56
+ if not terms:
57
+ return None
58
+ escaped = [re.escape(term) for term in terms]
59
+ pattern = "|".join(escaped)
60
+ if whole_word:
61
+ pattern = rf"(?:(?<=\W)|^)(?:{pattern})(?:(?=\W)|$)"
62
+ flags = re.IGNORECASE if case_insensitive else 0
63
+ return re.compile(pattern, flags)
64
+
65
+
66
+ def _shape_text(shape) -> str:
67
+ if not getattr(shape, "has_text_frame", False):
68
+ return ""
69
+ parts: list[str] = []
70
+ for paragraph in shape.text_frame.paragraphs:
71
+ chunk = "".join(run.text for run in paragraph.runs).strip()
72
+ if chunk:
73
+ parts.append(chunk)
74
+ return "\n".join(parts).strip()
75
+
76
+
77
+ def _shape_fill(shape) -> str | None:
78
+ fill = getattr(shape, "fill", None)
79
+ if fill is None or fill.type is None:
80
+ return None
81
+ try:
82
+ fore = getattr(fill, "fore_color", None)
83
+ except TypeError:
84
+ return None
85
+ rgb = getattr(fore, "rgb", None)
86
+ if isinstance(rgb, RGBColor):
87
+ return str(rgb)
88
+ if isinstance(rgb, str):
89
+ return rgb.upper()
90
+ return None
91
+
92
+
93
+ def _iter_runs(slide):
94
+ for shape in slide.shapes:
95
+ if not getattr(shape, "has_text_frame", False):
96
+ continue
97
+ for paragraph in shape.text_frame.paragraphs:
98
+ for run in paragraph.runs:
99
+ yield shape, run
100
+
101
+
102
+ def _slide_has_title(slide, slide_height: int | None) -> bool:
103
+ title_shape = getattr(slide.shapes, "title", None)
104
+ if title_shape is not None and _shape_text(title_shape):
105
+ return True
106
+ for shape in slide.shapes:
107
+ if not getattr(shape, "is_placeholder", False):
108
+ continue
109
+ placeholder = getattr(shape, "placeholder_format", None)
110
+ if placeholder and placeholder.type == PP_PLACEHOLDER.TITLE and _shape_text(shape):
111
+ return True
112
+ text_shapes = []
113
+ for shape in slide.shapes:
114
+ if not getattr(shape, "has_text_frame", False):
115
+ continue
116
+ text = _shape_text(shape)
117
+ if not text:
118
+ continue
119
+ text_shapes.append(shape)
120
+ top = getattr(shape, "top", None)
121
+ if slide_height is not None and top is not None and top <= slide_height * 0.22:
122
+ return True
123
+ if len(text_shapes) <= 2 and any(_shape_text(shape) for shape in text_shapes):
124
+ return True
125
+ return False
126
+
127
+
128
+ def lint(path: str | Path) -> dict[str, Any]:
129
+ prs = Presentation(str(path))
130
+ hard_terms, soft_terms, case_insensitive, whole_word = _load_terms()
131
+ hard_re = _build_regex(hard_terms, case_insensitive, whole_word)
132
+ soft_re = _build_regex(soft_terms, case_insensitive, whole_word)
133
+
134
+ missing_titles: list[int] = []
135
+ placeholder_hits: list[str] = []
136
+ hard_hits: list[str] = []
137
+ soft_hits: list[str] = []
138
+ default_font_hits: list[str] = []
139
+ fills: Counter[str] = Counter()
140
+
141
+ for slide_idx, slide in enumerate(prs.slides, start=1):
142
+ if not _slide_has_title(slide, prs.slide_height):
143
+ missing_titles.append(slide_idx)
144
+
145
+ for shape_idx, shape in enumerate(slide.shapes, start=1):
146
+ fill = _shape_fill(shape)
147
+ if fill:
148
+ fills[fill] += 1
149
+
150
+ text = _shape_text(shape)
151
+ if not text:
152
+ continue
153
+
154
+ lowered = text.strip().lower()
155
+ if lowered in DEFAULT_PLACEHOLDER_TEXT:
156
+ placeholder_hits.append(f"slide {slide_idx} shape {shape_idx}: {text[:80]}")
157
+
158
+ if hard_re and hard_re.search(text):
159
+ hard_hits.append(f"slide {slide_idx} shape {shape_idx}: {text[:120]}")
160
+ elif soft_re and soft_re.search(text):
161
+ soft_hits.append(f"slide {slide_idx} shape {shape_idx}: {text[:120]}")
162
+
163
+ for shape, run in _iter_runs(slide):
164
+ font_name = (run.font.name or "").strip()
165
+ if font_name in DEFAULT_BAD_FONTS:
166
+ default_font_hits.append(f"slide {slide_idx}: {font_name}")
167
+
168
+ last_slide_text = "\n".join(_shape_text(shape) for shape in prs.slides[-1].shapes if getattr(shape, "has_text_frame", False)).lower() if prs.slides else ""
169
+ has_source_note = "source:" in last_slide_text or "출처" in last_slide_text
170
+
171
+ failures = {
172
+ "missing_titles": bool(missing_titles),
173
+ "forbidden_terms": bool(hard_hits),
174
+ "default_placeholder_text": bool(placeholder_hits),
175
+ "default_fonts": bool(default_font_hits),
176
+ "rainbow_fills": len(fills) > MAX_DISTINCT_FILLS,
177
+ }
178
+ slop_score = sum(WEIGHTS[key] for key, failed in failures.items() if failed)
179
+
180
+ return {
181
+ "file": str(path),
182
+ "slide_count": len(prs.slides),
183
+ "pass": slop_score <= 10 and not hard_hits and not placeholder_hits,
184
+ "slop_score": slop_score,
185
+ "checks": {
186
+ "missing_titles": {"pass": not missing_titles, "slides": missing_titles},
187
+ "forbidden_terms": {"pass": not hard_hits, "hard_hits": hard_hits[:20], "soft_warnings": soft_hits[:20]},
188
+ "default_placeholder_text": {"pass": not placeholder_hits, "hits": placeholder_hits[:20]},
189
+ "default_fonts": {"pass": not default_font_hits, "hits": default_font_hits[:20]},
190
+ "rainbow_fills": {"pass": len(fills) <= MAX_DISTINCT_FILLS, "distinct_fills": len(fills), "sample": list(fills.keys())[:12]},
191
+ "missing_source_note": {"pass": has_source_note},
192
+ },
193
+ }
194
+
195
+
196
+ def main(argv: list[str]) -> int:
197
+ if len(argv) != 2:
198
+ print(f"Usage: {Path(argv[0]).name} <file.pptx>", file=sys.stderr)
199
+ return 2
200
+ report = lint(argv[1])
201
+ print(json.dumps(report, ensure_ascii=False, indent=2))
202
+ return 0 if report["pass"] else 1
203
+
204
+
205
+ if __name__ == "__main__":
206
+ raise SystemExit(main(sys.argv))
@@ -0,0 +1,251 @@
1
+ # Markdown Slide Specification v1
2
+
3
+ > **Status:** Superseded by `markdown-slide-spec-v2.md`, and still valid. This document
4
+ > defines the v1 contract; a deck written entirely to it compiles to a `slide-ast-v1`
5
+ > document exactly as before. v2 is additive — read it for placement (`region`,
6
+ > `columns`, `box`, `shape`), variants, and the open layout set. The one non-goal v2
7
+ > reverses is §11's ban on free-form absolute positioning.
8
+ > **Date:** 2026-04-19
9
+
10
+ The executive/research profile below is a backward-compatible authoring profile. It composes existing v1 blocks and does not add coordinates, CSS, directives, or AST types.
11
+
12
+ ## Purpose
13
+
14
+ Define a constrained Markdown + directive dialect that serves as the single authoring source for PPTX slide decks. The dialect must be:
15
+
16
+ 1. **LLM-friendly** — predictable structure, easy for agents to generate and edit.
17
+ 2. **Precision-first** — compiles into a versioned intermediate AST that preserves layout intent.
18
+ 3. **Template-aware** — resolves against enrolled template contracts, not hardcoded behavior.
19
+
20
+ ## 1. Deck Structure
21
+
22
+ A deck source file is a single Markdown file with:
23
+
24
+ 1. **YAML frontmatter** (required) — deck-level metadata enclosed in `---`.
25
+ 2. **Slide sections** — separated by `---` horizontal rules. Each section contains a layout directive and slide content.
26
+
27
+ ```
28
+ ---
29
+ template: AZURE-PRO
30
+ title: Deck Title
31
+ date: 2026.04.19
32
+ department: Department
33
+ presenter: Name
34
+ ---
35
+
36
+ ---
37
+ layout: cover
38
+
39
+ # Cover Title
40
+ ---
41
+
42
+ ---
43
+ layout: content
44
+
45
+ ## Section Title
46
+
47
+ - Bullet 1
48
+ - Bullet 2
49
+ ---
50
+ ```
51
+
52
+ ## 2. YAML Frontmatter
53
+
54
+ Required fields:
55
+
56
+ | Field | Type | Required | Description |
57
+ |-------|------|----------|-------------|
58
+ | `template` | string | yes | Enrolled template name (e.g. `AZURE-PRO`) |
59
+ | `title` | string | yes | Deck title |
60
+ | `date` | string | no | Presentation date |
61
+ | `department` | string | no | Department name |
62
+ | `presenter` | string | no | Presenter name |
63
+
64
+ ## 3. Slide Separators
65
+
66
+ Slides are delimited by `---` on its own line (standard Markdown horizontal rule). The content between two `---` markers is a single slide section.
67
+
68
+ Each slide section starts with a `layout` directive on the first non-empty line, followed by the slide content.
69
+
70
+ ## 4. Allowed Markdown Subset
71
+
72
+ ### 4.1 Permitted constructs
73
+
74
+ | Construct | Syntax | Notes |
75
+ |-----------|--------|-------|
76
+ | Headings | `#`, `##`, `###` | Level 1 for cover/closing titles, Level 2 for slide titles, Level 3 for sub-headings |
77
+ | Bullet lists | `- item` | Level 1 bullets |
78
+ | Bold text | `**text**` | Within list items for section headers |
79
+ | Numbered items | `(1) text` | Manual numbering with parenthesized Arabic numerals |
80
+ | Tables | `\| ... \|` | Standard Markdown pipe tables |
81
+ | Images | `![alt](path)` | With relative or absolute paths |
82
+ | Table links | `[label](https://...)` | Rendered as a clickable external PPTX hyperlink in table cells |
83
+ | Fenced blocks | `::: type ... :::` | Directive blocks (see §5) |
84
+
85
+ ### 4.2 Forbidden constructs
86
+
87
+ The following are **rejected at parse time** with explicit errors:
88
+
89
+ | Forbidden | Reason |
90
+ |-----------|--------|
91
+ | Raw HTML (`<div>`, `<span>`, etc.) | Bypasses template layout contracts |
92
+ | `<style>` blocks | CSS escapes break PPTX fidelity |
93
+ | Inline `style=` attributes | Arbitrary positioning breaks layout |
94
+ | Nested fenced blocks (`:::` inside `:::`) | Ambiguous directive nesting |
95
+ | Arbitrary CSS classes | Layout must come from template contracts |
96
+
97
+ ## 5. Directive Blocks
98
+
99
+ Directives use fenced blocks with `:::` delimiters. Each directive type has a specific contract.
100
+
101
+ ### 5.1 v1 Directive Set
102
+
103
+ | Directive | Purpose | Allowed in layouts |
104
+ |-----------|---------|--------------------|
105
+ | `main-box` | Bordered text box at bottom of slide | `main` |
106
+ | `summary-group` | Grouped summary content (top/bottom) | `summary` |
107
+ | `kpi-table` | Key Performance Indicator table | `main`, `content` |
108
+ | `image` | Positioned image with caption | `content`, `main` |
109
+ | `notes` | Speaker/footnotes | `content`, `main` |
110
+
111
+ ### 5.2 Directive Syntax
112
+
113
+ ```
114
+ ::: main-box
115
+ Text content for the bordered box.
116
+ :::
117
+ ```
118
+
119
+ ```
120
+ ::: kpi-table
121
+ | Metric | Target | Actual |
122
+ |--------|--------|--------|
123
+ | Revenue | 5000억 | 5450억 |
124
+ :::
125
+ ```
126
+
127
+ ```
128
+ ::: notes
129
+ Source: Internal data, Q1 2026.
130
+ :::
131
+ ```
132
+
133
+ ### 5.3 Nesting Rules
134
+
135
+ - Directive blocks **MUST NOT** be nested inside other directive blocks.
136
+ - Each `:::` open must have a matching `:::` close before another `:::` open.
137
+ - Violation produces a parse error with the offending line number.
138
+
139
+ ## 6. Layout Types
140
+
141
+ ### 6.1 v1 Approved Layouts
142
+
143
+ | Layout | Purpose | Required blocks |
144
+ |--------|---------|-----------------|
145
+ | `cover` | Opening slide | title (level 1) |
146
+ | `content` | Standard title + body | title (level 2), body |
147
+ | `main` | Content with optional bordered box | title (level 2), body, optional `main-box` |
148
+ | `summary` | Two-group hierarchical summary | title (level 2), summary-groups via `###` headings |
149
+ | `closing` | Thank-you slide | title (level 1) |
150
+
151
+ ### 6.2 Layout-specific content rules
152
+
153
+ - `cover`: Exactly one `#` heading. No body lists.
154
+ - `content`: One `##` heading. Body with bullet lists or tables.
155
+ - `main`: One `##` heading. Body with bullet lists. Optional `::: main-box`.
156
+ - `summary`: One `##` heading. Content organized under `###` sub-headings. The first `###` group maps to the top position, the second maps to the bottom position.
157
+ - `closing`: Exactly one `#` heading. No body content.
158
+
159
+ ## 7. Bullet Hierarchy
160
+
161
+ The template uses a two-level hierarchy:
162
+
163
+ **Level 1 — Section headers:**
164
+ ```
165
+ - **Section Title**
166
+ ```
167
+ Rendered as bold bullet with `•` character.
168
+
169
+ **Level 2 — Numbered sub-items:**
170
+ ```
171
+ (1) Detail item 1
172
+ (2) Detail item 2
173
+ ```
174
+ Rendered as indented numbered items with `(1)`, `(2)` format.
175
+
176
+ Indentation for level 2 items is 2 spaces.
177
+
178
+ ## 8. Failure Behavior
179
+
180
+ ### 8.1 Parse errors
181
+
182
+ When the parser encounters a forbidden construct:
183
+
184
+ 1. **Stop parsing immediately** — do not silently skip or degrade.
185
+ 2. **Report the file path**, slide index, and approximate **line number**.
186
+ 3. **Name the specific violation** (e.g., "arbitrary HTML `<div>` not allowed", "nested directives at line 42").
187
+
188
+ ### 8.2 Validation errors
189
+
190
+ When the compiled AST violates the schema:
191
+
192
+ 1. **Reject the entire deck** — do not produce partial output.
193
+ 2. **Report which slide and which block** failed validation.
194
+ 3. **Name the schema constraint** that was violated.
195
+
196
+ ## 9. AST Output Contract
197
+
198
+ The compiler emits a JSON object conforming to `slide-ast-v1.schema.json`.
199
+
200
+ Required top-level fields:
201
+
202
+ | Field | Type | Description |
203
+ |-------|------|-------------|
204
+ | `astVersion` | string | Must be `"slide-ast-v1"` |
205
+ | `version` | string | Schema version (semver) |
206
+ | `deck` | object | Template name, title, metadata |
207
+ | `slides` | array | Ordered array of slide objects |
208
+
209
+ Each slide object must have:
210
+
211
+ | Field | Type | Description |
212
+ |-------|------|-------------|
213
+ | `index` | number | 0-based slide position |
214
+ | `layout` | string | One of the approved layout types |
215
+ | `blocks` | array | Content blocks in order |
216
+
217
+ Each block must have:
218
+
219
+ | Field | Type | Description |
220
+ |-------|------|-------------|
221
+ | `type` | string | Block type: `title`, `body`, `main-box`, `summary-group`, `kpi-table`, `image`, `notes` |
222
+ | `content` or `items` | varies | Block payload |
223
+
224
+ ## 10. Relationship to Enrolled Templates
225
+
226
+ The AST is **template-independent**. It describes intent (layout, content structure), not pixel positions. Template-specific rendering (fonts, colors, positions, decorations) is resolved by the template registry and layout resolver at render time.
227
+
228
+ This means:
229
+ - The same AST can theoretically render through different enrolled templates.
230
+ - Template enrollment contracts declare which layouts and blocks they support.
231
+ - A deck targeting an unsupported layout/block for a given template produces a clear error, not a fallback.
232
+
233
+ ### 10.1 Evidence-oriented compositions
234
+
235
+ Enrolled templates may advertise these semantic compositions of existing blocks:
236
+
237
+ - **figure plus interpretation:** `image` + `figure-caption` + body interpretation;
238
+ - **table plus decision takeaway:** table/`kpi-table` + `table-caption` + body takeaway;
239
+ - **source capture:** `image` + `figure-caption` containing locator/source + body limitation/relevance;
240
+ - **two-record appendix evidence:** title/body or `summary-group`, with no more than two records and DOI/canonical links when available.
241
+
242
+ For a Markdown image used as evidence, alt text is the visible figure caption and should contain a figure number plus `Source:`/`출처:`. A blockquote immediately after a table is its visible table caption/source. Appendix DOI/canonical/raw URL fields use `[label](https://...)` in table cells so the PPTX contains an external hyperlink relationship. These requirements reuse existing parser and renderer behavior.
243
+
244
+ ## 11. Explicit Non-Goals for v1
245
+
246
+ - Full Marp compatibility.
247
+ - Arbitrary CSS as part of authoring input.
248
+ - Free-form absolute positioning in Markdown.
249
+ - Silent fallback or degradation for unsupported constructs.
250
+ - Raw HTML passthrough.
251
+ - JavaScript or interactive content.
@@ -0,0 +1,223 @@
1
+ # Markdown Slide Specification v2
2
+
3
+ > **Status:** Current. Additive over v1 — every v1 deck is a valid v2 deck and still
4
+ > compiles to a `slide-ast-v1` document.
5
+ > **Supersedes:** `markdown-slide-spec-v1.md`, which remains accurate for the subset
6
+ > it describes and is still the contract v1 decks are held to.
7
+ > **Date:** 2026-08-02
8
+
9
+ ## What changed and why
10
+
11
+ v1 froze one non-goal that turned out to be the binding constraint in real work:
12
+ *free-form absolute positioning in Markdown* (v1 §11). Combined with a closed set of
13
+ six layouts and a fixed block-to-region map, a deck could only look like the shapes
14
+ its template had anticipated. Building a cover the template did not already offer, or
15
+ putting two tables on one slide, was not difficult — it was unexpressible.
16
+
17
+ v2 opens placement in three tiers, so an author reaches for the least freedom that
18
+ says the thing rather than dropping straight to coordinates.
19
+
20
+ Nothing was removed. The v1 constructs, layouts, directives, separator rules and
21
+ failure behaviour are unchanged, and a deck that uses none of §2–§6 below compiles to
22
+ a byte-identical `slide-ast-v1` document.
23
+
24
+ ## 1. Version selection
25
+
26
+ The compiler chooses the AST version from the deck's content, not from a flag.
27
+
28
+ | Deck uses | `astVersion` |
29
+ |---|---|
30
+ | v1 constructs only | `slide-ast-v1` |
31
+ | any of: `region`, `columns`, `box`, `shape`, `chart`, a slide-local key, a layout outside the v1 six | `slide-ast-v2` |
32
+
33
+ An editable numeric chart uses a pipe table inside `::: chart type=bar` or
34
+ `::: chart type=line`. The first column supplies category labels; remaining
35
+ columns are numeric series. At least two category rows are required. Example:
36
+
37
+ ```
38
+ ::: chart type=bar
39
+ | 분기 | 매출 | 이익 |
40
+ | --- | ---: | ---: |
41
+ | 1Q | 120 | 18 |
42
+ | 2Q | 135 | 22 |
43
+ :::
44
+ ```
45
+
46
+ The PPTX route writes a native editable chart. Use `::: kpi-table` for a few
47
+ headline metrics, with labels in the header row and values in the one data row.
48
+
49
+ Both are accepted by the validator. This is what lets v1 fixtures and their assertions
50
+ stand untouched.
51
+
52
+ ## 2. Slide-local keys
53
+
54
+ Keys may follow the `layout:` line, ending at the first blank line:
55
+
56
+ ```
57
+ ---
58
+ layout: cover
59
+ variant: split-navy
60
+
61
+ # Title
62
+ ---
63
+ ```
64
+
65
+ **The key set is closed.** `variant` (§6) is the only slide-local key, and the run stops
66
+ at the first line that is not one of them. A line the engine does not act on stays in
67
+ the body.
68
+
69
+ That is the whole guarantee, and it is deliberately not "anything shaped like a key".
70
+ A body line reading `source: internal data` has exactly the shape of a key, and
71
+ consuming it would delete it from the slide with no error. The same rule keeps a
72
+ mistyped `varient:` visible in the body rather than turning it into an ignored key that
73
+ silently does nothing — a typo you can see beats a variant that never applied.
74
+
75
+ An earlier draft of this section claimed the blank line was the boundary and that prose
76
+ was therefore safe. It was not. The Korean example it used, `출처: 내부 자료`, survived
77
+ only because `출처` is not ASCII; the English equivalent was swallowed.
78
+
79
+ ## 3. Directive attributes
80
+
81
+ A directive line may carry positional values and `key=value` pairs:
82
+
83
+ ```
84
+ ::: box x=6.9 y=2.6 w=5.3 h=1.4 role="body text" z=over
85
+ ```
86
+
87
+ Numbers and booleans are coerced; quoted values keep their spaces. A v1 directive with
88
+ no arguments parses exactly as before, with an empty attribute map.
89
+
90
+ ## 4. Nesting by fence length
91
+
92
+ v1 forbade `:::` inside `:::` and every v1 deck depends on that. Rather than relax it,
93
+ containers nest by fence length — the pandoc fenced-div convention. A block closes on a
94
+ run of its own length, so `::::` may hold `:::` with no ambiguity.
95
+
96
+ - Same-length nesting: **error** (unchanged from v1)
97
+ - A longer fence inside a shorter one: **error**
98
+ - Depth beyond two: **error**
99
+
100
+ ## 5. Placement
101
+
102
+ ### 5.1 Tier 1 — `region`
103
+
104
+ ```
105
+ ::: region name=right_figure
106
+ | 항목 | 값 |
107
+ |------|-----|
108
+ :::
109
+ ```
110
+
111
+ The body is parsed as ordinary Markdown; each resulting block is routed to the named
112
+ region instead of the one its type would imply. The block list stays flat — `region`
113
+ does not appear in the AST, it only sets `regionHint`.
114
+
115
+ A name the layout does not declare is an error listing the regions it does.
116
+
117
+ ### 5.2 Tier 2 — `columns`
118
+
119
+ ```
120
+ :::: columns 2fr 1fr gap=0.3
121
+ ::: col
122
+ - 왼쪽
123
+ :::
124
+ ::: col
125
+ ![도1. 개요](fig.png)
126
+ :::
127
+ ::::
128
+ ```
129
+
130
+ Tracks are ratios and the engine divides the layout's **body region** between them, so
131
+ the source carries no coordinates and the same deck still lands correctly on a template
132
+ with another canvas. `gap` is in inches, default `0.25`.
133
+
134
+ - Track count must equal `::: col` count — a mismatch is an error, never silent padding.
135
+ - A layout with no body region cannot host columns.
136
+ - Columns replace the body region for that slide; the body region does not also render.
137
+
138
+ ### 5.3 Tier 3 — `box` and `shape`
139
+
140
+ ```
141
+ ::: box x=6.9 y=2.6 w=5.3 h=1.4 role=body_text z=over
142
+ **결론** — 세 축으로 재편
143
+ :::
144
+
145
+ ::: shape rect x=0 y=6.4 w=13.333 h=1.1 fill=#EEF4FF z=under
146
+ ```
147
+
148
+ `box` requires `x y w h` in inches. `role` names a `font_role` from the template's
149
+ `capabilities.yaml`, defaulting to `body_text`. Content is parsed as Markdown and flows
150
+ down the box: every block but the last takes the height its content needs, the last
151
+ takes what is left.
152
+
153
+ `shape` is a **void directive** — one line, no closing fence. Its first positional value
154
+ is the primitive: `rect · roundRect · pill · ellipse · ring · line · text · image`. Style
155
+ attributes are `fill line lw radius rotate text color size align valign char_spacing
156
+ bold asset dir src`, checked at compile time so a typo fails loudly. `line` is the one
157
+ kind that needs no height; it takes its thickness from the stroke.
158
+
159
+ `z` is `under` or `over`. Shapes default to `under`, boxes to `over`.
160
+
161
+ ### 5.4 What placement does not do
162
+
163
+ **A template region is never reflowed to avoid a placed box.** The auto-nudge rules that
164
+ narrow a body beside an image do not see placements at all, and coordinates arrive at the
165
+ renderer exactly as written. Covering a region is therefore a defect the QA gate reports,
166
+ not a nudge the engine applies. This is deliberate: an engine that quietly moved content
167
+ out from under an author's box would make the author's intent unknowable.
168
+
169
+ ## 6. Layouts and variants
170
+
171
+ The layout set is no longer closed. `spec-validator` checks that a layout name is an
172
+ identifier (`^[a-z][a-z0-9-]*$`); whether it exists is a fact about the chosen template,
173
+ and `layout-resolver` compares it against the template mapping and names the alternatives
174
+ when it does not match.
175
+
176
+ `free` needs no declaration — it means "this slide uses no template region", so every
177
+ template supports it and the slide is built entirely from placements.
178
+
179
+ A **variant** swaps a layout's decoration set and may override the regions the new
180
+ furniture displaces:
181
+
182
+ ```
183
+ ---
184
+ layout: cover
185
+ variant: split-navy
186
+ ---
187
+ ```
188
+
189
+ Both parts travel together, because a split cover needs a narrower title than a
190
+ full-bleed one. An unknown variant is an error listing the ones the layout declares.
191
+
192
+ ## 7. Capability derivation
193
+
194
+ When a template declares a layout but publishes no `supported_blocks` entry for it, the
195
+ allowed blocks are derived from the regions that layout declares. Placement blocks and
196
+ `notes` are allowed everywhere, since they do not depend on a region existing.
197
+
198
+ ## 8. Region occupancy
199
+
200
+ A region holds one block. Two blocks claiming the same region is an error naming both
201
+ ways out — `::: region name=` or `:::: columns`. In v1 the second block silently
202
+ overwrote the first, which is why a slide could not carry two tables.
203
+
204
+ Two exceptions are documented behaviour decks already rely on: images collapse into a
205
+ grid, and captions are subordinate labels where the last one wins.
206
+
207
+ ## 9. Charts
208
+
209
+ Charts are outside this dialect. A chart is produced by `/scientific-visualization` and
210
+ placed as an image. `compile-deck.js --export-viz-context <path>` writes the template's
211
+ palette, body font family, **bundled font file paths**, canvas and DPI so the chart is
212
+ drawn in the deck's own visual system rather than a library default.
213
+
214
+ ## 10. Non-goals retained from v1
215
+
216
+ - Full Marp compatibility
217
+ - Arbitrary CSS as authoring input
218
+ - Raw HTML passthrough
219
+ - JavaScript or interactive content
220
+ - Silent fallback or degradation for unsupported constructs
221
+
222
+ The single v1 non-goal v2 reverses is free-form absolute positioning, and §5.4 states
223
+ what was kept in exchange.