@rafiqui987/markode 0.0.0-stage → 0.2.7

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 (306) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +349 -2
  3. package/dist/cli.js +2304 -0
  4. package/dist/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  5. package/dist/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  6. package/dist/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  7. package/dist/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  8. package/dist/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  9. package/dist/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  10. package/dist/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  11. package/dist/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  12. package/dist/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  13. package/dist/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  14. package/dist/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  15. package/dist/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  16. package/dist/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  17. package/dist/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  18. package/dist/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  19. package/dist/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  20. package/dist/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  21. package/dist/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  22. package/dist/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  23. package/dist/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  24. package/dist/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  25. package/dist/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  26. package/dist/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  27. package/dist/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  28. package/dist/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  29. package/dist/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  30. package/dist/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  31. package/dist/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  32. package/dist/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  33. package/dist/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  34. package/dist/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  35. package/dist/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  36. package/dist/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  37. package/dist/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  38. package/dist/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  39. package/dist/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  40. package/dist/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  41. package/dist/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  42. package/dist/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  43. package/dist/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  44. package/dist/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  45. package/dist/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  46. package/dist/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  47. package/dist/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  48. package/dist/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  49. package/dist/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  50. package/dist/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  51. package/dist/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  52. package/dist/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  53. package/dist/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  54. package/dist/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  55. package/dist/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  56. package/dist/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  57. package/dist/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  58. package/dist/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  59. package/dist/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  60. package/dist/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  61. package/dist/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  62. package/dist/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  63. package/dist/web/assets/abnfDiagram-WEYOIA3C-DpbJC7Xp.js +1 -0
  64. package/dist/web/assets/apl-gfMMiTNf.js +1 -0
  65. package/dist/web/assets/arc-DC4i8MWg.js +1 -0
  66. package/dist/web/assets/architecture-WOLXFQ4H-eBViYpWx.js +1 -0
  67. package/dist/web/assets/architectureDiagram-ZHVYKT53-BUdoz7It.js +36 -0
  68. package/dist/web/assets/array-BifhSqXX.js +1 -0
  69. package/dist/web/assets/asciiarmor-C_eisQCp.js +1 -0
  70. package/dist/web/assets/asn1-DCl_8MCW.js +1 -0
  71. package/dist/web/assets/asterisk-BEn0Cwpx.js +1 -0
  72. package/dist/web/assets/blockDiagram-RJAE7QA3-g9DAd_oM.js +140 -0
  73. package/dist/web/assets/brainfuck-D5EjA2JK.js +1 -0
  74. package/dist/web/assets/c4Diagram-XDPPPE54-DRNtmahu.js +38 -0
  75. package/dist/web/assets/channel-B4Lj3Yy_.js +1 -0
  76. package/dist/web/assets/chunk-2E7WHVMD-pLVU_fk3.js +88 -0
  77. package/dist/web/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  78. package/dist/web/assets/chunk-4EMNKR2T-CILPvkQp.js +1 -0
  79. package/dist/web/assets/chunk-55XCU76K-D3MGCCrv.js +1 -0
  80. package/dist/web/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  81. package/dist/web/assets/chunk-7S6XSTFO-CN1GsbIT.js +2 -0
  82. package/dist/web/assets/chunk-AQDTSKZB-CUWKsFsd.js +72 -0
  83. package/dist/web/assets/chunk-DSNLSHJZ-CwfiRg01.js +129 -0
  84. package/dist/web/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  85. package/dist/web/assets/chunk-HAGFOTED-Do-8YoBu.js +62 -0
  86. package/dist/web/assets/chunk-HNE4Q36P-1-JjBgqP.js +1 -0
  87. package/dist/web/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  88. package/dist/web/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  89. package/dist/web/assets/chunk-NGNAAXSQ-C2Wy9Xmz.js +136 -0
  90. package/dist/web/assets/chunk-NQOKRVIF-BEHeLMtz.js +213 -0
  91. package/dist/web/assets/chunk-UHW7PFBP-CC1DKtp5.js +1 -0
  92. package/dist/web/assets/chunk-VQ5W62QI-CWY0eXsE.js +1 -0
  93. package/dist/web/assets/chunk-WQQL4CDK-BJl_ufDd.js +10 -0
  94. package/dist/web/assets/chunk-XXDRQBXY-DKVbKHOf.js +1 -0
  95. package/dist/web/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  96. package/dist/web/assets/chunk-YZO67HFG-dhkHuKWt.js +1 -0
  97. package/dist/web/assets/chunk-ZAUX2LTX-CA6m357j.js +1 -0
  98. package/dist/web/assets/chunk-ZCHMQSOR-DUBbqrP7.js +2 -0
  99. package/dist/web/assets/classDiagram-v2-4MYWR3UA-PXy4ulRK.js +217 -0
  100. package/dist/web/assets/clike-xvONpD0Z.js +1 -0
  101. package/dist/web/assets/clojure-BflJGmDX.js +1 -0
  102. package/dist/web/assets/cmake-84nbDH0I.js +1 -0
  103. package/dist/web/assets/cobol-DHLQUbN7.js +1 -0
  104. package/dist/web/assets/coffeescript-De_zI4J0.js +1 -0
  105. package/dist/web/assets/commonlisp-DgAKBe0r.js +1 -0
  106. package/dist/web/assets/cose-bilkent-JH36ORCC-BDYEjy3u.js +1 -0
  107. package/dist/web/assets/crystal-Bsdphhtm.js +1 -0
  108. package/dist/web/assets/css-CnaYoQib.js +1 -0
  109. package/dist/web/assets/cynefin-EF2NZ3EQ-BOMUQs4F.js +1 -0
  110. package/dist/web/assets/cynefinDiagram-WF24UDRP-cX0NpQ7L.js +62 -0
  111. package/dist/web/assets/cypher-p9eYesGn.js +1 -0
  112. package/dist/web/assets/cytoscape.esm-BegBNzOV.js +321 -0
  113. package/dist/web/assets/d-DWkQyNnU.js +1 -0
  114. package/dist/web/assets/dagre-NK4GIZVX-BAP6Gj-L.js +4 -0
  115. package/dist/web/assets/defaultLocale-BFoDCU3G.js +1 -0
  116. package/dist/web/assets/diagram-CBK3MWTC-B5AONjPA.js +24 -0
  117. package/dist/web/assets/diagram-I5XIIV2D-BkwhoH5d.js +24 -0
  118. package/dist/web/assets/diagram-ODIL2UCW-DUFps_5l.js +30 -0
  119. package/dist/web/assets/diagram-PFBEJUXE-Dj94WcA4.js +3 -0
  120. package/dist/web/assets/diagram-RJA3I4VV-BRhr049b.js +41 -0
  121. package/dist/web/assets/diagram-TYUNFSNR-C9EtKuKD.js +200 -0
  122. package/dist/web/assets/diff-ChtP43wD.js +1 -0
  123. package/dist/web/assets/dist-6_cnylgs.js +1 -0
  124. package/dist/web/assets/dist-B-4tAY5T.js +12 -0
  125. package/dist/web/assets/dist-B91b1nu8.js +1 -0
  126. package/dist/web/assets/dist-BOIkyUDE.js +1 -0
  127. package/dist/web/assets/dist-BhvCwF6v.js +1 -0
  128. package/dist/web/assets/dist-C6oRdq_x.js +1 -0
  129. package/dist/web/assets/dist-C7gsSbg8.js +11 -0
  130. package/dist/web/assets/dist-CMFTG-Cz.js +9 -0
  131. package/dist/web/assets/dist-CRKS1wXG.js +1 -0
  132. package/dist/web/assets/dist-CUajnf5G.js +1 -0
  133. package/dist/web/assets/dist-CXAToOJL.js +1 -0
  134. package/dist/web/assets/dist-CxtEXJtW.js +1 -0
  135. package/dist/web/assets/dist-D5_2d6Ki.js +1 -0
  136. package/dist/web/assets/dist-DMEslBFn.js +2 -0
  137. package/dist/web/assets/dist-DTXSqpYP.js +1 -0
  138. package/dist/web/assets/dist-DfKlgEia.js +1 -0
  139. package/dist/web/assets/dist-SlIdOLRu.js +1 -0
  140. package/dist/web/assets/dist-hiB1k3yb.js +1 -0
  141. package/dist/web/assets/dist-uYDRxuA0.js +1 -0
  142. package/dist/web/assets/dockerfile-DJkHQgkl.js +1 -0
  143. package/dist/web/assets/dtd-DTF72YNO.js +1 -0
  144. package/dist/web/assets/dylan-S7ucR4pR.js +1 -0
  145. package/dist/web/assets/ebnf-D4c0_ac3.js +1 -0
  146. package/dist/web/assets/ebnfDiagram-V4P3TTPT-hUPVHW_L.js +1 -0
  147. package/dist/web/assets/ecl-BVIeWmwY.js +1 -0
  148. package/dist/web/assets/eiffel-BEjRio4Q.js +1 -0
  149. package/dist/web/assets/elk-QONTBCTQ-CK3_-qCI.js +27 -0
  150. package/dist/web/assets/elm-Cshzl8qu.js +1 -0
  151. package/dist/web/assets/erDiagram-KYQIGQAA-BnzshuRd.js +99 -0
  152. package/dist/web/assets/erlang-BV0c4Hdn.js +1 -0
  153. package/dist/web/assets/eventmodeling-K75KTNOO-YpRkYpNJ.js +1 -0
  154. package/dist/web/assets/factor-LKH5gN8L.js +1 -0
  155. package/dist/web/assets/fcl-ClOhbFR7.js +1 -0
  156. package/dist/web/assets/flowDiagram-IUGLLWBU-DA73lQLy.js +1 -0
  157. package/dist/web/assets/forth-D6RzAl64.js +1 -0
  158. package/dist/web/assets/fortran-Bt6PBEDR.js +1 -0
  159. package/dist/web/assets/ganttDiagram-R7GPNTJY-Cof-TrXj.js +292 -0
  160. package/dist/web/assets/gas-BHEdbvp9.js +1 -0
  161. package/dist/web/assets/gherkin-oBAE_ms0.js +1 -0
  162. package/dist/web/assets/gitGraph-VSP46ZUC-ClyrQrUV.js +1 -0
  163. package/dist/web/assets/gitGraphDiagram-PDYL7XHY-DcHBmgeW.js +106 -0
  164. package/dist/web/assets/graphlib-DS17s2tU.js +1 -0
  165. package/dist/web/assets/groovy-CUpZ7dEl.js +1 -0
  166. package/dist/web/assets/haskell-BRsoo5mP.js +1 -0
  167. package/dist/web/assets/haxe-DjVOVvNP.js +1 -0
  168. package/dist/web/assets/http-CLVgA2GD.js +1 -0
  169. package/dist/web/assets/idl-BUZw3wgd.js +1 -0
  170. package/dist/web/assets/index-CFg9w5Ih.js +63 -0
  171. package/dist/web/assets/index-CT9Wzb6W.css +1 -0
  172. package/dist/web/assets/info-OHQRW6UA-DJuVnR49.js +1 -0
  173. package/dist/web/assets/infoDiagram-MVDRKAX5-SPivATVi.js +2 -0
  174. package/dist/web/assets/init-C-OQMol4.js +1 -0
  175. package/dist/web/assets/ishikawaDiagram-HPEHV2GE-luEQCi0p.js +70 -0
  176. package/dist/web/assets/javascript-Bu8mWwtz.js +1 -0
  177. package/dist/web/assets/journeyDiagram-BOSHW7O7-CDWNQ0FV.js +139 -0
  178. package/dist/web/assets/julia-CQfgDRfP.js +1 -0
  179. package/dist/web/assets/kanban-definition-FNSA4HC5-kCg2Ntni.js +89 -0
  180. package/dist/web/assets/katex-B_JcIwqj.js +257 -0
  181. package/dist/web/assets/katex-DMqEsVPU.js +257 -0
  182. package/dist/web/assets/katex-Ngnvt50Q.css +1 -0
  183. package/dist/web/assets/line-Cs-2UOsh.js +1 -0
  184. package/dist/web/assets/linear-Dn78ogyi.js +1 -0
  185. package/dist/web/assets/livescript-BXxG0Yva.js +1 -0
  186. package/dist/web/assets/lua-DPCEkfD_.js +1 -0
  187. package/dist/web/assets/mathematica-u8YMmbU0.js +1 -0
  188. package/dist/web/assets/mbox-BEMVcqjs.js +1 -0
  189. package/dist/web/assets/mermaid-parser.core-XUq3kRg7.js +7 -0
  190. package/dist/web/assets/mermaid.core-KP0iScKW.js +44 -0
  191. package/dist/web/assets/mindmap-definition-6OY57UG3-DYfhBOEV.js +98 -0
  192. package/dist/web/assets/mirc-C9zpzAZU.js +1 -0
  193. package/dist/web/assets/mllike-B45xgp2S.js +1 -0
  194. package/dist/web/assets/modelica-CqHI_q-D.js +1 -0
  195. package/dist/web/assets/mscgen-qgSLujhx.js +1 -0
  196. package/dist/web/assets/mumps-BSzj6Xyz.js +1 -0
  197. package/dist/web/assets/nginx-8H7HVH4w.js +1 -0
  198. package/dist/web/assets/nsis-viPvXFiq.js +1 -0
  199. package/dist/web/assets/ntriples-CzMBulkp.js +1 -0
  200. package/dist/web/assets/octave-D2Q8cUp1.js +1 -0
  201. package/dist/web/assets/ordinal-BDEzSJ7C.js +1 -0
  202. package/dist/web/assets/oz-BwTct_5T.js +1 -0
  203. package/dist/web/assets/packet-JDAUHWVQ-m_mxaPh2.js +1 -0
  204. package/dist/web/assets/pascal-Dp_KdFgX.js +1 -0
  205. package/dist/web/assets/path-fybaL0A-.js +1 -0
  206. package/dist/web/assets/pegDiagram-ECIUJNBX-C57XlI0z.js +1 -0
  207. package/dist/web/assets/perl-BkSkiI9m.js +1 -0
  208. package/dist/web/assets/pie-XZMESJXO-COU-cPpy.js +1 -0
  209. package/dist/web/assets/pieDiagram-GNMPY74T-Cgv_MwBq.js +39 -0
  210. package/dist/web/assets/pig-AF4Hwhju.js +1 -0
  211. package/dist/web/assets/powershell-D8WpQPaX.js +1 -0
  212. package/dist/web/assets/properties-C357ku5U.js +1 -0
  213. package/dist/web/assets/protobuf-D1ij_kNL.js +1 -0
  214. package/dist/web/assets/pug-Dwd_FmgJ.js +1 -0
  215. package/dist/web/assets/puppet-BZyAS7I4.js +1 -0
  216. package/dist/web/assets/python-B_1Jd8HM.js +1 -0
  217. package/dist/web/assets/q-B9NhS7L_.js +1 -0
  218. package/dist/web/assets/quadrantDiagram-D57K4MC3-DLP-IJBg.js +7 -0
  219. package/dist/web/assets/r-CxDmU1I4.js +1 -0
  220. package/dist/web/assets/radar-ABXABTNO-DVnhW8Tu.js +1 -0
  221. package/dist/web/assets/railroad-I3PHUGI6-CbNbR4f3.js +1 -0
  222. package/dist/web/assets/railroad-abnf-LNEFI6M7-QapD3MRY.js +1 -0
  223. package/dist/web/assets/railroad-ebnf-DWYD2UWJ-CSlvjrRs.js +1 -0
  224. package/dist/web/assets/railroad-peg-JR7BVNR7-CabNa_kN.js +1 -0
  225. package/dist/web/assets/railroadDiagram-Y72NRBL7-DnlOXd0I.js +1 -0
  226. package/dist/web/assets/requirementDiagram-EQYSW5RA-Dq1MJEdy.js +84 -0
  227. package/dist/web/assets/rough.esm-Dy-Kn_BL.js +1 -0
  228. package/dist/web/assets/rpm-gpDK5sbt.js +1 -0
  229. package/dist/web/assets/ruby-ChfNwlCY.js +1 -0
  230. package/dist/web/assets/sankeyDiagram-SY24JHO5--LVb7hhV.js +40 -0
  231. package/dist/web/assets/sas-C2OyD2Y6.js +1 -0
  232. package/dist/web/assets/scheme-D9qYN0V5.js +1 -0
  233. package/dist/web/assets/sequenceDiagram-BLEHNHQU-Cg8W2Kc8.js +169 -0
  234. package/dist/web/assets/shell-DwuoZtxw.js +1 -0
  235. package/dist/web/assets/sieve-tLWDfEkZ.js +1 -0
  236. package/dist/web/assets/simple-mode-DXiLM1-G.js +1 -0
  237. package/dist/web/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  238. package/dist/web/assets/smalltalk-BLp5-jwC.js +1 -0
  239. package/dist/web/assets/solr-B78wSQJQ.js +1 -0
  240. package/dist/web/assets/sparql-Dz-mlCAC.js +1 -0
  241. package/dist/web/assets/spreadsheet-CTIncYxj.js +1 -0
  242. package/dist/web/assets/sql-DuQMFDvy.js +1 -0
  243. package/dist/web/assets/src-w1h_Rr-8.js +1 -0
  244. package/dist/web/assets/stateDiagram-v2-A6IESKWZ-ck5PGLTp.js +291 -0
  245. package/dist/web/assets/stex-DNzd62Q_.js +1 -0
  246. package/dist/web/assets/stylus-BOVgKnng.js +1 -0
  247. package/dist/web/assets/swift-DKB6_1j6.js +1 -0
  248. package/dist/web/assets/swimlanes-B3ENRKFQ--RxIRIY6.js +1 -0
  249. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-CeoYxgix.js +8 -0
  250. package/dist/web/assets/tcl-BGfruO1u.js +1 -0
  251. package/dist/web/assets/textile-C4jVoHG1.js +1 -0
  252. package/dist/web/assets/tiddlywiki-VlUiK86J.js +1 -0
  253. package/dist/web/assets/tiki-DTszW0OQ.js +1 -0
  254. package/dist/web/assets/timeline-definition-JXYKGLGB-Cgtckb20.js +120 -0
  255. package/dist/web/assets/toml-BPTmHmyx.js +1 -0
  256. package/dist/web/assets/treeView-D4JQ5SDB-Byi5cU2l.js +1 -0
  257. package/dist/web/assets/treemap-SAJKECNS-DJ7_3_F8.js +1 -0
  258. package/dist/web/assets/troff-C2dAgh7P.js +1 -0
  259. package/dist/web/assets/ttcn-PPSTk1ow.js +1 -0
  260. package/dist/web/assets/ttcn-cfg-2b4Gb5sE.js +1 -0
  261. package/dist/web/assets/turtle-Cx3rYX2g.js +1 -0
  262. package/dist/web/assets/usecaseDiagram-WPOLBNNX-DkTE13SV.js +328 -0
  263. package/dist/web/assets/vb-BthdM_4N.js +1 -0
  264. package/dist/web/assets/vbscript-D9f6rSsU.js +1 -0
  265. package/dist/web/assets/velocity-CqftRsjg.js +1 -0
  266. package/dist/web/assets/vennDiagram-Q3Y3IDCW-C5G521q2.js +34 -0
  267. package/dist/web/assets/verilog-CjI9Y6RI.js +1 -0
  268. package/dist/web/assets/vhdl-kS471soi.js +1 -0
  269. package/dist/web/assets/wardley-7MLQ67FV-PChC3W6T.js +1 -0
  270. package/dist/web/assets/wardleyDiagram-IVAIDKWA-B9sJfj7x.js +78 -0
  271. package/dist/web/assets/webidl-D5jiJvOU.js +1 -0
  272. package/dist/web/assets/xquery-BKJx4mf9.js +1 -0
  273. package/dist/web/assets/xychartDiagram-4URNHDU4-CmuAuTkp.js +7 -0
  274. package/dist/web/assets/yacas-CXXgtw0p.js +1 -0
  275. package/dist/web/assets/z80-Co3PbHdE.js +1 -0
  276. package/dist/web/index.html +17 -0
  277. package/package.json +81 -3
  278. package/templates/main.md +5 -0
  279. package/templates/method/area/docs/tasks/.gitkeep +0 -0
  280. package/templates/method/area-main.md +9 -0
  281. package/templates/method/root/docs/tasks/_TEMPLATE.md +28 -0
  282. package/templates/method/skills/markode-close-session/SKILL.md +20 -0
  283. package/templates/method/skills/markode-method/SKILL.md +68 -0
  284. package/templates/method/skills/markode-method/templates/architecture-topic.md +12 -0
  285. package/templates/method/skills/markode-method/templates/phase.md +22 -0
  286. package/templates/method/skills/markode-method/templates/project-architecture.md +14 -0
  287. package/templates/method/skills/markode-method/templates/vision.md +22 -0
  288. package/templates/method/skills/markode-new-task/SKILL.md +22 -0
  289. package/templates/method/skills/markode-status/SKILL.md +24 -0
  290. package/templates/proposals/SKILL.md +131 -0
  291. package/templates/rules/ask-before-commit.md +4 -0
  292. package/templates/rules/ask-new-dependencies.md +4 -0
  293. package/templates/rules/ask-when-unclear.md +4 -0
  294. package/templates/rules/match-conventions.md +4 -0
  295. package/templates/rules/minimal-changes.md +4 -0
  296. package/templates/rules/protect-secrets.md +4 -0
  297. package/templates/rules/tests-with-changes.md +4 -0
  298. package/templates/rules/update-docs.md +4 -0
  299. package/templates/rules/verify-before-done.md +4 -0
  300. package/templates/sdd/openspec/openspec/README.md +89 -0
  301. package/templates/sdd/openspec/openspec/changes/archive/.gitkeep +0 -0
  302. package/templates/sdd/openspec/openspec/config.yaml +12 -0
  303. package/templates/sdd/openspec/openspec/specs/.gitkeep +0 -0
  304. package/templates/sdd/speckit/.specify/memory/constitution.md +30 -0
  305. package/templates/sdd/speckit/specs/README.md +82 -0
  306. package/templates/skill/SKILL.md +91 -0
@@ -0,0 +1,9 @@
1
+ # {{area}}
2
+
3
+ ## Contents
4
+
5
+ <!-- What this project is, in one or two lines. -->
6
+
7
+ ## Commands
8
+
9
+ <!-- How to build, run and test this project. -->
@@ -0,0 +1,28 @@
1
+ ---
2
+ type: task
3
+ id: <ID>
4
+ status: pending
5
+ area: <area>
6
+ phase: <number>
7
+ depends: []
8
+ created: YYYY-MM-DD
9
+ updated: YYYY-MM-DD
10
+ ---
11
+
12
+ # <ID> · <Title>
13
+
14
+ ## Goal
15
+
16
+ <!-- One or two sentences: what is true when this task is done. -->
17
+
18
+ ## Acceptance criteria
19
+
20
+ - [ ]
21
+
22
+ ## Next step
23
+
24
+ <!-- One or two actionable lines; a new session starts here. -->
25
+
26
+ ## Log (newest first)
27
+
28
+ - YYYY-MM-DD: created.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: markode-close-session
3
+ description: Closes a work session in a project that follows the markode method, recording what was done and the next step of every task touched, and updating phases.
4
+ ---
5
+
6
+ # Close the session (markode method)
7
+
8
+ 1. Identify the tasks worked on in this session.
9
+ 2. For each one, in its file:
10
+ - Add a log entry at the top of "Log": date, what was done, key files and decisions.
11
+ - Rewrite "Next step" in one or two actionable lines (for `blocked`: what it waits on).
12
+ - Tick the acceptance criteria that are met; set `status` and `updated` in the frontmatter.
13
+ 3. If a task is `done`, tick it in its phase (`docs/phases/NN-*.md`). When every task and every item
14
+ of "Definition of done" is ticked, set the phase to `status: done`; when the first task starts,
15
+ set it to `in-progress`. Update `updated`.
16
+ 4. If an architecture decision was made or changed, update it in its one place (the project's
17
+ `docs/ARCHITECTURE.md` or the root `docs/architecture/`; create it from the `markode-method`
18
+ templates if it doesn't exist yet), never in the main doc.
19
+ 5. Run `/markode sync` (the docs check of the `markode` skill) and fix what it reports.
20
+ 6. Summarize for the user in three lines: what was done, the next step, and anything open.
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: markode-method
3
+ description: Where each kind of project knowledge goes in the markode method (vision, architecture, phases, tasks), when to create each doc, and templates for them. Use before creating, moving or growing a doc under docs/, or when a decision, a goal or a milestone needs writing down.
4
+ ---
5
+
6
+ # The markode method
7
+
8
+ The docs are a **map and a memory**, not an encyclopedia. Write only what nobody can learn from the
9
+ code: decisions and their reasons, conventions that aren't visible, and the state of the work. The main
10
+ doc (`CLAUDE.md` or `AGENTS.md`) is the map: it says where things are, never what they say.
11
+
12
+ ## Where things go
13
+
14
+ | What | Where | Create it when |
15
+ |---|---|---|
16
+ | Vision | `docs/vision.md` | the user says what the project is for, for whom, or what is out of scope |
17
+ | Shared architecture | `docs/architecture/<topic>.md` | a technology or design decision affects the whole repository (or several projects) |
18
+ | Architecture of one project (monorepo) | `<project>/docs/ARCHITECTURE.md` | a decision affects only that project |
19
+ | Phases | `docs/phases/NN-name.md` | the user plans a milestone made of several tasks |
20
+ | Tasks | `docs/tasks/<ID>-slug.md`, or `<project>/docs/tasks/` in a monorepo | the user asks for one (`/markode-new-task`) |
21
+
22
+ A task's status lives only in its frontmatter: there is no index to keep in sync. `/markode-status` and
23
+ the markode Dashboard list tasks by status.
24
+
25
+ To create one, copy its template from `templates/` next to this file (`vision.md`,
26
+ `architecture-topic.md`, `project-architecture.md`, `phase.md`), replace the `<placeholders>` and set
27
+ `updated` to today. When `docs/architecture/` gets a second file, add a `README.md` there with one line
28
+ per file.
29
+
30
+ ## By kind of project
31
+
32
+ The main doc says what kind of project this is ("This project", or the "Kind" column of the "Projects"
33
+ table) and where that kind's docs go. Follow it; these are the usual ones:
34
+
35
+ | Kind | Docs it needs (created when there is something to write) |
36
+ |---|---|
37
+ | App | vision, architecture by topic, phases |
38
+ | Library / package | public API and versioning (`docs/architecture/api.md`); `CHANGELOG.md` if published; phases only for planned milestones |
39
+ | Microservices | contracts (APIs, events) as shared architecture (`docs/architecture/contracts.md`); a contract change gets a task in every consumer |
40
+ | Mobile app | release and store decisions (`docs/architecture/releases.md`) |
41
+ | Data / ML | datasets: source, location, schema (`docs/architecture/data.md`); an experiment log |
42
+ | Infrastructure | environments, one runbook per operation (`docs/runbooks/`) |
43
+
44
+ If the main doc lists "Existing docs", they are the official ones: update them instead of creating
45
+ new docs that would repeat them.
46
+
47
+ ## What not to write
48
+
49
+ - What the code already says: folder listings, dependency lists, what a function does.
50
+ - Generic advice ("write clean code", "handle errors properly").
51
+ - The same fact twice: link to the one place where it lives.
52
+ - Empty sections or docs "to fill later": create a doc when there is something real to put in it.
53
+ - Decisions or task lists in the main doc: it only points to them.
54
+
55
+ ## Task statuses
56
+
57
+ | status | meaning |
58
+ |---|---|
59
+ | `pending` | defined, not started |
60
+ | `in-progress` | being worked on; a new session resumes from its "Next step" |
61
+ | `blocked` | waiting on something; "Next step" says what |
62
+ | `done` | every acceptance criterion is met |
63
+
64
+ ## Phases
65
+
66
+ - A phase lists its tasks as a checklist; tick a task there when it becomes `done`.
67
+ - `status: in-progress` when its first task starts; `done` when every task and every item of
68
+ "Definition of done" is ticked.
@@ -0,0 +1,12 @@
1
+ ---
2
+ type: architecture
3
+ updated: YYYY-MM-DD
4
+ ---
5
+
6
+ # <Topic>
7
+
8
+ | Topic | Decision | Why |
9
+ |---|---|---|
10
+ | | | |
11
+
12
+ <!-- Optional: a ```mermaid flow or a ```tree of the parts this decision shapes. Only what the code doesn't show. -->
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: phase
3
+ phase: <N>
4
+ status: pending
5
+ updated: YYYY-MM-DD
6
+ ---
7
+
8
+ # Phase <N> · <Name>
9
+
10
+ ## Goal
11
+
12
+ <!-- One or two sentences: what works at the end of this phase. -->
13
+
14
+ ## Tasks
15
+
16
+ Tick a task here when its status becomes `done`.
17
+
18
+ - [ ] [<ID>](<relative path to the task>) <title>
19
+
20
+ ## Definition of done
21
+
22
+ - [ ]
@@ -0,0 +1,14 @@
1
+ ---
2
+ type: architecture
3
+ area: <project folder>
4
+ updated: YYYY-MM-DD
5
+ ---
6
+
7
+ # <project> · Architecture
8
+
9
+ Decisions that only affect this project. Decisions shared with other projects live in the root
10
+ `docs/architecture/`.
11
+
12
+ | Topic | Decision | Why |
13
+ |---|---|---|
14
+ | | | |
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: vision
3
+ updated: YYYY-MM-DD
4
+ ---
5
+
6
+ # Vision
7
+
8
+ ## What
9
+
10
+ <!-- One paragraph: what the project is. -->
11
+
12
+ ## For whom
13
+
14
+ <!-- Who uses it and what problem it solves for them. -->
15
+
16
+ ## Goals
17
+
18
+ - <!-- A measurable outcome, e.g. "a new order takes under a minute" -->
19
+
20
+ ## Out of scope
21
+
22
+ - <!-- What this project will not do, to keep it focused -->
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: markode-new-task
3
+ description: Creates a task file in this project's docs (the markode method) when the user asks for a new task. Uses the task template and the next ID of the project, and adds the task to its phase.
4
+ ---
5
+
6
+ # New task (markode method)
7
+
8
+ Create tasks only when the user asks; you may propose them first.
9
+
10
+ 1. Gather what is missing, in one question: title, goal, project (in a monorepo: the "Projects" table
11
+ in the root main doc lists them and their prefixes), phase, and dependencies.
12
+ 2. Folder and prefix: the project's `docs/tasks/` with its prefix; tasks across projects, or in a
13
+ single project, go in the root `docs/tasks/` with the prefix the root main doc gives (`T` by default).
14
+ 3. Next ID: the highest `<PREFIX>-NNN` in that folder + 1, three digits.
15
+ 4. Copy the root `docs/tasks/_TEMPLATE.md` to `<folder>/<ID>-<short-slug>.md`. Fill the frontmatter
16
+ (`id`, `status: pending`, `area`, `phase`, `depends`, `created` and `updated` = today), the title,
17
+ the goal and the acceptance criteria as a checklist. The frontmatter is the only place the status
18
+ lives: there is no task index to update.
19
+ 5. If it belongs to a phase, add `- [ ] [<ID>](<relative path>) <title>` under "Tasks" in
20
+ `docs/phases/NN-*.md` (create the phase from the `markode-method` template if the user is planning
21
+ a new one).
22
+ 6. Show the task to the user. Do not start working on it until they say so.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: markode-status
3
+ description: Summarizes where the work stands in a project that follows the markode method - what was touched last, what is in progress, blocked and pending - grouped by project in a monorepo. Use when the user asks what is pending, where things stand, what is left, or what was done last time.
4
+ ---
5
+
6
+ # Status (markode method)
7
+
8
+ Answer from the task files, not by exploring the code.
9
+
10
+ 1. **Task folders**: `docs/tasks/` and, in a monorepo, each `<project>/docs/tasks/` from the "Projects"
11
+ table of the root main doc. Read only each file's frontmatter (`id`, `status`, `phase`, `depends`,
12
+ `updated`) and its title; skip `_TEMPLATE.md`. For example:
13
+ `grep -H -E "^(id|status|phase|depends|updated):|^# " docs/tasks/*.md apps/*/docs/tasks/*.md`
14
+ 2. **Last session**: the tasks with the most recent `updated`. If git is available, also
15
+ `git log --since=<that date> --name-only --format="%h %s"` to see which projects changed, including
16
+ changes no task covers.
17
+ 3. **Next steps**: for `in-progress` and `blocked` tasks only, read their "Next step" section.
18
+ 4. **Answer** in this order, grouped by project (shared work first), one line per task:
19
+ - **Last session**: the projects and tasks touched.
20
+ - **In progress**: `ID · title` — next step.
21
+ - **Blocked**: `ID · title` — what it waits on.
22
+ - **Pending**: how many; list the next ones (lowest phase first) whose `depends` are all `done`.
23
+ - **Without a task**: recent changes no task covers, if any.
24
+ 5. Don't open other docs unless the user asks to go deeper. End by asking which task to continue.
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: markode-proposals
3
+ description: Write temporary proposals the user answers in markode (options with ASCII or Mermaid diagrams, choices to tick, comments like in Word), then apply their answer to every affected doc and delete the proposal. Use when an answer would be long or has options or a design to validate, when the user asks for a proposal, or when they say a proposal is answered.
4
+ ---
5
+
6
+ # Proposals (markode)
7
+
8
+ A proposal is a **temporary** file for one decision. Write one instead of a chat answer when:
9
+
10
+ - the answer would be long, or has several options, diagrams or a design to validate; or
11
+ - the user asks for a proposal.
12
+
13
+ For a short answer or a single obvious option, just answer in the chat.
14
+
15
+ After writing the file:
16
+
17
+ 1. If a task waits on this decision, set it to `status: blocked` with "Next step: waiting on proposal
18
+ <path>".
19
+ 2. Start `markode wait <path>` **in the background** (in Claude Code, a background Bash command: you are
20
+ notified when it exits). It waits, without using tokens, until the user presses "Done, send my
21
+ answer" in markode, then prints their answer: choices, open questions, comments waiting for a reply,
22
+ affected docs and your "After your answer" list. If you can't run background commands, skip it: the
23
+ user will tell you, or the next `/markode sync` finds the answered proposal.
24
+ 3. Tell the user the path in one line and that you will continue when they answer. Meanwhile, keep
25
+ working on anything that doesn't depend on the decision.
26
+
27
+ When the watcher's output arrives, go straight to "When the user answers". Once applied, the decision
28
+ lives in the docs it affects and the proposal is deleted.
29
+
30
+ ## Where
31
+
32
+ {{where}}.
33
+
34
+ ## Format
35
+
36
+ ````md
37
+ ---
38
+ type: proposal
39
+ status: open # open → answered (set by the user in markode); deleted once applied
40
+ updated: YYYY-MM-DD
41
+ affects: [docs/tasks/T-004-login.md, docs/architecture/auth.md] # docs the decision will change
42
+ ---
43
+
44
+ # Proposal: <topic>
45
+
46
+ ## Context
47
+
48
+ <!-- Two or three lines: what needs deciding and why now. -->
49
+
50
+ ## Option A: <name> (recommended)
51
+
52
+ ```text
53
+ Browser ──REST──▶ Gateway ──gRPC──▶ Users ──▶ (Postgres)
54
+ ```
55
+
56
+ What it means, pros and cons in a few bullets.
57
+
58
+ ## Option B: <name>
59
+
60
+ ```mermaid
61
+ flowchart LR
62
+ Browser --> Users --> DB[(Postgres)]
63
+ ```
64
+
65
+ ## Your choice
66
+
67
+ <!-- choose: one -->
68
+ - [ ] A: <name>
69
+ - [ ] B: <name>
70
+
71
+ ## Also include
72
+
73
+ - [ ] <optional extra the user can tick>
74
+
75
+ ## After your answer
76
+
77
+ - <what you will do with each possible choice, so any session can continue from here>
78
+
79
+ ## Open questions
80
+
81
+ 1. <question>
82
+
83
+ <!-- choose: one -->
84
+ - [ ] <answer>
85
+ - [ ] <answer>
86
+ ````
87
+
88
+ - Diagrams: a ` ```text ` block with box-drawing characters for small sketches, ` ```mermaid ` for
89
+ flows and sequences. markode renders both.
90
+ - In ASCII diagrams use only single-width characters (box drawing `┌─┐│└┘▶`, letters, `#`, `-`); shading
91
+ blocks like `▓░` are wider in many fonts and break the alignment.
92
+ - `<!-- choose: one -->` right before a checklist makes it single choice in markode (radio buttons);
93
+ without it, any number can be ticked.
94
+ - Put your recommendation first and say why.
95
+
96
+ ## Comments
97
+
98
+ The user comments like in Word. A comment is an HTML comment right after the block it refers to,
99
+ indented like that block (inside a list item: aligned with the item's text):
100
+
101
+ ```md
102
+ - [x] A: gateway validates
103
+ <!-- comment by Rafael, 2026-10-22, on "gateway validates": What if the gateway goes down? -->
104
+ ```
105
+
106
+ Answer each comment with a reply right below it (or below the last reply), same indentation:
107
+
108
+ ```md
109
+ <!-- reply by AI, 2026-10-22: Two Cloud Run instances minimum; added to the architecture. -->
110
+ ```
111
+
112
+ Never delete or rewrite the user's comments: they resolve them in markode. Never put `-->` inside a
113
+ comment's text.
114
+
115
+ - `affects`: the docs that depend on this decision (tasks, phases, architecture, vision, other
116
+ proposals…), so the user sees what their choice will change.
117
+
118
+ ## When the user answers
119
+
120
+ 1. Read the ticked options, the open questions and every comment without a reply from you.
121
+ 2. If something is unclear or a comment raises a new question, reply to that comment, set
122
+ `status: open` again, tell the user what you need, and start `markode wait` again. Don't apply
123
+ anything yet.
124
+ 3. Otherwise apply the decision to every doc that depends on it: the ones in `affects` and any other
125
+ you find (a task's goal or acceptance criteria, a phase's task list, an architecture table, the
126
+ vision…). Record it in its one place: in the markode method, the architecture file for design
127
+ decisions, and a line in the log of the task it belongs to (`<date>: decided <what> (proposal
128
+ <name>)`).
129
+ 4. Delete the proposal file: it was temporary, the decision now lives in those docs. A task that was
130
+ `blocked` on it goes back to `in-progress`, with its next step from your "After your answer" list.
131
+ 5. Tell the user in a few lines what you changed and where, then continue with that task.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Ask before committing
3
+ ---
4
+ - Never commit, push or open pull requests without asking first.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Ask before adding dependencies
3
+ ---
4
+ - Don't add, remove or upgrade dependencies without asking; prefer what the project already uses.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Ask when unclear
3
+ ---
4
+ - If a requirement is ambiguous, ask instead of guessing; state your assumptions when you proceed.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Follow the project's conventions
3
+ ---
4
+ - Read the surrounding code first and match its style, naming, patterns and libraries.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Minimal, focused changes
3
+ ---
4
+ - Change only what the task needs: don't refactor, rename or reformat unrelated code.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Protect secrets
3
+ ---
4
+ - Never read, print or commit secrets, `.env` files or credentials; use the existing configuration mechanism.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Tests with every change
3
+ ---
4
+ - Add or update tests for every behavior you add or change; never delete or skip a failing test to make it pass.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Keep docs up to date
3
+ ---
4
+ - When behavior, commands or configuration change, update the docs that describe them in the same change.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Verify before saying it's done
3
+ ---
4
+ - Run the tests, the linter and the type checker before saying a task is done, and report any failure with its output.
@@ -0,0 +1,89 @@
1
+ # OpenSpec guide
2
+
3
+ This project uses [OpenSpec](https://github.com/Fission-AI/OpenSpec): agree on **what** to build in
4
+ Markdown before writing code, so you and the AI work from the same spec.
5
+
6
+ ## Structure
7
+
8
+ ```tree
9
+ openspec/
10
+ config.yaml # project context and rules for the AI (edit in your code editor)
11
+ specs/ # how the system behaves TODAY, one folder per domain
12
+ auth/
13
+ spec.md
14
+ changes/ # proposed work, one folder per change
15
+ add-2fa/
16
+ proposal.md # why and what
17
+ design.md # how (optional, for non-trivial changes)
18
+ tasks.md # checklist the AI works through
19
+ specs/auth/spec.md # delta: requirements added, modified or removed
20
+ archive/ # finished changes, dated
21
+ ```
22
+
23
+ ## Lifecycle
24
+
25
+ ```mermaid
26
+ flowchart LR
27
+ Propose[Propose a change] --> Review[Review proposal, specs and tasks]
28
+ Review --> Apply[Apply: implement the tasks]
29
+ Apply --> Archive[Archive: deltas merge into specs/]
30
+ ```
31
+
32
+ | Step | Command (if OpenSpec is installed) | Or ask the AI |
33
+ |---|---|---|
34
+ | Explore an idea | `/opsx:explore` | "Let's think through X before proposing anything." |
35
+ | Propose | `/opsx:propose add 2FA` | "Create an OpenSpec change `add-2fa` with proposal, tasks and spec deltas." |
36
+ | Implement | `/opsx:apply` | "Implement the tasks of `add-2fa`, ticking each one." |
37
+ | Finish | `/opsx:archive` | "Archive `add-2fa` and merge its deltas into `openspec/specs/`." |
38
+
39
+ ## Examples
40
+
41
+ **`changes/add-2fa/proposal.md`**
42
+
43
+ ```md
44
+ # Proposal: Add two-factor authentication
45
+
46
+ ## Why
47
+ Accounts are protected by a password only.
48
+
49
+ ## What changes
50
+ - Users can enable TOTP codes from their settings.
51
+ - Login asks for the code when 2FA is enabled.
52
+
53
+ ## Out of scope
54
+ - SMS codes.
55
+ ```
56
+
57
+ **`changes/add-2fa/specs/auth/spec.md`** (delta)
58
+
59
+ ```md
60
+ ## ADDED Requirements
61
+
62
+ ### Requirement: Two-factor login
63
+ The system SHALL ask for a one-time code after the password when 2FA is enabled.
64
+
65
+ #### Scenario: Valid code
66
+ - **WHEN** the user enters a valid code
67
+ - **THEN** they are logged in
68
+ ```
69
+
70
+ **`changes/add-2fa/tasks.md`**
71
+
72
+ ```md
73
+ ## 1. Backend
74
+ - [ ] 1.1 Store the TOTP secret per user
75
+ - [ ] 1.2 Verify codes on login
76
+
77
+ ## 2. Frontend
78
+ - [ ] 2.1 Settings screen to enable 2FA
79
+ ```
80
+
81
+ ## Installing OpenSpec
82
+
83
+ The `/opsx:*` commands come from the OpenSpec CLI. If they are missing, install it (needs Node.js) and
84
+ run its setup here; it keeps the files you already have:
85
+
86
+ ```bash
87
+ npm install -g @fission-ai/openspec
88
+ openspec init
89
+ ```
@@ -0,0 +1,12 @@
1
+ schema: spec-driven
2
+
3
+ # Project context (optional): constraints an agent can't infer from the code.
4
+ # context: |
5
+ # Designs and tasks must cover Windows, macOS and Linux
6
+
7
+ # Per-artifact rules (optional).
8
+ # rules:
9
+ # proposal:
10
+ # - Always state what is out of scope
11
+ # tasks:
12
+ # - Break tasks into chunks of at most 2 hours
File without changes
@@ -0,0 +1,30 @@
1
+ # [PROJECT_NAME] Constitution
2
+
3
+ <!-- The principles every feature must respect. Fill it in, or run /speckit-constitution and let the AI
4
+ draft it from a conversation. Replace every [PLACEHOLDER]. -->
5
+
6
+ ## Core Principles
7
+
8
+ ### [PRINCIPLE_1_NAME]
9
+ <!-- Example: I. Test-First -->
10
+ [PRINCIPLE_1_DESCRIPTION]
11
+ <!-- Example: Tests are written and approved before the implementation. -->
12
+
13
+ ### [PRINCIPLE_2_NAME]
14
+ <!-- Example: II. Simplicity -->
15
+ [PRINCIPLE_2_DESCRIPTION]
16
+ <!-- Example: Start with the simplest thing that works; no speculative abstractions. -->
17
+
18
+ ### [PRINCIPLE_3_NAME]
19
+ [PRINCIPLE_3_DESCRIPTION]
20
+
21
+ ## Constraints
22
+
23
+ [CONSTRAINTS]
24
+ <!-- Example: TypeScript only; Postgres; must run on Node 20+. -->
25
+
26
+ ## Governance
27
+
28
+ This constitution overrides other practices. Amendments are documented here with their reason.
29
+
30
+ **Version**: 1.0.0 | **Ratified**: {{date}} | **Last amended**: {{date}}
@@ -0,0 +1,82 @@
1
+ # Spec Kit guide
2
+
3
+ This project uses [GitHub Spec Kit](https://github.com/github/spec-kit): every feature goes from an
4
+ idea to a spec, a plan and a task list before any code is written.
5
+
6
+ ## Structure
7
+
8
+ ```tree
9
+ .specify/
10
+ memory/constitution.md # principles every feature must respect
11
+ templates/ # templates the commands fill (installed by Spec Kit)
12
+ specs/
13
+ 001-user-login/ # one folder per feature, numbered
14
+ spec.md # what and why: user stories, requirements
15
+ plan.md # how: stack, architecture, data model
16
+ tasks.md # ordered checklist, by user story
17
+ research.md # optional: findings behind the plan
18
+ data-model.md # optional
19
+ contracts/ # optional: API definitions
20
+ ```
21
+
22
+ ## Flow
23
+
24
+ ```mermaid
25
+ flowchart LR
26
+ C[Constitution] --> S[Specify] --> Q[Clarify] --> P[Plan] --> T[Tasks] --> I[Implement]
27
+ ```
28
+
29
+ | Step | Command (if Spec Kit is installed) | Or ask the AI |
30
+ |---|---|---|
31
+ | Principles | `/speckit-constitution` | "Fill `.specify/memory/constitution.md` with our principles." |
32
+ | Spec | `/speckit-specify users can log in with email` | "Write `specs/001-user-login/spec.md`: user stories, requirements, success criteria. No tech choices." |
33
+ | Clarify (optional) | `/speckit-clarify` | "Ask me about anything ambiguous in the spec." |
34
+ | Plan | `/speckit-plan use Next.js and Postgres` | "Write `plan.md` for 001 with the stack and data model." |
35
+ | Tasks | `/speckit-tasks` | "Break the plan into `tasks.md`, grouped by user story." |
36
+ | Build | `/speckit-implement` | "Implement the tasks of 001 in order, ticking each one." |
37
+
38
+ ## Examples
39
+
40
+ **`specs/001-user-login/spec.md`**
41
+
42
+ ```md
43
+ # Feature Specification: User login
44
+
45
+ ## User Scenarios
46
+
47
+ ### User Story 1 - Log in with email (Priority: P1)
48
+ A registered user logs in with email and password to reach their dashboard.
49
+
50
+ **Acceptance Scenarios**:
51
+ 1. **Given** a registered user, **When** they enter valid credentials, **Then** they see their dashboard.
52
+ 2. **Given** a wrong password, **When** they submit, **Then** they see an error and stay logged out.
53
+
54
+ ## Requirements
55
+ - **FR-001**: The system MUST lock an account after 5 failed attempts.
56
+
57
+ ## Success Criteria
58
+ - **SC-001**: 95% of logins complete in under 2 seconds.
59
+ ```
60
+
61
+ **`specs/001-user-login/tasks.md`**
62
+
63
+ ```md
64
+ ## Phase 1: User Story 1 - Log in with email (P1)
65
+ - [ ] T001 [US1] Create the users table in src/db/schema.ts
66
+ - [ ] T002 [P] [US1] Login form in src/app/login/page.tsx
67
+ - [ ] T003 [US1] POST /api/login in src/app/api/login/route.ts
68
+ ```
69
+
70
+ `[P]` marks tasks that can run in parallel.
71
+
72
+ ## Installing Spec Kit
73
+
74
+ The `/speckit-*` commands come from the Spec Kit CLI, which needs [uv](https://docs.astral.sh/uv/)
75
+ (Python). If they are missing:
76
+
77
+ ```bash
78
+ curl -LsSf https://astral.sh/uv/install.sh | sh # install uv
79
+ uvx --from git+https://github.com/github/spec-kit.git specify init --here --integration claude
80
+ ```
81
+
82
+ It keeps the files you already have, including the constitution.