@plebeiantech/lat.md 0.12.3-fork.2 → 0.12.3-fork.20

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 (341) hide show
  1. package/README.md +31 -2
  2. package/dist/src/cli/agent-invocation.d.ts +6 -0
  3. package/dist/src/cli/agent-invocation.js +23 -0
  4. package/dist/src/cli/checklist-menu.d.ts +2 -1
  5. package/dist/src/cli/checklist-menu.js +3 -2
  6. package/dist/src/cli/comment-guard.d.ts +14 -0
  7. package/dist/src/cli/comment-guard.js +10 -33
  8. package/dist/src/cli/comment-reminder.d.ts +65 -6
  9. package/dist/src/cli/comment-reminder.js +164 -28
  10. package/dist/src/cli/fork-instructions.d.ts +20 -0
  11. package/dist/src/cli/fork-instructions.js +184 -0
  12. package/dist/src/cli/fork-scaffold.d.ts +106 -0
  13. package/dist/src/cli/fork-scaffold.js +490 -0
  14. package/dist/src/cli/graph.d.ts +1 -1
  15. package/dist/src/cli/hook.d.ts +26 -0
  16. package/dist/src/cli/hook.js +118 -46
  17. package/dist/src/cli/index.js +166 -64
  18. package/dist/src/cli/init-preferences.d.ts +4 -0
  19. package/dist/src/cli/init-preferences.js +36 -0
  20. package/dist/src/cli/init.d.ts +2 -1
  21. package/dist/src/cli/init.js +107 -50
  22. package/dist/src/cli/reindex.d.ts +1 -1
  23. package/dist/src/cli/reindex.js +7 -10
  24. package/dist/src/cli/search.d.ts +14 -4
  25. package/dist/src/cli/search.js +116 -100
  26. package/dist/src/cli/ui-build-server.d.ts +12 -0
  27. package/dist/src/cli/ui-build-server.js +26 -0
  28. package/dist/src/cli/ui-build.d.ts +4 -0
  29. package/dist/src/cli/ui-build.js +13 -0
  30. package/dist/src/cli/ui.d.ts +1 -1
  31. package/dist/src/cli/ui.js +18 -2
  32. package/dist/src/fork/antigravity-hook.d.ts +47 -0
  33. package/dist/src/fork/antigravity-hook.js +424 -0
  34. package/dist/src/fork/antigravity-init.d.ts +17 -0
  35. package/dist/src/fork/antigravity-init.js +124 -0
  36. package/dist/src/fork/upstream-drift-cli.js +2 -0
  37. package/dist/src/fork/upstream-drift.d.ts +26 -0
  38. package/dist/src/fork/upstream-drift.js +185 -0
  39. package/dist/src/fork/upstream-guard-cli.d.ts +1 -0
  40. package/dist/src/fork/upstream-guard-cli.js +2 -0
  41. package/dist/src/fork/upstream-guard.d.ts +72 -0
  42. package/dist/src/fork/upstream-guard.js +445 -0
  43. package/dist/src/graph-export.d.ts +2 -0
  44. package/dist/src/graph-export.js +38 -19
  45. package/dist/src/knowledge/claude-memory.d.ts +1 -0
  46. package/dist/src/knowledge/claude-memory.js +33 -4
  47. package/dist/src/knowledge/index.js +2 -2
  48. package/dist/src/mcp/server.js +34 -18
  49. package/dist/src/search/cache.d.ts +3 -0
  50. package/dist/src/search/cache.js +104 -0
  51. package/dist/src/search/chunks.d.ts +23 -0
  52. package/dist/src/search/chunks.js +197 -0
  53. package/dist/src/search/db.d.ts +28 -16
  54. package/dist/src/search/db.js +106 -40
  55. package/dist/src/search/embedder.d.ts +2 -1
  56. package/dist/src/search/embedder.js +7 -6
  57. package/dist/src/search/index.d.ts +6 -2
  58. package/dist/src/search/index.js +176 -53
  59. package/dist/src/search/lexical.d.ts +6 -0
  60. package/dist/src/search/lexical.js +36 -0
  61. package/dist/src/search/lock.d.ts +5 -0
  62. package/dist/src/search/lock.js +45 -0
  63. package/dist/src/search/query.d.ts +26 -0
  64. package/dist/src/search/query.js +103 -0
  65. package/dist/src/search/search.d.ts +17 -7
  66. package/dist/src/search/search.js +164 -14
  67. package/dist/src/search/types.d.ts +15 -0
  68. package/dist/src/search/types.js +1 -0
  69. package/dist/src/view/client/assets/GraphView-Dij8mAA_.js +456 -0
  70. package/dist/src/view/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  71. package/dist/src/view/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  72. package/dist/src/view/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  73. package/dist/src/view/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  74. package/dist/src/view/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  75. package/dist/src/view/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  76. package/dist/src/view/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  77. package/dist/src/view/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  78. package/dist/src/view/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  79. package/dist/src/view/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  80. package/dist/src/view/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  81. package/dist/src/view/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  82. package/dist/src/view/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  83. package/dist/src/view/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  84. package/dist/src/view/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  85. package/dist/src/view/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  86. package/dist/src/view/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  87. package/dist/src/view/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  88. package/dist/src/view/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  89. package/dist/src/view/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  90. package/dist/src/view/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  91. package/dist/src/view/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  92. package/dist/src/view/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  93. package/dist/src/view/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  94. package/dist/src/view/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  95. package/dist/src/view/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  96. package/dist/src/view/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  97. package/dist/src/view/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  98. package/dist/src/view/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  99. package/dist/src/view/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  100. package/dist/src/view/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  101. package/dist/src/view/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  102. package/dist/src/view/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  103. package/dist/src/view/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  104. package/dist/src/view/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  105. package/dist/src/view/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  106. package/dist/src/view/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  107. package/dist/src/view/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  108. package/dist/src/view/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  109. package/dist/src/view/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  110. package/dist/src/view/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  111. package/dist/src/view/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  112. package/dist/src/view/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  113. package/dist/src/view/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  114. package/dist/src/view/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  115. package/dist/src/view/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  116. package/dist/src/view/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  117. package/dist/src/view/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  118. package/dist/src/view/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  119. package/dist/src/view/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  120. package/dist/src/view/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  121. package/dist/src/view/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  122. package/dist/src/view/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  123. package/dist/src/view/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  124. package/dist/src/view/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  125. package/dist/src/view/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  126. package/dist/src/view/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  127. package/dist/src/view/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  128. package/dist/src/view/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  129. package/dist/src/view/client/assets/MarkdownEditor-88Wbt0M1.js +28 -0
  130. package/dist/src/view/client/assets/OrbitControls-DwcpQNja.js +1 -0
  131. package/dist/src/view/client/assets/STLLoader-CLWTKt5i.js +1 -0
  132. package/dist/src/view/client/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  133. package/dist/src/view/client/assets/abnfDiagram-VCTEODGH-y0DlYa8E.js +1 -0
  134. package/dist/src/view/client/assets/arc-FlMu8dnO.js +1 -0
  135. package/dist/src/view/client/assets/architectureDiagram-5GKGNRK7-DA_uWZW1.js +36 -0
  136. package/dist/src/view/client/assets/blockDiagram-I7D4REHJ-BHQ5LU85.js +129 -0
  137. package/dist/src/view/client/assets/c4Diagram-7LVT6UL2-BRucKCt2.js +38 -0
  138. package/dist/src/view/client/assets/channel-BgDNA_Ay.js +1 -0
  139. package/dist/src/view/client/assets/chunk-2Q5K7J3B-BJPcFivt.js +1 -0
  140. package/dist/src/view/client/assets/chunk-5VM5RSS4-v2q99bGz.js +15 -0
  141. package/dist/src/view/client/assets/chunk-F27PBJKO-CcHOuJCs.js +1 -0
  142. package/dist/src/view/client/assets/chunk-IMKFNOWR-DNxYuJNq.js +231 -0
  143. package/dist/src/view/client/assets/chunk-JWPE2WC7-C0eHKvLW.js +1 -0
  144. package/dist/src/view/client/assets/chunk-POPQ4Y6H-57CWp2Ve.js +1 -0
  145. package/dist/src/view/client/assets/chunk-SVP7TREG-BqcoxIJw.js +88 -0
  146. package/dist/src/view/client/assets/chunk-TICWLB2K-DRUJR5zH.js +206 -0
  147. package/dist/src/view/client/assets/chunk-XXDRQBXY-Dez0oRoM.js +1 -0
  148. package/dist/src/view/client/assets/classDiagram-ZZMXUADV-CFZ_Sgh5.js +1 -0
  149. package/dist/src/view/client/assets/classDiagram-v2-VYDZK3BY-CFZ_Sgh5.js +1 -0
  150. package/dist/src/view/client/assets/cose-bilkent-JH36ORCC-BHtud6Hg.js +1 -0
  151. package/dist/src/view/client/assets/cynefin-OW5HDTMX-BjBW8VGk.js +166 -0
  152. package/dist/src/view/client/assets/cynefinDiagram-5FMLGOSQ-DwGuD7oF.js +62 -0
  153. package/dist/src/view/client/assets/cytoscape.esm-DzSz-X2X.js +321 -0
  154. package/dist/src/view/client/assets/dagre-GXQ25YYZ-C5zSlGK9.js +4 -0
  155. package/dist/src/view/client/assets/defaultLocale-DX6XiGOO.js +1 -0
  156. package/dist/src/view/client/assets/diagram-S7CK7UJ4-C_NhA3bj.js +30 -0
  157. package/dist/src/view/client/assets/diagram-UQ7AKVKN-az7QPYNb.js +41 -0
  158. package/dist/src/view/client/assets/diagram-VSXAHHWV-BRvDuM8_.js +3 -0
  159. package/dist/src/view/client/assets/diagram-VX7I27RA-BWLgF6S-.js +24 -0
  160. package/dist/src/view/client/assets/diagram-Z3DM3KII-DV3d6mL5.js +24 -0
  161. package/dist/src/view/client/assets/ebnfDiagram-PWID7BFC-yUXrEAvK.js +1 -0
  162. package/dist/src/view/client/assets/erDiagram-RLTQ6QDP-D35FN1Pt.js +99 -0
  163. package/dist/src/view/client/assets/flowDiagram-HODETNUW-BciZqsjT.js +168 -0
  164. package/dist/src/view/client/assets/ganttDiagram-EL5Y4UJY-BysPGgXS.js +292 -0
  165. package/dist/src/view/client/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  166. package/dist/src/view/client/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  167. package/dist/src/view/client/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  168. package/dist/src/view/client/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  169. package/dist/src/view/client/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
  170. package/dist/src/view/client/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
  171. package/dist/src/view/client/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
  172. package/dist/src/view/client/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  173. package/dist/src/view/client/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
  174. package/dist/src/view/client/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
  175. package/dist/src/view/client/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  176. package/dist/src/view/client/assets/gitGraphDiagram-WWUBYQGX-C3DdJ5xG.js +106 -0
  177. package/dist/src/view/client/assets/index-BnENo9bV.js +1 -0
  178. package/dist/src/view/client/assets/index-CJokoRSp.js +13 -0
  179. package/dist/src/view/client/assets/index-DG0Ez15D.css +1 -0
  180. package/dist/src/view/client/assets/infoDiagram-27XIBGKW-D3HZrDRb.js +2 -0
  181. package/dist/src/view/client/assets/init-Gi6I4Gst.js +1 -0
  182. package/dist/src/view/client/assets/ishikawaDiagram-5VMMS53U-BXyVIXTU.js +70 -0
  183. package/dist/src/view/client/assets/journeyDiagram-3NMN7TZE-D4-1NxVU.js +139 -0
  184. package/dist/src/view/client/assets/kanban-definition-UXKFOSKX-4Gu_5yBA.js +89 -0
  185. package/dist/src/view/client/assets/katex-HP8lGamR.js +257 -0
  186. package/dist/src/view/client/assets/layout-Jf1K3TMM.js +1 -0
  187. package/dist/src/view/client/assets/linear-DWfwzUT_.js +1 -0
  188. package/dist/src/view/client/assets/logo-RR_KBOAT.svg +149 -0
  189. package/dist/src/view/client/assets/maplibre-gl-CDX6Zuow.js +800 -0
  190. package/dist/src/view/client/assets/mermaid.core-DMx_DAl8.js +310 -0
  191. package/dist/src/view/client/assets/mindmap-definition-YA3MSWOX-8pxY_RWi.js +96 -0
  192. package/dist/src/view/client/assets/ordinal-Cboi1Yqb.js +1 -0
  193. package/dist/src/view/client/assets/pegDiagram-XKGWAZYB-DNAw_O5t.js +1 -0
  194. package/dist/src/view/client/assets/pieDiagram-E7YTZNPT-uuvRCDkC.js +39 -0
  195. package/dist/src/view/client/assets/quadrantDiagram-AXDQQJYC-BER2O4Aq.js +7 -0
  196. package/dist/src/view/client/assets/railroadDiagram-O6MQD6OU-CxEsJ_0n.js +1 -0
  197. package/dist/src/view/client/assets/requirementDiagram-BXWQKSXE-yS9rspca.js +84 -0
  198. package/dist/src/view/client/assets/sankeyDiagram-P5KCCOFB-Bqt70a2j.js +40 -0
  199. package/dist/src/view/client/assets/sequenceDiagram-WJ2MYXX4-BvOOEJNr.js +162 -0
  200. package/dist/src/view/client/assets/sizeCapture-INFHLROL-CvO_Pjjo.js +1 -0
  201. package/dist/src/view/client/assets/stateDiagram-D77RDMKH-KLmVOZkq.js +1 -0
  202. package/dist/src/view/client/assets/stateDiagram-v2-MP3YSRHH-KCS8Mdzu.js +1 -0
  203. package/dist/src/view/client/assets/swimlanes-42K2YHIH-DC1r4_sq.js +1 -0
  204. package/dist/src/view/client/assets/swimlanesDiagram-VR7AAH4N-B2TcAwis.js +8 -0
  205. package/dist/src/view/client/assets/three.module-PDSP0dbZ.js +4108 -0
  206. package/dist/src/view/client/assets/timeline-definition-24CTP7MA-ChXLOuBL.js +120 -0
  207. package/dist/src/view/client/assets/vennDiagram-4TSXK5OY-D9_h25-Y.js +34 -0
  208. package/dist/src/view/client/assets/wardleyDiagram-VM6X3IG4-CsQJGGW0.js +78 -0
  209. package/dist/src/view/client/assets/xychartDiagram-S5SC5T6Z-DGMuPMlm.js +7 -0
  210. package/dist/src/view/client/index.html +2 -2
  211. package/dist/src/view/client-shell.d.ts +2 -0
  212. package/dist/src/view/client-shell.js +5 -0
  213. package/dist/src/view/diagnostics.d.ts +3 -2
  214. package/dist/src/view/diagnostics.js +49 -58
  215. package/dist/src/view/document-edit.d.ts +8 -0
  216. package/dist/src/view/document-edit.js +25 -0
  217. package/dist/src/view/document-route.d.ts +14 -0
  218. package/dist/src/view/document-route.js +126 -0
  219. package/dist/src/view/document-tree.d.ts +18 -0
  220. package/dist/src/view/document-tree.js +139 -0
  221. package/dist/src/view/external-document-tree.d.ts +3 -0
  222. package/dist/src/view/external-document-tree.js +674 -0
  223. package/dist/src/view/git-diff.js +205 -1
  224. package/dist/src/view/git.js +1 -1
  225. package/dist/src/view/graph.d.ts +7 -0
  226. package/dist/src/view/graph.js +267 -0
  227. package/dist/src/view/highlight.d.ts +10 -2
  228. package/dist/src/view/highlight.js +4547 -1363
  229. package/dist/src/view/markdown.d.ts +8 -3
  230. package/dist/src/view/markdown.js +308 -41
  231. package/dist/src/view/preindexed-search.d.ts +15 -0
  232. package/dist/src/view/preindexed-search.js +25 -0
  233. package/dist/src/view/protocol.d.ts +95 -6
  234. package/dist/src/view/protocol.js +1 -1
  235. package/dist/src/view/publication.d.ts +2 -0
  236. package/dist/src/view/publication.js +78 -0
  237. package/dist/src/view/references.d.ts +13 -26
  238. package/dist/src/view/references.js +150 -119
  239. package/dist/src/view/repository.d.ts +18 -5
  240. package/dist/src/view/repository.js +269 -27
  241. package/dist/src/view/request-security.d.ts +5 -0
  242. package/dist/src/view/request-security.js +46 -0
  243. package/dist/src/view/search-result.d.ts +4 -0
  244. package/dist/src/view/search-result.js +25 -0
  245. package/dist/src/view/search.d.ts +7 -2
  246. package/dist/src/view/search.js +23 -33
  247. package/dist/src/view/server-build.d.ts +21 -0
  248. package/dist/src/view/server-build.js +145 -0
  249. package/dist/src/view/server-deployment.d.ts +31 -0
  250. package/dist/src/view/server-deployment.js +94 -0
  251. package/dist/src/view/server-index-worker.d.ts +6 -0
  252. package/dist/src/view/server-index-worker.js +14 -0
  253. package/dist/src/view/server.d.ts +14 -2
  254. package/dist/src/view/server.js +254 -51
  255. package/dist/src/view/source-target.d.ts +10 -0
  256. package/dist/src/view/source-target.js +43 -0
  257. package/dist/src/view/static-build.d.ts +32 -0
  258. package/dist/src/view/static-build.js +741 -0
  259. package/dist/src/view/static-protocol.d.ts +47 -0
  260. package/dist/src/view/static-protocol.js +15 -0
  261. package/dist/src/view/store.d.ts +26 -3
  262. package/dist/src/view/store.js +325 -44
  263. package/dist/src/view/table-of-contents.d.ts +9 -0
  264. package/dist/src/view/table-of-contents.js +83 -0
  265. package/dist/src/view/vercel-build.d.ts +24 -0
  266. package/dist/src/view/vercel-build.js +140 -0
  267. package/dist/src/view/vercel-server-build.d.ts +10 -0
  268. package/dist/src/view/vercel-server-build.js +61 -0
  269. package/dist/vendor/lat.md-server/cli.d.ts +2 -0
  270. package/dist/vendor/lat.md-server/cli.js +12 -0
  271. package/dist/vendor/lat.md-server/index.d.ts +38 -0
  272. package/dist/vendor/lat.md-server/index.js +128 -0
  273. package/package.json +72 -25
  274. package/plugins/lat-md/README.md +61 -0
  275. package/plugins/lat-md/hooks.json +38 -0
  276. package/plugins/lat-md/plugin.json +9 -0
  277. package/plugins/lat-md/rules/AGENTS.md +118 -0
  278. package/plugins/lat-md/skills/lat-md/SKILL.md +178 -0
  279. package/plugins/lat-md/skills/lat-md-conventions/SKILL.md +182 -0
  280. package/templates/AGENTS.md +19 -18
  281. package/templates/cursor-rules.md +14 -5
  282. package/templates/fork/conventions.md +173 -0
  283. package/templates/opencode-plugin.ts +9 -9
  284. package/templates/pi-extension.ts +11 -11
  285. package/templates/skill/SKILL.md +28 -17
  286. package/dist/src/cli/check-frontmatter.d.ts +0 -12
  287. package/dist/src/cli/check-frontmatter.js +0 -44
  288. package/dist/src/cli/check-mode.d.ts +0 -6
  289. package/dist/src/cli/check-mode.js +0 -303
  290. package/dist/src/cli/check-status.d.ts +0 -74
  291. package/dist/src/cli/check-status.js +0 -217
  292. package/dist/src/cli/check.d.ts +0 -45
  293. package/dist/src/cli/check.js +0 -777
  294. package/dist/src/cli/context.d.ts +0 -11
  295. package/dist/src/cli/context.js +0 -58
  296. package/dist/src/cli/expand.d.ts +0 -8
  297. package/dist/src/cli/expand.js +0 -94
  298. package/dist/src/cli/gen-index.d.ts +0 -45
  299. package/dist/src/cli/gen-index.js +0 -235
  300. package/dist/src/cli/link-scheme.d.ts +0 -54
  301. package/dist/src/cli/link-scheme.js +0 -101
  302. package/dist/src/cli/locate.d.ts +0 -2
  303. package/dist/src/cli/locate.js +0 -17
  304. package/dist/src/cli/refs.d.ts +0 -22
  305. package/dist/src/cli/refs.js +0 -229
  306. package/dist/src/cli/section.d.ts +0 -43
  307. package/dist/src/cli/section.js +0 -252
  308. package/dist/src/cli/select-menu.d.ts +0 -13
  309. package/dist/src/cli/select-menu.js +0 -100
  310. package/dist/src/code-refs.d.ts +0 -17
  311. package/dist/src/code-refs.js +0 -277
  312. package/dist/src/config.d.ts +0 -29
  313. package/dist/src/config.js +0 -83
  314. package/dist/src/context.d.ts +0 -23
  315. package/dist/src/context.js +0 -11
  316. package/dist/src/extensions/wiki-link/from-markdown.d.ts +0 -5
  317. package/dist/src/extensions/wiki-link/from-markdown.js +0 -34
  318. package/dist/src/extensions/wiki-link/index.d.ts +0 -4
  319. package/dist/src/extensions/wiki-link/index.js +0 -3
  320. package/dist/src/extensions/wiki-link/syntax.d.ts +0 -14
  321. package/dist/src/extensions/wiki-link/syntax.js +0 -121
  322. package/dist/src/extensions/wiki-link/to-markdown.d.ts +0 -5
  323. package/dist/src/extensions/wiki-link/to-markdown.js +0 -28
  324. package/dist/src/extensions/wiki-link/types.d.ts +0 -34
  325. package/dist/src/format.d.ts +0 -8
  326. package/dist/src/format.js +0 -43
  327. package/dist/src/init-version.d.ts +0 -10
  328. package/dist/src/init-version.js +0 -49
  329. package/dist/src/lattice.d.ts +0 -108
  330. package/dist/src/lattice.js +0 -816
  331. package/dist/src/parser.d.ts +0 -3
  332. package/dist/src/parser.js +0 -18
  333. package/dist/src/source-parser.d.ts +0 -27
  334. package/dist/src/source-parser.js +0 -916
  335. package/dist/src/untrusted.d.ts +0 -24
  336. package/dist/src/untrusted.js +0 -97
  337. package/dist/src/view/client/assets/index-B0n0u03y.css +0 -1
  338. package/dist/src/view/client/assets/index-xm2_px4q.js +0 -23
  339. package/dist/src/walk.d.ts +0 -18
  340. package/dist/src/walk.js +0 -27
  341. /package/dist/src/{extensions/wiki-link/types.js → fork/upstream-drift-cli.d.ts} +0 -0
@@ -0,0 +1,118 @@
1
+ # Before starting work
2
+
3
+ - Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code.
4
+ - Run `lat expand` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context.
5
+
6
+ # Post-task checklist (REQUIRED — do not skip)
7
+
8
+ After EVERY task, before responding to the user:
9
+
10
+ - [ ] Update `lat.md/` if you added or changed meaningful functionality, architecture, tests, behavior, or planned work. Keep it a focused snapshot of current/planned state, not a journal/changelog.
11
+ - [ ] Run `lat check` — all validations must pass
12
+ - [ ] Do not skip these steps. Do not consider your task done until both are complete.
13
+
14
+ ---
15
+
16
+ # What is lat.md?
17
+
18
+ This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. Do not treat `lat.md/` as a journal or changelog; it should be a focused snapshot of current or planned state, and should not grow just to note insignificant details.
19
+
20
+ # Commands
21
+
22
+ ```bash
23
+ lat locate "Section Name" # find a section by name (exact, fuzzy)
24
+ lat refs "file#Section" # find what references a section
25
+ lat search "natural language" # semantic search across all sections
26
+ lat expand "user prompt text" # expand [[refs]] to resolved locations
27
+ lat check # run full graph and documentation validation
28
+ ```
29
+
30
+ Run `lat --help` when in doubt about available commands or options.
31
+
32
+ If `lat search` fails because no API key is configured, explain to the user that semantic search requires a key provided via `LAT_LLM_KEY` (direct value), `LAT_LLM_KEY_FILE` (path to key file), or `LAT_LLM_KEY_HELPER` (command that prints the key). Supported key prefixes: `sk-...` (OpenAI) or `vck_...` (Vercel). If the user doesn't want to set it up, use `lat locate` for direct lookups instead.
33
+
34
+ # Syntax primer
35
+
36
+ - **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`).
37
+ - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`.
38
+ - **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist.
39
+ - **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts
40
+
41
+ # Test specs
42
+
43
+ Key tests can be described as sections in `lat.md/` files (e.g. `tests.md`). Add frontmatter to require that every leaf section is referenced by a `// @lat:` or `# @lat:` comment in test code:
44
+
45
+ ```markdown
46
+ ---
47
+ lat:
48
+ require-code-mention: true
49
+ ---
50
+ # Tests
51
+
52
+ Authentication and authorization test specifications.
53
+
54
+ ## User login
55
+
56
+ Verify credential validation and error handling for the login endpoint.
57
+
58
+ ### Rejects expired tokens
59
+ Tokens past their expiry timestamp are rejected with 401, even if otherwise valid.
60
+
61
+ ### Handles missing password
62
+ Login request without a password field returns 400 with a descriptive error.
63
+ ```
64
+
65
+ Every section MUST have a description — at least one sentence explaining what the test verifies and why. Empty sections with just a heading are not acceptable. (This is a specific case of the general leading paragraph rule below.)
66
+
67
+ Each test in code should reference its spec with exactly one comment placed next to the relevant test — not at the top of the file:
68
+
69
+ ```python
70
+ # @lat: [[tests#User login#Rejects expired tokens]]
71
+ def test_rejects_expired_tokens():
72
+ ...
73
+
74
+ # @lat: [[tests#User login#Handles missing password]]
75
+ def test_handles_missing_password():
76
+ ...
77
+ ```
78
+
79
+ Do not duplicate refs. One `@lat:` comment per spec section, placed at the test that covers it. `lat check` will flag any spec section not covered by a code reference, and any code reference pointing to a nonexistent section.
80
+
81
+ # Section structure
82
+
83
+ Every section in `lat.md/` **must** have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content. The first paragraph must be ≤250 characters (excluding `[[wiki link]]` content). This paragraph serves as the section's overview and is used in search results, command output, and RAG context — keeping it concise guarantees the section's essence is always captured.
84
+
85
+ ```markdown
86
+ # Good Section
87
+
88
+ Brief overview of what this section documents and why it matters.
89
+
90
+ More detail can go in subsequent paragraphs, code blocks, or lists.
91
+
92
+ ## Child heading
93
+
94
+ Details about this child topic.
95
+ ```
96
+
97
+ ```markdown
98
+ # Bad Section
99
+
100
+ ## Child heading
101
+
102
+ Details about this child topic.
103
+ ```
104
+
105
+ The second example is invalid because `Bad Section` has no leading paragraph. `lat check` validates this rule and reports errors for missing or overly long leading paragraphs.
106
+
107
+ # Diátaxis modes
108
+
109
+ Documents under `lat.md/tutorials/`, `lat.md/how-to/`, `lat.md/reference/`, and `lat.md/explanation/` are checked against their Diátaxis mode. Declare it explicitly with nested frontmatter, or rely on the directory:
110
+
111
+ ```markdown
112
+ ---
113
+ lat:
114
+ mode: reference
115
+ ---
116
+ ```
117
+
118
+ If a document is in one of the four mode directories, the declared mode must match that directory. Each mode enforces one shape rule: tutorials need an ordered list of steps and a stated outcome; how-to guides need an ordered list of steps; reference docs must not contain narrative prose (no second paragraph under a heading); explanations must not give imperative commands. Run `lat check mode` to validate.
@@ -0,0 +1,178 @@
1
+ ---
2
+ name: lat-md
3
+ description: >-
4
+ Writing and maintaining lat.md documentation files — structured markdown that
5
+ describes a project's architecture, design decisions, and test specs. Use when
6
+ creating, editing, or reviewing files in the lat.md/ directory.
7
+ ---
8
+
9
+ # lat.md Authoring Guide
10
+
11
+ This skill covers the syntax, structure rules, and conventions for writing `lat.md/` files. Load it whenever you need to create or edit sections in the `lat.md/` directory.
12
+
13
+ Project-specific lat documentation belongs in `lat.md/`. Do not modify this generated skill or a generated `AGENTS.md` to record project guidance: both are owned by lat tooling and may be replaced by a later `lat init`.
14
+
15
+ ## What belongs in lat.md
16
+
17
+ `lat.md/` files describe **what** the project does and **why** — domain concepts, key design decisions, business logic, and test specifications. They do NOT duplicate source code. Think of each section as an anchor that source code references back to.
18
+
19
+ Treat `lat.md/` as a focused snapshot of the current state of affairs or planned features. Do not use it as a journal or changelog, and do not grow it just to record insignificant implementation details.
20
+
21
+ Good candidates for sections:
22
+ - Architecture decisions and their rationale
23
+ - Domain concepts and business rules
24
+ - API contracts and protocols
25
+ - Test specifications (what is tested and why)
26
+ - Non-obvious constraints or invariants
27
+
28
+ Bad candidates:
29
+ - Step-by-step code walkthroughs (the code itself is the walkthrough)
30
+ - Auto-generated API docs (use tools for that)
31
+ - Journal/changelog entries for each change
32
+ - Temporary notes or TODOs
33
+ - Insignificant implementation details that do not change the current-state model
34
+
35
+ ## Section structure
36
+
37
+ Every section **must** have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content.
38
+
39
+ The first paragraph must be ≤250 characters (excluding `[[wiki link]]` content). This paragraph is the section's identity — it appears in search results, command output, and RAG context.
40
+
41
+ ```markdown
42
+ # Good Section
43
+
44
+ Brief overview of what this section documents and why it matters.
45
+
46
+ More detail can go in subsequent paragraphs, code blocks, or lists.
47
+
48
+ ## Child heading
49
+
50
+ Details about this child topic.
51
+ ```
52
+
53
+ ```markdown
54
+ # Bad Section
55
+
56
+ ## Child heading
57
+
58
+ This is invalid — "Bad Section" has no leading paragraph.
59
+ ```
60
+
61
+ `lat check` enforces this rule.
62
+
63
+ ## Section IDs
64
+
65
+ Sections are addressed by file path and heading chain:
66
+
67
+ - **Full form**: `lat.md/path/to/file#Heading#SubHeading`
68
+ - **Short form**: `file#Heading#SubHeading` (when the file stem is unique)
69
+
70
+ Examples: `lat.md/tests/search#RAG Replay Tests`, `cli#init`, `parser#Wiki Links`.
71
+
72
+ ## Wiki links
73
+
74
+ Cross-reference other sections or source code with `[[target]]` or `[[target|alias]]`.
75
+
76
+ ### Section links
77
+
78
+ ```markdown
79
+ See [[cli#init]] for setup details.
80
+ The parser validates [[parser#Wiki Links|wiki link syntax]].
81
+ ```
82
+
83
+ ### Source code links
84
+
85
+ Reference functions, classes, constants, and methods in source files:
86
+
87
+ ```markdown
88
+ [[src/config.ts#getConfigDir]] — function
89
+ [[src/server.ts#App#listen]] — class method
90
+ [[lib/utils.py#parse_args]] — Python function
91
+ [[src/lib.rs#Greeter#greet]] — Rust impl method
92
+ [[src/app.go#Greeter#Greet]] — Go method
93
+ [[src/app.h#Greeter]] — C struct
94
+ ```
95
+
96
+ `lat check` validates that all targets exist.
97
+
98
+ ## Code refs
99
+
100
+ Tie source code back to `lat.md/` sections with `@lat:` comments:
101
+
102
+ ```typescript
103
+ // @lat: [[cli#init]]
104
+ export function init() { ... }
105
+ ```
106
+
107
+ ```python
108
+ # @lat: [[cli#init]]
109
+ def init():
110
+ ...
111
+ ```
112
+
113
+ Supported comment styles: `//` (JS/TS/Rust/Go/C) and `#` (Python).
114
+
115
+ Place one `@lat:` comment per section, at the relevant code — not at the top of the file.
116
+
117
+ ## Test specs
118
+
119
+ Describe tests as sections in `lat.md/` files. Add frontmatter to require that every leaf section has a matching `@lat:` comment in test code:
120
+
121
+ ```markdown
122
+ ---
123
+ lat:
124
+ require-code-mention: true
125
+ ---
126
+ # Tests
127
+
128
+ Authentication test specifications.
129
+
130
+ ## User login
131
+
132
+ Verify credential validation and error handling.
133
+
134
+ ### Rejects expired tokens
135
+
136
+ Tokens past their expiry timestamp are rejected with 401, even if otherwise valid.
137
+
138
+ ### Handles missing password
139
+
140
+ Login request without a password field returns 400 with a descriptive error.
141
+ ```
142
+
143
+ Each test references its spec:
144
+
145
+ ```python
146
+ # @lat: [[tests#User login#Rejects expired tokens]]
147
+ def test_rejects_expired_tokens():
148
+ ...
149
+ ```
150
+
151
+ Rules:
152
+ - Every leaf section under `require-code-mention: true` must be referenced by exactly one `@lat:` comment
153
+ - Every section MUST have a description — at least one sentence explaining what the test verifies and why
154
+ - `lat check` flags unreferenced specs and dangling code refs
155
+
156
+ ## Frontmatter
157
+
158
+ Optional YAML frontmatter at the top of `lat.md/` files:
159
+
160
+ ```yaml
161
+ ---
162
+ lat:
163
+ require-code-mention: true
164
+ ---
165
+ ```
166
+
167
+ Currently the only supported field is `require-code-mention` for test spec enforcement.
168
+
169
+ ## Validation
170
+
171
+ Always run `lat check` after editing `lat.md/` files. It validates:
172
+ - All wiki links point to existing sections or source code symbols
173
+ - All relative markdown links point to existing files
174
+ - Full and collapsed reference-style links have definitions
175
+ - All `@lat:` code refs point to existing sections
176
+ - Every section has a leading paragraph (≤250 chars)
177
+ - All `require-code-mention` leaf sections are referenced in code
178
+ - Every `lat.md/` directory has an accurate index
@@ -0,0 +1,182 @@
1
+ ---
2
+ name: lat-md-conventions
3
+ description: >-
4
+ Rules lat check enforces in this project: Diátaxis mode placement for every
5
+ lat.md/ document, mandatory @lat: code refs starting at the application
6
+ entrypoint, and test specs wired to their tests. Load alongside lat-md
7
+ whenever creating or editing files under lat.md/.
8
+ ---
9
+
10
+ # lat.md conventions this project enforces
11
+
12
+ `lat check` fails on the first three rules below. The last two it cannot see,
13
+ and they matter as much. None of the five are style preferences. This block is
14
+ generated and a later `lat init` replaces it — record project guidance in
15
+ `lat.md/`, never here.
16
+
17
+ ## Every document goes in a Diátaxis mode directory
18
+
19
+ A document belongs in exactly one of four subdirectories, and `lat check mode`
20
+ enforces one shape rule for each:
21
+
22
+ | Directory | Holds | Shape rule |
23
+ | --- | --- | --- |
24
+ | `lat.md/tutorials/` | a guided first pass for someone new | an ordered list of steps, and a stated outcome |
25
+ | `lat.md/how-to/` | a recipe for a task that recurs | an ordered list of steps |
26
+ | `lat.md/reference/` | lookup facts: fields, states, limits, names | no narrative prose — no second paragraph under a heading |
27
+ | `lat.md/explanation/` | why the design is what it is | no imperative commands |
28
+
29
+ A document is classified either by the directory it sits in, or by declaring
30
+ the mode in its own frontmatter:
31
+
32
+ ```markdown
33
+ ---
34
+ lat:
35
+ mode: explanation
36
+ ---
37
+ ```
38
+
39
+ Both are enforced identically — `lat check mode` applies the shape rule to any
40
+ document that declares a mode, whether or not the root index carries
41
+ `require-mode: true`. That flag adds a separate rule: a document declaring *no*
42
+ mode, in no mode directory, becomes an error too.
43
+
44
+ Prefer the directory in a tree you own outright. Prefer the declaration when
45
+ the file cannot move — a document another project maintains, or a tree other
46
+ agents are writing to while you work. Moving costs every reference to the file;
47
+ declaring costs nothing at read time, because frontmatter sits above the first
48
+ heading and outside every section.
49
+
50
+ **A document that fails its mode is usually two documents.** A file that lists
51
+ the states *and* argues for the design is mixed: the lookup half goes in
52
+ `reference/`, the reasoning half in `explanation/`, and each links the other.
53
+ Filing it under one mode and softening the prose until the check passes is the
54
+ wrong repair.
55
+
56
+ Classifying a mixed document does not make it pass. Narrative prose put under
57
+ `reference/` fails on contact, because a reference may not carry a second
58
+ paragraph under a heading — so a move is not a way to adopt the rule cheaply.
59
+ Split first, then place. And `explanation` is not the safe default: it bans
60
+ only imperative commands, so nearly any prose passes it. Declaring it is a
61
+ claim about the document, not somewhere to put whatever is left over. A
62
+ document you cannot honestly classify is better left undeclared than
63
+ mislabelled.
64
+
65
+ Classify before writing, not after. If a `diataxis` skill is available, use it.
66
+
67
+ ## Every project has at least one `@lat:` code ref
68
+
69
+ `lat check` fails a tree that has documents and no `@lat:` ref anywhere in the
70
+ codebase. A graph nothing points at cannot be reached from the code, which is
71
+ the only reason it exists.
72
+
73
+ Start at the application entrypoint — `config/application.rb`, `src/index.ts`,
74
+ `main.go`, `manage.py`, whatever a new reader opens first — and point it at the
75
+ root index:
76
+
77
+ ```ruby
78
+ # @lat: [[lat#Acme]]
79
+ module Acme
80
+ ```
81
+
82
+ Then one ref per section that source code actually implements, placed at that
83
+ code. Never in a block at the top of a file.
84
+
85
+ ### An `@lat:` pointer is exempt from this project's comment conventions
86
+
87
+ A repository that minimises, budgets, or forbids comments is right about prose
88
+ comments and does not reach this one. An `@lat:` line is a machine directive,
89
+ in the same class as `# frozen_string_literal:` or `// eslint-disable`. It
90
+ carries no rationale, asserts nothing a reader could dispute, and cannot rot
91
+ quietly — `lat check` fails the moment its target moves or disappears.
92
+
93
+ Add the ref. Then, if the reasoning that would have been a comment is worth
94
+ keeping, put it in a `lat.md/explanation/` section and let the pointer reach it.
95
+
96
+ ### The marker is a comment syntax, not a language allowlist
97
+
98
+ `//` for C-family languages; `#` for Ruby, Python, shell, Elixir, YAML, Make,
99
+ and everything else that comments with `#`. The scan is textual and walks every
100
+ non-markdown file in the project, so every language works.
101
+
102
+ Any list of example languages you find is a list of examples. Never conclude a
103
+ language is unsupported because it is absent from one. `lat check` prints what
104
+ it scanned:
105
+
106
+ ```
107
+ Scanned 41 .md, 622 .rb, 118 .tsx in 1.2s
108
+ ```
109
+
110
+ Read that line rather than guessing, and if you are still unsure, add one ref
111
+ and run the check. It costs one command.
112
+
113
+ (The tree-sitter grammars limit only `[[src/file.ts#symbol]]` wiki links, which
114
+ resolve a symbol inside source. `@lat:` refs point the other way and have no
115
+ such limit.)
116
+
117
+ ## Test specs are wired to their tests
118
+
119
+ A document describing tests declares it in frontmatter:
120
+
121
+ ```markdown
122
+ ---
123
+ lat:
124
+ require-code-mention: true
125
+ ---
126
+ ```
127
+
128
+ Every leaf section then needs exactly one `@lat:` comment at the test that
129
+ covers it, and every section needs at least one sentence saying what it
130
+ verifies and why. `lat check` reports any spec section no test claims, and any
131
+ ref pointing at no section.
132
+
133
+ ## One specialty per document
134
+
135
+ A document is **small**, **discrete**, and does **not conflict** with any
136
+ other. Those are three demands on the same thing: a reader must be able to
137
+ find the one place a fact is written down, and trust it.
138
+
139
+ **Small — a document covers one specialty.** Not one topic area; one
140
+ specialty. When a document covers two, it is two documents. Past roughly forty
141
+ sections it has almost certainly become several, and an agent then loads all of
142
+ it to reach one part.
143
+
144
+ **Discrete — each document covers its own specialty.** Before writing a new
145
+ document, search for the specialty first:
146
+
147
+ ```
148
+ lat search "the thing you are about to document"
149
+ ```
150
+
151
+ An overlap has two honest repairs, and picking neither is what produces the
152
+ third copy. Either the two are one document and belong merged, or the part they
153
+ share is its own document that both link. Deciding they are "mostly different"
154
+ and writing anyway is how the set rots.
155
+
156
+ **Does not conflict — two documents never say different things about the same
157
+ specialty.** Never restate a fact another document owns. Link to it with
158
+ `[[section]]`. A restatement is a second copy, a second copy drifts, and drift
159
+ is how document B ends up contradicting document A while both look maintained.
160
+
161
+ The mode rule above is the sharpest available test of "one specialty": a
162
+ document that fails its mode is usually two documents. Split it. Do not soften
163
+ the prose until the check passes.
164
+
165
+ ## Read sections, not files
166
+
167
+ `lat search` prints a section id and the exact lines that section occupies.
168
+ Resolve it with `lat section`, or read only that line range. Opening the whole
169
+ file is the reflex to break, and it is the expensive one:
170
+
171
+ ```
172
+ lat search "how does backend selection work"
173
+ lat section "cli#CLI#search#Backend selection"
174
+ ```
175
+
176
+ not a `read` of `lat.md/cli.md`. Measured on lat.md's own graph, the section
177
+ costs 4 KB against the file's 44 KB — eleven times the context for the same
178
+ answer, and the answer arrives buried in forty-one sections that were not
179
+ asked about.
180
+
181
+ Use `lat expand` on a prompt carrying `[[refs]]` for the same reason: it
182
+ resolves each ref to a location and a preview rather than to a file.
@@ -1,5 +1,7 @@
1
1
  # Before starting work
2
2
 
3
+ Use Lat's knowledge graph to ground each task before changing code.
4
+
3
5
  - Run `lat search` to find sections relevant to your task. Read them to understand the design intent before writing code.
4
6
  - Run `lat expand` on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context.
5
7
 
@@ -7,7 +9,7 @@
7
9
 
8
10
  After EVERY task, before responding to the user:
9
11
 
10
- - [ ] Update `lat.md/` if you added or changed meaningful functionality, architecture, tests, behavior, or planned work. Keep it a focused snapshot of current/planned state, not a journal/changelog.
12
+ - [ ] Update `lat.md/` if you added or changed meaningful implemented functionality, architecture, tests, or behavior. Keep it a focused snapshot of the current implemented state, not a journal/changelog. Plans may be drafted in `lat.md/` alongside implementation, with the intent that by commit time they describe what was implemented. Otherwise, keep proposals, hypothetical designs, and future work outside `lat.md/` unless the user explicitly requests them there.
11
13
  - [ ] Run `lat check` — all validations must pass
12
14
  - [ ] Do not skip these steps. Do not consider your task done until both are complete.
13
15
 
@@ -15,15 +17,22 @@ After EVERY task, before responding to the user:
15
17
 
16
18
  # What is lat.md?
17
19
 
18
- This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. Do not treat `lat.md/` as a journal or changelog; it should be a focused snapshot of current or planned state, and should not grow just to note insignificant details.
20
+ Lat.md is the project's structured knowledge graph for architecture, design decisions, behavior, and tests.
21
+
22
+ The graph lives in `lat.md/` as cross-linked Markdown describing **what** the project does and **why**. Use it to ground work in actual architecture, and keep it a focused snapshot of the current implemented state rather than a journal or changelog.
23
+
24
+ Project-specific lat documentation belongs in `lat.md/`. Do not modify this generated instruction file or a generated `lat-md` `SKILL.md` to record project guidance: both are owned by lat tooling and may be replaced by a later `lat init`.
19
25
 
20
26
  # Commands
21
27
 
28
+ Use these commands to navigate, expand, and validate the project knowledge graph.
29
+
22
30
  ```bash
23
31
  lat locate "Section Name" # find a section by name (exact, fuzzy)
24
32
  lat refs "file#Section" # find what references a section
25
33
  lat search "natural language" # semantic search across all sections
26
34
  lat expand "user prompt text" # expand [[refs]] to resolved locations
35
+ lat external show <handle> # inspect a pinned external source before cloning it
27
36
  lat check # run full graph and documentation validation
28
37
  ```
29
38
 
@@ -33,10 +42,13 @@ If `lat search` fails because no API key is configured, explain to the user that
33
42
 
34
43
  # Syntax primer
35
44
 
45
+ Lat uses stable section ids, wiki links, source links, and code references to connect documentation with implementation.
46
+
36
47
  - **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`).
37
- - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`.
38
- - **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist.
39
- - **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts
48
+ - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference repository paths or source code: `[[schema.sql]]`, `[[src/components]]`, `[[src/foo.ts#myFunction]]`.
49
+ - **Repository path links**: Wiki links without a `#` fragment may target any existing file or directory inside the project. Unsupported formats validate but cannot be opened by Lat; fragments require a `lat.md/` section or supported source file.
50
+ - **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in supported source files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). When prose names an implementation symbol or a behavior governed by one, link the symbol instead of using a bare code span or copying its literal value. Prefer `[[src/config.ts#DEFAULT_TIMEOUT]]` (or an aliased form) over a bare identifier or copied value. `lat check` validates these exist.
51
+ - **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C/PHP) or `# @lat: [[section-id]]` (Python/PHP) — ties source code to concepts
40
52
 
41
53
  # Test specs
42
54
 
@@ -80,6 +92,8 @@ Do not duplicate refs. One `@lat:` comment per spec section, placed at the test
80
92
 
81
93
  # Section structure
82
94
 
95
+ Concise opening paragraphs give every section a stable overview for validation and discovery.
96
+
83
97
  Every section in `lat.md/` **must** have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content. The first paragraph must be ≤250 characters (excluding `[[wiki link]]` content). This paragraph serves as the section's overview and is used in search results, command output, and RAG context — keeping it concise guarantees the section's essence is always captured.
84
98
 
85
99
  ```markdown
@@ -103,16 +117,3 @@ Details about this child topic.
103
117
  ```
104
118
 
105
119
  The second example is invalid because `Bad Section` has no leading paragraph. `lat check` validates this rule and reports errors for missing or overly long leading paragraphs.
106
-
107
- # Diátaxis modes
108
-
109
- Documents under `lat.md/tutorials/`, `lat.md/how-to/`, `lat.md/reference/`, and `lat.md/explanation/` are checked against their Diátaxis mode. Declare it explicitly with nested frontmatter, or rely on the directory:
110
-
111
- ```markdown
112
- ---
113
- lat:
114
- mode: reference
115
- ---
116
- ```
117
-
118
- If a document is in one of the four mode directories, the declared mode must match that directory. Each mode enforces one shape rule: tutorials need an ordered list of steps and a stated outcome; how-to guides need an ordered list of steps; reference docs must not contain narrative prose (no second paragraph under a heading); explanations must not give imperative commands. Run `lat check mode` to validate.
@@ -1,5 +1,7 @@
1
1
  # Before starting work
2
2
 
3
+ Use Lat's knowledge graph to ground each task before changing code.
4
+
3
5
  - Use the `lat_search` tool to find sections relevant to your task. Read them to understand the design intent before writing code.
4
6
  - Use the `lat_expand` tool on user prompts to expand any `[[refs]]` — this resolves section names to file locations and provides context.
5
7
 
@@ -7,7 +9,7 @@
7
9
 
8
10
  After EVERY task, before responding to the user:
9
11
 
10
- - [ ] Update `lat.md/` if you added or changed meaningful functionality, architecture, tests, behavior, or planned work. Keep it a focused snapshot of current/planned state, not a journal/changelog.
12
+ - [ ] Update `lat.md/` if you added or changed meaningful implemented functionality, architecture, tests, or behavior. Keep it a focused snapshot of the current implemented state, not a journal/changelog. Plans may be drafted in `lat.md/` alongside implementation, with the intent that by commit time they describe what was implemented. Otherwise, keep proposals, hypothetical designs, and future work outside `lat.md/` unless the user explicitly requests them there.
11
13
  - [ ] Use the `lat_check` tool — all validations must pass
12
14
  - [ ] Do not skip these steps. Do not consider your task done until both are complete.
13
15
 
@@ -15,10 +17,14 @@ After EVERY task, before responding to the user:
15
17
 
16
18
  # What is lat.md?
17
19
 
18
- This project uses [lat.md](https://www.npmjs.com/package/lat.md) to maintain a structured knowledge graph of its architecture, design decisions, and test specs in the `lat.md/` directory. It is a set of cross-linked markdown files that describe **what** this project does and **why** — the domain concepts, key design decisions, business logic, and test specifications. Use it to ground your work in the actual architecture rather than guessing. Do not treat `lat.md/` as a journal or changelog; it should be a focused snapshot of current or planned state, and should not grow just to note insignificant details.
20
+ Lat.md is the project's structured knowledge graph for architecture, design decisions, behavior, and tests.
21
+
22
+ The graph lives in `lat.md/` as cross-linked Markdown describing **what** the project does and **why**. Use it to ground work in actual architecture, and keep it a focused snapshot of the current implemented state rather than a journal or changelog.
19
23
 
20
24
  # Tools
21
25
 
26
+ Use the Lat MCP tools to navigate, expand, and validate the project knowledge graph.
27
+
22
28
  You have access to the following MCP tools from the `lat` server:
23
29
 
24
30
  - **lat_locate** — find a section by name (exact, fuzzy)
@@ -31,10 +37,13 @@ If `lat_search` fails because `LAT_LLM_KEY` is not set, explain to the user that
31
37
 
32
38
  # Syntax primer
33
39
 
40
+ Lat uses stable section ids, wiki links, source links, and code references to connect documentation with implementation.
41
+
34
42
  - **Section ids**: `lat.md/path/to/file#Heading#SubHeading` — full form uses project-root-relative path (e.g. `lat.md/tests/search#RAG Replay Tests`). Short form uses bare file name when unique (e.g. `search#RAG Replay Tests`, `cli#search#Indexing`).
35
- - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference source code: `[[src/foo.ts#myFunction]]`.
36
- - **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in TypeScript/JavaScript/Python/Rust/Go/C files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). `lat check` validates these exist.
37
- - **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C) or `# @lat: [[section-id]]` (Python) — ties source code to concepts
43
+ - **Wiki links**: `[[target]]` or `[[target|alias]]` — cross-references between sections. Can also reference repository paths or source code: `[[schema.sql]]`, `[[src/components]]`, `[[src/foo.ts#myFunction]]`.
44
+ - **Repository path links**: Wiki links without a `#` fragment may target any existing file or directory inside the project. Unsupported formats validate but cannot be opened by Lat; fragments require a `lat.md/` section or supported source file.
45
+ - **Source code links**: Wiki links in `lat.md/` files can reference functions, classes, constants, and methods in supported source files. Use the full path: `[[src/config.ts#getConfigDir]]`, `[[src/server.ts#App#listen]]` (class method), `[[lib/utils.py#parse_args]]`, `[[src/lib.rs#Greeter#greet]]` (Rust impl method), `[[src/app.go#Greeter#Greet]]` (Go method), `[[src/app.h#Greeter]]` (C struct). When prose names an implementation symbol or a behavior governed by one, link the symbol instead of using a bare code span or copying its literal value. Prefer `[[src/config.ts#DEFAULT_TIMEOUT]]` (or an aliased form) over a bare identifier or copied value. `lat check` validates these exist.
46
+ - **Code refs**: `// @lat: [[section-id]]` (JS/TS/Rust/Go/C/PHP) or `# @lat: [[section-id]]` (Python/PHP) — ties source code to concepts
38
47
 
39
48
  # Test specs
40
49