@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
@@ -0,0 +1,333 @@
1
+ // The lit-adhd KPI board: the default answer to `lit adhd`. In ten seconds a reader learns the one
2
+ // thing to do now and what to type, what is done, what is left and what not to forget. `buildBoard`
3
+ // turns the collector's records into language-free facts (four buckets, counts, bars, milestones,
4
+ // done and remaining rows, reminders); `renderBoard` lays those facts out as Markdown in English or
5
+ // Korean. Both are pure, so the same records always draw the same board and the model only shows it.
6
+ // The board never prints a session id, a commit hash, a raw status code or an internal path; the only
7
+ // path it may print is one the reader has to type.
8
+
9
+ import { basename } from "node:path";
10
+
11
+ import { clipToWidth } from "./gauge.mjs";
12
+
13
+ const CELLS = 10;
14
+ const MILESTONES = 4;
15
+ const DONE_ROWS = 5;
16
+ const LEFT_ROWS = 7;
17
+ const REMINDERS = 5;
18
+
19
+ /** `███████░░░ 4/6`, with ` (67%)` on request; null unless a total above zero is known. */
20
+ export const boardBar = (done, total, { percent = false } = {}) => {
21
+ if (!Number.isInteger(total) || total <= 0 || !Number.isInteger(done) || done < 0) return null;
22
+ const k = Math.min(done, total);
23
+ let filled = Math.round((k * CELLS) / total);
24
+ // Some progress always shows, and an unfinished plan never shows a full bar.
25
+ if (k > 0 && k < total) filled = Math.min(CELLS - 1, Math.max(1, filled));
26
+ const bar = `${"█".repeat(filled)}${"░".repeat(CELLS - filled)} ${k}/${total}`;
27
+ return percent ? `${bar} (${Math.round((k * 100) / total)}%)` : bar;
28
+ };
29
+
30
+ const bare = (text) => String(text ?? "").replace(/\s+/gu, " ").trim();
31
+ // One line of data as Markdown text: no tags or code spans, emphasis and table marks escaped.
32
+ const plain = (text) => bare(text).replace(/[<>`]/gu, (ch) => ({ "<": "‹", ">": "›", "`": "'" }[ch])).replace(/[*_|[\]\\]/gu, (ch) => `\\${ch}`);
33
+ const code = (text) => `\`${String(text).replace(/`/gu, "'")}\``;
34
+ // A plan row as a sentence: `3. Draw the board` reads `Draw the board`.
35
+ const sentence = (text) => bare(text).replace(/^\d+[.)]\s*/u, "");
36
+ const placeName = (worktree) => {
37
+ const name = basename(String(worktree ?? ""));
38
+ return name && name !== "unknown" ? name : null;
39
+ };
40
+ const sessionName = (session) => {
41
+ const title = [session.title, ...(session.asked ?? [])].find((text) => text && text !== "unknown");
42
+ return title ? clipToWidth(bare(title), 40) : null;
43
+ };
44
+ // The last question a session asked, from its last assistant words.
45
+ const questionOf = (result) => {
46
+ const found = [...String(result ?? "").matchAll(/[^.!?。?\n]{4,}[??]/gu)].at(-1)?.[0];
47
+ return found ? clipToWidth(bare(found), 80) : null;
48
+ };
49
+ const stepKey = (text) => sentence(text).toLowerCase();
50
+
51
+ /** The board's facts from the collected records: no wording, only what the records hold. */
52
+ export const buildBoard = (data) => {
53
+ const sessions = (data.sessions ?? []).filter((session) => !session.self);
54
+ const plans = data.roadmap?.plans ?? [];
55
+ const next = data.next ?? { kind: "none" };
56
+ const ticked = plans.reduce((sum, plan) => sum + (plan.rows ?? []).filter((row) => row.checked).length, 0);
57
+ const left = plans.reduce((sum, plan) => sum + (plan.rows ?? []).filter((row) => !row.checked).length, 0);
58
+ const waitingSessions = sessions.filter((session) => session.status === "waiting-on-user");
59
+ const working = sessions.filter((session) => session.status === "active");
60
+ const boundaries = (data.startWork ?? []).filter((work) => work.pendingBoundary);
61
+ const herdrBusy = (data.herdr?.agents ?? []).filter((agent) => agent && typeof agent === "object" && !agent.self && agent.status === "working").length;
62
+ const glance = {
63
+ done: ticked,
64
+ inProgress: sessions.filter((session) => session.status === "active" || session.status === "idle").length,
65
+ waiting: waitingSessions.length + boundaries.length,
66
+ remaining: left,
67
+ progress: { done: ticked, total: ticked + left, bar: boardBar(ticked, ticked + left, { percent: true }) },
68
+ };
69
+
70
+ // Open before finished, this worktree before others, the most recently saved first.
71
+ const byRecency = (a, b) => (b.changedMs ?? 0) - (a.changedMs ?? 0);
72
+ const milestonesAll = [...plans].sort((a, b) => Number(a.complete) - Number(b.complete) || Number(b.local) - Number(a.local) || byRecency(a, b));
73
+ const milestones = milestonesAll.slice(0, MILESTONES).map((plan) => ({
74
+ title: plan.title ?? sentence(basename(plan.plan, ".md")),
75
+ place: plan.local ? null : placeName(plan.worktree),
76
+ state: plan.complete ? "done" : plan.progress?.done ? "inProgress" : "notStarted",
77
+ done: plan.progress?.done ?? null,
78
+ total: plan.progress?.total ?? null,
79
+ bar: boardBar(plan.progress?.done, plan.progress?.total),
80
+ changedMs: plan.changedMs ?? null,
81
+ }));
82
+
83
+ // Done lately: ticked rows, the most recently saved plan first and its later rows first.
84
+ const doneRows = [...plans].sort(byRecency).flatMap((plan) => (plan.rows ?? []).filter((row) => row.checked).map((row) => sentence(row.title)).reverse());
85
+
86
+ // The plan to work on now leads the remaining rows; the rest follow in plan order.
87
+ const targetPlan = next.target?.plan ?? null;
88
+ const open = plans.filter((plan) => !plan.complete).sort((a, b) => Number(b.plan === targetPlan) - Number(a.plan === targetPlan) || Number(b.local) - Number(a.local) || byRecency(a, b));
89
+ const tagged = open.length > 1;
90
+ const leftRows = open.flatMap((plan) => (plan.rows ?? []).filter((row) => !row.checked).map((row) => ({ text: sentence(row.title), plan: tagged ? plan.title ?? null : null })));
91
+
92
+ const now = nowStep(data, { sessions, waitingSessions, working, herdrBusy, open });
93
+
94
+ const reminders = [];
95
+ for (const session of waitingSessions) reminders.push({ kind: "waiting", title: sessionName(session), question: questionOf(session.result) });
96
+ for (const work of boundaries) reminders.push({ kind: "approve", action: work.pendingBoundary.action ?? null });
97
+ for (const tree of data.worktreeState ?? []) {
98
+ if (tree.uncommitted) reminders.push({ kind: "uncommitted", count: tree.uncommitted, place: placeName(tree.worktree) });
99
+ }
100
+ for (const tree of data.worktreeState ?? []) {
101
+ if (tree.unpushed) reminders.push({ kind: "unpushed", count: tree.unpushed, place: placeName(tree.worktree) });
102
+ }
103
+ if (working.length + herdrBusy) reminders.push({ kind: "lanes", count: working.length + herdrBusy });
104
+ for (const plan of data.roadmap?.stalePlans ?? []) reminders.push({ kind: "stale", title: plan.title, days: plan.days, place: plan.local ? null : placeName(plan.worktree) });
105
+ const handoffItem = handoffNext(data);
106
+ if (handoffItem && !(now.kind === "handoff" && now.item === handoffItem)) reminders.push({ kind: "handoff", item: handoffItem });
107
+
108
+ return {
109
+ now,
110
+ glance,
111
+ milestones,
112
+ milestonesTotal: milestonesAll.length,
113
+ doneLately: doneRows.slice(0, DONE_ROWS),
114
+ doneTotal: doneRows.length,
115
+ remaining: leftRows.slice(0, LEFT_ROWS),
116
+ remainingMore: Math.max(0, leftRows.length - LEFT_ROWS),
117
+ reminders,
118
+ };
119
+ };
120
+
121
+ // The first `## Next` item of this worktree's handoff that no checked row or commit already did.
122
+ const handoffNext = (data) => {
123
+ const doneSteps = new Set([
124
+ ...(data.roadmap?.plans ?? []).flatMap((plan) => (plan.rows ?? []).filter((row) => row.checked).map((row) => stepKey(row.title))),
125
+ ...(data.commits ?? []).map((commit) => stepKey(commit.subject)),
126
+ ]);
127
+ const handoff = (data.handoffs ?? []).find((item) => item.local && item.next?.length);
128
+ const item = handoff?.next.find((entry) => !doneSteps.has(stepKey(entry)));
129
+ return item ? clipToWidth(bare(item), 60) : null;
130
+ };
131
+
132
+ // "Do this now" keeps the next-step priority of next-step.mjs (a step that runs on a typed word wins)
133
+ // and, when none runs, the fallback order of the brief: a question waiting on the user, a paused
134
+ // frame, a lane still working, the next row of an open plan, the handoff's next item, the newest
135
+ // ended session, else nothing on record.
136
+ const nowStep = (data, { sessions, waitingSessions, working, open }) => {
137
+ const next = data.next ?? { kind: "none" };
138
+ const planOf = (path) => (data.roadmap?.plans ?? []).find((plan) => plan.plan === path);
139
+ const target = next.target ?? {};
140
+ if (next.kind === "resume-frame") return { kind: "resume", skill: target.skill ?? null, stage: target.stage ?? null, say: next.say };
141
+ if (next.kind === "approve-boundary") return { kind: "approve", action: target.action ?? null, say: "lit approve", alt: "lit deny" };
142
+ if (next.kind === "continue-work") return { kind: "continue", plan: planOf(target.plan)?.title ?? null, say: next.say };
143
+ if (next.kind === "start-plan") {
144
+ const plan = planOf(target.plan);
145
+ return { kind: "start", plan: plan?.title ?? null, item: plan?.current ? sentence(plan.current) : null, done: plan?.progress?.done ?? null, total: plan?.progress?.total ?? null, say: next.say };
146
+ }
147
+ const waiting = waitingSessions[0];
148
+ if (waiting) return { kind: "answer", title: sessionName(waiting), question: questionOf(waiting.result), say: null };
149
+ const paused = (data.workflows ?? []).find((frame) => frame.status === "paused");
150
+ if (paused && !next.wait?.lanes) return { kind: "resume-elsewhere", skill: paused.skill ?? null, stage: paused.stage ?? null, say: null };
151
+ if (next.wait?.lanes || working.length) return { kind: "wait", lane: working[0] ? sessionName(working[0]) : null, lanes: Math.max(next.wait?.lanes ?? 0, working.length), say: null };
152
+ // A plan in the worktree of a live session comes first, then this worktree's, then the newest.
153
+ const liveTrees = new Set(sessions.filter((session) => session.status !== "ended" && session.status !== "done").map((session) => session.worktree));
154
+ const plan = open.find((item) => item.current && liveTrees.has(item.worktree)) ?? open.find((item) => item.current && item.local) ?? open.find((item) => item.current);
155
+ if (plan) {
156
+ return {
157
+ kind: "plan", plan: plan.title ?? null, item: sentence(plan.current), done: plan.progress?.done ?? null, total: plan.progress?.total ?? null,
158
+ place: plan.local ? null : placeName(plan.worktree), say: `start-work ${plan.plan}`,
159
+ };
160
+ }
161
+ const item = handoffNext(data);
162
+ if (item) return { kind: "handoff", item, say: `lit ${item}` };
163
+ const ended = sessions.find((session) => session.status === "ended" || session.status === "done");
164
+ if (ended) return { kind: "pickUp", title: sessionName(ended), say: null };
165
+ return { kind: "empty", say: null };
166
+ };
167
+
168
+ const WORDS = {
169
+ en: {
170
+ heads: { now: "🎯 Do this now", glance: "📊 At a glance", milestones: "🏁 Milestones", done: "✅ Done lately", left: "⬜ Still to do", remind: "🔔 Don't forget" },
171
+ of: (shown, total) => `(${shown} of ${total})`,
172
+ type: "👉 Type:",
173
+ waitFor: "👉 Wait:",
174
+ yourWords: "what to do next, in your own words",
175
+ yourAnswer: "your answer, in that session's window",
176
+ glanceHead: "| ✅ Done | 🔄 In progress | ⏳ Waiting on you | ⬜ Left |",
177
+ overall: "Overall",
178
+ noRows: "no plan rows on record",
179
+ milestoneHead: "| Milestone | State | Progress | Last |",
180
+ state: { done: "✅ Done", inProgress: "🔄 In progress", notStarted: "⬜ Not started" },
181
+ noBar: "no total recorded",
182
+ noPlans: "No plans in this window",
183
+ noDone: "Nothing done yet",
184
+ noLeft: "Nothing left",
185
+ noReminders: "Nothing to remember",
186
+ more: (n) => `…and ${n} more`,
187
+ justNow: "just now",
188
+ minutes: (n) => `${n}m ago`,
189
+ today: (hm) => `today ${hm}`,
190
+ days: (n) => `${n}d ago`,
191
+ notRead: (list) => `Not read: ${list}.`,
192
+ older: "Older sessions were not read (read budget used up).",
193
+ sources: { transcripts: "session records", plans: "plans", git: "git" },
194
+ now: {
195
+ resume: ({ skill, stage }) => [`Resume the paused ${skill ?? "workflow"}`, `this session stopped${stage ? ` at ${stage}` : ""}`],
196
+ approve: ({ action }) => ["Approve or deny start-work's request", `it waits for ${action ? `${action} ` : ""}access and never goes on by itself`],
197
+ continue: ({ plan }) => [`Keep going with ${plan ?? "this session's run"}`, "this session's run is still open"],
198
+ start: ({ plan, item }) => [`Start ${plan ?? "the open plan"}${item ? `: ${item}` : ""}`, "it is the one open plan and nothing else is running"],
199
+ answer: ({ title, question }) => [`Answer the question in “${title ?? "that session"}”`, question ? `it asked: “${question}”` : "it is waiting for you"],
200
+ "resume-elsewhere": ({ skill, stage }) => [`Resume the paused ${skill ?? "workflow"} in its own session`, `it stopped${stage ? ` at ${stage}` : ""}`],
201
+ wait: ({ lanes }) => ["Let the running work finish first", `${lanes} ${lanes === 1 ? "lane is" : "lanes are"} still working`],
202
+ plan: ({ plan, item, done, total, place }) => [`Next in ${plan ?? "the open plan"}: ${item}`, `${done !== null && total !== null ? `${done} of ${total} done` : "rows are left"}${place ? `, in ${place}` : ""}`],
203
+ handoff: ({ item }) => [item, "the first open item under Next in the handoff"],
204
+ pickUp: ({ title }) => [`Pick up where “${title ?? "the last session"}” stopped`, "the last session here has ended"],
205
+ empty: () => ["Nothing on record to pick up", "no session, plan or handoff in this window"],
206
+ },
207
+ waitLane: (lane) => (lane ? `until “${lane}” finishes` : "until the other lanes finish"),
208
+ remind: {
209
+ waiting: ({ title, question }) => `⏳ “${title ?? "A session"}” ${question ? `asked: “${question}”` : "is waiting for you"} → answer it in that session's window`,
210
+ approve: ({ action }) => `⏳ start-work waits for your OK${action ? ` (${action} access)` : ""} → type \`lit approve\` or \`lit deny\``,
211
+ uncommitted: ({ count, place }) => `💾 ${count} uncommitted ${count === 1 ? "change" : "changes"}${place ? ` (${place})` : ""} → commit them, or decide to drop them`,
212
+ unpushed: ({ count, place }) => `📤 ${count} unpushed ${count === 1 ? "commit" : "commits"}${place ? ` (${place})` : ""} → push when you are ready`,
213
+ lanes: ({ count }) => `🏃 ${count} ${count === 1 ? "lane" : "lanes"} still working → don't type \`go\` until ${count === 1 ? "it finishes" : "they finish"}`,
214
+ stale: ({ title, days, place }) => `🕰️ Plan untouched for ${days} days: ${title}${place ? ` (${place})` : ""} → decide whether to pick it up or drop it`,
215
+ handoff: ({ item }) => `📌 Handoff next: ${item} → start it when you are ready`,
216
+ },
217
+ },
218
+ ko: {
219
+ heads: { now: "🎯 지금 할 일", glance: "📊 한눈에 보기", milestones: "🏁 마일스톤", done: "✅ 최근 끝낸 일", left: "⬜ 남은 일", remind: "🔔 잊지 말 것" },
220
+ of: (shown, total) => `(${total}개 중 ${shown}개)`,
221
+ type: "👉 입력:",
222
+ waitFor: "👉 기다리기:",
223
+ yourWords: "이어서 할 일을 직접 적기",
224
+ yourAnswer: "그 세션 창에서 답 쓰기",
225
+ glanceHead: "| ✅ 끝남 | 🔄 진행 중 | ⏳ 나를 기다림 | ⬜ 남음 |",
226
+ overall: "전체 진행",
227
+ noRows: "기록된 계획 항목 없음",
228
+ milestoneHead: "| 마일스톤 | 상태 | 진행 | 최근 |",
229
+ state: { done: "✅ 끝남", inProgress: "🔄 진행 중", notStarted: "⬜ 남음" },
230
+ noBar: "전체 개수 기록 없음",
231
+ noPlans: "이 기간에 계획이 없어요",
232
+ noDone: "아직 끝낸 일이 없어요",
233
+ noLeft: "남은 일이 없어요",
234
+ noReminders: "잊을 일이 없어요",
235
+ more: (n) => `…외 ${n}개`,
236
+ justNow: "방금",
237
+ minutes: (n) => `${n}분 전`,
238
+ today: (hm) => `오늘 ${hm}`,
239
+ days: (n) => `${n}일 전`,
240
+ notRead: (list) => `읽지 못함: ${list}.`,
241
+ older: "오래된 세션은 읽지 않았어요(읽기 예산 소진).",
242
+ sources: { transcripts: "세션 기록", plans: "계획", git: "git" },
243
+ now: {
244
+ resume: ({ skill, stage }) => [`멈춘 ${skill ?? "워크플로"} 이어가기`, `이 세션이 ${stage ? `${stage}에서 ` : ""}멈춰 있어요`],
245
+ approve: ({ action }) => ["start-work 요청을 승인하거나 거절하기", `${action ? `${action} ` : ""}권한을 기다리고, 저절로 넘어가지 않아요`],
246
+ continue: ({ plan }) => [`${plan ?? "이 세션의 작업"} 계속하기`, "이 세션의 실행이 아직 열려 있어요"],
247
+ start: ({ plan, item }) => [`${plan ?? "열린 계획"} 시작하기${item ? `: ${item}` : ""}`, "열린 계획이 하나뿐이고 다른 작업이 없어요"],
248
+ answer: ({ title, question }) => [`“${title ?? "그 세션"}” 질문에 답하기`, question ? `물어본 것: “${question}”` : "나를 기다리고 있어요"],
249
+ "resume-elsewhere": ({ skill, stage }) => [`멈춘 ${skill ?? "워크플로"}를 그 세션에서 이어가기`, `${stage ? `${stage}에서 ` : ""}멈춰 있어요`],
250
+ wait: ({ lanes }) => ["돌고 있는 작업이 끝나기를 먼저 기다리기", `레인 ${lanes}개가 아직 일하는 중이에요`],
251
+ plan: ({ plan, item, done, total, place }) => [`${plan ?? "열린 계획"} 다음 항목: ${item}`, `${done !== null && total !== null ? `${total}개 중 ${done}개 끝남` : "남은 항목이 있어요"}${place ? ` (${place})` : ""}`],
252
+ handoff: ({ item }) => [item, "핸드오프 Next의 첫 번째 남은 항목이에요"],
253
+ pickUp: ({ title }) => [`“${title ?? "마지막 세션"}”이 멈춘 곳에서 이어받기`, "이곳의 마지막 세션은 끝났어요"],
254
+ empty: () => ["이어 할 기록이 없어요", "이 기간에 세션·계획·핸드오프가 없어요"],
255
+ },
256
+ waitLane: (lane) => (lane ? `“${lane}” 끝날 때까지` : "다른 레인이 끝날 때까지"),
257
+ remind: {
258
+ waiting: ({ title, question }) => `⏳ “${title ?? "한 세션"}” ${question ? `질문: “${question}”` : "세션이 나를 기다림"} → 그 세션 창에서 답하기`,
259
+ approve: ({ action }) => `⏳ start-work 승인 대기${action ? `(${action} 권한)` : ""} → \`lit approve\` 또는 \`lit deny\` 입력`,
260
+ uncommitted: ({ count, place }) => `💾 커밋 안 된 변경 ${count}개${place ? ` (${place})` : ""} → 커밋할지, 버릴지 정하기`,
261
+ unpushed: ({ count, place }) => `📤 푸시 안 된 커밋 ${count}개${place ? ` (${place})` : ""} → 준비되면 푸시하기`,
262
+ lanes: ({ count }) => `🏃 아직 일하는 레인 ${count}개 → 끝날 때까지 \`go\` 치지 않기`,
263
+ stale: ({ title, days, place }) => `🕰️ ${days}일째 멈춘 계획: ${title}${place ? ` (${place})` : ""} → 이어 할지, 접을지 정하기`,
264
+ handoff: ({ item }) => `📌 핸드오프 다음 할 일: ${item} → 준비되면 시작하기`,
265
+ },
266
+ },
267
+ };
268
+
269
+ // `just now`, `10m ago`, `today 15:40`, `3d ago`, in the machine's local time.
270
+ const lastSeen = (ms, now, w) => {
271
+ if (!Number.isFinite(ms)) return "·";
272
+ const minutes = Math.max(0, Math.floor((now - ms) / 60_000));
273
+ if (minutes < 1) return w.justNow;
274
+ if (minutes < 60) return w.minutes(minutes);
275
+ const at = new Date(ms);
276
+ if (at.toDateString() === new Date(now).toDateString()) {
277
+ return w.today(`${String(at.getHours()).padStart(2, "0")}:${String(at.getMinutes()).padStart(2, "0")}`);
278
+ }
279
+ return w.days(Math.max(1, Math.floor((now - ms) / 86_400_000)));
280
+ };
281
+
282
+ // Every string inside a fact is data; it is escaped here, never interpreted.
283
+ const escapeFacts = (facts) => Object.fromEntries(Object.entries(facts).map(([key, value]) => [key, typeof value === "string" ? plain(value) : value]));
284
+
285
+ /** The board as Markdown. `lang` is `ko` or `en`; `now` is the clock the "Last" column reads. */
286
+ export const renderBoard = (data, { lang = "en", now = Date.parse(data.generatedAt) || Date.now() } = {}) => {
287
+ const w = WORDS[lang] ?? WORDS.en;
288
+ const board = buildBoard(data);
289
+ const out = [];
290
+
291
+ const step = board.now;
292
+ const [action, why] = w.now[step.kind](escapeFacts(step));
293
+ out.push(`## ${w.heads.now}`, `**${action}** — ${why}`);
294
+ if (step.kind === "wait") out.push(`${w.waitFor} ${w.waitLane(step.lane ? plain(step.lane) : null)}`);
295
+ else if (step.say) out.push(`${w.type} ${code(step.say)}${step.alt ? ` / ${code(step.alt)}` : ""}`);
296
+ else out.push(`${w.type} ${step.kind === "answer" ? w.yourAnswer : w.yourWords}`);
297
+
298
+ const { glance } = board;
299
+ out.push("", `## ${w.heads.glance}`, w.glanceHead, "|:--:|:--:|:--:|:--:|", `| ${glance.done} | ${glance.inProgress} | ${glance.waiting} | ${glance.remaining} |`, "", `${w.overall} ${glance.progress.bar ?? w.noRows}`);
300
+
301
+ const more = board.milestonesTotal > board.milestones.length ? ` ${w.of(board.milestones.length, board.milestonesTotal)}` : "";
302
+ out.push("", `## ${w.heads.milestones}${more}`);
303
+ if (board.milestones.length) {
304
+ out.push(w.milestoneHead, "|---|---|---|---|");
305
+ for (const row of board.milestones) {
306
+ const name = `${plain(row.title)}${row.place ? ` · ${plain(row.place)}` : ""}`;
307
+ out.push(`| ${name} | ${w.state[row.state]} | ${row.bar ?? w.noBar} | ${lastSeen(row.changedMs, now, w)} |`);
308
+ }
309
+ } else {
310
+ out.push(w.noPlans);
311
+ }
312
+
313
+ out.push("", `## ${w.heads.done}`);
314
+ out.push(...(board.doneLately.length ? board.doneLately.map((text) => `- ${plain(text)}`) : [w.noDone]));
315
+
316
+ out.push("", `## ${w.heads.left}`);
317
+ if (board.remaining.length) {
318
+ out.push(...board.remaining.map((row, index) => `${index + 1}. ${plain(row.text)}${row.plan ? ` · ${plain(row.plan)}` : ""}`));
319
+ if (board.remainingMore) out.push(w.more(board.remainingMore));
320
+ } else {
321
+ out.push(w.noLeft);
322
+ }
323
+
324
+ out.push("", `## ${w.heads.remind}`);
325
+ const reminders = board.reminders.slice(0, REMINDERS).map((item) => `- ${w.remind[item.kind](escapeFacts(item))}`);
326
+ out.push(...(reminders.length ? reminders : [w.noReminders]));
327
+
328
+ // A source that could not be read stays visible, once, under the board.
329
+ const unread = ["transcripts", "plans", "git"].filter((name) => data.sources?.[name] && data.sources[name] !== "ok").map((name) => w.sources[name]);
330
+ const notes = [unread.length ? w.notRead(unread.join(", ")) : null, data.budget?.exhausted ? w.older : null].filter(Boolean);
331
+ if (notes.length) out.push("", "---", `*${notes.join(" ")}*`);
332
+ return `${out.join("\n")}\n`;
333
+ };
@@ -12,8 +12,9 @@ import { closeSync, constants, fstatSync, lstatSync, openSync, readSync, readdir
12
12
  import { homedir } from "node:os";
13
13
  import { basename, join, resolve } from "node:path";
14
14
 
15
- import { parsePlanTaskRows } from "./plan-task-rows.mjs";
15
+ import { planLinesOutsideFences, parsePlanTaskRows } from "./plan-task-rows.mjs";
16
16
  import { resolveProjectStateRoot } from "./project-state-root.mjs";
17
+ import { buildBoard, renderBoard } from "./board.mjs";
17
18
  import { renderBrief } from "./brief.mjs";
18
19
  import { aggregateProgress, clipToWidth, displayWidth, progressOf } from "./gauge.mjs";
19
20
  import { chooseNextStep } from "./next-step.mjs";
@@ -27,6 +28,9 @@ const DEFAULT_SINCE = "7d";
27
28
  const DEFAULT_MAX = 12;
28
29
  const NAME_MAX = 90;
29
30
  const PLAN_LIMIT = 8;
31
+ const STALE_MS = 7 * 86_400_000;
32
+ const STALE_READS = 6;
33
+ const TITLE_MAX = 48;
30
34
 
31
35
  /** `7d`, `12h`, `30m` in milliseconds, or null. */
32
36
  export const parseSince = (text) => {
@@ -83,19 +87,29 @@ const mtimeOf = (path) => {
83
87
  }
84
88
  };
85
89
 
90
+ // A plan's name for a reader: its first `# ` heading, else its file name without the date and dashes.
91
+ const planTitle = (text, fileName, redact) => {
92
+ const heading = planLinesOutsideFences(text).map(({ line }) => /^#\s+(.+?)\s*#*\s*$/u.exec(line)?.[1]).find(Boolean);
93
+ const fallback = fileName.replace(/\.md$/u, "").replace(/^\d{4}-\d{2}-\d{2}[-_]?/u, "").replace(/[-_]+/gu, " ").trim();
94
+ return clipToWidth(redact(heading || fallback || fileName), TITLE_MAX);
95
+ };
96
+
86
97
  // Every plan changed inside the window, open or finished; a finished one has no current item. A plan
87
- // outside the window is never read, and one the read budget cannot cover is not read either: both are
88
- // counted in `skipped` so the brief can say so.
98
+ // outside the window stays out of the roadmap, and one the read budget cannot cover is not read
99
+ // either: both are counted in `skipped` so the brief can say so. A few plans outside the window are
100
+ // still read for one fact, whether rows are left in them, so the board can say which plan stalled.
89
101
  const plansIn = (root, budget, redact, local, sinceMs, now) => {
90
102
  const list = entries(join(root, "plans"));
91
103
  if (!list) return null;
92
104
  let skipped = 0;
105
+ const outside = [];
93
106
  const plans = list.filter((entry) => entry.isFile() && entry.name.endsWith(".md")).sort((a, b) => a.name.localeCompare(b.name)).flatMap((entry) => {
94
107
  const path = join(root, "plans", entry.name);
95
108
  const changedMs = mtimeOf(path);
96
109
  if (changedMs === null || now - changedMs > sinceMs || budget.used >= budget.limit) {
97
110
  skipped += 1;
98
111
  if (changedMs !== null && now - changedMs <= sinceMs) budget.exhausted = true;
112
+ else if (changedMs !== null) outside.push({ path, name: entry.name, changedMs });
99
113
  return [];
100
114
  }
101
115
  const text = readSmallFile(path, budget);
@@ -107,6 +121,7 @@ const plansIn = (root, budget, redact, local, sinceMs, now) => {
107
121
  return [{
108
122
  worktree: redact(root),
109
123
  plan: `plans/${entry.name}`,
124
+ title: planTitle(text, entry.name, redact),
110
125
  local,
111
126
  changedMs,
112
127
  complete: open.length === 0,
@@ -115,7 +130,16 @@ const plansIn = (root, budget, redact, local, sinceMs, now) => {
115
130
  progress: progressOf(done, rows.length, open.map((row) => clipToWidth(redact(row.text), NAME_MAX))),
116
131
  }];
117
132
  });
118
- return { plans, skipped };
133
+ // Newest first, so the plans that stalled most recently are the ones read.
134
+ const stale = outside.sort((a, b) => b.changedMs - a.changedMs).slice(0, STALE_READS).flatMap(({ path, name, changedMs }) => {
135
+ if (budget.used >= budget.limit) return [];
136
+ const text = readSmallFile(path, budget);
137
+ const rows = text === null ? [] : parsePlanTaskRows(text);
138
+ if (!rows.length || isTemplate(rows)) return [];
139
+ const open = rows.filter((row) => !row.checked).length;
140
+ return open ? [{ worktree: redact(root), plan: `plans/${name}`, title: planTitle(text, name, redact), local, changedMs, open }] : [];
141
+ });
142
+ return { plans, skipped, stale };
119
143
  };
120
144
 
121
145
  // The items under a `## Next` heading of a handoff, the fallback next step when no plan has one.
@@ -189,6 +213,26 @@ const commitsOf = (root, sinceMs, now, exec, redact) => {
189
213
  }
190
214
  };
191
215
 
216
+ // Changes nobody committed yet and commits not pushed to the upstream, per worktree. A count git
217
+ // cannot give (no repository, no upstream) is null, never zero.
218
+ const gitCount = (exec, root, args) => {
219
+ try {
220
+ return exec("git", args, { cwd: root, timeout: GIT_TIMEOUT_MS });
221
+ } catch {
222
+ return null;
223
+ }
224
+ };
225
+ const worktreeStateOf = (root, exec, redact, local) => {
226
+ const status = gitCount(exec, root, ["status", "--porcelain=v1", "--untracked-files=normal"]);
227
+ const ahead = gitCount(exec, root, ["rev-list", "--count", "@{upstream}..HEAD"]);
228
+ return {
229
+ worktree: redact(root),
230
+ local,
231
+ uncommitted: status === null ? null : status.split("\n").filter((line) => line.trim()).length,
232
+ unpushed: ahead === null || !/^\d+\s*$/u.test(ahead) ? null : Number(ahead.trim()),
233
+ };
234
+ };
235
+
192
236
  const herdrAgent = (agent, env, redact) => ({
193
237
  status: typeof agent?.agent_status === "string" ? agent.agent_status : "unknown",
194
238
  pane: typeof agent?.pane_id === "string" ? clipToWidth(redact(agent.pane_id), 40) : "unknown",
@@ -260,6 +304,7 @@ export const collectRewind = ({
260
304
  const planReads = roots.map((root) => plansIn(root, budget, redact, isLocal(root), sinceMs, now));
261
305
  const plans = planReads.every((read) => read === null) ? null : planReads.flatMap((read) => read?.plans ?? []);
262
306
  const plansSkipped = planReads.reduce((sum, read) => sum + (read?.skipped ?? 0), 0);
307
+ const staleOutside = planReads.flatMap((read) => read?.stale ?? []);
263
308
  const handoffs = roots.flatMap((root) => handoffsOf(root, budget, redact, isLocal(root)));
264
309
 
265
310
  const storeDir = join(env.GROK_CONFIG_DIR || join(home, ".grok"), "sessions");
@@ -275,6 +320,7 @@ export const collectRewind = ({
275
320
  }
276
321
 
277
322
  const commits = collectEach((root) => commitsOf(root, sinceMs, now, exec, redact));
323
+ const worktreeState = roots.map((root) => worktreeStateOf(root, exec, redact, isLocal(root)));
278
324
  const herdr = herdrOf(env, exec, redact);
279
325
 
280
326
  // A session waits on the user when it asked something.
@@ -319,6 +365,12 @@ export const collectRewind = ({
319
365
  plansOmitted: orderedPlans.length - shownPlans.length,
320
366
  plansDone: orderedPlans.filter((plan) => plan.complete).length,
321
367
  plansSkipped,
368
+ // Plans with rows left that nobody touched for a week, inside the window or outside it.
369
+ stalePlans: [
370
+ ...orderedPlans.filter((plan) => !plan.complete && now - plan.changedMs >= STALE_MS)
371
+ .map(({ worktree, plan, title, local, changedMs, progress }) => ({ worktree, plan, title, local, changedMs, open: progress.total - progress.done })),
372
+ ...staleOutside.filter((plan) => now - plan.changedMs >= STALE_MS),
373
+ ].sort((a, b) => a.changedMs - b.changedMs).map(({ changedMs, ...plan }) => ({ ...plan, changedMs, days: Math.floor((now - changedMs) / 86_400_000) })),
322
374
  litgoal: [],
323
375
  progress: roadmapItems.length ? aggregateProgress(roadmapItems) : progressOf(null, null),
324
376
  },
@@ -326,11 +378,15 @@ export const collectRewind = ({
326
378
  startWork: [],
327
379
  handoffs,
328
380
  commits: (commits ?? []).slice(0, 20).map(({ atMs: _atMs, ...commit }) => commit),
381
+ worktreeState,
329
382
  herdr,
330
383
  };
331
384
  // `go` re-collects the brief and continues this step; no record is written, because the model
332
385
  // has no documented way to learn its session id and no hook could hand the record back to it.
333
386
  data.next = chooseNextStep(data, sessionId);
387
+ // The KPI board's facts (buckets, counts, bars, reminders), computed here so the board is the
388
+ // same for every reader and the model only shows it.
389
+ data.board = buildBoard(data);
334
390
  return data;
335
391
  };
336
392
 
@@ -373,16 +429,18 @@ export const renderRewind = (data, width = 100) => {
373
429
  };
374
430
 
375
431
  /**
376
- * `rewind [--brief [--lang ko|en] | --json] [--here] [--since 7d] [--max 12] [--session <id>] [--width N]`.
377
- * `--brief` prints the Markdown brief the lit-adhd skill copies; `--json` the data under it.
432
+ * `rewind [--brief [--detail] [--lang ko|en] | --json] [--here] [--since 7d] [--max 12] [--session <id>] [--width N]`.
433
+ * `--brief` prints the KPI board the lit-adhd skill shows; `--detail` adds the per-session brief
434
+ * under it; `--json` the data under both, with the board text in `board.text`.
378
435
  */
379
436
  export const runRewindCli = (args, cwd = process.cwd(), { env = process.env, stdout = process.stdout, stderr = process.stderr } = {}) => {
380
437
  const options = { cwd, env, here: false, since: DEFAULT_SINCE, max: DEFAULT_MAX, sessionId: null };
381
438
  let json = false;
382
439
  let brief = false;
440
+ let detail = false;
383
441
  let lang = "en";
384
442
  let width = Number(stdout.columns) || 100;
385
- const usage = "Usage: rewind [--brief [--lang ko|en] | --json] [--here] [--since 7d] [--max 12] [--session <id>] [--width N]";
443
+ const usage = "Usage: rewind [--brief [--detail] [--lang ko|en] | --json] [--here] [--since 7d] [--max 12] [--session <id>] [--width N]";
386
444
  if (args.some((arg) => arg === "--help" || arg === "-h")) {
387
445
  stdout.write(`${usage}\n`);
388
446
  return 0;
@@ -391,6 +449,7 @@ export const runRewindCli = (args, cwd = process.cwd(), { env = process.env, std
391
449
  const arg = args[index];
392
450
  if (arg === "--json") json = true;
393
451
  else if (arg === "--brief") brief = true;
452
+ else if (arg === "--detail") detail = true;
394
453
  else if (arg === "--lang" && ["ko", "en"].includes(args[index + 1])) lang = args[++index];
395
454
  else if (arg === "--here") options.here = true;
396
455
  else if (arg === "--since" && parseSince(args[index + 1])) options.since = args[++index];
@@ -403,6 +462,15 @@ export const runRewindCli = (args, cwd = process.cwd(), { env = process.env, std
403
462
  }
404
463
  }
405
464
  const data = collectRewind(options);
406
- stdout.write(json ? `${JSON.stringify(data, null, 2)}\n` : brief ? renderBrief(data, { lang }) : renderRewind(data, width));
465
+ const now = Date.parse(data.generatedAt);
466
+ if (json) {
467
+ data.board.text = renderBoard(data, { lang, now });
468
+ stdout.write(`${JSON.stringify(data, null, 2)}\n`);
469
+ } else if (brief) {
470
+ // The board is the answer; the per-session brief is the detail a reader asks for.
471
+ stdout.write(detail ? `${renderBoard(data, { lang, now })}\n---\n\n${renderBrief(data, { lang, now })}` : renderBoard(data, { lang, now }));
472
+ } else {
473
+ stdout.write(renderRewind(data, width));
474
+ }
407
475
  return 0;
408
476
  };