@litfamily/litgrok 1.0.33 → 1.0.35

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 (971) hide show
  1. package/.grok/hooks/lit-status-line.mjs +59 -1
  2. package/.grok/rules/00-litgrok.md +5 -7
  3. package/.grok/skills/browser-drive/scripts/capability-probe.mjs +1 -1
  4. package/.grok/skills/frontend-ui-ux/SKILL.md +47 -39
  5. package/.grok/skills/lit-adhd/SKILL.md +36 -12
  6. package/.grok/skills/lit-adhd/references/card-examples.md +106 -3
  7. package/.grok/skills/lit-adhd/references/status-taxonomy.md +20 -1
  8. package/.grok/skills/lit-adhd/scripts/lib/board.mjs +333 -0
  9. package/.grok/skills/lit-adhd/scripts/lib/collect.mjs +76 -8
  10. package/.grok/skills/lit-diagram-drawer/SKILL.md +32 -93
  11. package/.grok/skills/lit-docx/SKILL.md +31 -77
  12. package/.grok/skills/lit-humanizer/scripts/extract.mjs +1 -1
  13. package/.grok/skills/lit-humanizer/scripts/test-fixtures.mjs +1 -1
  14. package/.grok/skills/lit-pptx/SKILL.md +30 -90
  15. package/.grok/skills/lit-schematic/SKILL.md +30 -115
  16. package/.grok/skills/lit-scientific-visualization/SKILL.md +36 -221
  17. package/.grok/skills/lit-typographic-motion/SKILL.md +40 -29
  18. package/.grok/skills/litgrok/SKILL.md +6 -3
  19. package/.grok/skills/litwork/SKILL.md +1 -1
  20. package/.grok/skills/lsp-setup/scripts/lsp-server-table.mjs +1 -1
  21. package/.grok/skills/readme-studio/SKILL.md +40 -24
  22. package/.grok/skills/visual-qa/SKILL.md +33 -28
  23. package/.grok-plugin/plugin.json +1 -1
  24. package/CHANGELOG.md +16 -1
  25. package/CONTRIBUTING.md +0 -1
  26. package/README.md +9 -9
  27. package/README_ko-KR.md +9 -9
  28. package/bin/litgrok.mjs +351 -30
  29. package/docs/assets/readme/README.md +7 -0
  30. package/docs/assets/readme/badge-version.svg +1 -1
  31. package/docs/reference.md +11 -5
  32. package/docs/reference_ko-KR.md +10 -5
  33. package/package.json +4 -6
  34. package/plugin.json +1 -1
  35. package/.grok/skills/frontend-ui-ux/ATTRIBUTION.md +0 -23
  36. package/.grok/skills/frontend-ui-ux/LICENSE +0 -21
  37. package/.grok/skills/frontend-ui-ux/PROVENANCE.json +0 -38
  38. package/.grok/skills/frontend-ui-ux/SOURCE-MANIFEST.json +0 -1060
  39. package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +0 -24
  40. package/.grok/skills/frontend-ui-ux/data/design-intelligence.json +0 -1
  41. package/.grok/skills/frontend-ui-ux/examples/phase-3-readme-ab/README.md +0 -9
  42. package/.grok/skills/frontend-ui-ux/examples/phase-3-readme-motion-ab.md +0 -24
  43. package/.grok/skills/frontend-ui-ux/kit/components.css +0 -414
  44. package/.grok/skills/frontend-ui-ux/kit/fonts.json +0 -22
  45. package/.grok/skills/frontend-ui-ux/kit/layouts/landing.html +0 -164
  46. package/.grok/skills/frontend-ui-ux/kit/layouts/settings.html +0 -114
  47. package/.grok/skills/frontend-ui-ux/kit/layouts/workspace.html +0 -115
  48. package/.grok/skills/frontend-ui-ux/kit/styles/computational-brutalism.json +0 -227
  49. package/.grok/skills/frontend-ui-ux/kit/styles/field-notes.json +0 -205
  50. package/.grok/skills/frontend-ui-ux/kit/styles/graphite.json +0 -200
  51. package/.grok/skills/frontend-ui-ux/kit/styles/meadow.json +0 -199
  52. package/.grok/skills/frontend-ui-ux/kit/styles/neo-brutalism.json +0 -222
  53. package/.grok/skills/frontend-ui-ux/kit/ui.js +0 -226
  54. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-ATTRIBUTION.md +0 -217
  55. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-LICENSE-Apache-2.0.txt +0 -201
  56. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/root-LICENSE +0 -21
  57. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +0 -873
  58. package/.grok/skills/frontend-ui-ux/references/adaptive-layout.md +0 -88
  59. package/.grok/skills/frontend-ui-ux/references/brand-and-imagery.md +0 -87
  60. package/.grok/skills/frontend-ui-ux/references/complete-contract.md +0 -572
  61. package/.grok/skills/frontend-ui-ux/references/composition.md +0 -79
  62. package/.grok/skills/frontend-ui-ux/references/craft-floor.md +0 -262
  63. package/.grok/skills/frontend-ui-ux/references/creative-directions.md +0 -74
  64. package/.grok/skills/frontend-ui-ux/references/default-editorial-pixel.json +0 -28
  65. package/.grok/skills/frontend-ui-ux/references/design/README.md +0 -248
  66. package/.grok/skills/frontend-ui-ux/references/design/_INDEX.md +0 -191
  67. package/.grok/skills/frontend-ui-ux/references/design/airbnb.md +0 -393
  68. package/.grok/skills/frontend-ui-ux/references/design/airtable.md +0 -92
  69. package/.grok/skills/frontend-ui-ux/references/design/apple.md +0 -250
  70. package/.grok/skills/frontend-ui-ux/references/design/aside.md +0 -209
  71. package/.grok/skills/frontend-ui-ux/references/design/binance.md +0 -348
  72. package/.grok/skills/frontend-ui-ux/references/design/bmw.md +0 -183
  73. package/.grok/skills/frontend-ui-ux/references/design/brutalist-skill.md +0 -92
  74. package/.grok/skills/frontend-ui-ux/references/design/bugatti.md +0 -271
  75. package/.grok/skills/frontend-ui-ux/references/design/cal.md +0 -262
  76. package/.grok/skills/frontend-ui-ux/references/design/claude.md +0 -315
  77. package/.grok/skills/frontend-ui-ux/references/design/clay.md +0 -307
  78. package/.grok/skills/frontend-ui-ux/references/design/clickhouse.md +0 -284
  79. package/.grok/skills/frontend-ui-ux/references/design/clone-from-url.md +0 -65
  80. package/.grok/skills/frontend-ui-ux/references/design/cohere.md +0 -269
  81. package/.grok/skills/frontend-ui-ux/references/design/coinbase.md +0 -132
  82. package/.grok/skills/frontend-ui-ux/references/design/composio.md +0 -310
  83. package/.grok/skills/frontend-ui-ux/references/design/cursor.md +0 -312
  84. package/.grok/skills/frontend-ui-ux/references/design/design-system-architecture.md +0 -244
  85. package/.grok/skills/frontend-ui-ux/references/design/elevenlabs.md +0 -268
  86. package/.grok/skills/frontend-ui-ux/references/design/expo.md +0 -284
  87. package/.grok/skills/frontend-ui-ux/references/design/ferrari.md +0 -317
  88. package/.grok/skills/frontend-ui-ux/references/design/figma.md +0 -223
  89. package/.grok/skills/frontend-ui-ux/references/design/framer.md +0 -249
  90. package/.grok/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +0 -74
  91. package/.grok/skills/frontend-ui-ux/references/design/hashicorp.md +0 -281
  92. package/.grok/skills/frontend-ui-ux/references/design/ibm.md +0 -335
  93. package/.grok/skills/frontend-ui-ux/references/design/image-to-code-skill.md +0 -1228
  94. package/.grok/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +0 -798
  95. package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +0 -1465
  96. package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +0 -987
  97. package/.grok/skills/frontend-ui-ux/references/design/intercom.md +0 -149
  98. package/.grok/skills/frontend-ui-ux/references/design/kraken.md +0 -128
  99. package/.grok/skills/frontend-ui-ux/references/design/lamborghini.md +0 -291
  100. package/.grok/skills/frontend-ui-ux/references/design/layout-skill.md +0 -107
  101. package/.grok/skills/frontend-ui-ux/references/design/lazyweb.md +0 -77
  102. package/.grok/skills/frontend-ui-ux/references/design/linear.app.md +0 -370
  103. package/.grok/skills/frontend-ui-ux/references/design/lovable.md +0 -301
  104. package/.grok/skills/frontend-ui-ux/references/design/mastercard.md +0 -368
  105. package/.grok/skills/frontend-ui-ux/references/design/meta.md +0 -369
  106. package/.grok/skills/frontend-ui-ux/references/design/minimalist-skill.md +0 -85
  107. package/.grok/skills/frontend-ui-ux/references/design/minimax.md +0 -260
  108. package/.grok/skills/frontend-ui-ux/references/design/mintlify.md +0 -329
  109. package/.grok/skills/frontend-ui-ux/references/design/miro.md +0 -111
  110. package/.grok/skills/frontend-ui-ux/references/design/mistral.ai.md +0 -264
  111. package/.grok/skills/frontend-ui-ux/references/design/mongodb.md +0 -269
  112. package/.grok/skills/frontend-ui-ux/references/design/nike.md +0 -366
  113. package/.grok/skills/frontend-ui-ux/references/design/notion.md +0 -312
  114. package/.grok/skills/frontend-ui-ux/references/design/nvidia.md +0 -296
  115. package/.grok/skills/frontend-ui-ux/references/design/ollama.md +0 -270
  116. package/.grok/skills/frontend-ui-ux/references/design/opencode.ai.md +0 -284
  117. package/.grok/skills/frontend-ui-ux/references/design/output-skill.md +0 -49
  118. package/.grok/skills/frontend-ui-ux/references/design/pinterest.md +0 -233
  119. package/.grok/skills/frontend-ui-ux/references/design/playstation.md +0 -367
  120. package/.grok/skills/frontend-ui-ux/references/design/posthog.md +0 -259
  121. package/.grok/skills/frontend-ui-ux/references/design/raycast.md +0 -271
  122. package/.grok/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +0 -230
  123. package/.grok/skills/frontend-ui-ux/references/design/redesign-skill.md +0 -178
  124. package/.grok/skills/frontend-ui-ux/references/design/renault.md +0 -314
  125. package/.grok/skills/frontend-ui-ux/references/design/replicate.md +0 -264
  126. package/.grok/skills/frontend-ui-ux/references/design/resend.md +0 -306
  127. package/.grok/skills/frontend-ui-ux/references/design/revolut.md +0 -188
  128. package/.grok/skills/frontend-ui-ux/references/design/runwayml.md +0 -247
  129. package/.grok/skills/frontend-ui-ux/references/design/sanity.md +0 -360
  130. package/.grok/skills/frontend-ui-ux/references/design/sentry.md +0 -265
  131. package/.grok/skills/frontend-ui-ux/references/design/shopify.md +0 -353
  132. package/.grok/skills/frontend-ui-ux/references/design/soft-skill.md +0 -98
  133. package/.grok/skills/frontend-ui-ux/references/design/spacex.md +0 -197
  134. package/.grok/skills/frontend-ui-ux/references/design/spotify.md +0 -249
  135. package/.grok/skills/frontend-ui-ux/references/design/starbucks.md +0 -583
  136. package/.grok/skills/frontend-ui-ux/references/design/stitch-design-example.md +0 -121
  137. package/.grok/skills/frontend-ui-ux/references/design/stitch-skill.md +0 -184
  138. package/.grok/skills/frontend-ui-ux/references/design/stripe.md +0 -325
  139. package/.grok/skills/frontend-ui-ux/references/design/supabase.md +0 -258
  140. package/.grok/skills/frontend-ui-ux/references/design/superhuman.md +0 -255
  141. package/.grok/skills/frontend-ui-ux/references/design/taste-skill.md +0 -1206
  142. package/.grok/skills/frontend-ui-ux/references/design/tesla.md +0 -289
  143. package/.grok/skills/frontend-ui-ux/references/design/theverge.md +0 -342
  144. package/.grok/skills/frontend-ui-ux/references/design/together.ai.md +0 -266
  145. package/.grok/skills/frontend-ui-ux/references/design/uber.md +0 -298
  146. package/.grok/skills/frontend-ui-ux/references/design/vercel.md +0 -313
  147. package/.grok/skills/frontend-ui-ux/references/design/vodafone.md +0 -426
  148. package/.grok/skills/frontend-ui-ux/references/design/voltagent.md +0 -326
  149. package/.grok/skills/frontend-ui-ux/references/design/warp.md +0 -256
  150. package/.grok/skills/frontend-ui-ux/references/design/webflow.md +0 -95
  151. package/.grok/skills/frontend-ui-ux/references/design/wired.md +0 -281
  152. package/.grok/skills/frontend-ui-ux/references/design/wise.md +0 -176
  153. package/.grok/skills/frontend-ui-ux/references/design/x.ai.md +0 -260
  154. package/.grok/skills/frontend-ui-ux/references/design/zapier.md +0 -331
  155. package/.grok/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +0 -97
  156. package/.grok/skills/frontend-ui-ux/references/designpowers/README.md +0 -48
  157. package/.grok/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +0 -80
  158. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +0 -64
  159. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +0 -65
  160. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +0 -65
  161. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +0 -83
  162. package/.grok/skills/frontend-ui-ux/references/designpowers/orchestration.md +0 -80
  163. package/.grok/skills/frontend-ui-ux/references/designpowers/routing.md +0 -79
  164. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +0 -21
  165. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +0 -83
  166. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +0 -132
  167. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +0 -109
  168. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +0 -89
  169. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +0 -113
  170. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +0 -78
  171. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +0 -121
  172. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +0 -268
  173. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +0 -107
  174. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +0 -120
  175. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +0 -101
  176. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +0 -109
  177. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +0 -107
  178. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +0 -199
  179. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +0 -174
  180. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +0 -125
  181. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +0 -106
  182. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +0 -266
  183. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +0 -123
  184. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +0 -120
  185. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +0 -164
  186. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +0 -85
  187. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +0 -98
  188. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +0 -165
  189. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +0 -122
  190. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +0 -81
  191. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +0 -96
  192. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +0 -77
  193. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +0 -192
  194. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +0 -165
  195. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +0 -78
  196. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +0 -75
  197. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +0 -117
  198. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +0 -78
  199. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +0 -125
  200. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +0 -79
  201. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +0 -119
  202. package/.grok/skills/frontend-ui-ux/references/evidence-review.md +0 -126
  203. package/.grok/skills/frontend-ui-ux/references/house-styles.md +0 -234
  204. package/.grok/skills/frontend-ui-ux/references/implementation-platforms.md +0 -103
  205. package/.grok/skills/frontend-ui-ux/references/inclusive-interface.md +0 -88
  206. package/.grok/skills/frontend-ui-ux/references/interaction-motion.md +0 -47
  207. package/.grok/skills/frontend-ui-ux/references/motion-guide.md +0 -130
  208. package/.grok/skills/frontend-ui-ux/references/operating-lanes.md +0 -92
  209. package/.grok/skills/frontend-ui-ux/references/perfection/README.md +0 -160
  210. package/.grok/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +0 -127
  211. package/.grok/skills/frontend-ui-ux/references/performance-delivery.md +0 -85
  212. package/.grok/skills/frontend-ui-ux/references/probe-loop.md +0 -27
  213. package/.grok/skills/frontend-ui-ux/references/product-direction.md +0 -80
  214. package/.grok/skills/frontend-ui-ux/references/production-interview.md +0 -17
  215. package/.grok/skills/frontend-ui-ux/references/production.md +0 -27
  216. package/.grok/skills/frontend-ui-ux/references/redesign-playbook.md +0 -91
  217. package/.grok/skills/frontend-ui-ux/references/slop-register.md +0 -150
  218. package/.grok/skills/frontend-ui-ux/references/system-foundations.md +0 -80
  219. package/.grok/skills/frontend-ui-ux/references/taste-direction.md +0 -86
  220. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/README.md +0 -659
  221. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +0 -26
  222. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +0 -162
  223. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +0 -106
  224. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +0 -35
  225. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +0 -162
  226. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +0 -45
  227. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +0 -54
  228. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +0 -53
  229. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +0 -56
  230. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +0 -53
  231. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +0 -53
  232. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +0 -51
  233. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +0 -59
  234. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +0 -52
  235. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +0 -54
  236. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +0 -61
  237. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +0 -54
  238. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +0 -51
  239. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +0 -50
  240. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +0 -85
  241. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +0 -74
  242. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +0 -162
  243. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +0 -100
  244. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +0 -31
  245. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +0 -262
  246. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +0 -1148
  247. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +0 -114
  248. package/.grok/skills/frontend-ui-ux/references/visual-language.md +0 -80
  249. package/.grok/skills/frontend-ui-ux/references/visual-reconstruction.md +0 -51
  250. package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.schema.json +0 -306
  251. package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta1.schema.json +0 -291
  252. package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta2.schema.json +0 -311
  253. package/.grok/skills/frontend-ui-ux/scripts/design-contract-format.mjs +0 -286
  254. package/.grok/skills/frontend-ui-ux/scripts/design-contract-inventory-rules.mjs +0 -354
  255. package/.grok/skills/frontend-ui-ux/scripts/design-contract-rules.mjs +0 -361
  256. package/.grok/skills/frontend-ui-ux/scripts/design-contract-surface-rules.mjs +0 -313
  257. package/.grok/skills/frontend-ui-ux/scripts/design-data.mjs +0 -68
  258. package/.grok/skills/frontend-ui-ux/scripts/design-lock.mjs +0 -400
  259. package/.grok/skills/frontend-ui-ux/scripts/errors.mjs +0 -12
  260. package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +0 -124
  261. package/.grok/skills/frontend-ui-ux/scripts/interface-probe-driver.mjs +0 -33
  262. package/.grok/skills/frontend-ui-ux/scripts/interface-probe-lock.mjs +0 -196
  263. package/.grok/skills/frontend-ui-ux/scripts/interface-probe-page.mjs +0 -1555
  264. package/.grok/skills/frontend-ui-ux/scripts/interface-probe-rules.mjs +0 -153
  265. package/.grok/skills/frontend-ui-ux/scripts/interface-probe-server.mjs +0 -57
  266. package/.grok/skills/frontend-ui-ux/scripts/interface-probe-static.mjs +0 -139
  267. package/.grok/skills/frontend-ui-ux/scripts/interface-probe.mjs +0 -363
  268. package/.grok/skills/frontend-ui-ux/scripts/json-boundary.mjs +0 -63
  269. package/.grok/skills/frontend-ui-ux/scripts/pixel-art.mjs +0 -60
  270. package/.grok/skills/frontend-ui-ux/scripts/query-design-intelligence.mjs +0 -106
  271. package/.grok/skills/frontend-ui-ux/scripts/search.mjs +0 -43
  272. package/.grok/skills/frontend-ui-ux/scripts/source-replay.mjs +0 -153
  273. package/.grok/skills/frontend-ui-ux/scripts/strict-json.mjs +0 -143
  274. package/.grok/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +0 -52
  275. package/.grok/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +0 -214
  276. package/.grok/skills/lit-diagram-drawer/NOTICE +0 -33
  277. package/.grok/skills/lit-diagram-drawer/assets/examples/type-architecture-dark.html +0 -1
  278. package/.grok/skills/lit-diagram-drawer/assets/examples/type-architecture-full.html +0 -1
  279. package/.grok/skills/lit-diagram-drawer/assets/examples/type-architecture-light.html +0 -1
  280. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bar-dark.html +0 -1
  281. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bar-full.html +0 -1
  282. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bar-light.html +0 -1
  283. package/.grok/skills/lit-diagram-drawer/assets/examples/type-beeswarm-dark.html +0 -1
  284. package/.grok/skills/lit-diagram-drawer/assets/examples/type-beeswarm-full.html +0 -1
  285. package/.grok/skills/lit-diagram-drawer/assets/examples/type-beeswarm-light.html +0 -1
  286. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bubble-dark.html +0 -1
  287. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bubble-full.html +0 -1
  288. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bubble-light.html +0 -1
  289. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bump-dark.html +0 -1
  290. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bump-full.html +0 -1
  291. package/.grok/skills/lit-diagram-drawer/assets/examples/type-bump-light.html +0 -1
  292. package/.grok/skills/lit-diagram-drawer/assets/examples/type-data-flow-dark.html +0 -1
  293. package/.grok/skills/lit-diagram-drawer/assets/examples/type-data-flow-full.html +0 -1
  294. package/.grok/skills/lit-diagram-drawer/assets/examples/type-data-flow-light.html +0 -1
  295. package/.grok/skills/lit-diagram-drawer/assets/examples/type-datalake-dark.html +0 -1
  296. package/.grok/skills/lit-diagram-drawer/assets/examples/type-datalake-full.html +0 -1
  297. package/.grok/skills/lit-diagram-drawer/assets/examples/type-datalake-light.html +0 -1
  298. package/.grok/skills/lit-diagram-drawer/assets/examples/type-db-schema-dark.html +0 -1
  299. package/.grok/skills/lit-diagram-drawer/assets/examples/type-db-schema-full.html +0 -1
  300. package/.grok/skills/lit-diagram-drawer/assets/examples/type-db-schema-light.html +0 -1
  301. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dependency-dark.html +0 -1
  302. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dependency-full.html +0 -1
  303. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dependency-light.html +0 -1
  304. package/.grok/skills/lit-diagram-drawer/assets/examples/type-deployment-dark.html +0 -1
  305. package/.grok/skills/lit-diagram-drawer/assets/examples/type-deployment-full.html +0 -1
  306. package/.grok/skills/lit-diagram-drawer/assets/examples/type-deployment-light.html +0 -1
  307. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dp-integration-dark.html +0 -1
  308. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dp-integration-full.html +0 -1
  309. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dp-integration-light.html +0 -1
  310. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-dark.html +0 -1
  311. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-full.html +0 -1
  312. package/.grok/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-light.html +0 -1
  313. package/.grok/skills/lit-diagram-drawer/assets/examples/type-er-dark.html +0 -1
  314. package/.grok/skills/lit-diagram-drawer/assets/examples/type-er-full.html +0 -1
  315. package/.grok/skills/lit-diagram-drawer/assets/examples/type-er-light.html +0 -1
  316. package/.grok/skills/lit-diagram-drawer/assets/examples/type-fishbone-dark.html +0 -1
  317. package/.grok/skills/lit-diagram-drawer/assets/examples/type-fishbone-full.html +0 -1
  318. package/.grok/skills/lit-diagram-drawer/assets/examples/type-fishbone-light.html +0 -1
  319. package/.grok/skills/lit-diagram-drawer/assets/examples/type-flowchart-dark.html +0 -1
  320. package/.grok/skills/lit-diagram-drawer/assets/examples/type-flowchart-full.html +0 -1
  321. package/.grok/skills/lit-diagram-drawer/assets/examples/type-flowchart-light.html +0 -1
  322. package/.grok/skills/lit-diagram-drawer/assets/examples/type-gantt-dark.html +0 -1
  323. package/.grok/skills/lit-diagram-drawer/assets/examples/type-gantt-full.html +0 -1
  324. package/.grok/skills/lit-diagram-drawer/assets/examples/type-gantt-light.html +0 -1
  325. package/.grok/skills/lit-diagram-drawer/assets/examples/type-heatmap-dark.html +0 -1
  326. package/.grok/skills/lit-diagram-drawer/assets/examples/type-heatmap-full.html +0 -1
  327. package/.grok/skills/lit-diagram-drawer/assets/examples/type-heatmap-light.html +0 -1
  328. package/.grok/skills/lit-diagram-drawer/assets/examples/type-high-level-dark.html +0 -1
  329. package/.grok/skills/lit-diagram-drawer/assets/examples/type-high-level-full.html +0 -1
  330. package/.grok/skills/lit-diagram-drawer/assets/examples/type-high-level-light.html +0 -1
  331. package/.grok/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-dark.html +0 -1
  332. package/.grok/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-full.html +0 -1
  333. package/.grok/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-light.html +0 -1
  334. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-drawio-dark.html +0 -1
  335. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-drawio-full.html +0 -1
  336. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-drawio-light.html +0 -1
  337. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-dark.html +0 -1
  338. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-full.html +0 -1
  339. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-light.html +0 -1
  340. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-dark.html +0 -1
  341. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-full.html +0 -1
  342. package/.grok/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-light.html +0 -1
  343. package/.grok/skills/lit-diagram-drawer/assets/examples/type-it-state-dark.html +0 -1
  344. package/.grok/skills/lit-diagram-drawer/assets/examples/type-it-state-full.html +0 -1
  345. package/.grok/skills/lit-diagram-drawer/assets/examples/type-it-state-light.html +0 -1
  346. package/.grok/skills/lit-diagram-drawer/assets/examples/type-journey-dark.html +0 -1
  347. package/.grok/skills/lit-diagram-drawer/assets/examples/type-journey-full.html +0 -1
  348. package/.grok/skills/lit-diagram-drawer/assets/examples/type-journey-light.html +0 -1
  349. package/.grok/skills/lit-diagram-drawer/assets/examples/type-kanban-dark.html +0 -1
  350. package/.grok/skills/lit-diagram-drawer/assets/examples/type-kanban-full.html +0 -1
  351. package/.grok/skills/lit-diagram-drawer/assets/examples/type-kanban-light.html +0 -1
  352. package/.grok/skills/lit-diagram-drawer/assets/examples/type-layers-dark.html +0 -1
  353. package/.grok/skills/lit-diagram-drawer/assets/examples/type-layers-full.html +0 -1
  354. package/.grok/skills/lit-diagram-drawer/assets/examples/type-layers-light.html +0 -1
  355. package/.grok/skills/lit-diagram-drawer/assets/examples/type-line-dark.html +0 -1
  356. package/.grok/skills/lit-diagram-drawer/assets/examples/type-line-full.html +0 -1
  357. package/.grok/skills/lit-diagram-drawer/assets/examples/type-line-light.html +0 -1
  358. package/.grok/skills/lit-diagram-drawer/assets/examples/type-loop-dark.html +0 -1
  359. package/.grok/skills/lit-diagram-drawer/assets/examples/type-loop-full.html +0 -1
  360. package/.grok/skills/lit-diagram-drawer/assets/examples/type-loop-light.html +0 -1
  361. package/.grok/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-dark.html +0 -1
  362. package/.grok/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-full.html +0 -1
  363. package/.grok/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-light.html +0 -1
  364. package/.grok/skills/lit-diagram-drawer/assets/examples/type-marimekko-dark.html +0 -1
  365. package/.grok/skills/lit-diagram-drawer/assets/examples/type-marimekko-full.html +0 -1
  366. package/.grok/skills/lit-diagram-drawer/assets/examples/type-marimekko-light.html +0 -1
  367. package/.grok/skills/lit-diagram-drawer/assets/examples/type-medallion-dark.html +0 -1
  368. package/.grok/skills/lit-diagram-drawer/assets/examples/type-medallion-full.html +0 -1
  369. package/.grok/skills/lit-diagram-drawer/assets/examples/type-medallion-light.html +0 -1
  370. package/.grok/skills/lit-diagram-drawer/assets/examples/type-nested-dark.html +0 -1
  371. package/.grok/skills/lit-diagram-drawer/assets/examples/type-nested-full.html +0 -1
  372. package/.grok/skills/lit-diagram-drawer/assets/examples/type-nested-light.html +0 -1
  373. package/.grok/skills/lit-diagram-drawer/assets/examples/type-org-chart-dark.html +0 -1
  374. package/.grok/skills/lit-diagram-drawer/assets/examples/type-org-chart-full.html +0 -1
  375. package/.grok/skills/lit-diagram-drawer/assets/examples/type-org-chart-light.html +0 -1
  376. package/.grok/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-dark.html +0 -1
  377. package/.grok/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-full.html +0 -1
  378. package/.grok/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-light.html +0 -1
  379. package/.grok/skills/lit-diagram-drawer/assets/examples/type-polar-dark.html +0 -1
  380. package/.grok/skills/lit-diagram-drawer/assets/examples/type-polar-full.html +0 -1
  381. package/.grok/skills/lit-diagram-drawer/assets/examples/type-polar-light.html +0 -1
  382. package/.grok/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-dark.html +0 -1
  383. package/.grok/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-full.html +0 -1
  384. package/.grok/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-light.html +0 -1
  385. package/.grok/skills/lit-diagram-drawer/assets/examples/type-process-dark.html +0 -1
  386. package/.grok/skills/lit-diagram-drawer/assets/examples/type-process-full.html +0 -1
  387. package/.grok/skills/lit-diagram-drawer/assets/examples/type-process-light.html +0 -1
  388. package/.grok/skills/lit-diagram-drawer/assets/examples/type-pyramid-dark.html +0 -1
  389. package/.grok/skills/lit-diagram-drawer/assets/examples/type-pyramid-full.html +0 -1
  390. package/.grok/skills/lit-diagram-drawer/assets/examples/type-pyramid-light.html +0 -1
  391. package/.grok/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-dark.html +0 -1
  392. package/.grok/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-full.html +0 -1
  393. package/.grok/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-light.html +0 -1
  394. package/.grok/skills/lit-diagram-drawer/assets/examples/type-quadrant-dark.html +0 -1
  395. package/.grok/skills/lit-diagram-drawer/assets/examples/type-quadrant-full.html +0 -1
  396. package/.grok/skills/lit-diagram-drawer/assets/examples/type-quadrant-light.html +0 -1
  397. package/.grok/skills/lit-diagram-drawer/assets/examples/type-queue-animated-dark.html +0 -1
  398. package/.grok/skills/lit-diagram-drawer/assets/examples/type-queue-animated-full.html +0 -1
  399. package/.grok/skills/lit-diagram-drawer/assets/examples/type-queue-animated-light.html +0 -1
  400. package/.grok/skills/lit-diagram-drawer/assets/examples/type-radar-dark.html +0 -1
  401. package/.grok/skills/lit-diagram-drawer/assets/examples/type-radar-full.html +0 -1
  402. package/.grok/skills/lit-diagram-drawer/assets/examples/type-radar-light.html +0 -1
  403. package/.grok/skills/lit-diagram-drawer/assets/examples/type-ridgeline-dark.html +0 -1
  404. package/.grok/skills/lit-diagram-drawer/assets/examples/type-ridgeline-full.html +0 -1
  405. package/.grok/skills/lit-diagram-drawer/assets/examples/type-ridgeline-light.html +0 -1
  406. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sankey-dark.html +0 -1
  407. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sankey-full.html +0 -1
  408. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sankey-light.html +0 -1
  409. package/.grok/skills/lit-diagram-drawer/assets/examples/type-scatter-dark.html +0 -1
  410. package/.grok/skills/lit-diagram-drawer/assets/examples/type-scatter-full.html +0 -1
  411. package/.grok/skills/lit-diagram-drawer/assets/examples/type-scatter-light.html +0 -1
  412. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sequence-dark.html +0 -1
  413. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sequence-full.html +0 -1
  414. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sequence-light.html +0 -1
  415. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-dark.html +0 -1
  416. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-full.html +0 -1
  417. package/.grok/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-light.html +0 -1
  418. package/.grok/skills/lit-diagram-drawer/assets/examples/type-slopegraph-dark.html +0 -1
  419. package/.grok/skills/lit-diagram-drawer/assets/examples/type-slopegraph-full.html +0 -1
  420. package/.grok/skills/lit-diagram-drawer/assets/examples/type-slopegraph-light.html +0 -1
  421. package/.grok/skills/lit-diagram-drawer/assets/examples/type-state-dark.html +0 -1
  422. package/.grok/skills/lit-diagram-drawer/assets/examples/type-state-full.html +0 -1
  423. package/.grok/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-dark.html +0 -1
  424. package/.grok/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-full.html +0 -1
  425. package/.grok/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-light.html +0 -1
  426. package/.grok/skills/lit-diagram-drawer/assets/examples/type-state-light.html +0 -1
  427. package/.grok/skills/lit-diagram-drawer/assets/examples/type-story-map-dark.html +0 -1
  428. package/.grok/skills/lit-diagram-drawer/assets/examples/type-story-map-full.html +0 -1
  429. package/.grok/skills/lit-diagram-drawer/assets/examples/type-story-map-light.html +0 -1
  430. package/.grok/skills/lit-diagram-drawer/assets/examples/type-streamgraph-dark.html +0 -1
  431. package/.grok/skills/lit-diagram-drawer/assets/examples/type-streamgraph-full.html +0 -1
  432. package/.grok/skills/lit-diagram-drawer/assets/examples/type-streamgraph-light.html +0 -1
  433. package/.grok/skills/lit-diagram-drawer/assets/examples/type-swimlane-dark.html +0 -1
  434. package/.grok/skills/lit-diagram-drawer/assets/examples/type-swimlane-full.html +0 -1
  435. package/.grok/skills/lit-diagram-drawer/assets/examples/type-swimlane-light.html +0 -1
  436. package/.grok/skills/lit-diagram-drawer/assets/examples/type-timeline-dark.html +0 -1
  437. package/.grok/skills/lit-diagram-drawer/assets/examples/type-timeline-full.html +0 -1
  438. package/.grok/skills/lit-diagram-drawer/assets/examples/type-timeline-light.html +0 -1
  439. package/.grok/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-dark.html +0 -1
  440. package/.grok/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-full.html +0 -1
  441. package/.grok/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-light.html +0 -1
  442. package/.grok/skills/lit-diagram-drawer/assets/examples/type-tree-dark.html +0 -1
  443. package/.grok/skills/lit-diagram-drawer/assets/examples/type-tree-full.html +0 -1
  444. package/.grok/skills/lit-diagram-drawer/assets/examples/type-tree-light.html +0 -1
  445. package/.grok/skills/lit-diagram-drawer/assets/examples/type-treemap-dark.html +0 -1
  446. package/.grok/skills/lit-diagram-drawer/assets/examples/type-treemap-full.html +0 -1
  447. package/.grok/skills/lit-diagram-drawer/assets/examples/type-treemap-light.html +0 -1
  448. package/.grok/skills/lit-diagram-drawer/assets/examples/type-uml-class-dark.html +0 -1
  449. package/.grok/skills/lit-diagram-drawer/assets/examples/type-uml-class-full.html +0 -1
  450. package/.grok/skills/lit-diagram-drawer/assets/examples/type-uml-class-light.html +0 -1
  451. package/.grok/skills/lit-diagram-drawer/assets/examples/type-venn-dark.html +0 -1
  452. package/.grok/skills/lit-diagram-drawer/assets/examples/type-venn-full.html +0 -1
  453. package/.grok/skills/lit-diagram-drawer/assets/examples/type-venn-light.html +0 -1
  454. package/.grok/skills/lit-diagram-drawer/assets/examples/type-wardley-dark.html +0 -1
  455. package/.grok/skills/lit-diagram-drawer/assets/examples/type-wardley-full.html +0 -1
  456. package/.grok/skills/lit-diagram-drawer/assets/examples/type-wardley-light.html +0 -1
  457. package/.grok/skills/lit-diagram-drawer/assets/examples/type-waterfall-dark.html +0 -1
  458. package/.grok/skills/lit-diagram-drawer/assets/examples/type-waterfall-full.html +0 -1
  459. package/.grok/skills/lit-diagram-drawer/assets/examples/type-waterfall-light.html +0 -1
  460. package/.grok/skills/lit-diagram-drawer/assets/fonts/OFL.txt +0 -94
  461. package/.grok/skills/lit-diagram-drawer/assets/fonts/PretendardVariable.woff2 +0 -0
  462. package/.grok/skills/lit-diagram-drawer/assets/fonts/provenance.json +0 -22
  463. package/.grok/skills/lit-diagram-drawer/assets/icons.html +0 -231
  464. package/.grok/skills/lit-diagram-drawer/assets/index.html +0 -1
  465. package/.grok/skills/lit-diagram-drawer/assets/licenses/devicon-MIT.txt +0 -20
  466. package/.grok/skills/lit-diagram-drawer/assets/licenses/diagram-design-MIT.txt +0 -21
  467. package/.grok/skills/lit-diagram-drawer/assets/licenses/log-z-MIT.txt +0 -21
  468. package/.grok/skills/lit-diagram-drawer/assets/licenses/simple-icons-CC0.md +0 -30
  469. package/.grok/skills/lit-diagram-drawer/assets/licenses/tabler-MIT.txt +0 -21
  470. package/.grok/skills/lit-diagram-drawer/examples/01-service-architecture/after.html +0 -1
  471. package/.grok/skills/lit-diagram-drawer/examples/01-service-architecture/brief.md +0 -33
  472. package/.grok/skills/lit-diagram-drawer/examples/01-service-architecture/constructed-naive-foil.html +0 -1
  473. package/.grok/skills/lit-diagram-drawer/examples/02-release-decision/after.html +0 -1
  474. package/.grok/skills/lit-diagram-drawer/examples/02-release-decision/brief.md +0 -18
  475. package/.grok/skills/lit-diagram-drawer/examples/02-release-decision/constructed-naive-foil.html +0 -1
  476. package/.grok/skills/lit-diagram-drawer/examples/03-data-retention/after.html +0 -1
  477. package/.grok/skills/lit-diagram-drawer/examples/03-data-retention/brief.md +0 -19
  478. package/.grok/skills/lit-diagram-drawer/examples/03-data-retention/constructed-naive-foil.html +0 -1
  479. package/.grok/skills/lit-diagram-drawer/examples/04-oauth-sequence/after.html +0 -1
  480. package/.grok/skills/lit-diagram-drawer/examples/04-oauth-sequence/brief.md +0 -17
  481. package/.grok/skills/lit-diagram-drawer/examples/04-oauth-sequence/constructed-naive-foil.html +0 -1
  482. package/.grok/skills/lit-diagram-drawer/examples/05-review-lanes/after.html +0 -1
  483. package/.grok/skills/lit-diagram-drawer/examples/05-review-lanes/brief.md +0 -17
  484. package/.grok/skills/lit-diagram-drawer/examples/05-review-lanes/constructed-naive-foil.html +0 -1
  485. package/.grok/skills/lit-diagram-drawer/examples/06-rollout-gates/after.html +0 -1
  486. package/.grok/skills/lit-diagram-drawer/examples/06-rollout-gates/brief.md +0 -17
  487. package/.grok/skills/lit-diagram-drawer/examples/06-rollout-gates/constructed-naive-foil.html +0 -1
  488. package/.grok/skills/lit-diagram-drawer/examples/07-deployment-boundary/after.html +0 -1
  489. package/.grok/skills/lit-diagram-drawer/examples/07-deployment-boundary/brief.md +0 -19
  490. package/.grok/skills/lit-diagram-drawer/examples/07-deployment-boundary/constructed-naive-foil.html +0 -1
  491. package/.grok/skills/lit-diagram-drawer/examples/08-policy-traces/after.html +0 -1
  492. package/.grok/skills/lit-diagram-drawer/examples/08-policy-traces/brief.md +0 -20
  493. package/.grok/skills/lit-diagram-drawer/examples/08-policy-traces/constructed-naive-foil.html +0 -1
  494. package/.grok/skills/lit-diagram-drawer/references/accessibility.md +0 -37
  495. package/.grok/skills/lit-diagram-drawer/references/export.md +0 -29
  496. package/.grok/skills/lit-diagram-drawer/references/import-drawio.md +0 -21
  497. package/.grok/skills/lit-diagram-drawer/references/import-excalidraw.md +0 -14
  498. package/.grok/skills/lit-diagram-drawer/references/import-mermaid.md +0 -18
  499. package/.grok/skills/lit-diagram-drawer/references/import-schema.md +0 -28
  500. package/.grok/skills/lit-diagram-drawer/references/korean-typography.md +0 -34
  501. package/.grok/skills/lit-diagram-drawer/references/motion.md +0 -29
  502. package/.grok/skills/lit-diagram-drawer/references/office-pptx-docx.md +0 -42
  503. package/.grok/skills/lit-diagram-drawer/references/output-spec.md +0 -48
  504. package/.grok/skills/lit-diagram-drawer/references/primitive-annotation.md +0 -12
  505. package/.grok/skills/lit-diagram-drawer/references/primitive-icons.md +0 -21
  506. package/.grok/skills/lit-diagram-drawer/references/primitive-sketchy.md +0 -11
  507. package/.grok/skills/lit-diagram-drawer/references/primitive-terminal.md +0 -11
  508. package/.grok/skills/lit-diagram-drawer/references/profiles.md +0 -24
  509. package/.grok/skills/lit-diagram-drawer/references/semantic-patterns.md +0 -27
  510. package/.grok/skills/lit-diagram-drawer/references/style-guide.md +0 -76
  511. package/.grok/skills/lit-diagram-drawer/references/type-architecture.md +0 -51
  512. package/.grok/skills/lit-diagram-drawer/references/type-bar.md +0 -51
  513. package/.grok/skills/lit-diagram-drawer/references/type-beeswarm.md +0 -49
  514. package/.grok/skills/lit-diagram-drawer/references/type-bubble.md +0 -49
  515. package/.grok/skills/lit-diagram-drawer/references/type-bump.md +0 -49
  516. package/.grok/skills/lit-diagram-drawer/references/type-catalog.json +0 -1433
  517. package/.grok/skills/lit-diagram-drawer/references/type-data-flow.md +0 -51
  518. package/.grok/skills/lit-diagram-drawer/references/type-datalake.md +0 -49
  519. package/.grok/skills/lit-diagram-drawer/references/type-db-schema.md +0 -49
  520. package/.grok/skills/lit-diagram-drawer/references/type-dependency.md +0 -49
  521. package/.grok/skills/lit-diagram-drawer/references/type-deployment.md +0 -49
  522. package/.grok/skills/lit-diagram-drawer/references/type-dp-integration.md +0 -49
  523. package/.grok/skills/lit-diagram-drawer/references/type-dp-security-matrix.md +0 -49
  524. package/.grok/skills/lit-diagram-drawer/references/type-er.md +0 -49
  525. package/.grok/skills/lit-diagram-drawer/references/type-fishbone.md +0 -49
  526. package/.grok/skills/lit-diagram-drawer/references/type-flowchart.md +0 -49
  527. package/.grok/skills/lit-diagram-drawer/references/type-gantt.md +0 -49
  528. package/.grok/skills/lit-diagram-drawer/references/type-heatmap.md +0 -53
  529. package/.grok/skills/lit-diagram-drawer/references/type-high-level-vertical.md +0 -53
  530. package/.grok/skills/lit-diagram-drawer/references/type-high-level.md +0 -53
  531. package/.grok/skills/lit-diagram-drawer/references/type-import-drawio.md +0 -53
  532. package/.grok/skills/lit-diagram-drawer/references/type-import-excalidraw.md +0 -53
  533. package/.grok/skills/lit-diagram-drawer/references/type-import-mermaid.md +0 -53
  534. package/.grok/skills/lit-diagram-drawer/references/type-it-state.md +0 -54
  535. package/.grok/skills/lit-diagram-drawer/references/type-journey.md +0 -54
  536. package/.grok/skills/lit-diagram-drawer/references/type-kanban.md +0 -54
  537. package/.grok/skills/lit-diagram-drawer/references/type-layers.md +0 -54
  538. package/.grok/skills/lit-diagram-drawer/references/type-line.md +0 -54
  539. package/.grok/skills/lit-diagram-drawer/references/type-loop-terminal.md +0 -53
  540. package/.grok/skills/lit-diagram-drawer/references/type-loop.md +0 -54
  541. package/.grok/skills/lit-diagram-drawer/references/type-marimekko.md +0 -54
  542. package/.grok/skills/lit-diagram-drawer/references/type-medallion.md +0 -54
  543. package/.grok/skills/lit-diagram-drawer/references/type-nested.md +0 -59
  544. package/.grok/skills/lit-diagram-drawer/references/type-org-chart.md +0 -58
  545. package/.grok/skills/lit-diagram-drawer/references/type-paved-road-animated.md +0 -72
  546. package/.grok/skills/lit-diagram-drawer/references/type-polar.md +0 -67
  547. package/.grok/skills/lit-diagram-drawer/references/type-policy-trace-animated.md +0 -69
  548. package/.grok/skills/lit-diagram-drawer/references/type-process.md +0 -58
  549. package/.grok/skills/lit-diagram-drawer/references/type-pyramid.md +0 -59
  550. package/.grok/skills/lit-diagram-drawer/references/type-quadrant-consultant.md +0 -60
  551. package/.grok/skills/lit-diagram-drawer/references/type-quadrant.md +0 -57
  552. package/.grok/skills/lit-diagram-drawer/references/type-queue-animated.md +0 -63
  553. package/.grok/skills/lit-diagram-drawer/references/type-radar.md +0 -57
  554. package/.grok/skills/lit-diagram-drawer/references/type-ridgeline.md +0 -63
  555. package/.grok/skills/lit-diagram-drawer/references/type-sankey.md +0 -68
  556. package/.grok/skills/lit-diagram-drawer/references/type-scatter.md +0 -60
  557. package/.grok/skills/lit-diagram-drawer/references/type-sequence-oauth.md +0 -66
  558. package/.grok/skills/lit-diagram-drawer/references/type-sequence.md +0 -63
  559. package/.grok/skills/lit-diagram-drawer/references/type-slopegraph.md +0 -65
  560. package/.grok/skills/lit-diagram-drawer/references/type-state-lifecycle.md +0 -53
  561. package/.grok/skills/lit-diagram-drawer/references/type-state.md +0 -59
  562. package/.grok/skills/lit-diagram-drawer/references/type-story-map.md +0 -52
  563. package/.grok/skills/lit-diagram-drawer/references/type-streamgraph.md +0 -53
  564. package/.grok/skills/lit-diagram-drawer/references/type-swimlane.md +0 -52
  565. package/.grok/skills/lit-diagram-drawer/references/type-timeline.md +0 -52
  566. package/.grok/skills/lit-diagram-drawer/references/type-tree-block-decomposition.md +0 -57
  567. package/.grok/skills/lit-diagram-drawer/references/type-tree.md +0 -54
  568. package/.grok/skills/lit-diagram-drawer/references/type-treemap.md +0 -54
  569. package/.grok/skills/lit-diagram-drawer/references/type-uml-class.md +0 -52
  570. package/.grok/skills/lit-diagram-drawer/references/type-venn.md +0 -51
  571. package/.grok/skills/lit-diagram-drawer/references/type-wardley.md +0 -52
  572. package/.grok/skills/lit-diagram-drawer/references/type-waterfall.md +0 -54
  573. package/.grok/skills/lit-diagram-drawer/references/verifier-guide.md +0 -64
  574. package/.grok/skills/lit-diagram-drawer/scripts/block-registry.mjs +0 -43
  575. package/.grok/skills/lit-diagram-drawer/scripts/brief-contract.mjs +0 -94
  576. package/.grok/skills/lit-diagram-drawer/scripts/check-visible-text.mjs +0 -15
  577. package/.grok/skills/lit-diagram-drawer/scripts/diagram-metrics.mjs +0 -219
  578. package/.grok/skills/lit-diagram-drawer/scripts/doctor.mjs +0 -22
  579. package/.grok/skills/lit-diagram-drawer/scripts/drawio-extract.mjs +0 -359
  580. package/.grok/skills/lit-diagram-drawer/scripts/excalidraw-extract.mjs +0 -196
  581. package/.grok/skills/lit-diagram-drawer/scripts/export.mjs +0 -117
  582. package/.grok/skills/lit-diagram-drawer/scripts/import-common.mjs +0 -68
  583. package/.grok/skills/lit-diagram-drawer/scripts/mermaid-extract.mjs +0 -232
  584. package/.grok/skills/lit-diagram-drawer/scripts/office-safety.mjs +0 -54
  585. package/.grok/skills/lit-diagram-drawer/scripts/renderer-status.mjs +0 -43
  586. package/.grok/skills/lit-diagram-drawer/scripts/verify-all.mjs +0 -73
  587. package/.grok/skills/lit-diagram-drawer/scripts/verify-brief.mjs +0 -16
  588. package/.grok/skills/lit-diagram-drawer/scripts/verify-coverage.mjs +0 -56
  589. package/.grok/skills/lit-diagram-drawer/scripts/verify-diagram.mjs +0 -22
  590. package/.grok/skills/lit-diagram-drawer/scripts/verify-motion.mjs +0 -12
  591. package/.grok/skills/lit-diagram-drawer/scripts/verify-type.mjs +0 -48
  592. package/.grok/skills/lit-diagram-drawer/scripts/visual-quality.mjs +0 -344
  593. package/.grok/skills/lit-docx/LICENSE +0 -21
  594. package/.grok/skills/lit-docx/NOTICE.md +0 -1
  595. package/.grok/skills/lit-docx/examples/01-report-ko.md +0 -137
  596. package/.grok/skills/lit-docx/examples/02-brief-ko.md +0 -82
  597. package/.grok/skills/lit-docx/examples/03-manual-ko.md +0 -118
  598. package/.grok/skills/lit-docx/examples/04-proposal-ko.md +0 -92
  599. package/.grok/skills/lit-docx/examples/05-memo-en.md +0 -42
  600. package/.grok/skills/lit-docx/examples/06-journal-en.md +0 -90
  601. package/.grok/skills/lit-docx/examples/07-report-en.md +0 -103
  602. package/.grok/skills/lit-docx/examples/08-proposal-en.md +0 -90
  603. package/.grok/skills/lit-docx/examples/09-memo-ko.md +0 -41
  604. package/.grok/skills/lit-docx/references/components.md +0 -151
  605. package/.grok/skills/lit-docx/references/direction-step.md +0 -129
  606. package/.grok/skills/lit-docx/references/frontmatter_schema.md +0 -42
  607. package/.grok/skills/lit-docx/references/journal_style_spec.md +0 -17
  608. package/.grok/skills/lit-docx/references/markdown_quality_checklist.md +0 -37
  609. package/.grok/skills/lit-docx/references/page-composition.md +0 -129
  610. package/.grok/skills/lit-docx/references/slop_phrase_list.yaml +0 -58
  611. package/.grok/skills/lit-docx/references/slop_rules.md +0 -35
  612. package/.grok/skills/lit-docx/references/tonalities/brief.md +0 -98
  613. package/.grok/skills/lit-docx/references/tonalities/journal.md +0 -100
  614. package/.grok/skills/lit-docx/references/tonalities/manual.md +0 -107
  615. package/.grok/skills/lit-docx/references/tonalities/memo.md +0 -95
  616. package/.grok/skills/lit-docx/references/tonalities/proposal.md +0 -104
  617. package/.grok/skills/lit-docx/references/tonalities/report.md +0 -114
  618. package/.grok/skills/lit-docx/requirements.lock +0 -12
  619. package/.grok/skills/lit-docx/scripts/clean_markdown.py +0 -95
  620. package/.grok/skills/lit-docx/scripts/convert_md_to_docx.py +0 -1377
  621. package/.grok/skills/lit-docx/scripts/convert_md_to_pdf.py +0 -284
  622. package/.grok/skills/lit-docx/scripts/convert_pdf.py +0 -130
  623. package/.grok/skills/lit-docx/scripts/docx_design.py +0 -2446
  624. package/.grok/skills/lit-docx/scripts/docx_gate.py +0 -206
  625. package/.grok/skills/lit-docx/scripts/docx_layout.py +0 -959
  626. package/.grok/skills/lit-docx/scripts/edit_docx.py +0 -297
  627. package/.grok/skills/lit-docx/scripts/embed_images.py +0 -78
  628. package/.grok/skills/lit-docx/scripts/generate_docx_templates.py +0 -491
  629. package/.grok/skills/lit-docx/scripts/pdf_fonts.py +0 -63
  630. package/.grok/skills/lit-docx/scripts/run.mjs +0 -23
  631. package/.grok/skills/lit-docx/scripts/slop_lint.py +0 -563
  632. package/.grok/skills/lit-docx/scripts/visual_audit.py +0 -41
  633. package/.grok/skills/lit-docx/templates/docx/acs.docx +0 -0
  634. package/.grok/skills/lit-docx/templates/docx/elsevier.docx +0 -0
  635. package/.grok/skills/lit-docx/templates/docx/ieee.docx +0 -0
  636. package/.grok/skills/lit-docx/templates/docx/korean-generic.docx +0 -0
  637. package/.grok/skills/lit-docx/templates/docx/nature.docx +0 -0
  638. package/.grok/skills/lit-docx/templates/latex/acs/README.md +0 -5
  639. package/.grok/skills/lit-docx/templates/latex/acs/template.tex +0 -42
  640. package/.grok/skills/lit-docx/templates/latex/elsevier/README.md +0 -5
  641. package/.grok/skills/lit-docx/templates/latex/elsevier/template.tex +0 -43
  642. package/.grok/skills/lit-docx/templates/latex/ieee/README.md +0 -5
  643. package/.grok/skills/lit-docx/templates/latex/ieee/template.tex +0 -42
  644. package/.grok/skills/lit-docx/templates/latex/korean-generic/README.md +0 -5
  645. package/.grok/skills/lit-docx/templates/latex/korean-generic/template.tex +0 -42
  646. package/.grok/skills/lit-docx/templates/latex/nature/README.md +0 -5
  647. package/.grok/skills/lit-docx/templates/latex/nature/template.tex +0 -42
  648. package/.grok/skills/lit-docx/templates/registry.yaml +0 -1366
  649. package/.grok/skills/lit-docx/templates/tonalities/brief.yaml +0 -28
  650. package/.grok/skills/lit-docx/templates/tonalities/journal.yaml +0 -25
  651. package/.grok/skills/lit-docx/templates/tonalities/manual.yaml +0 -26
  652. package/.grok/skills/lit-docx/templates/tonalities/memo.yaml +0 -26
  653. package/.grok/skills/lit-docx/templates/tonalities/proposal.yaml +0 -26
  654. package/.grok/skills/lit-docx/templates/tonalities/report.yaml +0 -26
  655. package/.grok/skills/lit-pptx/FORBIDDEN_TERMS.json +0 -55
  656. package/.grok/skills/lit-pptx/NOTICE.md +0 -1
  657. package/.grok/skills/lit-pptx/agents/analyst.md +0 -49
  658. package/.grok/skills/lit-pptx/agents/antithesis.md +0 -59
  659. package/.grok/skills/lit-pptx/agents/architect.md +0 -44
  660. package/.grok/skills/lit-pptx/agents/critic.md +0 -42
  661. package/.grok/skills/lit-pptx/agents/synthesizer.md +0 -47
  662. package/.grok/skills/lit-pptx/agents/thesis.md +0 -33
  663. package/.grok/skills/lit-pptx/assets/azure/circle-lg.png +0 -0
  664. package/.grok/skills/lit-pptx/assets/azure/circle-md.png +0 -0
  665. package/.grok/skills/lit-pptx/assets/azure/circle-sm.png +0 -0
  666. package/.grok/skills/lit-pptx/examples/01-pitch-signal-ko.md +0 -175
  667. package/.grok/skills/lit-pptx/examples/02-business-review-ledger-ko.md +0 -199
  668. package/.grok/skills/lit-pptx/examples/03-research-talk-paper-en.md +0 -177
  669. package/.grok/skills/lit-pptx/examples/04-lecture-chalk-ko.md +0 -176
  670. package/.grok/skills/lit-pptx/examples/05-data-review-night-en.md +0 -221
  671. package/.grok/skills/lit-pptx/examples/06-image-led-atlas-en.md +0 -143
  672. package/.grok/skills/lit-pptx/examples/07-briefing-gazette-ko.md +0 -192
  673. package/.grok/skills/lit-pptx/examples/08-status-update-ledger-en.md +0 -168
  674. package/.grok/skills/lit-pptx/examples/09-pitch-studio-en.md +0 -157
  675. package/.grok/skills/lit-pptx/examples/10-image-led-studio-ko.md +0 -175
  676. package/.grok/skills/lit-pptx/examples/11-business-review-night-en.md +0 -181
  677. package/.grok/skills/lit-pptx/examples/12-status-update-gazette-ko.md +0 -199
  678. package/.grok/skills/lit-pptx/examples/13-engineering-review-computational-brutalism-ko.md +0 -173
  679. package/.grok/skills/lit-pptx/examples/14-launch-pitch-neo-brutalism-ko.md +0 -154
  680. package/.grok/skills/lit-pptx/examples/15-design-lecture-bauhaus-ko.md +0 -139
  681. package/.grok/skills/lit-pptx/examples/16-community-programme-riso-ko.md +0 -158
  682. package/.grok/skills/lit-pptx/examples/17-public-data-briefing-newsroom-ko.md +0 -179
  683. package/.grok/skills/lit-pptx/fonts/jetbrains-mono/JetBrainsMono-Bold.ttf +0 -0
  684. package/.grok/skills/lit-pptx/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf +0 -0
  685. package/.grok/skills/lit-pptx/fonts/jetbrains-mono/OFL.txt +0 -93
  686. package/.grok/skills/lit-pptx/fonts/jetbrains-mono/provenance.json +0 -1
  687. package/.grok/skills/lit-pptx/package-lock.json +0 -795
  688. package/.grok/skills/lit-pptx/package.json +0 -13
  689. package/.grok/skills/lit-pptx/pretendard-font/OFL.txt +0 -94
  690. package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Bold.otf +0 -0
  691. package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Regular.otf +0 -0
  692. package/.grok/skills/lit-pptx/references/density-and-fill.md +0 -155
  693. package/.grok/skills/lit-pptx/references/direction-step.md +0 -237
  694. package/.grok/skills/lit-pptx/references/layout-families.md +0 -193
  695. package/.grok/skills/lit-pptx/references/title-treatments.md +0 -134
  696. package/.grok/skills/lit-pptx/references/tonalities/atlas.md +0 -121
  697. package/.grok/skills/lit-pptx/references/tonalities/bauhaus.md +0 -140
  698. package/.grok/skills/lit-pptx/references/tonalities/chalk.md +0 -133
  699. package/.grok/skills/lit-pptx/references/tonalities/computational-brutalism.md +0 -150
  700. package/.grok/skills/lit-pptx/references/tonalities/gazette.md +0 -125
  701. package/.grok/skills/lit-pptx/references/tonalities/ledger.md +0 -132
  702. package/.grok/skills/lit-pptx/references/tonalities/neo-brutalism.md +0 -161
  703. package/.grok/skills/lit-pptx/references/tonalities/newsroom.md +0 -144
  704. package/.grok/skills/lit-pptx/references/tonalities/night.md +0 -129
  705. package/.grok/skills/lit-pptx/references/tonalities/paper.md +0 -125
  706. package/.grok/skills/lit-pptx/references/tonalities/riso.md +0 -137
  707. package/.grok/skills/lit-pptx/references/tonalities/signal.md +0 -116
  708. package/.grok/skills/lit-pptx/references/tonalities/studio.md +0 -121
  709. package/.grok/skills/lit-pptx/requirements.lock +0 -12
  710. package/.grok/skills/lit-pptx/scripts/compile-deck.js +0 -451
  711. package/.grok/skills/lit-pptx/scripts/craft_extras.py +0 -307
  712. package/.grok/skills/lit-pptx/scripts/deck_output.py +0 -612
  713. package/.grok/skills/lit-pptx/scripts/deps.cjs +0 -83
  714. package/.grok/skills/lit-pptx/scripts/embed_fonts.py +0 -213
  715. package/.grok/skills/lit-pptx/scripts/inventory.py +0 -74
  716. package/.grok/skills/lit-pptx/scripts/learn_template.py +0 -433
  717. package/.grok/skills/lit-pptx/scripts/lib/derive-palette.js +0 -176
  718. package/.grok/skills/lit-pptx/scripts/lib/directive-parser.js +0 -244
  719. package/.grok/skills/lit-pptx/scripts/lib/font-map.js +0 -79
  720. package/.grok/skills/lit-pptx/scripts/lib/gen-bg.js +0 -85
  721. package/.grok/skills/lit-pptx/scripts/lib/gen-gradient-assets.js +0 -36
  722. package/.grok/skills/lit-pptx/scripts/lib/grid-resolver.js +0 -512
  723. package/.grok/skills/lit-pptx/scripts/lib/layout-resolver.js +0 -1113
  724. package/.grok/skills/lit-pptx/scripts/lib/markdown-loader.js +0 -138
  725. package/.grok/skills/lit-pptx/scripts/lib/render-adapter-html.js +0 -356
  726. package/.grok/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +0 -2236
  727. package/.grok/skills/lit-pptx/scripts/lib/render-pack.js +0 -3365
  728. package/.grok/skills/lit-pptx/scripts/lib/slide-ast.js +0 -565
  729. package/.grok/skills/lit-pptx/scripts/lib/slide-grid.js +0 -104
  730. package/.grok/skills/lit-pptx/scripts/lib/spec-validator.js +0 -94
  731. package/.grok/skills/lit-pptx/scripts/lib/template-registry.js +0 -730
  732. package/.grok/skills/lit-pptx/scripts/ooxml_integrity.py +0 -37
  733. package/.grok/skills/lit-pptx/scripts/qa_deck.py +0 -809
  734. package/.grok/skills/lit-pptx/scripts/run.mjs +0 -25
  735. package/.grok/skills/lit-pptx/scripts/validate_pptx.py +0 -223
  736. package/.grok/skills/lit-pptx/specs/markdown-slide-spec-v1.md +0 -251
  737. package/.grok/skills/lit-pptx/specs/markdown-slide-spec-v2.md +0 -207
  738. package/.grok/skills/lit-pptx/specs/slide-ast-v1.schema.json +0 -229
  739. package/.grok/skills/lit-pptx/specs/slide-ast-v2.schema.json +0 -144
  740. package/.grok/skills/lit-pptx/specs/template-enrollment-contract.md +0 -379
  741. package/.grok/skills/lit-pptx/templates/bauhaus_light.css +0 -4
  742. package/.grok/skills/lit-pptx/templates/boilerplate_professional.css +0 -508
  743. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/capabilities.yaml +0 -146
  744. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +0 -454
  745. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +0 -40
  746. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +0 -154
  747. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +0 -435
  748. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +0 -40
  749. package/.grok/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/capabilities.yaml +0 -179
  750. package/.grok/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/layout-mapping.yaml +0 -299
  751. package/.grok/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/template.yaml +0 -45
  752. package/.grok/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +0 -181
  753. package/.grok/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml +0 -299
  754. package/.grok/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +0 -44
  755. package/.grok/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +0 -81
  756. package/.grok/skills/lit-pptx/templates/tonalities/bauhaus/pack.yaml +0 -98
  757. package/.grok/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +0 -87
  758. package/.grok/skills/lit-pptx/templates/tonalities/computational-brutalism/pack.yaml +0 -99
  759. package/.grok/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +0 -81
  760. package/.grok/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +0 -82
  761. package/.grok/skills/lit-pptx/templates/tonalities/neo-brutalism/pack.yaml +0 -107
  762. package/.grok/skills/lit-pptx/templates/tonalities/newsroom/pack.yaml +0 -99
  763. package/.grok/skills/lit-pptx/templates/tonalities/night/pack.yaml +0 -82
  764. package/.grok/skills/lit-pptx/templates/tonalities/paper/pack.yaml +0 -87
  765. package/.grok/skills/lit-pptx/templates/tonalities/riso/pack.yaml +0 -99
  766. package/.grok/skills/lit-pptx/templates/tonalities/signal/pack.yaml +0 -83
  767. package/.grok/skills/lit-pptx/templates/tonalities/studio/pack.yaml +0 -81
  768. package/.grok/skills/lit-schematic/examples/iso-heat-exchanger/build.mjs +0 -38
  769. package/.grok/skills/lit-schematic/examples/iso-heat-exchanger/scene.mjs +0 -133
  770. package/.grok/skills/lit-schematic/examples/journal-adsorption-rig/build.mjs +0 -87
  771. package/.grok/skills/lit-schematic/examples/pid-dosing-skid/build.mjs +0 -85
  772. package/.grok/skills/lit-schematic/references/cutaway-outputs.md +0 -70
  773. package/.grok/skills/lit-schematic/references/isometric-craft.md +0 -101
  774. package/.grok/skills/lit-schematic/references/journal-figures.md +0 -72
  775. package/.grok/skills/lit-schematic/references/kit-api.md +0 -134
  776. package/.grok/skills/lit-schematic/references/pfd-and-layout.md +0 -53
  777. package/.grok/skills/lit-schematic/references/pid-drafting.md +0 -103
  778. package/.grok/skills/lit-schematic/references/pid-symbols.md +0 -163
  779. package/.grok/skills/lit-schematic/references/verification.md +0 -100
  780. package/.grok/skills/lit-schematic/scripts/doctor.mjs +0 -57
  781. package/.grok/skills/lit-schematic/scripts/lib/figure.mjs +0 -81
  782. package/.grok/skills/lit-schematic/scripts/lib/fonts.mjs +0 -27
  783. package/.grok/skills/lit-schematic/scripts/lib/geom.mjs +0 -113
  784. package/.grok/skills/lit-schematic/scripts/lib/interactive.mjs +0 -292
  785. package/.grok/skills/lit-schematic/scripts/lib/isa.mjs +0 -115
  786. package/.grok/skills/lit-schematic/scripts/lib/iso.mjs +0 -719
  787. package/.grok/skills/lit-schematic/scripts/lib/legend-sheet.mjs +0 -162
  788. package/.grok/skills/lit-schematic/scripts/lib/pid.mjs +0 -937
  789. package/.grok/skills/lit-schematic/scripts/lib/png.mjs +0 -132
  790. package/.grok/skills/lit-schematic/scripts/lib/qa-core.mjs +0 -658
  791. package/.grok/skills/lit-schematic/scripts/lib/route.mjs +0 -218
  792. package/.grok/skills/lit-schematic/scripts/lib/sheet.mjs +0 -890
  793. package/.grok/skills/lit-schematic/scripts/lib/svg.mjs +0 -82
  794. package/.grok/skills/lit-schematic/scripts/lib/theme.mjs +0 -115
  795. package/.grok/skills/lit-schematic/scripts/motion.mjs +0 -129
  796. package/.grok/skills/lit-schematic/scripts/qa.mjs +0 -92
  797. package/.grok/skills/lit-schematic/scripts/render.mjs +0 -233
  798. package/.grok/skills/lit-schematic/scripts/scaffold.mjs +0 -60
  799. package/.grok/skills/lit-scientific-visualization/scripts/verify-canonical-corpus.mjs +0 -181
  800. package/.grok/skills/lit-typographic-motion/NOTICE +0 -23
  801. package/.grok/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +0 -56
  802. package/.grok/skills/lit-typographic-motion/fonts/Archivo-OFL.txt +0 -93
  803. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w100-wt400.ttf +0 -0
  804. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w100-wt700.ttf +0 -0
  805. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w100-wt900.ttf +0 -0
  806. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w125-wt400.ttf +0 -0
  807. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w125-wt700.ttf +0 -0
  808. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w125-wt900.ttf +0 -0
  809. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w75-wt400.ttf +0 -0
  810. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w75-wt700.ttf +0 -0
  811. package/.grok/skills/lit-typographic-motion/fonts/Archivo-w75-wt900.ttf +0 -0
  812. package/.grok/skills/lit-typographic-motion/fonts/JetBrainsMono-OFL.txt +0 -93
  813. package/.grok/skills/lit-typographic-motion/fonts/JetBrainsMono-wght-latin.woff2 +0 -0
  814. package/.grok/skills/lit-typographic-motion/fonts/Silkscreen-Bold.ttf +0 -0
  815. package/.grok/skills/lit-typographic-motion/fonts/Silkscreen-OFL.txt +0 -93
  816. package/.grok/skills/lit-typographic-motion/fonts/Silkscreen-Regular.ttf +0 -0
  817. package/.grok/skills/lit-typographic-motion/fonts/VT323-OFL.txt +0 -93
  818. package/.grok/skills/lit-typographic-motion/fonts/VT323-Regular.ttf +0 -0
  819. package/.grok/skills/lit-typographic-motion/fonts/pins.json +0 -386
  820. package/.grok/skills/lit-typographic-motion/fonts/stroke/CREDITS +0 -41
  821. package/.grok/skills/lit-typographic-motion/fonts/stroke/EMSAllure.svg +0 -216
  822. package/.grok/skills/lit-typographic-motion/fonts/stroke/EMSFelix.svg +0 -216
  823. package/.grok/skills/lit-typographic-motion/fonts/stroke/EMSOsmotron.svg +0 -216
  824. package/.grok/skills/lit-typographic-motion/fonts/stroke/EMSReadability.svg +0 -216
  825. package/.grok/skills/lit-typographic-motion/fonts/stroke/EMSTech.svg +0 -217
  826. package/.grok/skills/lit-typographic-motion/fonts/stroke/OFL-1.1.txt +0 -91
  827. package/.grok/skills/lit-typographic-motion/package-lock.json +0 -63
  828. package/.grok/skills/lit-typographic-motion/package.json +0 -10
  829. package/.grok/skills/lit-typographic-motion/recipes/hero-3d/expected.json +0 -62
  830. package/.grok/skills/lit-typographic-motion/recipes/hero-3d/index.html +0 -82
  831. package/.grok/skills/lit-typographic-motion/recipes/negatives/card-scenes/expected.json +0 -16
  832. package/.grok/skills/lit-typographic-motion/recipes/negatives/card-scenes/index.html +0 -36
  833. package/.grok/skills/lit-typographic-motion/recipes/negatives/reset-sweep/expected.json +0 -16
  834. package/.grok/skills/lit-typographic-motion/recipes/negatives/reset-sweep/index.html +0 -24
  835. package/.grok/skills/lit-typographic-motion/recipes/negatives/still-glow/expected.json +0 -17
  836. package/.grok/skills/lit-typographic-motion/recipes/negatives/still-glow/index.html +0 -25
  837. package/.grok/skills/lit-typographic-motion/recipes/negatives/title-slam/expected.json +0 -17
  838. package/.grok/skills/lit-typographic-motion/recipes/negatives/title-slam/index.html +0 -37
  839. package/.grok/skills/lit-typographic-motion/recipes/orbit-loop/expected.json +0 -67
  840. package/.grok/skills/lit-typographic-motion/recipes/orbit-loop/index.html +0 -119
  841. package/.grok/skills/lit-typographic-motion/recipes/painted-light/expected.json +0 -95
  842. package/.grok/skills/lit-typographic-motion/recipes/painted-light/index.html +0 -192
  843. package/.grok/skills/lit-typographic-motion/recipes/weight-tide/expected.json +0 -67
  844. package/.grok/skills/lit-typographic-motion/recipes/weight-tide/index.html +0 -85
  845. package/.grok/skills/lit-typographic-motion/references/choice-first.md +0 -30
  846. package/.grok/skills/lit-typographic-motion/references/complete-contract.md +0 -124
  847. package/.grok/skills/lit-typographic-motion/references/cover.md +0 -389
  848. package/.grok/skills/lit-typographic-motion/references/craft-loop.md +0 -112
  849. package/.grok/skills/lit-typographic-motion/references/depth.md +0 -119
  850. package/.grok/skills/lit-typographic-motion/references/runtime.md +0 -138
  851. package/.grok/skills/lit-typographic-motion/references/scene-contract.md +0 -98
  852. package/.grok/skills/lit-typographic-motion/references/stage.md +0 -194
  853. package/.grok/skills/lit-typographic-motion/references/style-bible.md +0 -102
  854. package/.grok/skills/lit-typographic-motion/references/treatment.md +0 -153
  855. package/.grok/skills/lit-typographic-motion/references/type-craft.md +0 -94
  856. package/.grok/skills/lit-typographic-motion/requirements-audio.txt +0 -794
  857. package/.grok/skills/lit-typographic-motion/scripts/beat_grid.py +0 -29
  858. package/.grok/skills/lit-typographic-motion/scripts/blender/runner.py +0 -218
  859. package/.grok/skills/lit-typographic-motion/scripts/lib/assets.mjs +0 -230
  860. package/.grok/skills/lit-typographic-motion/scripts/lib/blender.mjs +0 -136
  861. package/.grok/skills/lit-typographic-motion/scripts/lib/board.mjs +0 -153
  862. package/.grok/skills/lit-typographic-motion/scripts/lib/bundle.mjs +0 -23
  863. package/.grok/skills/lit-typographic-motion/scripts/lib/cache.mjs +0 -107
  864. package/.grok/skills/lit-typographic-motion/scripts/lib/chrome.mjs +0 -276
  865. package/.grok/skills/lit-typographic-motion/scripts/lib/clips.mjs +0 -119
  866. package/.grok/skills/lit-typographic-motion/scripts/lib/completion.mjs +0 -43
  867. package/.grok/skills/lit-typographic-motion/scripts/lib/constants.mjs +0 -244
  868. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-assets.mjs +0 -88
  869. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-capture.mjs +0 -153
  870. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-gate.mjs +0 -312
  871. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-image.mjs +0 -111
  872. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-pool.mjs +0 -62
  873. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-sheet.mjs +0 -73
  874. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-treatment.mjs +0 -128
  875. package/.grok/skills/lit-typographic-motion/scripts/lib/cover-webp.mjs +0 -134
  876. package/.grok/skills/lit-typographic-motion/scripts/lib/cover.mjs +0 -354
  877. package/.grok/skills/lit-typographic-motion/scripts/lib/encode.mjs +0 -33
  878. package/.grok/skills/lit-typographic-motion/scripts/lib/flash.mjs +0 -170
  879. package/.grok/skills/lit-typographic-motion/scripts/lib/fonts.mjs +0 -150
  880. package/.grok/skills/lit-typographic-motion/scripts/lib/frame-pool.mjs +0 -162
  881. package/.grok/skills/lit-typographic-motion/scripts/lib/gallery.mjs +0 -160
  882. package/.grok/skills/lit-typographic-motion/scripts/lib/gate.mjs +0 -586
  883. package/.grok/skills/lit-typographic-motion/scripts/lib/house.mjs +0 -43
  884. package/.grok/skills/lit-typographic-motion/scripts/lib/look.mjs +0 -289
  885. package/.grok/skills/lit-typographic-motion/scripts/lib/png.mjs +0 -95
  886. package/.grok/skills/lit-typographic-motion/scripts/lib/presets.mjs +0 -161
  887. package/.grok/skills/lit-typographic-motion/scripts/lib/render.mjs +0 -563
  888. package/.grok/skills/lit-typographic-motion/scripts/lib/report.mjs +0 -65
  889. package/.grok/skills/lit-typographic-motion/scripts/lib/scaffold.mjs +0 -174
  890. package/.grok/skills/lit-typographic-motion/scripts/lib/score.mjs +0 -640
  891. package/.grok/skills/lit-typographic-motion/scripts/lib/seed.mjs +0 -31
  892. package/.grok/skills/lit-typographic-motion/scripts/lib/session.mjs +0 -102
  893. package/.grok/skills/lit-typographic-motion/scripts/lib/sound.mjs +0 -517
  894. package/.grok/skills/lit-typographic-motion/scripts/lib/soundtrack.mjs +0 -46
  895. package/.grok/skills/lit-typographic-motion/scripts/lib/stage-gate.mjs +0 -139
  896. package/.grok/skills/lit-typographic-motion/scripts/lib/stage-qa.mjs +0 -400
  897. package/.grok/skills/lit-typographic-motion/scripts/lib/stage-session.mjs +0 -166
  898. package/.grok/skills/lit-typographic-motion/scripts/lib/stage.mjs +0 -504
  899. package/.grok/skills/lit-typographic-motion/scripts/lib/stills.mjs +0 -90
  900. package/.grok/skills/lit-typographic-motion/scripts/lib/styles.mjs +0 -224
  901. package/.grok/skills/lit-typographic-motion/scripts/lib/text.mjs +0 -114
  902. package/.grok/skills/lit-typographic-motion/scripts/lib/timeline.mjs +0 -223
  903. package/.grok/skills/lit-typographic-motion/scripts/lib/treatment.mjs +0 -446
  904. package/.grok/skills/lit-typographic-motion/scripts/lib/vendor/three/LICENSE +0 -21
  905. package/.grok/skills/lit-typographic-motion/scripts/lib/vendor/three/addons/environments/RoomEnvironment.js +0 -144
  906. package/.grok/skills/lit-typographic-motion/scripts/lib/vendor/three/addons/geometries/RoundedBoxGeometry.js +0 -155
  907. package/.grok/skills/lit-typographic-motion/scripts/lib/vendor/three/three.module.js +0 -54571
  908. package/.grok/skills/lit-typographic-motion/scripts/motion.mjs +0 -225
  909. package/.grok/skills/lit-typographic-motion/scripts/page/engine.js +0 -344
  910. package/.grok/skills/lit-typographic-motion/scripts/page/gl.js +0 -365
  911. package/.grok/skills/lit-typographic-motion/scripts/page/passes.js +0 -211
  912. package/.grok/skills/lit-typographic-motion/scripts/page/post.js +0 -127
  913. package/.grok/skills/lit-typographic-motion/scripts/page/scenes.js +0 -359
  914. package/.grok/skills/lit-typographic-motion/scripts/page/stroke.js +0 -154
  915. package/.grok/skills/lit-typographic-motion/scripts/page/type.js +0 -142
  916. package/.grok/skills/lit-typographic-motion/scripts/page/util.js +0 -68
  917. package/.grok/skills/lit-typographic-motion/scripts/prewarm.mjs +0 -216
  918. package/.grok/skills/lit-typographic-motion/scripts/stage/cover-init.js +0 -56
  919. package/.grok/skills/lit-typographic-motion/scripts/stage/host.js +0 -200
  920. package/.grok/skills/lit-typographic-motion/scripts/stage/loop-kit.js +0 -96
  921. package/.grok/skills/lit-typographic-motion/scripts/stage/qa.js +0 -137
  922. package/.grok/skills/lit-typographic-motion/scripts/stage/stage-kit.js +0 -523
  923. package/.grok/skills/lit-typographic-motion/styles/paper.json +0 -1
  924. package/.grok/skills/lit-typographic-motion/styles/swiss-signal.json +0 -1
  925. package/.grok/skills/lit-typographic-motion/styles/terminalcore.json +0 -1
  926. package/.grok/skills/lit-typographic-motion/styles/tidal.json +0 -1
  927. package/.grok/skills/readme-studio/references/choice-first.md +0 -24
  928. package/.grok/skills/readme-studio/references/complete-contract.md +0 -26
  929. package/.grok/skills/readme-studio/references/decoration-patterns.md +0 -29
  930. package/.grok/skills/readme-studio/references/facts.md +0 -15
  931. package/.grok/skills/readme-studio/references/motion.md +0 -42
  932. package/.grok/skills/readme-studio/references/production.md +0 -9
  933. package/.grok/skills/readme-studio/references/typography.md +0 -16
  934. package/.grok/skills/readme-studio/scripts/validate-facts.mjs +0 -52
  935. package/.grok/skills/readme-studio/templates/cover-source.json +0 -27
  936. package/.grok/skills/readme-studio/templates/facts.json +0 -13
  937. package/.grok/skills/readme-studio/templates/hyperframes/index.html +0 -41
  938. package/.grok/skills/readme-studio/templates/hyperframes/index.motion.json +0 -4
  939. package/.grok/skills/readme-studio/templates/hyperframes/package-lock.json +0 -2016
  940. package/.grok/skills/readme-studio/templates/hyperframes/package.json +0 -12
  941. package/.grok/skills/readme-studio/templates/picture.md +0 -61
  942. package/.grok/skills/readme-studio/templates/remotion/package-lock.json +0 -3785
  943. package/.grok/skills/readme-studio/templates/remotion/package.json +0 -19
  944. package/.grok/skills/readme-studio/templates/remotion/src/index.jsx +0 -31
  945. package/.grok/skills/readme-studio/templates/typography/outline.mjs +0 -62
  946. package/.grok/skills/readme-studio/templates/typography/package-lock.json +0 -135
  947. package/.grok/skills/readme-studio/templates/typography/package.json +0 -10
  948. package/.grok/skills/visual-qa/references/capture-playbook.md +0 -47
  949. package/.grok/skills/visual-qa/references/complete-contract.md +0 -721
  950. package/.grok/skills/visual-qa/references/verdict-taxonomy.md +0 -34
  951. package/.grok/skills/visual-qa/scripts/verify-evidence-manifest.mjs +0 -91
  952. package/.grok/vendor/NOTICE.md +0 -16
  953. package/.grok/vendor/licenses/045_scientific-visualization-MIT.txt +0 -21
  954. package/.grok/vendor/provenance/045_scientific-visualization.md +0 -37
  955. package/.grok/vendor/scientific-visualization/assets/color_palettes.py +0 -197
  956. package/.grok/vendor/scientific-visualization/assets/nature.mplstyle +0 -75
  957. package/.grok/vendor/scientific-visualization/assets/presentation.mplstyle +0 -74
  958. package/.grok/vendor/scientific-visualization/assets/publication.mplstyle +0 -78
  959. package/.grok/vendor/scientific-visualization/evals/evals.json +0 -158
  960. package/.grok/vendor/scientific-visualization/references/_canonical-corpus/manifest.json +0 -38
  961. package/.grok/vendor/scientific-visualization/references/color_palettes.md +0 -380
  962. package/.grok/vendor/scientific-visualization/references/journal_requirements.md +0 -359
  963. package/.grok/vendor/scientific-visualization/references/matplotlib_examples.md +0 -608
  964. package/.grok/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +0 -85
  965. package/.grok/vendor/scientific-visualization/references/publication_guidelines.md +0 -217
  966. package/.grok/vendor/scientific-visualization/references/seaborn_for_publications.md +0 -293
  967. package/.grok/vendor/scientific-visualization/scripts/figure_export.py +0 -238
  968. package/.grok/vendor/scientific-visualization/scripts/style_presets.py +0 -467
  969. package/.grok/vendor/scientific-visualization/tests/test_figure_export.py +0 -51
  970. package/.grok/vendor/scientific-visualization/tests/test_style_presets.py +0 -114
  971. /package/.grok/skills/{lit-pptx → litgrok}/scripts/proc.cjs +0 -0
@@ -1,344 +0,0 @@
1
- import { sourceMetrics } from './diagram-metrics.mjs';
2
-
3
- const MAX_EDGE_LABEL_ANCHOR_DISTANCE=24;
4
- const BOUNDARY_EDGE_PADDING=4;
5
- const BOUNDARY_EDGE_MIN_OVERLAP=12;
6
- const ARROWHEAD_CANVAS_FLOOR=12/1080;
7
- const ARROWHEAD_STROKE_MULTIPLE=5;
8
- const ARROWHEAD_TARGET_TOLERANCE=2;
9
-
10
- const decode=(s)=>s.replaceAll('&amp;','&').replaceAll('&lt;','<').replaceAll('&gt;','>').replaceAll('&quot;','"').replaceAll('&apos;',"'").replaceAll('&#39;',"'");
11
- const attributes=(s)=>Object.fromEntries([...s.matchAll(/([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g)].map((m)=>[m[1],decode(m[2]??m[3]??'')]));
12
- const clean=(s)=>decode(s.replace(/<[^>]*>/g,' ').replace(/\s+/g,' ').trim());
13
- const widthOf=(text,size)=>[...text].reduce((n,c)=>n+(/\s/.test(c)?.28:/[\u1100-\u11ff\u3130-\u318f\uac00-\ud7af]/.test(c)?.98:/[ilI.,:;!|]/.test(c)?.32:/[MW@#%]/.test(c)?.82:.56),0)*size;
14
- const contamination=[
15
- /\blitfamily\b/i, /\b(?:generator|generated by|template|prototype)\b/i,
16
- /\bsource\s*:/i, /\bnotes?\s*:/i, /\bstatic\s+first\b/i,
17
- /\baccessible\s+labels\b/i, /\bone\s+accent\b/i, /\bfocal\b/i,
18
- /\b(?:light|dark|full)\s*[·|/]\s*static\b/i, /\bdesign\s+rules?\b/i,
19
- /^\s*show\b/i,
20
- ];
21
-
22
- function visibleSvgText(svg){
23
- return [...svg.matchAll(/<text\b([^>]*)>([\s\S]*?)<\/text>/gi)].map((m)=>{
24
- const a=attributes(m[1]),label=clean(m[2]),size=Number(a['font-size']||16),textAnchor=a['text-anchor']||'start',anchor={x:Number(a.x||0),y:Number(a.y||0)},w=widthOf(label,size),x=anchor.x-(textAnchor==='middle'?w/2:textAnchor==='end'?w:0),y=anchor.y-size*.82;
25
- return {label,size,role:a['data-role']||'',nodeId:a['data-node-id']||'',anchor,edgeFor:a['data-edge-for']||'',boundaryFor:a['data-boundary-for']||a['data-group-for']||'',x,y,w,h:size*1.22};
26
- }).filter((t)=>t.label);
27
- }
28
- function svgContent(source){return [...source.matchAll(/<svg\b[^>]*>[\s\S]*?<\/svg>/gi)].map((m)=>m[0]).join('\n');}
29
- function parseRoutes(svg){
30
- const routes=[];
31
- for(const m of svg.matchAll(/<(line|path)\b([^>]*)>/gi)){
32
- const a=attributes(m[2]); if(!a['data-from']||!a['data-to'])continue;
33
- let segments=[];
34
- if(m[1].toLowerCase()==='line'){
35
- const v=['x1','y1','x2','y2'].map((k)=>Number(a[k])); if(v.every(Number.isFinite))segments=[[v[0],v[1],v[2],v[3]]];
36
- }else if(a.d){
37
- const parts=a.d.match(/[a-zA-Z]|[-+]?(?:\d*\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/gi)||[];let i=0,cmd='',x=0,y=0,px=0,py=0;
38
- while(i<parts.length){if(/^[a-z]$/i.test(parts[i]))cmd=parts[i++];if(!cmd)break;const rel=cmd===cmd.toLowerCase(),up=cmd.toUpperCase();
39
- if(up==='M'||up==='L'){if(i+1>=parts.length||/^[a-z]$/i.test(parts[i])){cmd='';continue;}const nx=Number(parts[i++])+(rel?x:0),ny=Number(parts[i++])+(rel?y:0);if(up==='L')segments.push([x,y,nx,ny]);x=nx;y=ny;}
40
- else if(up==='H'){if(i>=parts.length||/^[a-z]$/i.test(parts[i])){cmd='';continue;}const nx=Number(parts[i++])+(rel?x:0);segments.push([x,y,nx,y]);x=nx;}
41
- else if(up==='V'){if(i>=parts.length||/^[a-z]$/i.test(parts[i])){cmd='';continue;}const ny=Number(parts[i++])+(rel?y:0);segments.push([x,y,x,ny]);y=ny;}
42
- else if(up==='C'){if(i+5>=parts.length||/^[a-z]$/i.test(parts[i])){cmd='';continue;}const p=(n)=>[Number(parts[n])+(rel?x:0),Number(parts[n+1])+(rel?y:0)],start=[x,y],c1=p(i),c2=p(i+2),end=p(i+4);i+=6;let previous=start;for(let step=1;step<=16;step++){const t=step/16,u=1-t,next=[u*u*u*start[0]+3*u*u*t*c1[0]+3*u*t*t*c2[0]+t*t*t*end[0],u*u*u*start[1]+3*u*u*t*c1[1]+3*u*t*t*c2[1]+t*t*t*end[1]];segments.push([previous[0],previous[1],next[0],next[1]]);previous=next;}x=end[0];y=end[1];}
43
- else {cmd='';while(i<parts.length&&!/^[a-z]$/i.test(parts[i]))i++;}
44
- }
45
- }
46
- if(segments.length)routes.push({from:a['data-from'],to:a['data-to'],label:a['data-label']||'',segments,markerStart:a['marker-start']||'',markerEnd:a['marker-end']||'',strokeWidth:Number(a['stroke-width']||1)});
47
- }
48
- return routes;
49
- }
50
- function rectangles(svg){
51
- const nodes=[];
52
- for(const m of svg.matchAll(/<rect\b([^>]*)\/?\s*>/gi)){
53
- const a=attributes(m[1]);if(!a['data-node-id'])continue;
54
- const box={id:a['data-node-id'],fill:a.fill||'',type:a['data-node-type']||'',outcomes:(a['data-outcomes']||'').split('|').map((value)=>value.trim()).filter(Boolean),x:Number(a.x||0),y:Number(a.y||0),w:Number(a.width||0),h:Number(a.height||0)};
55
- if(box.w>0&&box.h>0)nodes.push(box);
56
- }
57
- return nodes;
58
- }
59
- function segmentHitsBox(s,b,pad=0){
60
- const [x1,y1,x2,y2]=s,loX=Math.min(x1,x2),hiX=Math.max(x1,x2),loY=Math.min(y1,y2),hiY=Math.max(y1,y2),left=b.x-pad,right=b.x+b.w+pad,top=b.y-pad,bottom=b.y+b.h+pad;
61
- if(x1===x2)return x1>=left&&x1<=right&&hiY>=top&&loY<=bottom;
62
- if(y1===y2)return y1>=top&&y1<=bottom&&hiX>=left&&loX<=right;
63
- const steps=24;for(let i=0;i<=steps;i++){const t=i/steps,x=x1+(x2-x1)*t,y=y1+(y2-y1)*t;if(x>=left&&x<=right&&y>=top&&y<=bottom)return true;}return false;
64
- }
65
- function segmentHitsText(s,t,pad=1){
66
- const b={x:t.x-pad,y:t.y-pad,w:t.w+pad*2,h:t.h+pad*2};return segmentHitsBox(s,b,0);
67
- }
68
- function textOverlapsNode(text,node,pad=1){return text.x<node.x+node.w+pad&&text.x+text.w>node.x-pad&&text.y<node.y+node.h+pad&&text.y+text.h>node.y-pad;}
69
- function gap(a,b){const dx=Math.max(0,a.x-(b.x+b.w),b.x-(a.x+a.w)),dy=Math.max(0,a.y-(b.y+b.h),b.y-(a.y+a.h));return Math.hypot(dx,dy);}
70
-
71
- const OFFICE_LIMITS={groupRatio:2,accentFamiliesHigh:6,hueBand:20,latinShare:.8,titleShare:.6,inset:4};
72
- function officeQuality(svg,nodes,texts,outlines){
73
- const issues=[];
74
- if(outlines.length>=2){
75
- const group=(n)=>outlines.find((o)=>n.x+n.w/2>=o.x&&n.x+n.w/2<=o.x+o.w&&n.y+n.h/2>=o.y&&n.y+n.h/2<=o.y+o.h)?.id||'none';
76
- const intra=[],inter=[];
77
- for(let i=0;i<nodes.length;i++)for(let j=i+1;j<nodes.length;j++)(group(nodes[i])===group(nodes[j])?intra:inter).push(gap(nodes[i],nodes[j]));
78
- if(intra.length&&inter.length&&Math.min(...inter)<OFFICE_LIMITS.groupRatio*Math.max(...intra))issues.push('OF-201 CLUSTER_GAP_RATIO inter='+Math.min(...inter).toFixed(1)+' intra='+Math.max(...intra).toFixed(1));
79
- }
80
- const hues=[];
81
- for(const n of nodes){const m=n.fill.match(/^#([\da-f]{6})$/i);if(!m)continue;const rgb=[0,2,4].map((i)=>parseInt(m[1].slice(i,i+2),16)/255),max=Math.max(...rgb),min=Math.min(...rgb),d=max-min,light=(max+min)/2,sat=d===0?0:d/(1-Math.abs(2*light-1));if(sat<.12||light<.12||light>.93)continue;let h=0;if(d){const k=rgb.indexOf(max);h=60*((k===0?(rgb[1]-rgb[2])/d:k===1?(rgb[2]-rgb[0])/d+2:(rgb[0]-rgb[1])/d+4)+6)%360;}if(!hues.some((v)=>Math.min(Math.abs(v-h),360-Math.abs(v-h))<=OFFICE_LIMITS.hueBand))hues.push(h);}
82
- if(hues.length>=OFFICE_LIMITS.accentFamiliesHigh)issues.push('OF-202 ACCENT_COUNT '+hues.length+' HIGH; keep three to five families, each tied to a named role');
83
- for(const t of texts){
84
- const letters=[...t.label].filter((c)=>/[A-Za-z0-9]/.test(c)).length,share=letters/Math.max(1,t.label.length);
85
- if(share>=OFFICE_LIMITS.latinShare&&t.label!==t.label.toUpperCase()){const all=t.label.split(/\s+/),words=all.filter((w)=>/^[A-Za-z]{4,}$/.test(w)),caps=words.filter((w)=>/^[A-Z][a-z]+$/.test(w));if(caps.length>=2&&caps.length/Math.max(1,words.length)>OFFICE_LIMITS.titleShare&&all.some((w)=>/^(Of|And|The|To|For|In)$/.test(w)))issues.push('OF-203 LABEL_CASE '+t.label);}
86
- const box=t.nodeId?nodes.find((n)=>n.id===t.nodeId):t.boundaryFor?outlines.find((o)=>o.id===t.boundaryFor):null;
87
- if(box&&t.w>box.w-2*OFFICE_LIMITS.inset)issues.push('OF-204 LABEL_OVERFLOW '+t.label+' width='+t.w.toFixed(1)+' box='+box.w);
88
- }
89
- return issues;
90
- }
91
-
92
- function boundaryOutlines(svg){
93
- const outlines=[];
94
- const add=(a)=>{
95
- const markers=['data-trust-boundary','data-boundary','data-boundary-name','data-group-boundary','data-group-name','data-group-label','data-group-id'];
96
- const classMarker=/\b(?:boundary|group)(?:[-_][\w-]+)?\b/i.test(a.class||'');
97
- if(!markers.some((key)=>Object.hasOwn(a,key))&&!classMarker)return;
98
- const labels=[a['data-trust-boundary'],a['data-boundary-name'],a['data-group-boundary'],a['data-group-name'],a['data-group-label']].filter((value)=>value&&value!=='true');
99
- const x=Number(a.x||0),y=Number(a.y||0),w=Number(a.width||0),h=Number(a.height||0);
100
- if(w>0&&h>0)outlines.push({id:a['data-group-id']||a.id||labels[0]||'outline',labels,x,y,w,h,strokeWidth:Number(a['stroke-width']||1)});
101
- };
102
- for(const match of svg.matchAll(/<rect\b([^>]*)\/?\s*>/gi))add(attributes(match[1]));
103
- for(const match of svg.matchAll(/<g\b([^>]*)>([\s\S]*?)<\/g>/gi)){
104
- const group=attributes(match[1]);
105
- if(!['data-trust-boundary','data-boundary','data-boundary-name','data-group-boundary','data-group-name','data-group-label','data-group-id'].some((key)=>Object.hasOwn(group,key)))continue;
106
- const rect=match[2].match(/<rect\b([^>]*)\/?\s*>/i);
107
- if(rect)add({...attributes(rect[1]),...group});
108
- }
109
- return outlines;
110
- }
111
-
112
- function pointSegmentDistance(point,segment){
113
- const [x1,y1,x2,y2]=segment,dx=x2-x1,dy=y2-y1,length=dx*dx+dy*dy;
114
- const t=length?Math.max(0,Math.min(1,((point.x-x1)*dx+(point.y-y1)*dy)/length)):0;
115
- return Math.hypot(point.x-(x1+t*dx),point.y-(y1+t*dy));
116
- }
117
- function routeDistance(point,route){return Math.min(...route.segments.map((segment)=>pointSegmentDistance(point,segment)));}
118
- function isBoundaryLabel(text,outlines){return text.role==='boundary'||text.boundaryFor||outlines.some((outline)=>outline.labels.includes(text.label)||outline.id===text.boundaryFor);}
119
- function outlineEdges(outline){return [[outline.x,outline.y,outline.x+outline.w,outline.y],[outline.x+outline.w,outline.y,outline.x+outline.w,outline.y+outline.h],[outline.x+outline.w,outline.y+outline.h,outline.x,outline.y+outline.h],[outline.x,outline.y+outline.h,outline.x,outline.y]];}
120
- function textHitsOutline(text,outline){return outlineEdges(outline).some((edge)=>segmentHitsText(edge,text,outline.strokeWidth/2+.5));}
121
- function segmentAlongOutline(segment,outline){
122
- const [x1,y1,x2,y2]=segment,loX=Math.min(x1,x2),hiX=Math.max(x1,x2),loY=Math.min(y1,y2),hiY=Math.max(y1,y2),right=outline.x+outline.w,bottom=outline.y+outline.h;
123
- if(Math.abs(y1-y2)<=1){const overlap=Math.min(hiX,right)-Math.max(loX,outline.x);return overlap>BOUNDARY_EDGE_MIN_OVERLAP&&(Math.abs(y1-outline.y)<=BOUNDARY_EDGE_PADDING||Math.abs(y1-bottom)<=BOUNDARY_EDGE_PADDING);}
124
- if(Math.abs(x1-x2)<=1){const overlap=Math.min(hiY,bottom)-Math.max(loY,outline.y);return overlap>BOUNDARY_EDGE_MIN_OVERLAP&&(Math.abs(x1-outline.x)<=BOUNDARY_EDGE_PADDING||Math.abs(x1-right)<=BOUNDARY_EDGE_PADDING);}
125
- return false;
126
- }
127
- function markerPathPoints(d){
128
- const parts=d.match(/[a-zA-Z]|[-+]?(?:\d*\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/gi)||[],points=[];let i=0,cmd='',x=0,y=0;
129
- while(i<parts.length){if(/^[a-z]$/i.test(parts[i]))cmd=parts[i++];if(!cmd)break;const upper=cmd.toUpperCase(),relative=cmd===cmd.toLowerCase();
130
- if(upper==='M'||upper==='L'){if(i+1>=parts.length||/^[a-z]$/i.test(parts[i]))break;let nx=Number(parts[i++]),ny=Number(parts[i++]);if(relative){nx+=x;ny+=y;}x=nx;y=ny;points.push([x,y]);}
131
- else if(upper==='H'){if(i>=parts.length||/^[a-z]$/i.test(parts[i]))break;x=Number(parts[i++])+(relative?x:0);points.push([x,y]);}
132
- else if(upper==='V'){if(i>=parts.length||/^[a-z]$/i.test(parts[i]))break;y=Number(parts[i++])+(relative?y:0);points.push([x,y]);}
133
- else if(upper==='Z')cmd='';
134
- else {while(i<parts.length&&!/^[a-z]$/i.test(parts[i]))i++;cmd='';}
135
- }
136
- return points;
137
- }
138
- function markerDefinitions(svg){
139
- const markers=new Map();
140
- for(const match of svg.matchAll(/<marker\b([^>]*)>([\s\S]*?)<\/marker>/gi)){
141
- const a=attributes(match[1]),id=a.id;if(!id)continue;
142
- const points=[];
143
- for(const shape of match[2].matchAll(/<(path|polygon)\b([^>]*)>/gi)){
144
- const attrsForShape=attributes(shape[2]);
145
- if(shape[1].toLowerCase()==='polygon'){
146
- const values=(attrsForShape.points||'').match(/[-+]?(?:\d*\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/gi)||[];
147
- for(let i=0;i+1<values.length;i+=2)points.push([Number(values[i]),Number(values[i+1])]);
148
- }else if(attrsForShape.d){
149
- points.push(...markerPathPoints(attrsForShape.d));
150
- }
151
- }
152
- markers.set(id,{refX:Number(a.refX||0),refY:Number(a.refY||0),units:a.markerUnits||'strokeWidth',width:Number(a.markerWidth||0),height:Number(a.markerHeight||0),points,closed:/\bz\b/i.test(match[2])||/<polygon\b/i.test(match[2])});
153
- }
154
- return markers;
155
- }
156
- function markerOverlapsTarget(route,target,markers){
157
- const match=route.markerEnd.match(/url\(\s*["']?#([^\s)'"`]+)["']?\s*\)/i),marker=match&&markers.get(match[1]),segment=route.segments.at(-1);
158
- if(!segment)return false;
159
- const [x1,y1,x2,y2]=segment,length=Math.hypot(x2-x1,y2-y1)||1,ux=(x2-x1)/length,uy=(y2-y1)/length,nx=-uy,ny=ux;
160
- if(!marker?.points.length){const reach=route.strokeWidth;return segmentHitsBox([x2+ux*reach,y2+uy*reach,x2+ux*reach,y2+uy*reach],target,-1);}
161
- const scale=marker.units==='userSpaceOnUse'?1:route.strokeWidth;
162
- const points=marker.points.map(([x,y])=>[x2+ux*(x-marker.refX)*scale+nx*(y-marker.refY)*scale,y2+uy*(x-marker.refX)*scale+ny*(y-marker.refY)*scale]);
163
- if(points.some(([x,y])=>x>target.x+1&&x<target.x+target.w-1&&y>target.y+1&&y<target.y+target.h-1))return true;
164
- const segments=points.slice(1).map((point,index)=>[points[index][0],points[index][1],point[0],point[1]]);
165
- if(marker.closed&&points.length>2)segments.push([points.at(-1)[0],points.at(-1)[1],points[0][0],points[0][1]]);
166
- return segments.some((line)=>segmentHitsBox(line,target,-1));
167
- }
168
- function markerFor(route,edge,markers){
169
- const value=edge==='end'?route.markerEnd:route.markerStart,match=value.match(/url\(\s*["']?#([^\s)'"`]+)["']?\s*\)/i);
170
- return match?markers.get(match[1]):null;
171
- }
172
- function markerScale(marker,route){return marker.units==='userSpaceOnUse'?1:route.strokeWidth;}
173
- function markerHeadLength(marker){
174
- if(!marker?.points.length)return 0;
175
- const xs=marker.points.map(([x])=>x);
176
- return Math.max(...xs)-Math.min(...xs);
177
- }
178
- function markerTip(route,marker,edge){
179
- const segment=edge==='end'?route.segments.at(-1):route.segments[0];
180
- if(!segment)return null;
181
- const [x1,y1,x2,y2]=segment,dx=x2-x1,dy=y2-y1,length=Math.hypot(dx,dy)||1,ux=dx/length,uy=dy/length;
182
- const anchor=edge==='end'?[x2,y2]:[x1,y1],direction=edge==='end'?1:-1;
183
- const forward=marker?.points.length?Math.max(...marker.points.map(([x])=>direction*(x-marker.refX)))*markerScale(marker,route):0;
184
- return [anchor[0]+direction*ux*forward,anchor[1]+direction*uy*forward];
185
- }
186
- function distanceToBoxBoundary(point,box){
187
- const [x,y]=point,candidates=[];
188
- if(y>=box.y-ARROWHEAD_TARGET_TOLERANCE&&y<=box.y+box.h+ARROWHEAD_TARGET_TOLERANCE)candidates.push(Math.abs(x-box.x),Math.abs(x-(box.x+box.w)));
189
- if(x>=box.x-ARROWHEAD_TARGET_TOLERANCE&&x<=box.x+box.w+ARROWHEAD_TARGET_TOLERANCE)candidates.push(Math.abs(y-box.y),Math.abs(y-(box.y+box.h)));
190
- if(candidates.length)return Math.min(...candidates);
191
- return Math.hypot(Math.max(box.x-x,0,x-(box.x+box.w)),Math.max(box.y-y,0,y-(box.y+box.h)));
192
- }
193
- function decisionBranchQuality(nodes,routes){
194
- const issues=[];
195
- for(const node of nodes.filter((item)=>item.type==='decision')){
196
- if(node.outcomes.length<2){issues.push('DECISION_OUTCOMES_MISSING '+node.id+' must name at least two outcomes');continue;}
197
- const labels=new Set(routes.filter((route)=>route.from===node.id).map((route)=>route.label).filter(Boolean));
198
- for(const outcome of node.outcomes)if(!labels.has(outcome))issues.push('DECISION_OUTCOME_MISSING '+node.id+' '+outcome);
199
- for(const label of labels)if(!node.outcomes.includes(label))issues.push('DECISION_OUTCOME_UNDECLARED '+node.id+' '+label);
200
- }
201
- return issues;
202
- }
203
-
204
- function routeLength(route){return route.segments.reduce((sum,[x1,y1,x2,y2])=>sum+Math.hypot(x2-x1,y2-y1),0);}
205
- function routeBends(route){
206
- const directions=route.segments.map(([x1,y1,x2,y2])=>{const dx=x2-x1,dy=y2-y1,length=Math.hypot(dx,dy);return length?{x:dx/length,y:dy/length}:null;}).filter(Boolean);
207
- let bends=0;
208
- for(let i=1;i<directions.length;i++)if(directions[i-1].x*directions[i].x+directions[i-1].y*directions[i].y<Math.SQRT1_2)bends++;
209
- return bends;
210
- }
211
- function routeManhattanDistance(route){
212
- const start=route.segments[0]?.slice(0,2),end=route.segments.at(-1)?.slice(2,4);
213
- return start&&end?Math.abs(start[0]-end[0])+Math.abs(start[1]-end[1])||null:null;
214
- }
215
- function alignedRouteKind(route,nodes){
216
- const from=nodes.find((node)=>node.id===route.from),to=nodes.find((node)=>node.id===route.to);
217
- if(!from||!to)return null;
218
- const sameRow=Math.abs(from.y+from.h/2-(to.y+to.h/2))<=1,sameColumn=Math.abs(from.x+from.w/2-(to.x+to.w/2))<=1;
219
- const horizontal=route.segments.every(([x1,y1,x2,y2])=>Math.abs(y1-y2)<=1),vertical=route.segments.every(([x1,y1,x2,y2])=>Math.abs(x1-x2)<=1);
220
- if(sameRow&&nodes.every((node)=>node===from||node===to||Math.abs(node.y+node.h/2-(from.y+from.h/2))>1||node.x+node.w/2<=Math.min(from.x+from.w/2,to.x+to.w/2)||node.x+node.w/2>=Math.max(from.x+from.w/2,to.x+to.w/2))&&!horizontal)return 'same-row';
221
- if(sameColumn&&nodes.every((node)=>node===from||node===to||Math.abs(node.x+node.w/2-(from.x+from.w/2))>1||node.y+node.h/2<=Math.min(from.y+from.h/2,to.y+to.h/2)||node.y+node.h/2>=Math.max(from.y+from.h/2,to.y+to.h/2))&&!vertical)return 'same-column';
222
- return null;
223
- }
224
- function routeCrossesBoundary(route,outline){
225
- const points=route.segments.flatMap(([x1,y1,x2,y2])=>[[x1,y1],[x2,y2],[(x1+x2)/2,(y1+y2)/2]]);
226
- const inside=points.some(([x,y])=>x>outline.x&&x<outline.x+outline.w&&y>outline.y&&y<outline.y+outline.h);
227
- const outside=points.some(([x,y])=>x<outline.x||x>outline.x+outline.w||y<outline.y||y>outline.y+outline.h);
228
- return inside&&outside;
229
- }
230
- function collinearOverlap(a,b){
231
- for(const [ax1,ay1,ax2,ay2] of a.segments)for(const [bx1,by1,bx2,by2] of b.segments){
232
- if(Math.abs(ay1-ay2)<=.5&&Math.abs(by1-by2)<=.5&&Math.abs(ay1-by1)<12){if(Math.min(Math.max(ax1,ax2),Math.max(bx1,bx2))-Math.max(Math.min(ax1,ax2),Math.min(bx1,bx2))>=12)return true;}
233
- if(Math.abs(ax1-ax2)<=.5&&Math.abs(bx1-bx2)<=.5&&Math.abs(ax1-bx1)<12){if(Math.min(Math.max(ay1,ay2),Math.max(by1,by2))-Math.max(Math.min(ay1,ay2),Math.min(by1,by2))>=12)return true;}
234
- }
235
- return false;
236
- }
237
- function segmentIntersectionPoint(a,b){
238
- const rx=a[2]-a[0],ry=a[3]-a[1],sx=b[2]-b[0],sy=b[3]-b[1],denominator=rx*sy-ry*sx;
239
- if(Math.abs(denominator)<1e-8)return null;
240
- const qx=b[0]-a[0],qy=b[1]-a[1],t=(qx*sy-qy*sx)/denominator,u=(qx*ry-qy*rx)/denominator;
241
- if(t< -1e-8||t>1+1e-8||u< -1e-8||u>1+1e-8)return null;
242
- return [a[0]+t*rx,a[1]+t*ry];
243
- }
244
- function routeEndpoints(route){
245
- return [{id:route.from,point:route.segments[0].slice(0,2)},{id:route.to,point:route.segments.at(-1).slice(2,4)}];
246
- }
247
- function routeCrossingPoints(a,b){
248
- const aEnds=routeEndpoints(a),bEnds=routeEndpoints(b),points=[];
249
- for(const first of a.segments)for(const second of b.segments){
250
- const point=segmentIntersectionPoint(first,second);
251
- if(!point)continue;
252
- const sharedNodeEndpoint=aEnds.some((left)=>bEnds.some((right)=>left.id===right.id&&Math.hypot(left.point[0]-right.point[0],left.point[1]-right.point[1])<=.5&&Math.hypot(left.point[0]-point[0],left.point[1]-point[1])<=.5));
253
- if(sharedNodeEndpoint||points.some((prior)=>Math.hypot(prior[0]-point[0],prior[1]-point[1])<=.5))continue;
254
- points.push(point);
255
- }
256
- return points;
257
- }
258
- function sequenceQuality(source,svg=svgContent(source),nodes=rectangles(svg),routes=parseRoutes(svg)){
259
- if(!/\bdata-type\s*=\s*["']sequence(?:-oauth)?["']/i.test(source)&&!/\bid\s*=\s*["']diagram-sequence(?:-oauth)?-[^"']+["']/i.test(svg))return [];
260
- const lifelines=new Map();
261
- for(const match of svg.matchAll(/<line\b([^>]*)>/gi)){
262
- const a=attributes(match[1]),name=a['data-lifeline-for'];
263
- if(name&&a['stroke-dasharray']&&Number(a.x1)===Number(a.x2)&&Number(a.y2)>Number(a.y1))lifelines.set(name,{x:Number(a.x1),top:Number(a.y1),bottom:Number(a.y2)});
264
- }
265
- const issues=[],messages=routes.map((route)=>({route,start:route.segments[0].slice(0,2),end:route.segments.at(-1).slice(2,4),y:(route.segments[0][1]+route.segments.at(-1)[3])/2}));
266
- const lastMessageY=Math.max(0,...messages.map((message)=>message.y));
267
- for(const node of nodes){
268
- const line=lifelines.get(node.id);
269
- if(!line){issues.push('SEQUENCE_LIFELINE_MISSING '+node.id);continue;}
270
- if(Math.abs(line.x-(node.x+node.w/2))>1||Math.abs(line.top-(node.y+node.h))>1)issues.push('SEQUENCE_LIFELINE_ALIGNMENT '+node.id);
271
- if(line.bottom+1<lastMessageY)issues.push('SEQUENCE_LIFELINE_SHORT '+node.id+' ends before last message');
272
- }
273
- let previousY=-Infinity;
274
- for(const message of messages){
275
- const from=lifelines.get(message.route.from),to=lifelines.get(message.route.to);
276
- if(!from||!to)continue;
277
- if(Math.abs(message.start[0]-from.x)>1||Math.abs(message.end[0]-to.x)>1)issues.push('SEQUENCE_MESSAGE_OFF_LIFELINE '+message.route.from+'->'+message.route.to);
278
- if(message.y<=previousY)issues.push('SEQUENCE_MESSAGE_ORDER '+message.route.from+'->'+message.route.to+' is not top-to-bottom');
279
- previousY=message.y;
280
- }
281
- return issues;
282
- }
283
-
284
- function visualQuality(source,{enforceCanvas=false,scale=null}={}){
285
- const svg=svgContent(source),texts=visibleSvgText(svg),nodes=rectangles(svg),routes=parseRoutes(svg),outlines=boundaryOutlines(svg),markers=markerDefinitions(svg),metrics=sourceMetrics(source),issues=[],sequenceDiagram=/\bdata-type\s*=\s*["']sequence(?:-oauth)?["']/i.test(source);
286
- const contaminated=texts.filter((t)=>contamination.some((rule)=>rule.test(t.label))).map((t)=>t.label);
287
- if(contaminated.length)issues.push('PROCESS_TEXT '+[...new Set(contaminated)].join(' | '));
288
- for(const text of texts.filter((item)=>item.role==='edge'||item.edgeFor)){
289
- const matches=routes.filter((route)=>route.from+'|'+route.to===text.edgeFor&&(!route.label||route.label===text.label));
290
- if(!text.edgeFor||matches.length!==1){issues.push('EDGE_LABEL_UNBOUND '+(text.edgeFor||text.label));continue;}
291
- const own=matches[0],distance=routeDistance(text.anchor,own),nearestOther=Math.min(Infinity,...routes.filter((route)=>route!==own).map((route)=>routeDistance(text.anchor,route)));
292
- if(distance>MAX_EDGE_LABEL_ANCHOR_DISTANCE)issues.push('EDGE_LABEL_TOO_FAR '+text.label+' own='+distance.toFixed(1)+'px max='+MAX_EDGE_LABEL_ANCHOR_DISTANCE+'px');
293
- if(Number.isFinite(nearestOther)&&distance>=nearestOther)issues.push('EDGE_LABEL_NEAREST_PATH '+text.label+' own='+distance.toFixed(1)+'px other='+nearestOther.toFixed(1)+'px');
294
- for(const node of nodes)if(textOverlapsNode(text,node))issues.push('EDGE_LABEL_NODE_COLLISION '+text.label+' overlaps '+node.id);
295
- }
296
- for(const route of routes){
297
- const facing=routeManhattanDistance(route),ratio=facing?routeLength(route)/facing:null,aligned=alignedRouteKind(route,nodes);
298
- if(ratio>1.4)issues.push('ROUTE_DETOUR '+route.from+'->'+route.to+' ratio='+ratio.toFixed(2)+' max=1.40');
299
- if(aligned)issues.push('ROUTE_ALIGNED_PATH '+route.from+'->'+route.to+' '+aligned+' neighbors require one straight segment');
300
- const crossesBoundary=outlines.some((outline)=>routeCrossesBoundary(route,outline)),bendLimit=crossesBoundary?3:2,bends=routeBends(route);
301
- if(bends>bendLimit)issues.push('ROUTE_BENDS '+route.from+'->'+route.to+' bends='+bends+' max='+bendLimit);
302
- if(route.markerStart&&route.markerEnd)issues.push('ROUTE_OPPOSED_HEADS '+route.from+'->'+route.to);
303
- for(const text of texts)for(const segment of route.segments)if(segmentHitsText(segment,text)){issues.push('EDGE_TEXT_COLLISION '+route.from+'->'+route.to+': '+text.label);break;}
304
- for(const node of nodes)if(node.id!==route.from&&node.id!==route.to&&route.segments.some((s)=>segmentHitsBox(s,node,8)))issues.push('ROUTE_THROUGH_NODE '+route.from+'->'+route.to+' via '+node.id);
305
- for(const outline of outlines)if(route.segments.some((segment)=>segmentAlongOutline(segment,outline))){issues.push('ROUTE_ALONG_BOUNDARY '+route.from+'->'+route.to+' along '+outline.id);break;}
306
- const target=nodes.find((node)=>node.id===route.to);
307
- for(const edge of ['start','end'])if(edge==='end'?route.markerEnd:route.markerStart){
308
- const marker=markerFor(route,edge,markers),minimum=Math.max(ARROWHEAD_STROKE_MULTIPLE*route.strokeWidth,ARROWHEAD_CANVAS_FLOOR*(metrics.viewBox?.w||1080));
309
- const length=markerHeadLength(marker)*markerScale(marker||{units:'userSpaceOnUse'},route);
310
- if(!marker)issues.push('ARROWHEAD_GEOMETRY_MISSING '+route.from+'->'+route.to+' '+edge);
311
- else if(length+0.01<minimum)issues.push('ARROWHEAD_SIZE_FLOOR '+route.from+'->'+route.to+' '+edge+'='+length.toFixed(1)+'px min='+minimum.toFixed(1)+'px (12/1080 canvas, 5x stroke)');
312
- }
313
- if(route.markerEnd&&target&&!sequenceDiagram){
314
- const marker=markerFor(route,'end',markers),tip=markerTip(route,marker,'end');
315
- if(tip&&distanceToBoxBoundary(tip,target)>ARROWHEAD_TARGET_TOLERANCE)issues.push('ARROWHEAD_TIP_MISSED_TARGET '+route.from+'->'+route.to+' gap='+distanceToBoxBoundary(tip,target).toFixed(1)+'px max='+ARROWHEAD_TARGET_TOLERANCE+'px');
316
- }
317
- if(route.markerEnd&&target&&markerOverlapsTarget(route,target,markers))issues.push('ARROWHEAD_TARGET_OVERLAP '+route.from+'->'+route.to+' marker intersects target '+target.id);
318
- }
319
- issues.push(...decisionBranchQuality(nodes,routes));
320
- issues.push(...officeQuality(svg,nodes,texts,outlines));
321
- for(let i=0;i<routes.length;i++)for(let j=i+1;j<routes.length;j++){
322
- if(collinearOverlap(routes[i],routes[j]))issues.push('ROUTE_COLLINEAR_OVERLAP '+routes[i].from+'->'+routes[i].to+' / '+routes[j].from+'->'+routes[j].to+' shared within 12px');
323
- for(const point of routeCrossingPoints(routes[i],routes[j]))issues.push('ROUTE_CROSSING '+routes[i].from+'->'+routes[i].to+' / '+routes[j].from+'->'+routes[j].to+' at '+point[0].toFixed(1)+','+point[1].toFixed(1));
324
- }
325
- issues.push(...sequenceQuality(source,svg,nodes,routes));
326
- for(const text of texts)for(const outline of outlines)if(textHitsOutline(text,outline)){issues.push('OUTLINE_TEXT_COLLISION '+text.label+' crosses '+outline.id);break;}
327
- const boundaryTexts=texts.filter((text)=>isBoundaryLabel(text,outlines));
328
- const boundaryContrastFailures=boundaryTexts.filter((text)=>metrics.contrastFailures.some((failure)=>failure.text===text.label));
329
- for(const text of boundaryContrastFailures)issues.push('BOUNDARY_CONTRAST_FLOOR '+text.label+' below 4.5:1');
330
- for(let i=0;i<nodes.length;i++)for(let j=i+1;j<nodes.length;j++)if(gap(nodes[i],nodes[j])<12)issues.push('NODE_GAP '+nodes[i].id+'/'+nodes[j].id+' below 12px');
331
- const fontFailures=[];
332
- if(enforceCanvas){
333
- const ratio=scale??(metrics.viewBox?Math.min(metrics.viewBox.w/1080,metrics.viewBox.h/640):1);
334
- if(!texts.some((t)=>t.role==='title'))issues.push('TITLE_ROLE_MISSING visible title must use data-role="title"');
335
- for(const t of texts){const boundary=isBoundaryLabel(t,outlines),minimum=t.role==='title'?28:t.role==='edge'||boundary?13:t.role==='node'?15:0;if(minimum&&t.size+0.01<minimum*ratio){const failure=(boundary?'boundary':t.role)+':'+t.label+'='+t.size+'px (min '+(minimum*ratio).toFixed(1)+'px)';if(boundary)issues.push('BOUNDARY_FONT_FLOOR '+failure);else fontFailures.push(failure);}}
336
- if(fontFailures.length)issues.push('FONT_FLOOR '+fontFailures.join(' | '));
337
- const points=nodes.flatMap((n)=>[[n.x,n.y],[n.x+n.w,n.y+n.h]]).concat(routes.flatMap((r)=>r.segments.flatMap((s)=>[[s[0],s[1]],[s[2],s[3]]])));
338
- const box=points.reduce((b,p)=>({left:Math.min(b.left,p[0]),top:Math.min(b.top,p[1]),right:Math.max(b.right,p[0]),bottom:Math.max(b.bottom,p[1])}),{left:Infinity,top:Infinity,right:-Infinity,bottom:-Infinity});
339
- if(nodes.length&&metrics.viewBox){const safeWidth=metrics.viewBox.w*.90,safeHeight=metrics.viewBox.h*.74,width=(box.right-box.left)/safeWidth,height=(box.bottom-box.top)/safeHeight;if(width<.75||height<.54)issues.push('CONTENT_FILL safe-area-width='+width.toFixed(3)+' safe-area-height='+height.toFixed(3)+' minimum=.75/.54');}
340
- if(!nodes.length)issues.push('CONTENT_NODES_MISSING');
341
- }
342
- return {issues,contaminated,fonts:fontFailures,nodes:nodes.length,edges:routes.length,edgeLabelMaxAnchorDistance:MAX_EDGE_LABEL_ANCHOR_DISTANCE,arrowheadFloor:{canvas:ARROWHEAD_CANVAS_FLOOR,strokeMultiple:ARROWHEAD_STROKE_MULTIPLE,targetTolerance:ARROWHEAD_TARGET_TOLERANCE},boundaryTexts:boundaryTexts.length};
343
- }
344
- export { visualQuality, visibleSvgText, parseRoutes, rectangles, boundaryOutlines, sequenceQuality };
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 wjgoarxiv
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1 +0,0 @@
1
- The publisher-docx engine and templates are user-authored work by wjgoarxiv, provided under the MIT License in this directory. This LitGrok port adapts its entry points and guidance to Grok Build.
@@ -1,137 +0,0 @@
1
- ---
2
- title: 본사 옥상 태양광 설비 1년 운영 결과
3
- subtitle: 2025년 10월~2026년 9월 발전 실적, 전기요금 절감과 2027년 보완 계획
4
- author: 시설관리팀 에너지파트
5
- organization: 예시 주식회사
6
- date: 2026-10-05
7
- short_title: 옥상 태양광 1년 운영 결과
8
- notice: "예시 데이터: 회사명, 설비 용량, 금액은 모두 가정입니다. 실제 수치로 바꿔 주세요"
9
- tonality: Report
10
- ---
11
-
12
- ::: cover variant=masthead kicker="운영 결과 보고"
13
- 본사 옥상 태양광 설비를 가동한 첫 1년의 발전량, 자가소비 비율, 전기요금 절감액, 고장 이력을 정리하고 2027년 보완 공사와 예산 요청을 함께 담았다.
14
- :::
15
-
16
- # 요약
17
-
18
- 옥상 태양광 설비는 1년 동안 312MWh를 생산해 본사 연간 전력 사용량의 8.4%를 대체했다. 설계 단계에서 예측한 발전량 298MWh보다 4.7% 많다. 생산한 전력은 대부분 건물 안에서 바로 썼고, 휴일 낮에 남은 전력만 한전 계통으로 보냈다.
19
-
20
- ::: keyfigures
21
- - **312MWh** 연간 발전량 (예시)
22
- * 2025. 10.~2026. 9. 인버터 누적 기록
23
- - **8.4%** 본사 전력 사용량 대비 (예시)
24
- * 같은 기간 수전 계량기 기준
25
- - **4,180만 원** 전기요금 절감액 (예시)
26
- * 계시별 요금 적용, 부가세 제외
27
- :::
28
-
29
- 절감액은 투자비 회수 계획의 연간 목표 3,900만 원을 넘었다. 다만 여름철 한낮에 모듈 온도가 올라 출력이 떨어지는 시간이 예상보다 길었고, 동쪽 구역 인버터 1대가 두 차례 멈춰 11일 동안 발전량 손실이 있었다. 2027년 상반기에 인버터 교체와 모듈 세척 주기 조정을 진행하며, 이에 필요한 예산 2,600만 원의 승인을 요청한다.
30
-
31
- # 설비 개요
32
-
33
- ## 설치 규모와 구성
34
-
35
- 설비는 본관과 별관 옥상 두 곳에 나뉘어 있다. 본관에는 모듈 540장(설비 용량 248kW), 별관에는 모듈 160장(73kW)이 남향 15도 경사로 놓였다. 인버터는 본관 4대, 별관 1대이며, 각 인버터의 출력은 지하 2층 수전반에서 건물 부하와 합쳐진다.
36
-
37
- 표 1. 구역별 설비 구성 (예시)
38
-
39
- | 구분 | 본관 옥상 | 별관 옥상 | 합계 |
40
- | --- | ---: | ---: | ---: |
41
- | 모듈 수 (장) | 540 | 160 | 700 |
42
- | 설비 용량 (kW) | 248 | 73 | 321 |
43
- | 인버터 (대) | 4 | 1 | 5 |
44
- | 설치 면적 (㎡) | 1,620 | 480 | 2,100 |
45
-
46
- 자료: 시설관리팀 준공 도서(2025. 9.)
47
-
48
- ## 계량과 기록 방식
49
-
50
- 발전량은 인버터별 누적 계량값을 15분 간격으로 원격 수집한다. 건물 사용량은 한전 수전 계량기와 내부 부하 계량기를 함께 읽는다. 두 값의 차이로 자가소비량과 역송량을 계산하며, 월말에 한전 청구서와 대조해 오차가 1%를 넘으면 원인을 찾는다. 1년 동안 오차가 1%를 넘은 달은 2026년 2월 한 번뿐이었고, 원인은 계량기 통신 장애로 확인했다.
51
-
52
- # 발전 실적
53
-
54
- ## 월별 발전량
55
-
56
- 발전량은 5월에 가장 많았고 12월에 가장 적었다. 일사량이 가장 많은 달은 6월이었지만, 장마가 일찍 시작된 데다 모듈 온도가 높아 5월 실적에 못 미쳤다. 겨울철에는 해가 낮아 별관 옥상 일부가 본관 그림자에 가렸다. 아래 표의 예측값은 설계 시뮬레이션의 월별 값을 분기로 합한 것이다.
57
-
58
- 표 2. 분기별 발전량과 예측 대비 실적 (예시)
59
-
60
- | 분기 | 예측 (MWh) | 실적 (MWh) | 예측 대비 (%) |
61
- | --- | ---: | ---: | ---: |
62
- | 2025년 4분기 | 58 | 61 | 105.2 |
63
- | 2026년 1분기 | 66 | 69 | 104.5 |
64
- | 2026년 2분기 | 94 | 101 | 107.4 |
65
- | 2026년 3분기 | 80 | 81 | 101.3 |
66
- | 합계 | 298 | 312 | 104.7 |
67
-
68
- 자료: 인버터 원격 감시 기록
69
-
70
- 3분기 실적이 예측과 거의 같았던 것은 8월 인버터 정지의 영향이다. 정지가 없었다면 3분기 실적은 약 85MWh로 추정되며, 이 경우 연간 실적은 예측보다 6% 정도 많았을 것이다.
71
-
72
- ## 자가소비와 역송
73
-
74
- 생산 전력의 93%를 건물 안에서 바로 썼다. 평일 낮에는 사무 부하와 냉방 부하가 발전량보다 커서 남는 전력이 거의 없다. 역송은 주로 토요일과 공휴일 낮에 생겼고, 1년 동안 모두 22MWh였다. 역송 전력은 상계 거래로 처리해 다음 달 요금에서 차감했다.
75
-
76
- ## 효율 저하 요인
77
-
78
- 출력을 깎은 요인은 세 가지였다. 첫째는 여름철 모듈 온도다. 7월과 8월 한낮에 모듈 표면 온도가 65도를 넘은 시간이 하루 평균 3.2시간이었고, 이 시간대 출력은 정격의 78% 수준에 머물렀다. 둘째는 먼지와 새 배설물이다. 봄철 황사 이후 세척 전후의 출력 차이가 4% 안팎으로 측정됐다. 셋째는 겨울철 별관 그림자로, 12월과 1월 오전 10시 이전에는 별관 모듈 중 40장 정도가 그늘에 들었다.
79
-
80
- # 비용과 절감 효과
81
-
82
- ## 전기요금 절감액
83
-
84
- 절감액은 자가소비량에 해당 시간대 요금 단가를 곱한 값과 상계 처리된 역송 금액을 더해 계산했다. 여름철 낮 시간대 단가가 높아 6~8월 세 달의 절감액이 연간 절감액의 36%를 차지했다.
85
-
86
- 표 3. 절감액과 운영비 (예시)
87
-
88
- | 항목 | 금액 (만 원) | 비고 |
89
- | --- | ---: | --- |
90
- | 자가소비 절감액 | 3,890 | 계시별 단가 적용 |
91
- | 역송 상계 금액 | 290 | 22MWh |
92
- | 유지보수 계약비 | 480 | 연 1회 정밀 점검 포함 |
93
- | 모듈 세척비 | 120 | 연 3회 |
94
- | 순절감액 | 3,580 | 절감액에서 운영비를 뺀 값 |
95
-
96
- 자료: 재무팀 전기요금 정산 자료, 시설관리팀 계약 대장
97
-
98
- ## 투자비 회수 전망
99
-
100
- 설치 투자비는 5억 1,000만 원이었다. 첫해 순절감액 3,580만 원이 그대로 유지된다고 보면 회수에는 약 14년이 걸린다. 그러나 전기요금 단가는 2026년에만 두 차례 올랐고, 모듈 출력은 해마다 0.5% 정도씩 낮아진다. 두 요인을 함께 넣은 재무팀 추정으로는 회수 기간이 12~13년이다.
101
-
102
- ::: callout kind=note title="회수 기간 추정의 전제"
103
- 요금 단가는 연 3% 상승, 모듈 출력은 연 0.5% 저하, 유지보수비는 연 2% 상승을 가정했다. 단가 상승률이 연 1%에 그치면 회수 기간은 15년으로 늘어난다.
104
- :::
105
-
106
- # 운영상 문제와 대응
107
-
108
- ## 인버터 정지
109
-
110
- 동쪽 구역 3번 인버터가 2026년 3월과 8월 두 차례 과열 경보로 멈췄다. 3월에는 하루 만에 재가동했지만, 8월에는 냉각 팬 부품을 해외에서 들여오느라 10일이 걸렸다. 국내 재고가 없었다. 두 번의 정지로 잃은 발전량은 약 5MWh, 금액으로는 70만 원 정도다. 제조사는 같은 모델의 냉각 팬 결함을 인정하고 2027년 1분기 안에 무상 교체를 약속했다. 그러나 팬만 바꾸면 설치 위치의 환기 부족은 그대로 남는다.
111
-
112
- ## 세척 주기
113
-
114
- 계약상 세척은 연 3회(3월, 6월, 10월)였다. 문제는 시기다. 황사가 심했던 4월과 꽃가루가 많았던 5월 사이에는 세척 전후 출력 차이가 4%를 넘었다. 세척 시기를 황사 직후로 옮기고 여름 장마 전 한 번을 추가하면, 연간 발전량이 1.5% 정도 늘 것으로 본다. 세척 업체와는 2026년 12월 계약 갱신 때 횟수와 시기를 함께 바꾸기로 협의했고, 추가 1회 비용은 기존 단가인 회당 40만 원을 그대로 적용하기로 했으며, 황사 특보가 사흘 이상 이어진 주에는 업체가 먼저 일정을 제안하도록 계약서에 넣기로 했다.
115
-
116
- ## 안전 관리
117
-
118
- 옥상 출입은 시설관리팀 승인을 받은 인원만 가능하고, 출입 기록은 보안실 출입 통제 시스템에 남는다. 1년 동안 안전사고는 없었다. 외부 세척 업체 작업자도 작업 당일 현장 안전교육을 받고 추락 방지 장비를 점검받은 뒤에만 옥상에 올라갔으며, 교육 기록과 장비 점검표는 시설관리팀이 작업일마다 받아 보관했다. 다만 별관 옥상 난간 높이가 기준보다 10cm 낮아 2026년 6월에 임시 안전망을 설치했다.
119
-
120
- # 2027년 보완 계획과 예산
121
-
122
- ## 보완 과제
123
-
124
- 보완 과제는 세 가지다. 3번 인버터를 환기가 되는 위치로 옮기면서 냉각 팬을 교체하고, 세척 주기를 연 4회로 늘리며, 별관 옥상 난간을 기준 높이로 높인다. 그늘 문제는 모듈 배치를 바꿔야 해결되므로 비용 대비 효과를 따져 2028년에 다시 검토한다.
125
-
126
- 표 4. 2027년 보완 예산 요청 (예시)
127
-
128
- | 과제 | 시기 | 금액 (만 원) |
129
- | --- | --- | ---: |
130
- | 3번 인버터 이설과 환기 덕트 | 2027년 1분기 | 1,450 |
131
- | 세척 1회 추가(연 4회) | 2027년 6월 | 40 |
132
- | 별관 옥상 난간 보강 | 2027년 2분기 | 1,110 |
133
- | 합계 | | 2,600 |
134
-
135
- ## 기대 효과
136
-
137
- 인버터 이설과 세척 주기 조정으로 연간 발전량이 2~3% 늘면, 절감액은 연 80만~120만 원 정도 늘어난다. 금액만 보면 크지 않다. 그러나 같은 고장이 되풀이되면 한 번에 10일 이상 발전이 멈출 수 있고, 난간 보강은 법정 안전 기준을 맞추기 위한 공사다. 예산이 승인되면 2027년 1월에 업체를 선정하고, 공사는 발전량이 적은 2월 안에 마친다.
@@ -1,82 +0,0 @@
1
- ---
2
- title: 사내 메신저 전환 검토 보고
3
- subtitle: 현행 계약 만료에 따른 대안 비교와 2027년 1분기 전환안
4
- author: 정보전략팀
5
- organization: 예시 공사
6
- date: 2026-10-05
7
- short_title: 사내 메신저 전환 검토
8
- notice: "예시 데이터: 기관명, 인원, 금액은 모두 가정입니다. 실제 수치로 바꿔 주세요"
9
- tonality: Brief
10
- ---
11
-
12
- ::: cover variant=masthead kicker="검토 보고"
13
- :::
14
-
15
- ::: callout kind=key title="결정 요청"
16
- 현행 메신저 계약을 연장하지 않고 2027년 3월 말까지 그룹웨어 내장 메신저(안 2)로 전환하는 안, 그리고 전환 비용 3,200만 원(예시)을 2026년 4분기 정보화 예비비에서 집행하는 안의 승인을 요청한다.
17
- :::
18
-
19
- # 요약
20
-
21
- 안 2로 전환하면 3년간 1억 1,400만 원을 아낀다. 현행 메신저를 3년 더 쓰는 비용은 2억 400만 원이고, 그룹웨어 내장 메신저는 전환비를 포함해 9,000만 원이다(예시).
22
-
23
- 기능 손실은 크지 않다. 직원 1,240명의 최근 6개월 사용 기록을 보면 대화, 파일 전송, 화상 통화가 전체 사용의 96%를 차지하며, 세 기능 모두 내장 메신저에 있다.
24
-
25
- 보안 요건도 충족한다. 내장 메신저는 사내 서버에 대화를 저장하고, 2026년 8월 보안 진단에서 지적 사항 없이 통과했다.
26
-
27
- 위험은 전환 기간의 혼선이다. 대화 기록 이관과 외부 협력사 계정 재발급에 6주가 걸리므로, 2027년 1월 첫 주에 착수해야 3월 말 계약 만료 전에 끝난다.
28
-
29
- # 검토 배경
30
-
31
- - 현행 메신저 계약 만료일 2027. 3. 31., 연장 시 사용료 연 18% 인상 통보 받음
32
- - 그룹웨어는 2025년 교체 때 메신저 기능을 포함해 계약, 현재 사용하지 않는 상태
33
- - 두 메신저를 함께 쓰는 부서가 생겨 업무 요청 누락 사례가 분기마다 보고됨
34
- - 2026년 7월 경영진 회의에서 메신저 일원화 검토를 지시
35
-
36
- # 대안 비교
37
-
38
- 표 1. 대안별 3년 비용과 주요 특성 (예시)
39
-
40
- | 구분 | 안 1 현행 연장 | 안 2 그룹웨어 내장 | 안 3 신규 도입 |
41
- | --- | ---: | ---: | ---: |
42
- | 3년 사용료 (만 원) | 20,400 | 5,800 | 13,500 |
43
- | 전환비 (만 원) | 0 | 3,200 | 4,600 |
44
- | 3년 합계 (만 원) | 20,400 | 9,000 | 18,100 |
45
- | 대화 서버 위치 | 외부 | 사내 | 외부 |
46
- | 전환 기간 | 없음 | 6주 | 10주 |
47
-
48
- 자료: 업체 견적(2026. 9.), 정보전략팀 산출
49
-
50
- - 안 1은 전환 부담이 없으나 비용이 가장 크고, 인상분이 매년 반복될 가능성 있음
51
- - 안 2는 비용이 가장 적고 대화가 사내 서버에 남음. 화면 공유 중 원격 제어 기능은 없으나 사용 비중 0.4%로 원격 지원 도구로 대체 가능
52
- - 안 3은 기능이 가장 많으나 비용과 전환 기간 모두 안 2보다 불리함
53
-
54
- # 전환 일정과 위험
55
-
56
- ## 추진 일정
57
-
58
- - 2027년 1월 1주: 전환 공지, 부서별 담당자 지정
59
- - 2027년 1월 2~4주: 최근 1년 대화 기록 이관, 협력사 계정 380개 재발급
60
- - 2027년 2월: 두 메신저 병행 운영, 현행 메신저는 읽기 전용으로 전환
61
- - 2027년 3월 2주: 현행 메신저 종료, 3월 말 계약 만료
62
-
63
- ## 위험 대응
64
-
65
- - 대화 기록 이관 누락: 이관 전후 건수를 부서별로 대조하고, 원본은 계약 만료 후 1년간 보관
66
- - 협력사 계정 재발급 지연: 협력사별 담당자 목록을 12월 중 먼저 확보
67
- - 병행 기간의 요청 누락: 2월부터 업무 요청은 내장 메신저로만 받도록 부서장 회의에서 공지
68
-
69
- # 소요 예산
70
-
71
- 표 2. 전환 비용 내역 (예시)
72
-
73
- | 항목 | 금액 (만 원) |
74
- | --- | ---: |
75
- | 대화 기록 이관 용역 | 1,800 |
76
- | 협력사 계정 발급과 인증 설정 | 700 |
77
- | 사용자 교육과 안내 자료 | 400 |
78
- | 예비비 | 300 |
79
- | 합계 | 3,200 |
80
-
81
- - 집행 재원: 2026년 4분기 정보화 예비비(잔액 5,100만 원)
82
- - 2027년 이후 사용료는 그룹웨어 유지보수 계약에 포함