@krelborn/markdown-review 0.2.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.
- package/README.md +92 -44
- package/dist/cli.js +775 -117
- package/dist/web/assets/{abnfDiagram-YUKMZFIV-BZIJX5IM.js → abnfDiagram-YUKMZFIV-5p3lK0ml.js} +1 -1
- package/dist/web/assets/{angular-html-CW7LdEF9.js → angular-html-DtTOKQVF.js} +1 -1
- package/dist/web/assets/{angular-ts-DMi4USZg.js → angular-ts-DSZF2tmF.js} +1 -1
- package/dist/web/assets/{apl-Df6WGnpy.js → apl-BI5mQaXa.js} +1 -1
- package/dist/web/assets/{arc-ggKlY47U.js → arc-BrfkN3mA.js} +1 -1
- package/dist/web/assets/{architecture-WOLXFQ4H-BsQd6MbZ.js → architecture-WOLXFQ4H-CB2TejI2.js} +1 -1
- package/dist/web/assets/{architectureDiagram-47P4ROYG-BuE40WJv.js → architectureDiagram-47P4ROYG-YLfruAdT.js} +1 -1
- package/dist/web/assets/{astro-D7eXRakI.js → astro-Bx0B2FVT.js} +1 -1
- package/dist/web/assets/{blade-3AkRFe2C.js → blade-BWTzueMP.js} +1 -1
- package/dist/web/assets/{blockDiagram-E7TT5TSB-B5l0LLhP.js → blockDiagram-E7TT5TSB-DzKCvOwD.js} +1 -1
- package/dist/web/assets/{c-Bkyx37Tk.js → c-DdobnT6K.js} +1 -1
- package/dist/web/assets/{c4Diagram-CRA5TL53-D9Zc33S8.js → c4Diagram-CRA5TL53-p1ftijoG.js} +1 -1
- package/dist/web/assets/channel-B7Y79uhb.js +1 -0
- package/dist/web/assets/{chapel-DggUU-O6.js → chapel-D6rLpKo0.js} +1 -1
- package/dist/web/assets/{chunk-2BW5OAIV-ClRzBhwN.js → chunk-2BW5OAIV-DT1zLa9q.js} +1 -1
- package/dist/web/assets/{chunk-3YJQHVM4-CNLVyfxX.js → chunk-3YJQHVM4-nLx0WWI4.js} +1 -1
- package/dist/web/assets/{chunk-4EA7E6EY-aeSu9hGp.js → chunk-4EA7E6EY-C_YyuzUS.js} +1 -1
- package/dist/web/assets/{chunk-7TKQ45FW-CwZK0ys_.js → chunk-7TKQ45FW-BZ15X6vU.js} +1 -1
- package/dist/web/assets/{chunk-AW2ZBBNX-Do6yJgQr.js → chunk-AW2ZBBNX-Ck9cAmev.js} +1 -1
- package/dist/web/assets/{chunk-DBDB3WZW-BGoybXAD.js → chunk-DBDB3WZW-9vMgzi8H.js} +1 -1
- package/dist/web/assets/{chunk-E2ZNV5FY-vMPrQ96W.js → chunk-E2ZNV5FY-CyMQFbua.js} +1 -1
- package/dist/web/assets/{chunk-EU5HNXII-WT20ypGh.js → chunk-EU5HNXII-CWPCfQmx.js} +1 -1
- package/dist/web/assets/{chunk-FVRAUYC3-B-JlGXnk.js → chunk-FVRAUYC3-jyBnY8AQ.js} +1 -1
- package/dist/web/assets/{chunk-HJ2JQQFS-BpQT9yx5.js → chunk-HJ2JQQFS-Cj_rp1Qw.js} +1 -1
- package/dist/web/assets/{chunk-HTAEGDNF-uqZ4Sk_E.js → chunk-HTAEGDNF-pClFnSXR.js} +1 -1
- package/dist/web/assets/{chunk-KQW6MTUR-CGDbD7J1.js → chunk-KQW6MTUR-C2m9qy9v.js} +1 -1
- package/dist/web/assets/{chunk-NTY3LDVX-BX1ZUg2I.js → chunk-NTY3LDVX-CnUW73mn.js} +1 -1
- package/dist/web/assets/{chunk-VPRB5NB3-CKJwbb6W.js → chunk-VPRB5NB3-BuB50_Ze.js} +1 -1
- package/dist/web/assets/{chunk-XC4XBNZT-Cg0edyiW.js → chunk-XC4XBNZT-BsgxISHC.js} +1 -1
- package/dist/web/assets/{chunk-XXDRQBXY-B-il0kWV.js → chunk-XXDRQBXY-jqsHjX2T.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-K4WV4PDN-Bm1AjKhB.js → classDiagram-v2-K4WV4PDN-B0EG_ZZt.js} +1 -1
- package/dist/web/assets/{cobol-eIQA5bMR.js → cobol-B_XRwpIg.js} +1 -1
- package/dist/web/assets/{coffee-Bcy46bJt.js → coffee-C4eMlpSe.js} +1 -1
- package/dist/web/assets/{cose-bilkent-JH36ORCC-BMuJXNcP.js → cose-bilkent-JH36ORCC-CrM0VDy4.js} +1 -1
- package/dist/web/assets/{cpp-BTCZX5Lq.js → cpp-BE8dVz2Y.js} +1 -1
- package/dist/web/assets/{crystal-DSpaOPwo.js → crystal-EaFwVcbb.js} +1 -1
- package/dist/web/assets/{css-DZY8fHzP.js → css-oYmBq-By.js} +1 -1
- package/dist/web/assets/{cynefin-EF2NZ3EQ-DwY3GCI9.js → cynefin-EF2NZ3EQ-34vs3gIf.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-3GCD6N5R-BYma0U6p.js → cynefinDiagram-3GCD6N5R-BknEauUi.js} +1 -1
- package/dist/web/assets/{dagre-W4DXFKR2-DpaAT1xc.js → dagre-W4DXFKR2-DZ5C0vE9.js} +1 -1
- package/dist/web/assets/{diagram-2UJZ2QOL-eWEg0n4J.js → diagram-2UJZ2QOL-7gEGibdm.js} +1 -1
- package/dist/web/assets/{diagram-OVF4WLC6-BlhoyOe_.js → diagram-OVF4WLC6-CUXH1cbU.js} +1 -1
- package/dist/web/assets/{diagram-PFPMY2P6-Cx_sb8jV.js → diagram-PFPMY2P6-BOuoN7y0.js} +1 -1
- package/dist/web/assets/{diagram-UMYRVEAY-Dk00eK0U.js → diagram-UMYRVEAY-C3xUjk3B.js} +1 -1
- package/dist/web/assets/{diagram-YEKJPTXX-wVxrnmMO.js → diagram-YEKJPTXX-CmV-UftY.js} +1 -1
- package/dist/web/assets/{diagram-ZIFT7M5P-DkD6Ez5h.js → diagram-ZIFT7M5P-DgGdZ1Kl.js} +1 -1
- package/dist/web/assets/{dist-DmWZBGGc.js → dist-CN4oxUZG.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-VR2GEFS7-DXjQVddY.js → ebnfDiagram-VR2GEFS7-CgqYKMMK.js} +1 -1
- package/dist/web/assets/{edge-A6sjNBe6.js → edge-D6C5szlZ.js} +1 -1
- package/dist/web/assets/{elixir-5kbR6ZAs.js → elixir-D6PdZkcK.js} +1 -1
- package/dist/web/assets/{elk-IJKZMXRS-Df8Ybidc.js → elk-IJKZMXRS-CaNtLBYi.js} +1 -1
- package/dist/web/assets/{elm-naNHE-Rt.js → elm-B8heN2jE.js} +1 -1
- package/dist/web/assets/{erDiagram-O2IAPWRE-CWiXv2eJ.js → erDiagram-O2IAPWRE-B_Ztqgv4.js} +1 -1
- package/dist/web/assets/{erb-VliMfn12.js → erb-CvxZym2t.js} +1 -1
- package/dist/web/assets/{eventmodeling-K75KTNOO-HdXJzsd-.js → eventmodeling-K75KTNOO-rIyIwA17.js} +1 -1
- package/dist/web/assets/flowDiagram-OXPTDLAJ-BuRr7k3B.js +1 -0
- package/dist/web/assets/{ganttDiagram-R7TSEDQI-AkbsS9Oo.js → ganttDiagram-R7TSEDQI-CZHQ2b2p.js} +1 -1
- package/dist/web/assets/{git-rebase-BEAI18h0.js → git-rebase-BQpmx8Pr.js} +1 -1
- package/dist/web/assets/{gitGraph-VSP46ZUC-BHanG7Zi.js → gitGraph-VSP46ZUC-BaI5oVFE.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-XJZIOB7I-DiFINkpn.js → gitGraphDiagram-XJZIOB7I-D019lpA0.js} +1 -1
- package/dist/web/assets/{glimmer-js-CCFczyKx.js → glimmer-js-Q0lvksee.js} +1 -1
- package/dist/web/assets/{glimmer-ts-2gqimpYj.js → glimmer-ts-BlwILAHu.js} +1 -1
- package/dist/web/assets/{glsl-Cg9k-3G7.js → glsl-C2XhxW29.js} +1 -1
- package/dist/web/assets/{graphql-BCWNUo4d.js → graphql-CQpawWlW.js} +1 -1
- package/dist/web/assets/{hack-P7UtntxJ.js → hack-D8CL9Px1.js} +1 -1
- package/dist/web/assets/{haml-CluhvLjx.js → haml-DZZoeC01.js} +1 -1
- package/dist/web/assets/{handlebars-oqVPUk2V.js → handlebars-CnQuZzNH.js} +1 -1
- package/dist/web/assets/{html-CcFED7nW.js → html-CvIoDHKR.js} +1 -1
- package/dist/web/assets/{html-derivative-8MKwl2kE.js → html-derivative-CGk6QFDb.js} +1 -1
- package/dist/web/assets/{http-B-j5imi7.js → http-Dziu_Xj5.js} +1 -1
- package/dist/web/assets/{hurl-EbdE4I5m.js → hurl-DythJo9n.js} +1 -1
- package/dist/web/assets/index-CiOT786B.css +1 -0
- package/dist/web/assets/index-Cm7ENbyj.js +256 -0
- package/dist/web/assets/{info-OHQRW6UA-D8EeGtAZ.js → info-OHQRW6UA-CbxEII--.js} +1 -1
- package/dist/web/assets/{infoDiagram-5W2HQ5XZ-BXakU7Bk.js → infoDiagram-5W2HQ5XZ-uncvednK.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-K3B6WC7H-BjrJYJdZ.js → ishikawaDiagram-K3B6WC7H-DGe07IXX.js} +1 -1
- package/dist/web/assets/{java-DdlG7Knc.js → java-CZZLsDD_.js} +1 -1
- package/dist/web/assets/{javascript-Dqf2fIHF.js → javascript-BcaihfgA.js} +1 -1
- package/dist/web/assets/{jinja-o2b7TNPM.js → jinja-v6gp7mmJ.js} +1 -1
- package/dist/web/assets/{jison-BFaMalob.js → jison-D2SC7D3U.js} +1 -1
- package/dist/web/assets/{journeyDiagram-COXZFDF6-A2kOjbib.js → journeyDiagram-COXZFDF6-DAIUzadY.js} +1 -1
- package/dist/web/assets/{json-rOV04JA5.js → json-BTX5Muj-.js} +1 -1
- package/dist/web/assets/{jsx-f8aDzNJg.js → jsx-sOd5Zb96.js} +1 -1
- package/dist/web/assets/{julia-BEQyLg2u.js → julia-BFKK12Cy.js} +1 -1
- package/dist/web/assets/{just-BQgCkdhV.js → just-5EOII5bf.js} +1 -1
- package/dist/web/assets/{kanban-definition-P3RFRI5V-CoXFy4Ut.js → kanban-definition-P3RFRI5V-CRJ_qKDi.js} +1 -1
- package/dist/web/assets/{latex-Ca5Jf2Jd.js → latex-DlpyBAwB.js} +1 -1
- package/dist/web/assets/{line-C76_QaGr.js → line-DDtZbOq6.js} +1 -1
- package/dist/web/assets/{linear-BuH_Zb4z.js → linear-DiXfgJNJ.js} +1 -1
- package/dist/web/assets/{liquid-CSCRCgF3.js → liquid-i0LOb-_p.js} +1 -1
- package/dist/web/assets/{lua-C4IZzkwc.js → lua-egAglmJR.js} +1 -1
- package/dist/web/assets/{marko-BgEbfzVq.js → marko-pexQ6dyw.js} +1 -1
- package/dist/web/assets/{mdc-DQkkC6Bm.js → mdc-2zx6wVZ1.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-C6bK5onm.js → mermaid-parser.core-ChhS34Wq.js} +3 -3
- package/dist/web/assets/{mermaid.core-BlumzZwI.js → mermaid.core-BLtM-FUH.js} +4 -4
- package/dist/web/assets/{mindmap-definition-LZFPQGKD-DUZ9lkHi.js → mindmap-definition-LZFPQGKD-qHBfvVvR.js} +1 -1
- package/dist/web/assets/{nginx-C-nA8WcZ.js → nginx-BJBqsQfY.js} +1 -1
- package/dist/web/assets/{nim-CdJOam9_.js → nim-BaA50oZ-.js} +1 -1
- package/dist/web/assets/{org-gMZBqtyI.js → org-B-ByT2Q_.js} +1 -1
- package/dist/web/assets/{packet-JDAUHWVQ-zILCc75J.js → packet-JDAUHWVQ-uLD5sbY4.js} +1 -1
- package/dist/web/assets/{pegDiagram-BGZESJAR-MVi1ULP2.js → pegDiagram-BGZESJAR-BRNG5qXG.js} +1 -1
- package/dist/web/assets/{perl-C2-G_qAE.js → perl-DxoQS1Oz.js} +1 -1
- package/dist/web/assets/{php-DTPJPNpf.js → php-DAdurunP.js} +1 -1
- package/dist/web/assets/{pie-XZMESJXO-fQA5AQHi.js → pie-XZMESJXO-rle9Hab0.js} +1 -1
- package/dist/web/assets/{pieDiagram-CAPJLFHJ-BK9l7w7g.js → pieDiagram-CAPJLFHJ-CsLaTTZ4.js} +1 -1
- package/dist/web/assets/{pug-DLUtfK-s.js → pug-CGqTuVm8.js} +1 -1
- package/dist/web/assets/{qml-CRHnLnQC.js → qml-qo_XuOpa.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-GDMTTRAM-Duujn2Nw.js → quadrantDiagram-GDMTTRAM-CcM5DEH6.js} +1 -1
- package/dist/web/assets/{r-BoPR6WG2.js → r-CKiLSGzc.js} +1 -1
- package/dist/web/assets/{radar-ABXABTNO-CKsYvVqz.js → radar-ABXABTNO-CC4F4_aS.js} +1 -1
- package/dist/web/assets/{railroad-I3PHUGI6-B65B3uNN.js → railroad-I3PHUGI6-EiUjcaSq.js} +1 -1
- package/dist/web/assets/{railroad-abnf-LNEFI6M7-3QHUBp4u.js → railroad-abnf-LNEFI6M7-BZzYZu7G.js} +1 -1
- package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-FVhXeBSj.js → railroad-ebnf-DWYD2UWJ-DGihz-hz.js} +1 -1
- package/dist/web/assets/{railroad-peg-JR7BVNR7-Dm-KqLjB.js → railroad-peg-JR7BVNR7-D9Youaz5.js} +1 -1
- package/dist/web/assets/{railroadDiagram-SM67HX2B-DF4ZGcIG.js → railroadDiagram-SM67HX2B-ljs2FnSo.js} +1 -1
- package/dist/web/assets/{razor-BuCV9tNu.js → razor-DjN9S-r_.js} +1 -1
- package/dist/web/assets/{regexp-qKTqrnck.js → regexp-yRPnlhcx.js} +1 -1
- package/dist/web/assets/{requirementDiagram-X7JNWC4A-DjRke5ii.js → requirementDiagram-X7JNWC4A-BJ877Yny.js} +1 -1
- package/dist/web/assets/{rst-CRl5lm-Q.js → rst-NbJF2fMO.js} +1 -1
- package/dist/web/assets/{ruby-B9hlbxxT.js → ruby-ZoVZdf-0.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-UM26HJRW-CamOgrS8.js → sankeyDiagram-UM26HJRW-BPwhixv8.js} +1 -1
- package/dist/web/assets/{sas-C8_XUAnK.js → sas-CnTL8nFG.js} +1 -1
- package/dist/web/assets/{scss-CXsBS0VG.js → scss-BAnH3m1c.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-ZO4K6R2Y-B_TGH3Kb.js → sequenceDiagram-ZO4K6R2Y-xhx_vaZj.js} +1 -1
- package/dist/web/assets/{shellscript-DWMstwWF.js → shellscript-ChY3GVRw.js} +1 -1
- package/dist/web/assets/{shellsession-Btxe1tNF.js → shellsession-G4IamFTN.js} +1 -1
- package/dist/web/assets/{soy-mLggCgmX.js → soy-DHZYlzcJ.js} +1 -1
- package/dist/web/assets/{sql-CQWaF3T9.js → sql-BLAJpvko.js} +1 -1
- package/dist/web/assets/{src-C7grwUMY.js → src-CneWU0V7.js} +1 -1
- package/dist/web/assets/{stata-CuWbLp-h.js → stata-BF2DeqJI.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-TBUQTH76-BZ8S3qm5.js → stateDiagram-v2-TBUQTH76-DYEIdXmD.js} +1 -1
- package/dist/web/assets/{surrealql-C-vm0daZ.js → surrealql-CjuctJtE.js} +1 -1
- package/dist/web/assets/{svelte-CtDkvgD0.js → svelte-CAAipNMl.js} +1 -1
- package/dist/web/assets/{swimlanes-N4OXWK64-BfATBQI8.js → swimlanes-N4OXWK64-DaNmUIcz.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-K3J5GTZL-Cc_r8_vm.js +8 -0
- package/dist/web/assets/{templ-H8UIFth7.js → templ-B-6t84-k.js} +1 -1
- package/dist/web/assets/{tex-CkbKsWZ8.js → tex-DsSWxSFa.js} +1 -1
- package/dist/web/assets/{timeline-definition-YOQAKGHF-u2i5XlTn.js → timeline-definition-YOQAKGHF-CmA5uuSJ.js} +1 -1
- package/dist/web/assets/{treeView-D4JQ5SDB-CqQ4lze0.js → treeView-D4JQ5SDB-L8cwVgaN.js} +1 -1
- package/dist/web/assets/{treemap-SAJKECNS-C8LB5E0F.js → treemap-SAJKECNS-Cb56YgJH.js} +1 -1
- package/dist/web/assets/{ts-tags-Cu0aDIzl.js → ts-tags-2bkGTXWr.js} +1 -1
- package/dist/web/assets/{tsx-CAExLcKf.js → tsx-BD6V4u7j.js} +1 -1
- package/dist/web/assets/{twig-CsER03l2.js → twig-BRdwPHsd.js} +1 -1
- package/dist/web/assets/{typescript-5sYbFyp_.js → typescript-CE43_TcG.js} +1 -1
- package/dist/web/assets/{typst-xTMLS2uO.js → typst-Oj4lknbm.js} +1 -1
- package/dist/web/assets/{usecaseDiagram-VIAY4XPW-DkNC7sDP.js → usecaseDiagram-VIAY4XPW-RzU3uMX7.js} +1 -1
- package/dist/web/assets/{vennDiagram-BLWOH2XV-jyKf3LAy.js → vennDiagram-BLWOH2XV-RBYC_TER.js} +1 -1
- package/dist/web/assets/{vue-COaEYbeF.js → vue-DohRCbuk.js} +1 -1
- package/dist/web/assets/{vue-html-C0-x_Zbs.js → vue-html-CUm-vXDJ.js} +1 -1
- package/dist/web/assets/{vue-vine-iVnGh9vX.js → vue-vine-CSJNVT6g.js} +1 -1
- package/dist/web/assets/{wardley-7MLQ67FV-BNNco9TK.js → wardley-7MLQ67FV-BSCtc6D6.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YMQ3BMBF-B7qnVbxX.js → wardleyDiagram-YMQ3BMBF-DiJSX_eB.js} +1 -1
- package/dist/web/assets/{xml-DCmPPgCS.js → xml-CRGrymgs.js} +1 -1
- package/dist/web/assets/{xsl-C95o3Y65.js → xsl-5ujj8eCf.js} +1 -1
- package/dist/web/assets/{xychartDiagram-TAQBALBS-ByDg_iLk.js → xychartDiagram-TAQBALBS-BmlAXIhs.js} +1 -1
- package/dist/web/assets/{yaml-6uUvTVqV.js → yaml-DYq2KMMJ.js} +1 -1
- package/dist/web/index.html +2 -2
- package/dist/web/licences.md +1 -1
- package/package.json +4 -4
- package/dist/web/assets/channel-D96j5RGp.js +0 -1
- package/dist/web/assets/flowDiagram-OXPTDLAJ-BBtXQXD5.js +0 -1
- package/dist/web/assets/index-D90DSXXX.css +0 -1
- package/dist/web/assets/index-DBPwT0qJ.js +0 -256
- package/dist/web/assets/swimlanesDiagram-K3J5GTZL-DqMMLgX3.js +0 -8
package/README.md
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
|
|
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
|
-
>
|
|
4
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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 "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
86
|
-
|
|
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.
|
|
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
|
-
|
|
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]`
|
|
101
|
-
| `markdown-review poll [--document <path>] [--timeout <seconds>]` | Wait until you submit
|
|
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)
|