@rafiqui987/markode 0.0.0-stage → 0.3.0
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.
- package/LICENSE +21 -0
- package/README.md +480 -2
- package/dist/cli.js +2954 -0
- package/dist/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/web/assets/abnfDiagram-WEYOIA3C-uyv195L6.js +1 -0
- package/dist/web/assets/apl-gfMMiTNf.js +1 -0
- package/dist/web/assets/arc-CnHtXLAe.js +1 -0
- package/dist/web/assets/architecture-WOLXFQ4H-tPJ2P-p7.js +1 -0
- package/dist/web/assets/architectureDiagram-ZHVYKT53-C-WCNTHv.js +36 -0
- package/dist/web/assets/array-BifhSqXX.js +1 -0
- package/dist/web/assets/asciiarmor-C_eisQCp.js +1 -0
- package/dist/web/assets/asn1-DCl_8MCW.js +1 -0
- package/dist/web/assets/asterisk-BEn0Cwpx.js +1 -0
- package/dist/web/assets/blockDiagram-RJAE7QA3-DRgAHQJ9.js +140 -0
- package/dist/web/assets/brainfuck-D5EjA2JK.js +1 -0
- package/dist/web/assets/c4Diagram-XDPPPE54-DBBsZpdC.js +38 -0
- package/dist/web/assets/channel-COq7V7WB.js +1 -0
- package/dist/web/assets/chunk-2E7WHVMD-CQSFul1o.js +88 -0
- package/dist/web/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dist/web/assets/chunk-4EMNKR2T-DHeQ05G5.js +1 -0
- package/dist/web/assets/chunk-55XCU76K-C9qNkR8H.js +1 -0
- package/dist/web/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/dist/web/assets/chunk-7S6XSTFO-C_2BTQ4f.js +2 -0
- package/dist/web/assets/chunk-AQDTSKZB-DZLt6T8h.js +72 -0
- package/dist/web/assets/chunk-DSNLSHJZ-6EnWiUHw.js +129 -0
- package/dist/web/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/web/assets/chunk-HAGFOTED-C4TrjvWC.js +62 -0
- package/dist/web/assets/chunk-HNE4Q36P-Bhz3xzgF.js +1 -0
- package/dist/web/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/web/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/dist/web/assets/chunk-NGNAAXSQ-C2Wy9Xmz.js +136 -0
- package/dist/web/assets/chunk-NQOKRVIF-fn9o0p_a.js +213 -0
- package/dist/web/assets/chunk-UHW7PFBP-y_Cnbpso.js +1 -0
- package/dist/web/assets/chunk-VQ5W62QI-BDGHstYR.js +1 -0
- package/dist/web/assets/chunk-WQQL4CDK-DVgns4LS.js +10 -0
- package/dist/web/assets/chunk-XXDRQBXY-z-xFeaXQ.js +1 -0
- package/dist/web/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/dist/web/assets/chunk-YZO67HFG-O3X4dDhT.js +1 -0
- package/dist/web/assets/chunk-ZAUX2LTX-dMpe16to.js +1 -0
- package/dist/web/assets/chunk-ZCHMQSOR-DmywVAUg.js +2 -0
- package/dist/web/assets/classDiagram-v2-4MYWR3UA-DNFxIeoH.js +217 -0
- package/dist/web/assets/clike-xvONpD0Z.js +1 -0
- package/dist/web/assets/clojure-BflJGmDX.js +1 -0
- package/dist/web/assets/cmake-84nbDH0I.js +1 -0
- package/dist/web/assets/cobol-DHLQUbN7.js +1 -0
- package/dist/web/assets/coffeescript-De_zI4J0.js +1 -0
- package/dist/web/assets/commonlisp-DgAKBe0r.js +1 -0
- package/dist/web/assets/cose-bilkent-JH36ORCC-C78U5xAn.js +1 -0
- package/dist/web/assets/crystal-Bsdphhtm.js +1 -0
- package/dist/web/assets/css-CnaYoQib.js +1 -0
- package/dist/web/assets/cynefin-EF2NZ3EQ-53hzJKH9.js +1 -0
- package/dist/web/assets/cynefinDiagram-WF24UDRP-D7qakSAO.js +62 -0
- package/dist/web/assets/cypher-p9eYesGn.js +1 -0
- package/dist/web/assets/cytoscape.esm-BegBNzOV.js +321 -0
- package/dist/web/assets/d-DWkQyNnU.js +1 -0
- package/dist/web/assets/dagre-NK4GIZVX-JnnDdmH0.js +4 -0
- package/dist/web/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dist/web/assets/diagram-CBK3MWTC-C9dCT7nt.js +24 -0
- package/dist/web/assets/diagram-I5XIIV2D-BODrA_Tz.js +24 -0
- package/dist/web/assets/diagram-ODIL2UCW-ByZtzdTi.js +30 -0
- package/dist/web/assets/diagram-PFBEJUXE-Dc3cgafk.js +3 -0
- package/dist/web/assets/diagram-RJA3I4VV-BnTNuzvk.js +41 -0
- package/dist/web/assets/diagram-TYUNFSNR-fbw92djE.js +200 -0
- package/dist/web/assets/diff-ChtP43wD.js +1 -0
- package/dist/web/assets/dist-8bzcdWlP.js +1 -0
- package/dist/web/assets/dist-BPKiY16E.js +2 -0
- package/dist/web/assets/dist-BeUBXLX5.js +1 -0
- package/dist/web/assets/dist-BfedOYsq.js +1 -0
- package/dist/web/assets/dist-BruzXrfs.js +1 -0
- package/dist/web/assets/dist-BwF8pAVO.js +1 -0
- package/dist/web/assets/dist-CAttduN3.js +1 -0
- package/dist/web/assets/dist-CC7LN-Hh.js +1 -0
- package/dist/web/assets/dist-CFUj2tCy.js +12 -0
- package/dist/web/assets/dist-CM1-Tp30.js +1 -0
- package/dist/web/assets/dist-CfeLR_Q4.js +1 -0
- package/dist/web/assets/dist-CrUcXP5H.js +1 -0
- package/dist/web/assets/dist-CubY9gnU.js +1 -0
- package/dist/web/assets/dist-D0R-qVeY.js +1 -0
- package/dist/web/assets/dist-D5EOvBuF.js +1 -0
- package/dist/web/assets/dist-DcGC8X1E.js +11 -0
- package/dist/web/assets/dist-EljmWMub.js +9 -0
- package/dist/web/assets/dist-ga2OvaLo.js +1 -0
- package/dist/web/assets/dist-tv7yScoP.js +1 -0
- package/dist/web/assets/dockerfile-DJkHQgkl.js +1 -0
- package/dist/web/assets/dtd-DTF72YNO.js +1 -0
- package/dist/web/assets/dylan-S7ucR4pR.js +1 -0
- package/dist/web/assets/ebnf-D4c0_ac3.js +1 -0
- package/dist/web/assets/ebnfDiagram-V4P3TTPT-DPsfv1uf.js +1 -0
- package/dist/web/assets/ecl-BVIeWmwY.js +1 -0
- package/dist/web/assets/eiffel-BEjRio4Q.js +1 -0
- package/dist/web/assets/elk-QONTBCTQ-DoINDZCB.js +27 -0
- package/dist/web/assets/elm-Cshzl8qu.js +1 -0
- package/dist/web/assets/erDiagram-KYQIGQAA-ChPWyTRi.js +99 -0
- package/dist/web/assets/erlang-BV0c4Hdn.js +1 -0
- package/dist/web/assets/eventmodeling-K75KTNOO-B1BhcpV6.js +1 -0
- package/dist/web/assets/factor-LKH5gN8L.js +1 -0
- package/dist/web/assets/fcl-ClOhbFR7.js +1 -0
- package/dist/web/assets/flowDiagram-IUGLLWBU-DZzMwlmj.js +1 -0
- package/dist/web/assets/forth-D6RzAl64.js +1 -0
- package/dist/web/assets/fortran-Bt6PBEDR.js +1 -0
- package/dist/web/assets/ganttDiagram-R7GPNTJY-BpChuBNI.js +292 -0
- package/dist/web/assets/gas-BHEdbvp9.js +1 -0
- package/dist/web/assets/gherkin-oBAE_ms0.js +1 -0
- package/dist/web/assets/gitGraph-VSP46ZUC-BhIFPres.js +1 -0
- package/dist/web/assets/gitGraphDiagram-PDYL7XHY-CHejLr2o.js +106 -0
- package/dist/web/assets/graphlib-DS17s2tU.js +1 -0
- package/dist/web/assets/groovy-CUpZ7dEl.js +1 -0
- package/dist/web/assets/haskell-BRsoo5mP.js +1 -0
- package/dist/web/assets/haxe-DjVOVvNP.js +1 -0
- package/dist/web/assets/http-CLVgA2GD.js +1 -0
- package/dist/web/assets/idl-BUZw3wgd.js +1 -0
- package/dist/web/assets/index-CQGURl2V.css +1 -0
- package/dist/web/assets/index-CafleYLD.js +132 -0
- package/dist/web/assets/info-OHQRW6UA-p_XOG9kY.js +1 -0
- package/dist/web/assets/infoDiagram-MVDRKAX5-BjEI8OE0.js +2 -0
- package/dist/web/assets/init-C-OQMol4.js +1 -0
- package/dist/web/assets/ishikawaDiagram-HPEHV2GE-B_7LEH0q.js +70 -0
- package/dist/web/assets/javascript-Bu8mWwtz.js +1 -0
- package/dist/web/assets/journeyDiagram-BOSHW7O7-DprR7PC1.js +139 -0
- package/dist/web/assets/julia-CQfgDRfP.js +1 -0
- package/dist/web/assets/kanban-definition-FNSA4HC5-Dgn1OKTQ.js +89 -0
- package/dist/web/assets/katex-B_JcIwqj.js +257 -0
- package/dist/web/assets/katex-DMqEsVPU.js +257 -0
- package/dist/web/assets/katex-Ngnvt50Q.css +1 -0
- package/dist/web/assets/line-CsP7ezWR.js +1 -0
- package/dist/web/assets/linear-DutM4-eX.js +1 -0
- package/dist/web/assets/livescript-BXxG0Yva.js +1 -0
- package/dist/web/assets/lua-DPCEkfD_.js +1 -0
- package/dist/web/assets/mathematica-u8YMmbU0.js +1 -0
- package/dist/web/assets/mbox-BEMVcqjs.js +1 -0
- package/dist/web/assets/mermaid-parser.core-CRHYFOhU.js +7 -0
- package/dist/web/assets/mermaid.core-C-ITLWC9.js +44 -0
- package/dist/web/assets/mindmap-definition-6OY57UG3-B3gANyDJ.js +98 -0
- package/dist/web/assets/mirc-C9zpzAZU.js +1 -0
- package/dist/web/assets/mllike-B45xgp2S.js +1 -0
- package/dist/web/assets/modelica-CqHI_q-D.js +1 -0
- package/dist/web/assets/mscgen-qgSLujhx.js +1 -0
- package/dist/web/assets/mumps-BSzj6Xyz.js +1 -0
- package/dist/web/assets/nginx-8H7HVH4w.js +1 -0
- package/dist/web/assets/nsis-viPvXFiq.js +1 -0
- package/dist/web/assets/ntriples-CzMBulkp.js +1 -0
- package/dist/web/assets/octave-D2Q8cUp1.js +1 -0
- package/dist/web/assets/ordinal-BDEzSJ7C.js +1 -0
- package/dist/web/assets/oz-BwTct_5T.js +1 -0
- package/dist/web/assets/packet-JDAUHWVQ-0H1cA20q.js +1 -0
- package/dist/web/assets/pascal-Dp_KdFgX.js +1 -0
- package/dist/web/assets/path-fybaL0A-.js +1 -0
- package/dist/web/assets/pegDiagram-ECIUJNBX-BUxriBaM.js +1 -0
- package/dist/web/assets/perl-BkSkiI9m.js +1 -0
- package/dist/web/assets/pie-XZMESJXO-CSOHv2zM.js +1 -0
- package/dist/web/assets/pieDiagram-GNMPY74T-B7B_ijMh.js +39 -0
- package/dist/web/assets/pig-AF4Hwhju.js +1 -0
- package/dist/web/assets/powershell-D8WpQPaX.js +1 -0
- package/dist/web/assets/properties-C357ku5U.js +1 -0
- package/dist/web/assets/protobuf-D1ij_kNL.js +1 -0
- package/dist/web/assets/pug-Dwd_FmgJ.js +1 -0
- package/dist/web/assets/puppet-BZyAS7I4.js +1 -0
- package/dist/web/assets/python-B_1Jd8HM.js +1 -0
- package/dist/web/assets/q-B9NhS7L_.js +1 -0
- package/dist/web/assets/quadrantDiagram-D57K4MC3-CuDX_hzm.js +7 -0
- package/dist/web/assets/r-CxDmU1I4.js +1 -0
- package/dist/web/assets/radar-ABXABTNO-Bhdhmyn3.js +1 -0
- package/dist/web/assets/railroad-I3PHUGI6-D8J0asfg.js +1 -0
- package/dist/web/assets/railroad-abnf-LNEFI6M7-DSkwXAS5.js +1 -0
- package/dist/web/assets/railroad-ebnf-DWYD2UWJ-CUA5ZluT.js +1 -0
- package/dist/web/assets/railroad-peg-JR7BVNR7-DOmtcJJ_.js +1 -0
- package/dist/web/assets/railroadDiagram-Y72NRBL7-Bfa59bDk.js +1 -0
- package/dist/web/assets/requirementDiagram-EQYSW5RA-TqWBSttg.js +84 -0
- package/dist/web/assets/rough.esm-Dy-Kn_BL.js +1 -0
- package/dist/web/assets/rpm-gpDK5sbt.js +1 -0
- package/dist/web/assets/ruby-ChfNwlCY.js +1 -0
- package/dist/web/assets/sankeyDiagram-SY24JHO5-DXW4vZ49.js +40 -0
- package/dist/web/assets/sas-C2OyD2Y6.js +1 -0
- package/dist/web/assets/scheme-D9qYN0V5.js +1 -0
- package/dist/web/assets/sequenceDiagram-BLEHNHQU-bR6akpDb.js +169 -0
- package/dist/web/assets/shell-DwuoZtxw.js +1 -0
- package/dist/web/assets/sieve-tLWDfEkZ.js +1 -0
- package/dist/web/assets/simple-mode-DXiLM1-G.js +1 -0
- package/dist/web/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
- package/dist/web/assets/smalltalk-BLp5-jwC.js +1 -0
- package/dist/web/assets/solr-B78wSQJQ.js +1 -0
- package/dist/web/assets/sparql-Dz-mlCAC.js +1 -0
- package/dist/web/assets/spreadsheet-CTIncYxj.js +1 -0
- package/dist/web/assets/sql-DuQMFDvy.js +1 -0
- package/dist/web/assets/src-DWy4o1sh.js +1 -0
- package/dist/web/assets/stateDiagram-v2-A6IESKWZ-G-L9fY1U.js +291 -0
- package/dist/web/assets/stex-DNzd62Q_.js +1 -0
- package/dist/web/assets/stylus-BOVgKnng.js +1 -0
- package/dist/web/assets/swift-DKB6_1j6.js +1 -0
- package/dist/web/assets/swimlanes-B3ENRKFQ-Bvz0uaIY.js +1 -0
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-D8Xb8aOe.js +8 -0
- package/dist/web/assets/tcl-BGfruO1u.js +1 -0
- package/dist/web/assets/textile-C4jVoHG1.js +1 -0
- package/dist/web/assets/tiddlywiki-VlUiK86J.js +1 -0
- package/dist/web/assets/tiki-DTszW0OQ.js +1 -0
- package/dist/web/assets/timeline-definition-JXYKGLGB-CLuowMKW.js +120 -0
- package/dist/web/assets/toml-BPTmHmyx.js +1 -0
- package/dist/web/assets/treeView-D4JQ5SDB-P9KKVCsV.js +1 -0
- package/dist/web/assets/treemap-SAJKECNS-CJHxQeBA.js +1 -0
- package/dist/web/assets/troff-C2dAgh7P.js +1 -0
- package/dist/web/assets/ttcn-PPSTk1ow.js +1 -0
- package/dist/web/assets/ttcn-cfg-2b4Gb5sE.js +1 -0
- package/dist/web/assets/turtle-Cx3rYX2g.js +1 -0
- package/dist/web/assets/usecaseDiagram-WPOLBNNX-Dp-yumhB.js +328 -0
- package/dist/web/assets/vb-BthdM_4N.js +1 -0
- package/dist/web/assets/vbscript-D9f6rSsU.js +1 -0
- package/dist/web/assets/velocity-CqftRsjg.js +1 -0
- package/dist/web/assets/vennDiagram-Q3Y3IDCW-WYfAKKah.js +34 -0
- package/dist/web/assets/verilog-CjI9Y6RI.js +1 -0
- package/dist/web/assets/vhdl-kS471soi.js +1 -0
- package/dist/web/assets/wardley-7MLQ67FV-16kL0OjA.js +1 -0
- package/dist/web/assets/wardleyDiagram-IVAIDKWA-CKpO66Ll.js +78 -0
- package/dist/web/assets/webidl-D5jiJvOU.js +1 -0
- package/dist/web/assets/xquery-BKJx4mf9.js +1 -0
- package/dist/web/assets/xychartDiagram-4URNHDU4-BAlKKoEI.js +7 -0
- package/dist/web/assets/yacas-CXXgtw0p.js +1 -0
- package/dist/web/assets/z80-Co3PbHdE.js +1 -0
- package/dist/web/index.html +17 -0
- package/package.json +83 -3
- package/templates/main.md +5 -0
- package/templates/method/area/docs/tasks/.gitkeep +0 -0
- package/templates/method/area-main.md +9 -0
- package/templates/method/root/docs/tasks/_TEMPLATE.md +28 -0
- package/templates/method/skills/markode-close-session/SKILL.md +20 -0
- package/templates/method/skills/markode-method/SKILL.md +68 -0
- package/templates/method/skills/markode-method/templates/architecture-topic.md +12 -0
- package/templates/method/skills/markode-method/templates/phase.md +22 -0
- package/templates/method/skills/markode-method/templates/project-architecture.md +14 -0
- package/templates/method/skills/markode-method/templates/vision.md +22 -0
- package/templates/method/skills/markode-new-task/SKILL.md +22 -0
- package/templates/method/skills/markode-status/SKILL.md +24 -0
- package/templates/proposals/SKILL.md +139 -0
- package/templates/rules/ask-before-commit.md +4 -0
- package/templates/rules/ask-new-dependencies.md +4 -0
- package/templates/rules/ask-when-unclear.md +4 -0
- package/templates/rules/match-conventions.md +4 -0
- package/templates/rules/minimal-changes.md +4 -0
- package/templates/rules/protect-secrets.md +4 -0
- package/templates/rules/tests-with-changes.md +4 -0
- package/templates/rules/update-docs.md +4 -0
- package/templates/rules/verify-before-done.md +4 -0
- package/templates/sdd/openspec/openspec/README.md +89 -0
- package/templates/sdd/openspec/openspec/changes/archive/.gitkeep +0 -0
- package/templates/sdd/openspec/openspec/config.yaml +12 -0
- package/templates/sdd/openspec/openspec/specs/.gitkeep +0 -0
- package/templates/sdd/speckit/.specify/memory/constitution.md +30 -0
- package/templates/sdd/speckit/specs/README.md +82 -0
- package/templates/skill/SKILL.md +109 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 rafiqui1987
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,481 @@
|
|
|
1
|
-
#
|
|
1
|
+
# markode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/rafiqui1987/markode/actions/workflows/ci.yml)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
**Your project's Markdown, made for two readers: you and your AI agent.**
|
|
7
|
+
|
|
8
|
+
Run `markode` in any repository and every `.md` file (`README.md`, `CLAUDE.md`, `AGENTS.md`, `docs/`…)
|
|
9
|
+
opens in one editor that is also the preview. You read and edit documents, not syntax. The files stay
|
|
10
|
+
plain Markdown, saved exactly as written, so Git diffs stay clean and any agent reads them as they are.
|
|
11
|
+
|
|
12
|
+
On top of the viewer, and only if you want it, markode helps you and your agent work from the same
|
|
13
|
+
docs: short instructions that point instead of repeat, tasks that remember where you stopped, and
|
|
14
|
+
decisions you answer with a click instead of a wall of chat.
|
|
15
|
+
|
|
16
|
+
<picture>
|
|
17
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/screenshot-dark.png">
|
|
18
|
+
<img alt="markode editor: a repository with a front end and a back end, each with its own tasks; a phase listing tasks from both, a comment thread like in Word and a Mermaid diagram" src="docs/assets/screenshot-light.png">
|
|
19
|
+
</picture>
|
|
20
|
+
|
|
21
|
+
## The markode philosophy
|
|
22
|
+
|
|
23
|
+
AI agents made project docs important again, and they made them worse. `CLAUDE.md` files grow into
|
|
24
|
+
hundreds of lines of generic advice, folder listings the agent can read by itself, and the same
|
|
25
|
+
decision copied in three places. They cost tokens on every message, the agent still searches the whole
|
|
26
|
+
repository, and nobody keeps them up to date. Meanwhile the human, who has to review all of it, reads
|
|
27
|
+
raw Markdown in a split screen or not at all.
|
|
28
|
+
|
|
29
|
+
markode is built on five ideas:
|
|
30
|
+
|
|
31
|
+
**1. Write less, point better.** The docs are a **map**, not an encyclopedia. Write only what the code
|
|
32
|
+
can't tell: decisions and why, hidden conventions, the state of the work. Each fact lives in one place
|
|
33
|
+
and everything else links to it. A doc is created when there is something real to put in it, never as
|
|
34
|
+
an empty template.
|
|
35
|
+
|
|
36
|
+
**2. The docs are the memory, not the chat.** Work lives in task files with a status and a next step.
|
|
37
|
+
Decisions live in the architecture docs. Tomorrow, a new session (or a teammate, or another agent) reads
|
|
38
|
+
the map, finds what is in progress and picks up where you stopped, without you explaining it again.
|
|
39
|
+
|
|
40
|
+
**3. One plain file, two ways to read it.** You see rendered tables, diagrams and checklists, and you
|
|
41
|
+
comment like in Word. The agent sees plain Markdown and HTML comments, invisible on GitHub. Nothing is
|
|
42
|
+
converted, nothing is locked in a database: delete markode tomorrow and every file still works.
|
|
43
|
+
|
|
44
|
+
**4. Talk through the docs.** When a question has options, the agent writes a proposal with diagrams
|
|
45
|
+
and you answer by ticking and commenting. Your comments and edits reach the agent while it works. The
|
|
46
|
+
decision ends up in the docs it changes, not lost in a conversation.
|
|
47
|
+
|
|
48
|
+
**5. Only what you ask for, for any agent.** The viewer writes nothing to your project. Everything
|
|
49
|
+
else is a module you turn on or off, and turning it off removes exactly what markode added. It works
|
|
50
|
+
with Claude Code, Codex, Cursor, Gemini, Copilot and any agent that reads `CLAUDE.md`, `AGENTS.md` or
|
|
51
|
+
skills.
|
|
52
|
+
|
|
53
|
+
What it looks like in a repository with a front end and a back end:
|
|
54
|
+
|
|
55
|
+
```tree
|
|
56
|
+
CLAUDE.md # the map: projects, where their docs live, how to start a session
|
|
57
|
+
docs/ # vision, shared decisions, phases, work across projects
|
|
58
|
+
service/
|
|
59
|
+
CLAUDE.md # what this project is and its commands, nothing more
|
|
60
|
+
docs/tasks/SVC-007-....md # in-progress · next step: retry payments on timeout
|
|
61
|
+
front/
|
|
62
|
+
docs/tasks/FRO-012-....md # blocked · waits on SVC-007
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Yesterday you worked in `service/` and `front/`. Today you ask the agent *"what's pending?"*
|
|
66
|
+
(`/markode-status`). It reads the map, scans only the task files of each project, and answers:
|
|
67
|
+
SVC-007 is in progress and its next step is the retry; FRO-012 is blocked on it; phase 2 has four
|
|
68
|
+
pending tasks; and one change in `front/` isn't covered by any task. No digging through the code, no
|
|
69
|
+
explaining it all again.
|
|
70
|
+
|
|
71
|
+
markode can't force an agent to follow the map, but it makes the right path the shortest one.
|
|
72
|
+
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
Requires Node.js 20 or newer. From the root of any project (monorepos included):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npx @rafiqui987/markode
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The editor opens at `http://localhost:4319` (it only listens on `127.0.0.1`). The very first time,
|
|
82
|
+
markode asks a single question: what to install besides the viewer.
|
|
83
|
+
|
|
84
|
+
| Choice | What you get |
|
|
85
|
+
|---|---|
|
|
86
|
+
| **Viewer only** | See and edit every `.md` file. Nothing is written to the project. |
|
|
87
|
+
| **Viewer + AI agent** (recommended) | The viewer, plus everything your agent needs to work with these docs: its skill, working rules, proposals, comments, live changes and translations. |
|
|
88
|
+
| **Complete** | All of the above, plus the dashboard and a docs structure for vision, architecture, phases and tasks. |
|
|
89
|
+
| **Choose the modules** | Pick each module from the list below. |
|
|
90
|
+
|
|
91
|
+
Your answer becomes the default for new projects (`~/.markode/defaults.json`), so they don't ask again;
|
|
92
|
+
change it with `markode setup`. Everything else is detected: the main doc (`CLAUDE.md`, `AGENTS.md`
|
|
93
|
+
or both), the agents the project uses, the language its docs are written in, the projects of a
|
|
94
|
+
monorepo, and an existing OpenSpec or Spec Kit setup.
|
|
95
|
+
|
|
96
|
+
### Modules
|
|
97
|
+
|
|
98
|
+
Turn any of them on or off later in **Settings → Features** (or `markode features <module> on|off`).
|
|
99
|
+
Turning one off removes only what markode added; your docs, tasks, proposals and comments stay.
|
|
100
|
+
|
|
101
|
+
| Module | What it does | What it writes |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| **AI agent** | Teaches your agent how to work with these docs, and lets you comment on any text for it. | The `markode` skill in `.claude/skills/` and/or `.agents/skills/`, a "Working rules" section in the main doc with the source language |
|
|
104
|
+
| **Working rules** | Rules the agent follows in this project, chosen in the Rules tab. Needs the AI agent. | Inside the "Working rules" section |
|
|
105
|
+
| **Proposals** | The agent answers big questions with a doc you answer by ticking options and commenting. Needs the AI agent. | The `markode-proposals` skill, a "Proposals" section in the main doc |
|
|
106
|
+
| **Live changes** | Claude Code hears about your edits and comments while it works. Needs the AI agent. | Personal hooks in `.claude/settings.local.json` |
|
|
107
|
+
| **Translations** | Read and edit the docs in your language; the agent translates them. Needs the AI agent. | Only `.markode/` (personal) |
|
|
108
|
+
| **Dashboard and tasks** | A Dashboard tab with docs, proposals, phases and tasks; with the AI agent, also the structure for them (the markode method). | `docs/`, the `markode-*` method skills, a "Workflow" section in the main doc |
|
|
109
|
+
| **Skills** | A tab to browse and edit your agents' skills and add them to the project. | Nothing |
|
|
110
|
+
| **Hide in VS Code** | Hides `.markode/` from the VS Code explorer. | `.vscode/settings.json` |
|
|
111
|
+
|
|
112
|
+
markode keeps its own state in `.markode/`, which ignores itself in git (`.markode/.gitignore`), so
|
|
113
|
+
your `.gitignore` is never touched. Sections it writes in your main doc sit between markers like
|
|
114
|
+
`<!-- markode:rules:start -->` and `<!-- markode:rules:end -->`; the rest of the file is yours.
|
|
115
|
+
|
|
116
|
+
## What it does
|
|
117
|
+
|
|
118
|
+

|
|
119
|
+
|
|
120
|
+
### 1. Every Markdown file of the project, in one place
|
|
121
|
+
|
|
122
|
+
A file tree with every `.md` in the folder where you run it, folders first. Search, expand or collapse
|
|
123
|
+
all, create files and folders inline, hide what you don't need (`.markodeignore`) and delete from the
|
|
124
|
+
right-click menu. Resize the sidebar by dragging its edge, or hide it for more room. Links between docs
|
|
125
|
+
work: click a relative `.md` link and it opens in markode.
|
|
126
|
+
|
|
127
|
+
### 2. Read the document, not the syntax
|
|
128
|
+
|
|
129
|
+
There is no "editor | preview" split. The **markode view** renders the document as it looks and lets
|
|
130
|
+
you write in it directly: headings, lists and quotes keep their marks out of the way, and the cursor
|
|
131
|
+
never lands inside them. Code blocks, tables, math and images show their Markdown only when you click
|
|
132
|
+
to edit them. One button switches the open file to the **Markdown view** (plain source) and back,
|
|
133
|
+
keeping your place; every file opens in the markode view.
|
|
134
|
+
|
|
135
|
+
The toolbar next to the breadcrumb has undo, redo, **discard** (back to how the file was when you
|
|
136
|
+
opened it), **find and replace** (`Ctrl+F`, `Ctrl+H`) and **copy** as Markdown or as formatted text
|
|
137
|
+
for an email or a chat.
|
|
138
|
+
|
|
139
|
+
### 3. Formatting without remembering syntax
|
|
140
|
+
|
|
141
|
+
- **`/` commands**: type `/` at the start of a line (or `Ctrl+Space` anywhere) for a menu of headings,
|
|
142
|
+
lists, checklists, single-choice lists, tables, code blocks, diagrams, quotes, links, frontmatter,
|
|
143
|
+
and comments and markers. Each option applies to the current line or to every selected line
|
|
144
|
+
(numbered lists count up). Pick with the number or the arrows; `0`, `←` or `Backspace` goes back.
|
|
145
|
+
- **Selection toolbar**: select text to copy it or turn it into bold, italic, strikethrough, code or a
|
|
146
|
+
link. Hover a button for its variants (`**`/`__`, `*`/`_`, `***`). Formatting inside a link's text
|
|
147
|
+
keeps the link.
|
|
148
|
+
- **Links**: hover one to see its URL, copy it or edit its text and target; click to follow it.
|
|
149
|
+
|
|
150
|
+
### 4. Diagrams, tables and lists that are easy to work with
|
|
151
|
+
|
|
152
|
+
- **Mermaid diagrams** (flowcharts, sequences…) render in place and follow the light or dark theme.
|
|
153
|
+
` ```tree ` blocks draw folder structures.
|
|
154
|
+
- **Tables**: edit cells directly. Right-click to insert or delete rows and columns; drag borders to
|
|
155
|
+
resize columns (view only, the file is not changed).
|
|
156
|
+
- **Tables from Excel or Google Sheets**: paste a range of cells and it becomes a Markdown table.
|
|
157
|
+
`Alt+H` toggles whether the first row is a header.
|
|
158
|
+
- **Checklists**: click to tick. After `Enter` on a task, `Ctrl+Enter` ticks the new one.
|
|
159
|
+
- And more: KaTeX math (`$x^2$`, `$$…$$`), footnotes on hover, local and remote images, code blocks with
|
|
160
|
+
only their language label showing.
|
|
161
|
+
|
|
162
|
+
### 5. Notes for the agent, invisible on GitHub
|
|
163
|
+
|
|
164
|
+
HTML comments are how a Markdown file talks to an agent without showing up for readers. markode makes
|
|
165
|
+
them visible and editable without the clutter (from the `/` menu, "Comments and markers"):
|
|
166
|
+
|
|
167
|
+
| You write | markode shows | Use it for |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| `<!-- any text -->` | a small icon; the text on hover | a hidden note for the agent or your future self |
|
|
170
|
+
| `<!-- region:auth:start -->` … `<!-- region:auth:end -->` | a bracket with the region's name | a section the agent should treat as one unit (renaming the start renames the end) |
|
|
171
|
+
| `<!-- tag:draft -->` | a tag chip | a marker the agent or a script can look for |
|
|
172
|
+
| `<!-- comment by Ana, …: … -->` | a comment thread, like in Word | a discussion on a piece of text (with the AI agent module) |
|
|
173
|
+
|
|
174
|
+
### 6. Work in your language
|
|
175
|
+
|
|
176
|
+
Most AI agents, and most teams, work best with docs in English. If English isn't easy for you, you
|
|
177
|
+
don't have to choose:
|
|
178
|
+
|
|
179
|
+
- Add a language to review the docs in, from **Settings → Document languages** or with
|
|
180
|
+
`markode translate`: Spanish, French, Portuguese, German or Italian, or **type any other** (Japanese,
|
|
181
|
+
Dutch…). Then ask your agent for **`/markode translate`** (markode has a button to copy it), and
|
|
182
|
+
markode shows **every doc in that language**. Read the architecture, tick tasks, write notes and fix
|
|
183
|
+
a rule, all in your language.
|
|
184
|
+
- The files in the repository **stay in one source language**, detected from your docs on setup, so
|
|
185
|
+
the agent and the rest of the team keep reading one consistent version.
|
|
186
|
+
- Your edits are kept as a translation until you ask for `/markode translate` again. Before changing
|
|
187
|
+
a source file, the agent lists what would change and applies only what you approve. The top bar
|
|
188
|
+
shows how many docs are behind, and copies the command when clicked.
|
|
189
|
+
- Translating is always on purpose: it never happens as a side effect of other work.
|
|
190
|
+
- The menus don't depend on the docs' language: pick English, Spanish, French, Portuguese, German or
|
|
191
|
+
Italian in **Settings → General**.
|
|
192
|
+
|
|
193
|
+
Example: you open `docs/tasks/T-004-login.md` in Spanish, add an acceptance criterion and tick two
|
|
194
|
+
others. After `/markode translate` and your OK, the English file has the new criterion and the ticks,
|
|
195
|
+
and the agent works from it.
|
|
196
|
+
|
|
197
|
+
### 7. A method to plan and follow the work
|
|
198
|
+
|
|
199
|
+
The **Dashboard and tasks** module sets up the **markode method**, a way of organizing the project so
|
|
200
|
+
that you and the agent always know what is being built, how, and what comes next:
|
|
201
|
+
|
|
202
|
+
```tree
|
|
203
|
+
CLAUDE.md # short: map, commands, how to start and close a session
|
|
204
|
+
docs/
|
|
205
|
+
tasks/T-001-....md # one file per task: status, goal, acceptance checklist, next step, log
|
|
206
|
+
vision.md # when you define what the project is, for whom, what is out of scope
|
|
207
|
+
architecture/<topic>.md # with the first decision on that topic
|
|
208
|
+
phases/02-checkout.md # when you plan a milestone: goal, its tasks, definition of done
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
```mermaid
|
|
212
|
+
flowchart LR
|
|
213
|
+
V[Vision] --> A[Architecture] --> P[Phase] --> T[Tasks] --> W[Work] --> C[Close the session]
|
|
214
|
+
C -->|next step| W
|
|
215
|
+
C -->|phase done| P
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
- **It starts small**: the setup creates only the task folder and its template. The agent creates the
|
|
219
|
+
vision, architecture and phase docs from templates (skill `markode-method`) when there is something
|
|
220
|
+
to write. A task's status lives only in its file: there is no index to keep in sync.
|
|
221
|
+
- **It knows what kind of project it is**, detected from its files, and writes only the guidance that
|
|
222
|
+
kind needs (`markode init --custom` asks instead):
|
|
223
|
+
|
|
224
|
+
| Kind | Detected by | Its docs |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| App | framework, `bin`, `Dockerfile`, `main.go`… | vision, architecture, phases |
|
|
227
|
+
| Library | `main`/`exports` in a public package, Cargo `[lib]` | public API and versioning, changelog |
|
|
228
|
+
| Mobile | React Native, Flutter, `android/` + `ios/` | releases and stores |
|
|
229
|
+
| Data / ML | notebooks, `dvc.yaml`, `MLproject` | datasets, experiment log |
|
|
230
|
+
| Infrastructure | Terraform, Pulumi, Helm, Kustomize | runbooks |
|
|
231
|
+
| Microservices | several services + proto/OpenAPI or compose | contracts as shared architecture |
|
|
232
|
+
|
|
233
|
+
It also recognizes monorepos with workspaces, a front end and a back end without workspaces, and
|
|
234
|
+
folders of repositories; and if the project already has docs, it points the agent to them instead
|
|
235
|
+
of creating new ones.
|
|
236
|
+
- **The main doc stays short** and points to `docs/`. If `CLAUDE.md` or `AGENTS.md` already exist,
|
|
237
|
+
they are not rewritten: markode adds a "Workflow" section with the map and the session routine.
|
|
238
|
+
- **Sessions pick up where they stopped**: the agent looks for tasks `in-progress`, reads their "Next
|
|
239
|
+
step" and tells you where you left off. `/markode-status` sums up what is in progress, blocked and
|
|
240
|
+
pending, per project; `/markode-new-task` creates a task in the right place; and
|
|
241
|
+
`/markode-close-session` logs what was done, the next step and the status.
|
|
242
|
+
- **Monorepos**: each project (`apps/web`, `services/api`… or each repository in a folder of repos)
|
|
243
|
+
gets its own short `CLAUDE.md`/`AGENTS.md`, tasks with its own prefix (`WEB-001`, `API-001`),
|
|
244
|
+
proposals and, with its first decision, a `docs/ARCHITECTURE.md`. The root main doc is the
|
|
245
|
+
overview: a table of the projects, what each one is and where its docs live. The root `docs/` holds
|
|
246
|
+
vision, phases and work across projects (`CORE-001`). The agent reads only the project it is
|
|
247
|
+
working on.
|
|
248
|
+
- **Every agent finds the instructions**: Claude Code reads `CLAUDE.md`; Codex, Cursor, Gemini and
|
|
249
|
+
others read `AGENTS.md`. Where a folder has only one, markode offers the other, pointing to it (a
|
|
250
|
+
one-line `CLAUDE.md` with `@AGENTS.md`, or an `AGENTS.md` that sends agents to `CLAUDE.md`), in the
|
|
251
|
+
Dashboard and with `markode link`. Nothing is copied; `markode link --skip` stops the offer.
|
|
252
|
+
- **The Dashboard** shows each phase with its progress and tasks, and a board of what is in progress,
|
|
253
|
+
blocked and pending.
|
|
254
|
+
|
|
255
|
+
**Prefer spec-driven development?** Projects that already use one of these are detected, and the
|
|
256
|
+
Dashboard follows them; `markode init --custom` can install them for you:
|
|
257
|
+
|
|
258
|
+
| Option | What you get |
|
|
259
|
+
|---|---|
|
|
260
|
+
| **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** | `openspec/` with specs and proposed changes; the dashboard shows each change and its tasks |
|
|
261
|
+
| **[GitHub Spec Kit](https://github.com/github/spec-kit)** | a constitution and one folder per feature (spec → plan → tasks); the dashboard shows what each has |
|
|
262
|
+
|
|
263
|
+
markode runs their official installer, which also adds their commands to your agent (`/opsx:*`,
|
|
264
|
+
`/speckit-*`). If it can't (Spec Kit needs [uv](https://docs.astral.sh/uv/)), it creates a compatible
|
|
265
|
+
structure with a guide on how to add them later.
|
|
266
|
+
|
|
267
|
+
### 8. Proposals and comments: answer the agent with clicks
|
|
268
|
+
|
|
269
|
+
When an answer would be long or has options to choose from (or when you ask for one), the agent writes
|
|
270
|
+
a **proposal** instead of a long chat message: options with small ASCII or Mermaid diagrams, choices to
|
|
271
|
+
tick, open questions, and the docs the decision will change. You answer in markode:
|
|
272
|
+
|
|
273
|
+
```text
|
|
274
|
+
┌ Proposal: Authentication ─────────────────────────────┐
|
|
275
|
+
│ Option A (recommended) │
|
|
276
|
+
│ Browser ──REST──▶ Gateway ──gRPC──▶ Users ──▶ (DB) │
|
|
277
|
+
│ │
|
|
278
|
+
│ Your choice │
|
|
279
|
+
│ (•) A: gateway validates │
|
|
280
|
+
│ ( ) B: each service validates │
|
|
281
|
+
│ │
|
|
282
|
+
│ [ Done, send my answer ] │
|
|
283
|
+
└───────────────────────────────────────────────────────┘
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
- **Tick options**: a list marked `<!-- choose: one -->` behaves like radio buttons; any other
|
|
287
|
+
checklist allows several.
|
|
288
|
+
- **Comment like in Word**: select text and press 💬. The text is highlighted and the thread shows next
|
|
289
|
+
to it, with replies and a button to resolve it. In the file, a comment is an HTML comment, invisible
|
|
290
|
+
on GitHub and readable by the agent:
|
|
291
|
+
|
|
292
|
+
```md
|
|
293
|
+
- [x] A: gateway validates
|
|
294
|
+
<!-- comment by Ana, 2026-10-22, on "gateway validates": What if it goes down? -->
|
|
295
|
+
<!-- reply by AI, 2026-10-22: Two instances minimum; added to the architecture. -->
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
- **Send your answer**: the agent is waiting on it in the background (`markode wait`) and continues by
|
|
299
|
+
itself; without an open session, the button copies a message to paste in your chat. The agent
|
|
300
|
+
replies to your comments and updates every doc that depends on the decision (tasks, phases,
|
|
301
|
+
architecture…).
|
|
302
|
+
- **Then it is archived**: the decision lives in those docs, and the proposal moves to an `applied/`
|
|
303
|
+
folder next to it, hidden in markode (shown with "show ignored"), left out of the dashboard, checks
|
|
304
|
+
and translations, and never read by the agent unless you ask about it.
|
|
305
|
+
- In a monorepo, proposals are organized **by project and topic** (`apps/web/docs/proposals/auth/…`);
|
|
306
|
+
in a big single project they can be organized by topic instead of one folder.
|
|
307
|
+
|
|
308
|
+
### 9. Your comments reach the agent while it works
|
|
309
|
+
|
|
310
|
+
You don't have to stop the agent to tell it something. Keep editing and commenting in markode: the
|
|
311
|
+
agent learns what changed (the **Live changes** module does it after every step in Claude Code; other
|
|
312
|
+
agents check as their skill tells them):
|
|
313
|
+
|
|
314
|
+
- a doc you edited, and which section: the agent re-reads it before working on that part;
|
|
315
|
+
- a comment on what it is working on: it replies below it and applies it;
|
|
316
|
+
- a comment on anything else: it asks you in one line whether to take it now.
|
|
317
|
+
|
|
318
|
+
### 10. Your AI agent's skills, and which ones this project really has
|
|
319
|
+
|
|
320
|
+
Skills teach an agent how to do a job: deploy, review a pull request, write a changelog. They pile up
|
|
321
|
+
in many places: your own for Claude Code (`~/.claude/skills`), for Codex, Gemini, Copilot or Cursor,
|
|
322
|
+
the shared `~/.agents/skills`, and each project's `.claude/skills/` or `.agents/skills/`. It is hard to
|
|
323
|
+
know what an agent can actually use in a given project, and copying skills around "just in case"
|
|
324
|
+
duplicates them, lets copies go stale, and costs context in every session.
|
|
325
|
+
|
|
326
|
+
The **Skills** tab lists every global skill you have ([Agent Skills](https://agentskills.io) format)
|
|
327
|
+
and tells you, for the agents this project uses, where each one stands:
|
|
328
|
+
|
|
329
|
+
| Status | What it means | What to do |
|
|
330
|
+
|---|---|---|
|
|
331
|
+
| **Active for Claude (global)** | Claude Code already uses it in every project. | Nothing. **Share with the team** copies it into the repository only if your teammates (or CI) need it too. |
|
|
332
|
+
| **Not visible to Claude** | It belongs to another agent (e.g. a Codex skill): Claude can't use it here. | **Use with Claude** copies it into `.claude/skills/`. Review it after: it may mention that agent's commands. |
|
|
333
|
+
| **In the project** | Copied into this project: every clone has it. | Nothing. |
|
|
334
|
+
| **Global and in the project** | Two copies. On your machine Claude Code runs your global one (a personal skill wins over a project skill with the same name); the team gets the project one. | Keep the project copy only to share it. |
|
|
335
|
+
| **Project copy differs** | The project's `SKILL.md` is not the same as your global one. | Click to update it from the global one, or keep the project's version on purpose. |
|
|
336
|
+
|
|
337
|
+
You can also tag skills to group them (tags live in `~/.markode/skills.json`, never in the skill),
|
|
338
|
+
read and edit a `SKILL.md` in place, and see problems that would stop an agent from loading it (a
|
|
339
|
+
missing description, a name that doesn't match its folder…).
|
|
340
|
+
|
|
341
|
+
### 11. Also included
|
|
342
|
+
|
|
343
|
+
- **Changes**: Git diff of your Markdown, grouped by folder and section.
|
|
344
|
+
- **Rules**: your library of reusable rules, written into `CLAUDE.md` or `AGENTS.md` where you apply
|
|
345
|
+
them. It starts with common ones for AI agents (ask before committing, verify before saying it's done,
|
|
346
|
+
minimal changes, protect secrets…); edit them and add your own. None is applied unless you choose
|
|
347
|
+
it. The library lives in `~/.markode/rules/`.
|
|
348
|
+
- **Settings**, by section: General (interface language, theme), Features (the modules, with what each
|
|
349
|
+
one does and writes), Editor (font, size, line spacing, margins, line width, wrapping) and Document
|
|
350
|
+
languages.
|
|
351
|
+
|
|
352
|
+
## Keyboard shortcuts
|
|
353
|
+
|
|
354
|
+
| Keys | Action |
|
|
355
|
+
|---|---|
|
|
356
|
+
| `/` at the start of a line, `Ctrl+Space` | Insert menu |
|
|
357
|
+
| `0`, `←`, `Backspace` in the menu | Back to the previous level |
|
|
358
|
+
| `Ctrl+Enter` | Tick or untick the task on the current line |
|
|
359
|
+
| `Alt+H` | After pasting a table from a spreadsheet: toggle the header row |
|
|
360
|
+
| `Ctrl+Z` / `Ctrl+Y` | Undo / redo |
|
|
361
|
+
| `Ctrl+F` / `Ctrl+H` | Find / find and replace (box at the top right) |
|
|
362
|
+
| `Enter` / `Shift+Enter` | Next / previous match |
|
|
363
|
+
| `Alt+C` / `Alt+W` / `Alt+R` | Match case / whole word / regular expression |
|
|
364
|
+
| `Escape` | Close a menu or the selection toolbar |
|
|
365
|
+
|
|
366
|
+
## Commands
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
markode # set up the project if needed, then open the editor
|
|
370
|
+
markode serve # open the editor without the setup
|
|
371
|
+
markode serve --port 5000 --no-open
|
|
372
|
+
markode init # run the setup again: only adds modules (your defaults, if saved)
|
|
373
|
+
markode init --profile full # no questions: viewer, agent or full
|
|
374
|
+
markode init --yes # no questions: your defaults, or viewer + AI agent
|
|
375
|
+
markode init --custom # choose each module and answer every question for this project
|
|
376
|
+
markode setup # change your defaults, or switch to asking in each project
|
|
377
|
+
markode setup --custom # also choose the main doc, language, rules and monorepo layout
|
|
378
|
+
markode -D # first run: don't save your choice as the default
|
|
379
|
+
markode features # which modules are on, with what each one does
|
|
380
|
+
markode features live off # turn a module on or off (same as Settings → Features)
|
|
381
|
+
markode translate # choose languages to review the docs in (also: markode --translate)
|
|
382
|
+
markode link # only CLAUDE.md or only AGENTS.md? add the other one, pointing to it
|
|
383
|
+
markode -v # version
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
To keep it installed: `npm install -g @rafiqui987/markode` (or `pnpm add -g @rafiqui987/markode`).
|
|
387
|
+
Installing it also makes the Claude Code hooks faster than running through `npx`.
|
|
388
|
+
|
|
389
|
+
## For AI agents
|
|
390
|
+
|
|
391
|
+
The AI agent module installs the `markode` skill where the project's agents read skills
|
|
392
|
+
(`.claude/skills/` for Claude Code, `.agents/skills/` for Codex, Copilot, Gemini and others). It tells
|
|
393
|
+
the agent how to write Markdown that markode presents well, and gives it two commands:
|
|
394
|
+
|
|
395
|
+
| Command | What the agent does | When |
|
|
396
|
+
|---|---|---|
|
|
397
|
+
| `/markode sync` | Keeps the docs consistent: applies answered proposals, ticks phases from their tasks, checks the projects table and broken links (`markode check`) | Start and end of a session, after editing docs |
|
|
398
|
+
| `/markode translate` | Translates what is behind; asks before changing any source file | Only when you ask |
|
|
399
|
+
|
|
400
|
+
markode refreshes every skill and section it installed when the editor starts, so updating markode is
|
|
401
|
+
enough. In the main doc it writes only between its markers:
|
|
402
|
+
|
|
403
|
+
- `markode:rules`: the source language and the working rules you picked;
|
|
404
|
+
- `markode:workflow`: how the project plans its work (the markode method, OpenSpec or Spec Kit);
|
|
405
|
+
- `markode:proposals`: how the agent writes proposals and answers comments.
|
|
406
|
+
|
|
407
|
+
When the agent writes a proposal, it runs `markode wait <proposal>` in the background: it waits
|
|
408
|
+
without using tokens until you press "Done, send my answer", then hands the agent your choices, open
|
|
409
|
+
questions and comments. If no session was open, the next one applies the answer first.
|
|
410
|
+
|
|
411
|
+
**Live changes.** markode logs what you save (the agent's own edits go straight to disk, so they never
|
|
412
|
+
count), and `markode changes` tells the agent what is new since it was last told. With the Live changes
|
|
413
|
+
module, in projects that use Claude Code, markode adds three hooks to `.claude/settings.local.json`
|
|
414
|
+
(personal: each teammate decides), silent while nothing changes:
|
|
415
|
+
|
|
416
|
+
```json
|
|
417
|
+
{
|
|
418
|
+
"hooks": {
|
|
419
|
+
"SessionStart": [{ "hooks": [{ "type": "command", "command": "markode changes --start" }] }],
|
|
420
|
+
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "markode changes --hook UserPromptSubmit" }] }],
|
|
421
|
+
"PostToolUse": [{ "hooks": [{ "type": "command", "command": "markode changes --hook PostToolUse" }] }]
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
Without a global install the command is `npx -y --prefer-offline @rafiqui987/markode`.
|
|
427
|
+
|
|
428
|
+
```bash
|
|
429
|
+
markode check [--json] # what /markode sync fixes
|
|
430
|
+
markode wait <proposal.md> # wait for the user's answer, then print it
|
|
431
|
+
markode changes [--json] # the user's edits and comments since last told
|
|
432
|
+
markode changes --start # a new session: what happened before is old news
|
|
433
|
+
markode translate --status [--json] # translations + files not in the source language
|
|
434
|
+
markode translate --mark [--lang xx] <path...>|--all # record translations as in sync
|
|
435
|
+
markode translate --keep <path...> # keep files in their current language
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## Uninstall
|
|
439
|
+
|
|
440
|
+
From a project: turn the modules off (`markode features agent off`, `markode features dashboard off`,
|
|
441
|
+
`markode features vscode off`) and delete `.markode/`. That removes the skills, hooks and `markode:*`
|
|
442
|
+
sections it added; your docs stay. Projects set up before 0.3 may also have a `.markode/` line in
|
|
443
|
+
`.gitignore`.
|
|
444
|
+
|
|
445
|
+
The global install:
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
npm uninstall -g @rafiqui987/markode # or: pnpm remove -g @rafiqui987/markode
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
Editor settings, your defaults, rule presets and skill tags live in `~/.markode`.
|
|
452
|
+
|
|
453
|
+
## Development
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
pnpm install
|
|
457
|
+
pnpm dev # server on :4319 (this repo as root) + Vite on http://localhost:4320
|
|
458
|
+
pnpm build # web → dist/web, CLI → dist/cli.js
|
|
459
|
+
pnpm typecheck
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
**Try the setup as a new user** with `pnpm sandbox` (after `pnpm build`): it copies a sample project
|
|
463
|
+
to a temporary folder, runs markode there with an empty `~/.markode` (so you see the first-run
|
|
464
|
+
question), and when it exits lists every file markode created or changed.
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
pnpm sandbox # sample "single": ask, install and open the editor
|
|
468
|
+
pnpm sandbox monorepo init # only the setup, then the list of files
|
|
469
|
+
pnpm sandbox agents init --profile full # a project with only AGENTS.md, no questions
|
|
470
|
+
pnpm sandbox es --keep-home init # share one sandbox ~/.markode: the second project doesn't ask
|
|
471
|
+
pnpm sandbox list # samples: empty, single, es, agents, claude, monorepo, openspec
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
To try your local build in other projects, run `pnpm build && pnpm add -g "link:$PWD"`.
|
|
475
|
+
|
|
476
|
+
See [docs/SPEC.md](docs/SPEC.md) for the specification and [CONTRIBUTING.md](CONTRIBUTING.md) to
|
|
477
|
+
contribute.
|
|
478
|
+
|
|
479
|
+
## License
|
|
480
|
+
|
|
481
|
+
[MIT](LICENSE)
|