@krelborn/markdown-review 0.3.0 → 0.4.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.
Files changed (164) hide show
  1. package/README.md +92 -44
  2. package/dist/cli.js +774 -116
  3. package/dist/web/assets/{abnfDiagram-YUKMZFIV-CWLXy0p2.js → abnfDiagram-YUKMZFIV-5p3lK0ml.js} +1 -1
  4. package/dist/web/assets/{angular-html-BqCk3qPO.js → angular-html-DtTOKQVF.js} +1 -1
  5. package/dist/web/assets/{angular-ts-BdHZzt5V.js → angular-ts-DSZF2tmF.js} +1 -1
  6. package/dist/web/assets/{apl-BmM0OXqx.js → apl-BI5mQaXa.js} +1 -1
  7. package/dist/web/assets/{arc-BxwVCTrB.js → arc-BrfkN3mA.js} +1 -1
  8. package/dist/web/assets/{architecture-WOLXFQ4H-B01ykpUW.js → architecture-WOLXFQ4H-CB2TejI2.js} +1 -1
  9. package/dist/web/assets/{architectureDiagram-47P4ROYG-BtFKs1qG.js → architectureDiagram-47P4ROYG-YLfruAdT.js} +1 -1
  10. package/dist/web/assets/{astro-CNT5ujVQ.js → astro-Bx0B2FVT.js} +1 -1
  11. package/dist/web/assets/{blade-DhAlvV-v.js → blade-BWTzueMP.js} +1 -1
  12. package/dist/web/assets/{blockDiagram-E7TT5TSB-gMFCKFl5.js → blockDiagram-E7TT5TSB-DzKCvOwD.js} +1 -1
  13. package/dist/web/assets/{c-y1bwwswS.js → c-DdobnT6K.js} +1 -1
  14. package/dist/web/assets/{c4Diagram-CRA5TL53-BE6g7Cy0.js → c4Diagram-CRA5TL53-p1ftijoG.js} +1 -1
  15. package/dist/web/assets/channel-B7Y79uhb.js +1 -0
  16. package/dist/web/assets/{chapel-O4iWcSUf.js → chapel-D6rLpKo0.js} +1 -1
  17. package/dist/web/assets/{chunk-2BW5OAIV-C7oyR3U5.js → chunk-2BW5OAIV-DT1zLa9q.js} +1 -1
  18. package/dist/web/assets/{chunk-3YJQHVM4-B137wuGG.js → chunk-3YJQHVM4-nLx0WWI4.js} +1 -1
  19. package/dist/web/assets/{chunk-4EA7E6EY-DDeWWnul.js → chunk-4EA7E6EY-C_YyuzUS.js} +1 -1
  20. package/dist/web/assets/{chunk-7TKQ45FW-CF0k8Zaz.js → chunk-7TKQ45FW-BZ15X6vU.js} +1 -1
  21. package/dist/web/assets/{chunk-AW2ZBBNX-LgaoN3H2.js → chunk-AW2ZBBNX-Ck9cAmev.js} +1 -1
  22. package/dist/web/assets/{chunk-DBDB3WZW-Cpb8IX_Y.js → chunk-DBDB3WZW-9vMgzi8H.js} +1 -1
  23. package/dist/web/assets/{chunk-E2ZNV5FY-kQ1CHQVU.js → chunk-E2ZNV5FY-CyMQFbua.js} +1 -1
  24. package/dist/web/assets/{chunk-EU5HNXII-DiRYopKP.js → chunk-EU5HNXII-CWPCfQmx.js} +1 -1
  25. package/dist/web/assets/{chunk-FVRAUYC3-BtTST9-u.js → chunk-FVRAUYC3-jyBnY8AQ.js} +1 -1
  26. package/dist/web/assets/{chunk-HJ2JQQFS-BMWLpO22.js → chunk-HJ2JQQFS-Cj_rp1Qw.js} +1 -1
  27. package/dist/web/assets/{chunk-HTAEGDNF-Ds6Ktllz.js → chunk-HTAEGDNF-pClFnSXR.js} +1 -1
  28. package/dist/web/assets/{chunk-KQW6MTUR-Cs61KkID.js → chunk-KQW6MTUR-C2m9qy9v.js} +1 -1
  29. package/dist/web/assets/{chunk-NTY3LDVX-Cb4zKiDj.js → chunk-NTY3LDVX-CnUW73mn.js} +1 -1
  30. package/dist/web/assets/{chunk-VPRB5NB3-DWCkoa9b.js → chunk-VPRB5NB3-BuB50_Ze.js} +1 -1
  31. package/dist/web/assets/{chunk-XC4XBNZT-wUQj4Qqz.js → chunk-XC4XBNZT-BsgxISHC.js} +1 -1
  32. package/dist/web/assets/{chunk-XXDRQBXY-G5J92hEr.js → chunk-XXDRQBXY-jqsHjX2T.js} +1 -1
  33. package/dist/web/assets/{classDiagram-v2-K4WV4PDN-BCF0112R.js → classDiagram-v2-K4WV4PDN-B0EG_ZZt.js} +1 -1
  34. package/dist/web/assets/{cobol-B9yyG1N7.js → cobol-B_XRwpIg.js} +1 -1
  35. package/dist/web/assets/{coffee-CNQY9j_z.js → coffee-C4eMlpSe.js} +1 -1
  36. package/dist/web/assets/{cose-bilkent-JH36ORCC-xUhaa1rU.js → cose-bilkent-JH36ORCC-CrM0VDy4.js} +1 -1
  37. package/dist/web/assets/{cpp-syZ-JK5F.js → cpp-BE8dVz2Y.js} +1 -1
  38. package/dist/web/assets/{crystal-DNtPOvR4.js → crystal-EaFwVcbb.js} +1 -1
  39. package/dist/web/assets/{css-D5aJMOgO.js → css-oYmBq-By.js} +1 -1
  40. package/dist/web/assets/{cynefin-EF2NZ3EQ-DV3XOKzu.js → cynefin-EF2NZ3EQ-34vs3gIf.js} +1 -1
  41. package/dist/web/assets/{cynefinDiagram-3GCD6N5R-DgURBFKo.js → cynefinDiagram-3GCD6N5R-BknEauUi.js} +1 -1
  42. package/dist/web/assets/{dagre-W4DXFKR2-DF0-xqBq.js → dagre-W4DXFKR2-DZ5C0vE9.js} +1 -1
  43. package/dist/web/assets/{diagram-2UJZ2QOL-BoK-arBq.js → diagram-2UJZ2QOL-7gEGibdm.js} +1 -1
  44. package/dist/web/assets/{diagram-OVF4WLC6-2PnqW9FF.js → diagram-OVF4WLC6-CUXH1cbU.js} +1 -1
  45. package/dist/web/assets/{diagram-PFPMY2P6-D61RpAS8.js → diagram-PFPMY2P6-BOuoN7y0.js} +1 -1
  46. package/dist/web/assets/{diagram-UMYRVEAY-Bn2VK8cA.js → diagram-UMYRVEAY-C3xUjk3B.js} +1 -1
  47. package/dist/web/assets/{diagram-YEKJPTXX-BliOVg-N.js → diagram-YEKJPTXX-CmV-UftY.js} +1 -1
  48. package/dist/web/assets/{diagram-ZIFT7M5P-BUSVx-wF.js → diagram-ZIFT7M5P-DgGdZ1Kl.js} +1 -1
  49. package/dist/web/assets/{dist-B63Xpf6L.js → dist-CN4oxUZG.js} +1 -1
  50. package/dist/web/assets/{ebnfDiagram-VR2GEFS7-BMP6ofKl.js → ebnfDiagram-VR2GEFS7-CgqYKMMK.js} +1 -1
  51. package/dist/web/assets/{edge-nYjgtyX1.js → edge-D6C5szlZ.js} +1 -1
  52. package/dist/web/assets/{elixir-NJaeMcC6.js → elixir-D6PdZkcK.js} +1 -1
  53. package/dist/web/assets/{elk-IJKZMXRS-oJ77omRc.js → elk-IJKZMXRS-CaNtLBYi.js} +1 -1
  54. package/dist/web/assets/{elm-8b_rvSJ8.js → elm-B8heN2jE.js} +1 -1
  55. package/dist/web/assets/{erDiagram-O2IAPWRE-oV_Xnl5q.js → erDiagram-O2IAPWRE-B_Ztqgv4.js} +1 -1
  56. package/dist/web/assets/{erb-BXTZOHPR.js → erb-CvxZym2t.js} +1 -1
  57. package/dist/web/assets/{eventmodeling-K75KTNOO-B4uCS7Wp.js → eventmodeling-K75KTNOO-rIyIwA17.js} +1 -1
  58. package/dist/web/assets/flowDiagram-OXPTDLAJ-BuRr7k3B.js +1 -0
  59. package/dist/web/assets/{ganttDiagram-R7TSEDQI-DCrgwH20.js → ganttDiagram-R7TSEDQI-CZHQ2b2p.js} +1 -1
  60. package/dist/web/assets/{git-rebase-Bemc6KvD.js → git-rebase-BQpmx8Pr.js} +1 -1
  61. package/dist/web/assets/{gitGraph-VSP46ZUC-xNJeVHYy.js → gitGraph-VSP46ZUC-BaI5oVFE.js} +1 -1
  62. package/dist/web/assets/{gitGraphDiagram-XJZIOB7I-BynhGjx_.js → gitGraphDiagram-XJZIOB7I-D019lpA0.js} +1 -1
  63. package/dist/web/assets/{glimmer-js-BbleNzr7.js → glimmer-js-Q0lvksee.js} +1 -1
  64. package/dist/web/assets/{glimmer-ts-yg6t7MXH.js → glimmer-ts-BlwILAHu.js} +1 -1
  65. package/dist/web/assets/{glsl-BaZn8BHQ.js → glsl-C2XhxW29.js} +1 -1
  66. package/dist/web/assets/{graphql-BmqnhkT8.js → graphql-CQpawWlW.js} +1 -1
  67. package/dist/web/assets/{hack-J8sb5uai.js → hack-D8CL9Px1.js} +1 -1
  68. package/dist/web/assets/{haml-FiKLxaeo.js → haml-DZZoeC01.js} +1 -1
  69. package/dist/web/assets/{handlebars-dyXAlfF8.js → handlebars-CnQuZzNH.js} +1 -1
  70. package/dist/web/assets/{html-Bo4E06VK.js → html-CvIoDHKR.js} +1 -1
  71. package/dist/web/assets/{html-derivative-C3RqHwed.js → html-derivative-CGk6QFDb.js} +1 -1
  72. package/dist/web/assets/{http-B8IbeSRs.js → http-Dziu_Xj5.js} +1 -1
  73. package/dist/web/assets/{hurl-CckaloOY.js → hurl-DythJo9n.js} +1 -1
  74. package/dist/web/assets/{index-CGwy-QNW.css → index-CiOT786B.css} +1 -1
  75. package/dist/web/assets/index-Cm7ENbyj.js +256 -0
  76. package/dist/web/assets/{info-OHQRW6UA-D7G_G-1L.js → info-OHQRW6UA-CbxEII--.js} +1 -1
  77. package/dist/web/assets/{infoDiagram-5W2HQ5XZ-fPny1Cf_.js → infoDiagram-5W2HQ5XZ-uncvednK.js} +1 -1
  78. package/dist/web/assets/{ishikawaDiagram-K3B6WC7H-BjipzgOy.js → ishikawaDiagram-K3B6WC7H-DGe07IXX.js} +1 -1
  79. package/dist/web/assets/{java-CUToMvYb.js → java-CZZLsDD_.js} +1 -1
  80. package/dist/web/assets/{javascript-BfEm08nL.js → javascript-BcaihfgA.js} +1 -1
  81. package/dist/web/assets/{jinja-CoCPe0su.js → jinja-v6gp7mmJ.js} +1 -1
  82. package/dist/web/assets/{jison-D8YLHyhZ.js → jison-D2SC7D3U.js} +1 -1
  83. package/dist/web/assets/{journeyDiagram-COXZFDF6-DlfiwZbw.js → journeyDiagram-COXZFDF6-DAIUzadY.js} +1 -1
  84. package/dist/web/assets/{json-B5ImZt8b.js → json-BTX5Muj-.js} +1 -1
  85. package/dist/web/assets/{jsx-BEuHYNcK.js → jsx-sOd5Zb96.js} +1 -1
  86. package/dist/web/assets/{julia-CGDZSSyh.js → julia-BFKK12Cy.js} +1 -1
  87. package/dist/web/assets/{just-k89lTjF_.js → just-5EOII5bf.js} +1 -1
  88. package/dist/web/assets/{kanban-definition-P3RFRI5V-DWtn18JL.js → kanban-definition-P3RFRI5V-CRJ_qKDi.js} +1 -1
  89. package/dist/web/assets/{latex-B2BLRmCh.js → latex-DlpyBAwB.js} +1 -1
  90. package/dist/web/assets/{line-OgG0zNYZ.js → line-DDtZbOq6.js} +1 -1
  91. package/dist/web/assets/{linear-CwKyvaxX.js → linear-DiXfgJNJ.js} +1 -1
  92. package/dist/web/assets/{liquid-DCm9svrE.js → liquid-i0LOb-_p.js} +1 -1
  93. package/dist/web/assets/{lua-D2PZUpll.js → lua-egAglmJR.js} +1 -1
  94. package/dist/web/assets/{marko-BHlW2bwI.js → marko-pexQ6dyw.js} +1 -1
  95. package/dist/web/assets/{mdc-D3qSZtcb.js → mdc-2zx6wVZ1.js} +1 -1
  96. package/dist/web/assets/{mermaid-parser.core-BB3FI1zz.js → mermaid-parser.core-ChhS34Wq.js} +3 -3
  97. package/dist/web/assets/{mermaid.core-COMOGmN5.js → mermaid.core-BLtM-FUH.js} +4 -4
  98. package/dist/web/assets/{mindmap-definition-LZFPQGKD-FVI5kbuu.js → mindmap-definition-LZFPQGKD-qHBfvVvR.js} +1 -1
  99. package/dist/web/assets/{nginx-DE318eQE.js → nginx-BJBqsQfY.js} +1 -1
  100. package/dist/web/assets/{nim-CLxdlaX6.js → nim-BaA50oZ-.js} +1 -1
  101. package/dist/web/assets/{org-BrPnEEho.js → org-B-ByT2Q_.js} +1 -1
  102. package/dist/web/assets/{packet-JDAUHWVQ-Fpkjmnjn.js → packet-JDAUHWVQ-uLD5sbY4.js} +1 -1
  103. package/dist/web/assets/{pegDiagram-BGZESJAR-BKaoWoq7.js → pegDiagram-BGZESJAR-BRNG5qXG.js} +1 -1
  104. package/dist/web/assets/{perl-DHsiEDUm.js → perl-DxoQS1Oz.js} +1 -1
  105. package/dist/web/assets/{php-DQjV-d8l.js → php-DAdurunP.js} +1 -1
  106. package/dist/web/assets/{pie-XZMESJXO-CY04iMLk.js → pie-XZMESJXO-rle9Hab0.js} +1 -1
  107. package/dist/web/assets/{pieDiagram-CAPJLFHJ-BeEngp4p.js → pieDiagram-CAPJLFHJ-CsLaTTZ4.js} +1 -1
  108. package/dist/web/assets/{pug-Dh8JM0fV.js → pug-CGqTuVm8.js} +1 -1
  109. package/dist/web/assets/{qml-B6jp0Ezu.js → qml-qo_XuOpa.js} +1 -1
  110. package/dist/web/assets/{quadrantDiagram-GDMTTRAM-BvJZEJlt.js → quadrantDiagram-GDMTTRAM-CcM5DEH6.js} +1 -1
  111. package/dist/web/assets/{r-6SqhsqXp.js → r-CKiLSGzc.js} +1 -1
  112. package/dist/web/assets/{radar-ABXABTNO-CbPpIJEV.js → radar-ABXABTNO-CC4F4_aS.js} +1 -1
  113. package/dist/web/assets/{railroad-I3PHUGI6-6byRvbF6.js → railroad-I3PHUGI6-EiUjcaSq.js} +1 -1
  114. package/dist/web/assets/{railroad-abnf-LNEFI6M7-Bo-qX1HQ.js → railroad-abnf-LNEFI6M7-BZzYZu7G.js} +1 -1
  115. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-C4u9WTRa.js → railroad-ebnf-DWYD2UWJ-DGihz-hz.js} +1 -1
  116. package/dist/web/assets/{railroad-peg-JR7BVNR7-EriE5s4B.js → railroad-peg-JR7BVNR7-D9Youaz5.js} +1 -1
  117. package/dist/web/assets/{railroadDiagram-SM67HX2B-DSWmFhHh.js → railroadDiagram-SM67HX2B-ljs2FnSo.js} +1 -1
  118. package/dist/web/assets/{razor-DUvaBJHt.js → razor-DjN9S-r_.js} +1 -1
  119. package/dist/web/assets/{regexp-DQVjJ1C9.js → regexp-yRPnlhcx.js} +1 -1
  120. package/dist/web/assets/{requirementDiagram-X7JNWC4A-DSputoF-.js → requirementDiagram-X7JNWC4A-BJ877Yny.js} +1 -1
  121. package/dist/web/assets/{rst-CimOXJkT.js → rst-NbJF2fMO.js} +1 -1
  122. package/dist/web/assets/{ruby-CkT4UUsu.js → ruby-ZoVZdf-0.js} +1 -1
  123. package/dist/web/assets/{sankeyDiagram-UM26HJRW-CoyT7S1x.js → sankeyDiagram-UM26HJRW-BPwhixv8.js} +1 -1
  124. package/dist/web/assets/{sas-jhGZfw8z.js → sas-CnTL8nFG.js} +1 -1
  125. package/dist/web/assets/{scss-COq5RYby.js → scss-BAnH3m1c.js} +1 -1
  126. package/dist/web/assets/{sequenceDiagram-ZO4K6R2Y-bH6JrL79.js → sequenceDiagram-ZO4K6R2Y-xhx_vaZj.js} +1 -1
  127. package/dist/web/assets/{shellscript-fPSuoebA.js → shellscript-ChY3GVRw.js} +1 -1
  128. package/dist/web/assets/{shellsession-CEOzWFWz.js → shellsession-G4IamFTN.js} +1 -1
  129. package/dist/web/assets/{soy-CoaFeLPp.js → soy-DHZYlzcJ.js} +1 -1
  130. package/dist/web/assets/{sql-CqYtiF66.js → sql-BLAJpvko.js} +1 -1
  131. package/dist/web/assets/{src-Yh046HvT.js → src-CneWU0V7.js} +1 -1
  132. package/dist/web/assets/{stata-4SdpmCwi.js → stata-BF2DeqJI.js} +1 -1
  133. package/dist/web/assets/{stateDiagram-v2-TBUQTH76-Ce-gceoA.js → stateDiagram-v2-TBUQTH76-DYEIdXmD.js} +1 -1
  134. package/dist/web/assets/{surrealql-C2Q1e9ZL.js → surrealql-CjuctJtE.js} +1 -1
  135. package/dist/web/assets/{svelte-CDy8bfpZ.js → svelte-CAAipNMl.js} +1 -1
  136. package/dist/web/assets/{swimlanes-N4OXWK64-XZo3QwsQ.js → swimlanes-N4OXWK64-DaNmUIcz.js} +1 -1
  137. package/dist/web/assets/swimlanesDiagram-K3J5GTZL-Cc_r8_vm.js +8 -0
  138. package/dist/web/assets/{templ-B5OSUAC6.js → templ-B-6t84-k.js} +1 -1
  139. package/dist/web/assets/{tex-0wXDlVyM.js → tex-DsSWxSFa.js} +1 -1
  140. package/dist/web/assets/{timeline-definition-YOQAKGHF-B7Bs6DE5.js → timeline-definition-YOQAKGHF-CmA5uuSJ.js} +1 -1
  141. package/dist/web/assets/{treeView-D4JQ5SDB-DhelC15L.js → treeView-D4JQ5SDB-L8cwVgaN.js} +1 -1
  142. package/dist/web/assets/{treemap-SAJKECNS-CzGjtoOh.js → treemap-SAJKECNS-Cb56YgJH.js} +1 -1
  143. package/dist/web/assets/{ts-tags-tg6YwKan.js → ts-tags-2bkGTXWr.js} +1 -1
  144. package/dist/web/assets/{tsx-CEeuRXvQ.js → tsx-BD6V4u7j.js} +1 -1
  145. package/dist/web/assets/{twig-CWajHX0R.js → twig-BRdwPHsd.js} +1 -1
  146. package/dist/web/assets/{typescript-RFkfgRav.js → typescript-CE43_TcG.js} +1 -1
  147. package/dist/web/assets/{typst-iYtNFWi1.js → typst-Oj4lknbm.js} +1 -1
  148. package/dist/web/assets/{usecaseDiagram-VIAY4XPW-BdnNYShz.js → usecaseDiagram-VIAY4XPW-RzU3uMX7.js} +1 -1
  149. package/dist/web/assets/{vennDiagram-BLWOH2XV-CgGZe_xP.js → vennDiagram-BLWOH2XV-RBYC_TER.js} +1 -1
  150. package/dist/web/assets/{vue-DG85Ls7m.js → vue-DohRCbuk.js} +1 -1
  151. package/dist/web/assets/{vue-html-CHmfKQdN.js → vue-html-CUm-vXDJ.js} +1 -1
  152. package/dist/web/assets/{vue-vine-nZRQ_9Xq.js → vue-vine-CSJNVT6g.js} +1 -1
  153. package/dist/web/assets/{wardley-7MLQ67FV-6V8v9HhV.js → wardley-7MLQ67FV-BSCtc6D6.js} +1 -1
  154. package/dist/web/assets/{wardleyDiagram-YMQ3BMBF-CNjJiy1q.js → wardleyDiagram-YMQ3BMBF-DiJSX_eB.js} +1 -1
  155. package/dist/web/assets/{xml-Cf2rIYfH.js → xml-CRGrymgs.js} +1 -1
  156. package/dist/web/assets/{xsl-BtZjiXjY.js → xsl-5ujj8eCf.js} +1 -1
  157. package/dist/web/assets/{xychartDiagram-TAQBALBS-BRYVq9Me.js → xychartDiagram-TAQBALBS-BmlAXIhs.js} +1 -1
  158. package/dist/web/assets/{yaml-ok1XkEbE.js → yaml-DYq2KMMJ.js} +1 -1
  159. package/dist/web/index.html +2 -2
  160. package/package.json +3 -3
  161. package/dist/web/assets/channel-Bv6xif17.js +0 -1
  162. package/dist/web/assets/flowDiagram-OXPTDLAJ-xE1Htm9m.js +0 -1
  163. package/dist/web/assets/index-CEXlg15b.js +0 -256
  164. package/dist/web/assets/swimlanesDiagram-K3J5GTZL-BuztLICr.js +0 -8
package/README.md CHANGED
@@ -1,19 +1,28 @@
1
- # Markdown Review
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/Krelborn/markdown-review/main/docs/images/icon.svg" width="96" height="96" alt="">
3
+ </p>
2
4
 
3
- > [!WARNING]
4
- > Markdown Review is in beta. It works, but expect rough edges, and expect commands and behaviour to change between releases until 1.0.
5
+ <h1 align="center">Markdown Review</h1>
6
+
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/@krelborn/markdown-review"><img src="https://img.shields.io/npm/v/@krelborn/markdown-review" alt="npm version"></a>
9
+ <a href="https://github.com/Krelborn/markdown-review/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/Krelborn/markdown-review/ci.yml?branch=main&label=CI" alt="CI status"></a>
10
+ <a href="https://www.npmjs.com/package/@krelborn/markdown-review"><img src="https://img.shields.io/npm/dm/@krelborn/markdown-review" alt="npm downloads per month"></a>
11
+ <a href="#requirements"><img src="https://img.shields.io/node/v/@krelborn/markdown-review" alt="Node.js versions"></a>
12
+ <a href="https://github.com/Krelborn/markdown-review/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@krelborn/markdown-review" alt="MIT licence"></a>
13
+ </p>
5
14
 
6
15
  Review the markdown your coding agent writes, such as plans, specs and design notes, in your browser, the way you would review a pull request. Then hand your comments back to the agent so it can edit the docs and answer each one.
7
16
 
8
- Markdown Review is a local tool. It is one CLI that starts a small server for each repository and serves a browser app on `127.0.0.1`. The agent talks to it through ordinary shell commands, so it works with Claude Code, OpenCode or any agent that has a shell tool. It needs no MCP server and no plugin.
17
+ <picture>
18
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Krelborn/markdown-review/main/docs/images/review-dark.png">
19
+ <img src="https://raw.githubusercontent.com/Krelborn/markdown-review/main/docs/images/review-light.png" alt="A plan open in Markdown Review. The doc is on the left with two passages highlighted, and the comments column on the right holds a draft comment, an open thread in which the agent asks a question, and resolved threads.">
20
+ </picture>
9
21
 
10
- ## How it works
22
+ Markdown Review runs locally on your machine. It is a CLI that starts a small server for each repository and serves a browser app on `127.0.0.1`. The agent talks to it through ordinary shell commands, so it works with Claude Code, OpenCode or any agent that has a shell tool. No MCP server or plugin needed.
11
23
 
12
- 1. Your agent writes a doc and runs `markdown-review open docs/plan.md`. The doc opens rendered in your browser.
13
- 2. You comment on passages, blocks, whole docs or the review as a whole, across as many linked docs as you like. Then you submit.
14
- 3. The agent, waiting in `markdown-review poll`, receives each comment with its file, line range, quoted text and your words.
15
- 4. The agent edits the docs and resolves or replies to each comment. Your browser re-renders the doc in place, and your comments follow the text they were made on.
16
- 5. You read the answers, reply to any thread to reopen it, and submit again, until you approve the review. The agent then carries on with its task.
24
+ > [!WARNING]
25
+ > Markdown Review is in beta. It works, but expect rough edges, and expect commands and behaviour to change between releases until 1.0.
17
26
 
18
27
  ## Requirements
19
28
 
@@ -25,7 +34,7 @@ The tool works best inside a git repository, where the repository root is the sc
25
34
 
26
35
  ## Install
27
36
 
28
- Install the CLI globally:
37
+ A global install is recommended:
29
38
 
30
39
  ```sh
31
40
  npm install --global @krelborn/markdown-review
@@ -42,27 +51,11 @@ markdown-review install-skill --global # into ~/.claude/skills, for every repo
42
51
 
43
52
  Claude Code and OpenCode both read skills from there. The skill loads when an agent session starts, so start a new session after installing it.
44
53
 
45
- ### Install from source
46
-
47
- Building from source needs read access to `@krelborn/stylesui`, a private package on GitHub Packages that the web app is built with. The npm package already includes it, so you don't need it to install or use Markdown Review. If you do want to build from source, [open an issue](https://github.com/Krelborn/markdown-review/issues) asking for access.
48
-
49
- With access:
50
-
51
- ```sh
52
- git clone https://github.com/Krelborn/markdown-review.git
53
- cd markdown-review
54
- GITHUB_TOKEN=$(gh auth token) pnpm install
55
- pnpm build
56
- npm link
57
- ```
58
-
59
- The install reads a GitHub token with `read:packages` from `GITHUB_TOKEN`. `npm link` puts `markdown-review` on your `PATH`; you can also run `node <this repo>/dist/cli.js` directly.
60
-
61
54
  ## Usage
62
55
 
63
56
  ### Ask your agent for a review
64
57
 
65
- With the skill installed, ask in plain words, for example "have me review the plan in markdown-review". The agent opens the doc, waits for your comments, edits the doc, answers each comment and waits again, until you approve.
58
+ With the skill installed, ask in plain words, for example "I'd like to review the plan in markdown-review". The agent opens the doc, waits for your comments, edits the doc, answers each comment and waits again, until you say go ahead.
66
59
 
67
60
  You can also start a review yourself, then tell the agent to pick up the comments:
68
61
 
@@ -78,16 +71,22 @@ markdown-review open docs/plan.md
78
71
  - **Comment on a block:** hover over a block and click the **+** in the left margin. Use this for code blocks, tables, diagrams and HTML.
79
72
  - **Comment on a doc or on the whole review:** click **+ Comment** at the top of the comments and choose **On this doc** or **On the whole review**.
80
73
 
81
- You write one comment at a time. If you start another while the open one has text you haven't saved, it asks whether to save or discard that text first. Press Cmd+Enter (Ctrl+Enter on Windows and Linux) to save, and Escape to close.
74
+ Comments are saved as drafts until you submit them. Click **Edit** to change one, or **Discard** to throw one away; it asks first. When you are ready to hand over to your agent, click **Submit**. Choose:
82
75
 
83
- Saved comments are drafts, marked with a Draft badge, until you submit them. Click **Edit** to change one, or **Discard** to throw one away; it asks first. When you are ready, click **Submit** at the foot of the comments. It shows how many drafts it will send and which docs they are on. Choose:
76
+ - **Revise**, to send your drafts to the agent and wait for its answers.
77
+ - **Go ahead**, to end the review and let the agent carry on with its task. Any drafts are sent too, and the agent addresses them first.
78
+ - **Hand back to agent**, to end the review and have the agent stop and wait for you in the chat. Any drafts are sent too, and the agent tells you what they say. Use it when the direction is wrong, you want to talk it over, or you will take it from here.
84
79
 
85
- - **Request changes**, to send your drafts to the agent and wait for its answers.
86
- - **Approve**, to end the review. Any drafts are sent with the approval, and the agent addresses them before carrying on.
80
+ <p align="center">
81
+ <picture>
82
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Krelborn/markdown-review/main/docs/images/submit-dark.png">
83
+ <img src="https://raw.githubusercontent.com/Krelborn/markdown-review/main/docs/images/submit-light.png" width="384" alt="The Submit review popover for one draft, offering Revise, Go ahead with the agent's next task, or Hand back to agent, and saying the agent is listening and will hear at once.">
84
+ </picture>
85
+ </p>
87
86
 
88
- The comments are grouped into Drafts, Open, Outdated and Resolved. When other docs have comments too, **This doc** and **All docs** tabs at the top switch between this doc's comments and every doc's, so you can review a set of docs together. Click a thread's location to jump to its passage, or click highlighted text to find its thread. Reply to a resolved thread to reopen it. Resolved stays folded until the agent answers in it, when it opens to show you. A thread becomes outdated when the agent's edits remove the text it was on.
87
+ The comments are grouped into Drafts, Open, Outdated and Resolved. When other docs have comments too, **This doc** and **All docs** tabs at the top switch between this doc's comments and every doc's, so you can review a set of docs together. Click a thread's location to jump to its passage, or click highlighted text to find its thread.
89
88
 
90
- The bar beneath the comments shows whether the agent is listening. If it is not, your comments wait in its inbox until it next looks; the **Submit** menu says which.
89
+ Reply to a resolved thread to reopen it. Resolved stays folded until the agent answers in it, when it opens to show you. A thread becomes outdated when the agent's edits remove the text it was on.
91
90
 
92
91
  Links between markdown docs in the repository open in the app. Docs render with GitHub-style tables, task lists, alerts, syntax-highlighted code and Mermaid diagrams. Frontmatter shows as a Properties panel at the top of the doc, and each heading has a link you can copy.
93
92
 
@@ -95,24 +94,57 @@ Links between markdown docs in the repository open in the app. Docs render with
95
94
 
96
95
  These are the commands the agent runs. You rarely need them yourself, but they are handy for trying the tool out.
97
96
 
98
- | Command | What it does |
99
- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
100
- | `markdown-review open [path]` | Start a review round and show the doc, or the docs list, in the browser. Prints the URL. |
101
- | `markdown-review poll [--document <path>] [--timeout <seconds>]` | Wait until you submit or approve, then print the comments that need the agent. Gives up after 540 seconds by default. |
102
- | `markdown-review inbox [--document <path>]` | Print the same as `poll`, without waiting. |
103
- | `markdown-review reply <id> <text>` | Answer a thread without resolving it, for example to ask you a question. |
104
- | `markdown-review resolve <id> [text]` | Resolve a thread, optionally saying what changed. |
105
- | `markdown-review stop` | Stop the review server for this repository. |
106
- | `markdown-review install-skill [--global]` | Install the skill that teaches agents this workflow. |
97
+ | Command | What it does |
98
+ | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
99
+ | `markdown-review open [path] [--next-task <text>]` | Start a review round, or add the doc to the one in progress, and show the doc, or the docs list, in the browser. `--next-task` says what the agent will do once you say go ahead. Prints the URL. |
100
+ | `markdown-review poll [--document <path>] [--timeout <seconds>]` | Wait until you submit, then print the comments that need the agent. Gives up after 540 seconds by default. |
101
+ | `markdown-review inbox [--document <path>]` | Print the same as `poll`, without waiting. |
102
+ | `markdown-review reply <id> <text>` | Answer a thread without resolving it, for example to ask you a question. |
103
+ | `markdown-review resolve <id> [text]` | Resolve a thread, optionally saying what changed. |
104
+ | `markdown-review stop` | Stop the review server for this repository. |
105
+ | `markdown-review install-skill [--global]` | Install the skill that teaches agents this workflow. |
107
106
 
108
107
  `reply` and `resolve` also take `--file <path>` for a long message, or `--file -` to read standard input. `markdown-review --help` lists the commands, and `markdown-review <command> --help` describes one. Every command ends with a `next_step` line that tells the agent what to do next.
109
108
 
110
109
  Set `MARKDOWN_REVIEW_NO_BROWSER=1` to stop `open` from launching a browser.
111
110
 
111
+ ### Updates
112
+
113
+ About once a day, the review server asks the npm registry for the latest version of `@krelborn/markdown-review`, and keeps the answer in `~/.cache/markdown-review/` (or under `$XDG_CACHE_HOME`). The request names only the package. When a newer version is out, the About button in the browser shows a dot, and `open` tells the agent, which offers to update once you say go ahead and only updates if you agree. The agent is also told when an installed copy of the skill is from an older version.
114
+
115
+ Set `MARKDOWN_REVIEW_NO_UPDATE_CHECK=1` or `NO_UPDATE_NOTIFIER` to turn the check off. It is also off when `CI` is set.
116
+
112
117
  ### Long waits
113
118
 
114
119
  `poll` waits for a person, so it can outlast an agent's shell timeout. Give the shell command a timeout of at least 600000 ms. In Claude Code, run `markdown-review poll --timeout 7080` in the background with a Bash timeout of 7200000 ms; a submit still ends it at once. If `poll` stops before you submit, nothing is lost: the agent runs it again. The skill tells the agent all of this.
115
120
 
121
+ ## How it works
122
+
123
+ 1. Your agent writes a doc and runs `markdown-review open docs/plan.md`. The doc opens rendered in your browser.
124
+ 2. You comment on passages, blocks, whole docs or the review as a whole, across as many linked docs as you like. Then you submit.
125
+ 3. The agent, waiting in `markdown-review poll`, receives each comment with its file, line range, quoted text and your words.
126
+ 4. The agent edits the docs and resolves or replies to each comment. Your browser re-renders the doc in place, and your comments follow the text they were made on.
127
+ 5. You read the answers, reply to any thread to reopen it, and submit again. When you say go ahead, the agent carries on with its task. When you hand the review back, it stops and waits for you in the chat.
128
+
129
+ This is what the agent receives in step 3 for the review in the screenshot above:
130
+
131
+ ```text
132
+ 3 threads need you (docs/plans/rate-limiting.md: 3)
133
+
134
+ #1 docs/plans/rate-limiting.md:15
135
+ quote: "stored in Redis so that every instance of the API shares the same count."
136
+ user: What happens when Redis is down? I'd rather fail open than reject every request.
137
+
138
+ #2 docs/plans/rate-limiting.md:21
139
+ quote: "Enterprise\t6000\t1000"
140
+ user: Enterprise customers negotiate their own limits, so read these from the plan record instead of hard-coding them.
141
+
142
+ #3 docs/plans/rate-limiting.md (whole doc)
143
+ user: Looks good overall. Add a section on how we'll know it's working once it's live.
144
+
145
+ next_step: Edit the docs, then run `markdown-review resolve <id> "<what changed>"` for #1, #2 and #3, or `markdown-review reply <id> "<question>"` if you need input. Then run `markdown-review poll` to wait for the next round.
146
+ ```
147
+
116
148
  ## Where reviews are stored
117
149
 
118
150
  Comments live in a `.markdown-review/` directory at the repository root, one JSON file per doc, alongside the server's runtime files. It contains a `.gitignore` of `*`, so nothing is committed by default.
@@ -125,6 +157,22 @@ The server stops itself after 30 minutes with no browser connected, no `poll` wa
125
157
 
126
158
  The server listens only on `127.0.0.1`. Agent commands need a random token that the server writes to `.markdown-review/server.json` with owner-only permissions, so a web page cannot post comments to your agent. Raw HTML in docs is sanitized before it is shown, and other files from the repository are served as plain content, never run as code.
127
159
 
160
+ ## Build from source
161
+
162
+ Building from source needs read access to `@krelborn/stylesui`, a private package on GitHub Packages that the web app is built with. The npm package already includes it, so you don't need it to install or use Markdown Review. If you do want to build from source, [open an issue](https://github.com/Krelborn/markdown-review/issues) asking for access.
163
+
164
+ With access:
165
+
166
+ ```sh
167
+ git clone https://github.com/Krelborn/markdown-review.git
168
+ cd markdown-review
169
+ GITHUB_TOKEN=$(gh auth token) pnpm install
170
+ pnpm build
171
+ npm link
172
+ ```
173
+
174
+ The install reads a GitHub token with `read:packages` from `GITHUB_TOKEN`. `npm link` puts `markdown-review` on your `PATH`; you can also run `node <this repo>/dist/cli.js` directly.
175
+
128
176
  ## Feedback
129
177
 
130
178
  Bug reports, questions and ideas are very welcome: please [open an issue](https://github.com/Krelborn/markdown-review/issues).
@@ -133,4 +181,4 @@ I'm not accepting pull requests. Markdown Review is a small project I maintain i
133
181
 
134
182
  ## License
135
183
 
136
- [MIT](LICENSE)
184
+ [MIT](https://github.com/Krelborn/markdown-review/blob/main/LICENSE)