reviewdeck 0.2.2
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 +75 -0
- package/dist/reviewdeck.mjs +1084 -0
- package/dist/web/assets/abap-CkQ0tsz-.js +1 -0
- package/dist/web/assets/actionscript-3-DHm0ZfF4.js +1 -0
- package/dist/web/assets/ada-DK_ua92Z.js +1 -0
- package/dist/web/assets/andromeeda-D2ccw8v4.js +1 -0
- package/dist/web/assets/angular-html-BW6jlb6j.js +1 -0
- package/dist/web/assets/angular-ts-DWBNOji_.js +1 -0
- package/dist/web/assets/apache-DXtpFu7o.js +1 -0
- package/dist/web/assets/apex-DlnRRWpl.js +1 -0
- package/dist/web/assets/apl-uRKDN2p3.js +1 -0
- package/dist/web/assets/applescript-CShk62ad.js +1 -0
- package/dist/web/assets/ara-CWN-FDkm.js +1 -0
- package/dist/web/assets/asciidoc-Bg-PM9Vn.js +1 -0
- package/dist/web/assets/asm-DKOhR24S.js +1 -0
- package/dist/web/assets/astro-BiNvR4wU.js +1 -0
- package/dist/web/assets/aurora-x-DpaEirL8.js +1 -0
- package/dist/web/assets/awk-3ibKHffv.js +1 -0
- package/dist/web/assets/ayu-dark-ursiSH5k.js +1 -0
- package/dist/web/assets/ayu-light-DMjlrKmx.js +1 -0
- package/dist/web/assets/ayu-mirage-DZEMb75h.js +1 -0
- package/dist/web/assets/ballerina-xx7VNGxs.js +1 -0
- package/dist/web/assets/bat-DGYsZ5wR.js +1 -0
- package/dist/web/assets/beancount-D_ATR1UV.js +1 -0
- package/dist/web/assets/berry-BqYMORfH.js +1 -0
- package/dist/web/assets/bibtex-CQTBDajW.js +1 -0
- package/dist/web/assets/bicep-CfNtxPrK.js +1 -0
- package/dist/web/assets/bird2-C0dUPe3I.js +1 -0
- package/dist/web/assets/blade-CogPuRcD.js +1 -0
- package/dist/web/assets/bsl-Dx5tFn3i.js +1 -0
- package/dist/web/assets/c-c6mXMDpL.js +1 -0
- package/dist/web/assets/c3-BUwZ5e3k.js +1 -0
- package/dist/web/assets/cadence-C3OKDYrr.js +1 -0
- package/dist/web/assets/cairo-wCCQTdA9.js +1 -0
- package/dist/web/assets/catppuccin-frappe-CMnRXVZP.js +1 -0
- package/dist/web/assets/catppuccin-latte-CqhXSjCC.js +1 -0
- package/dist/web/assets/catppuccin-macchiato-B6kneE0C.js +1 -0
- package/dist/web/assets/catppuccin-mocha-CP8YZpvj.js +1 -0
- package/dist/web/assets/clarity-Crxe8gSr.js +1 -0
- package/dist/web/assets/clojure-BuzOUPMr.js +1 -0
- package/dist/web/assets/cmake-CCpZLdLI.js +1 -0
- package/dist/web/assets/cobol-BBFZi1TD.js +1 -0
- package/dist/web/assets/codeowners-Bo1VYpHz.js +1 -0
- package/dist/web/assets/codeql-Db01hzHE.js +1 -0
- package/dist/web/assets/coffee-CoyNl-Vr.js +1 -0
- package/dist/web/assets/common-lisp-CMlJIc6Y.js +1 -0
- package/dist/web/assets/coq-BlzBYp3f.js +1 -0
- package/dist/web/assets/cpp-BhZISK2o.js +1 -0
- package/dist/web/assets/crystal-DARwJIth.js +1 -0
- package/dist/web/assets/csharp-kfNshAa7.js +1 -0
- package/dist/web/assets/css-BFlkO4hH.js +1 -0
- package/dist/web/assets/csv-Dr8ri5Nd.js +1 -0
- package/dist/web/assets/cue-jXfhyOwY.js +1 -0
- package/dist/web/assets/cypher-CayLeiaR.js +1 -0
- package/dist/web/assets/d-BMZQ0mAy.js +1 -0
- package/dist/web/assets/dark-plus-B__q47Nr.js +1 -0
- package/dist/web/assets/dart-gMOEMyuz.js +1 -0
- package/dist/web/assets/dax-C3t5LadU.js +1 -0
- package/dist/web/assets/desktop-DmhXLwLR.js +1 -0
- package/dist/web/assets/diff-togOXQX6.js +1 -0
- package/dist/web/assets/docker--6N01olR.js +1 -0
- package/dist/web/assets/dotenv-Bq930Yx8.js +1 -0
- package/dist/web/assets/dracula-CBkSghcw.js +1 -0
- package/dist/web/assets/dracula-soft-CCSYeoxL.js +1 -0
- package/dist/web/assets/dream-maker-BiMf3DHl.js +1 -0
- package/dist/web/assets/edge-1uDQap2l.js +1 -0
- package/dist/web/assets/elixir-B630FsAX.js +1 -0
- package/dist/web/assets/elm-B0CYJExx.js +1 -0
- package/dist/web/assets/emacs-lisp-Dhht7he2.js +1 -0
- package/dist/web/assets/erb-BCuuvlI8.js +1 -0
- package/dist/web/assets/erlang-CtK0kQ6z.js +1 -0
- package/dist/web/assets/everforest-dark-NqSz4oHS.js +1 -0
- package/dist/web/assets/everforest-light-a3Yzs_lT.js +1 -0
- package/dist/web/assets/fennel-BExc9TZf.js +1 -0
- package/dist/web/assets/fish-C2p-AJmZ.js +1 -0
- package/dist/web/assets/fluent-CeYzs8Qy.js +1 -0
- package/dist/web/assets/fortran-fixed-form-DBM4e0_k.js +1 -0
- package/dist/web/assets/fortran-free-form-BIQEK2Jw.js +1 -0
- package/dist/web/assets/fsharp-CmzzGQLe.js +1 -0
- package/dist/web/assets/gdresource-B_wbPqHd.js +1 -0
- package/dist/web/assets/gdscript-B5JQPh_-.js +1 -0
- package/dist/web/assets/gdshader-vVjJ_Qr8.js +1 -0
- package/dist/web/assets/genie-DGl5rqC8.js +1 -0
- package/dist/web/assets/gherkin-CY_VLUnD.js +1 -0
- package/dist/web/assets/git-commit-1z4D6NzL.js +1 -0
- package/dist/web/assets/git-rebase-CMGqxEzO.js +1 -0
- package/dist/web/assets/github-dark-ClO4AStc.js +1 -0
- package/dist/web/assets/github-dark-default-CM0dPco8.js +1 -0
- package/dist/web/assets/github-dark-dimmed-Cb6xxpXY.js +1 -0
- package/dist/web/assets/github-dark-high-contrast-BpYtx2-M.js +1 -0
- package/dist/web/assets/github-light-CeOVFgf_.js +1 -0
- package/dist/web/assets/github-light-default-BmnCWL6x.js +1 -0
- package/dist/web/assets/github-light-high-contrast-rpagNF5O.js +1 -0
- package/dist/web/assets/gleam-BarIG9kQ.js +1 -0
- package/dist/web/assets/glimmer-js-CwCQsT5O.js +1 -0
- package/dist/web/assets/glimmer-ts-CDiy87zB.js +1 -0
- package/dist/web/assets/glsl-KkJIjOyq.js +1 -0
- package/dist/web/assets/gn-DhYsTPYc.js +1 -0
- package/dist/web/assets/gnuplot-CucLlTBc.js +1 -0
- package/dist/web/assets/go-toi-uWvg.js +1 -0
- package/dist/web/assets/graphql-MKTYUDMa.js +1 -0
- package/dist/web/assets/groovy-Ds4dis_k.js +1 -0
- package/dist/web/assets/gruvbox-dark-hard-aPiW8pQh.js +1 -0
- package/dist/web/assets/gruvbox-dark-medium-2HJCvzsS.js +1 -0
- package/dist/web/assets/gruvbox-dark-soft-Da97ODX9.js +1 -0
- package/dist/web/assets/gruvbox-light-hard-BXlEipFe.js +1 -0
- package/dist/web/assets/gruvbox-light-medium-Cun-GjGk.js +1 -0
- package/dist/web/assets/gruvbox-light-soft-Bd3qiiSw.js +1 -0
- package/dist/web/assets/hack-Bwo3McIF.js +1 -0
- package/dist/web/assets/haml-D88Ucy2e.js +1 -0
- package/dist/web/assets/handlebars-BU0LZwZ1.js +1 -0
- package/dist/web/assets/haskell-B_jvz5Po.js +1 -0
- package/dist/web/assets/haxe-BRbuo5UO.js +1 -0
- package/dist/web/assets/hcl-BzNUCtsK.js +1 -0
- package/dist/web/assets/hjson-BxVo3sS2.js +1 -0
- package/dist/web/assets/hlsl-C8Wes1nf.js +1 -0
- package/dist/web/assets/horizon-D54PjLAY.js +1 -0
- package/dist/web/assets/horizon-bright-D9RccdIr.js +1 -0
- package/dist/web/assets/houston-CMu1N_4K.js +1 -0
- package/dist/web/assets/html-DrMQJsXw.js +1 -0
- package/dist/web/assets/html-derivative-0WBbZowl.js +1 -0
- package/dist/web/assets/http-DbEAkxXN.js +1 -0
- package/dist/web/assets/hurl-CqJXynMd.js +1 -0
- package/dist/web/assets/hxml-DC4KwKt2.js +1 -0
- package/dist/web/assets/hy-dMrJKKU_.js +1 -0
- package/dist/web/assets/imba-DG_oO8tg.js +1 -0
- package/dist/web/assets/index-BPtNzy1Q.js +1934 -0
- package/dist/web/assets/index-BkEoZ-nI.css +2 -0
- package/dist/web/assets/ini-geHw79Aj.js +1 -0
- package/dist/web/assets/java-BRVCc-Q1.js +1 -0
- package/dist/web/assets/javascript-BD4fYJEn.js +1 -0
- package/dist/web/assets/jinja-CelQ23ws.js +1 -0
- package/dist/web/assets/jison-DBS-9n7v.js +1 -0
- package/dist/web/assets/json-DZDuupM6.js +1 -0
- package/dist/web/assets/json5-CDUsNqz6.js +1 -0
- package/dist/web/assets/jsonc-D48xcwyD.js +1 -0
- package/dist/web/assets/jsonl-cpIYDXEe.js +1 -0
- package/dist/web/assets/jsonnet-Da1lhszN.js +1 -0
- package/dist/web/assets/jssm-B8BLrEGL.js +1 -0
- package/dist/web/assets/jsx-BZOBrdrR.js +1 -0
- package/dist/web/assets/julia-BCQpMN0P.js +1 -0
- package/dist/web/assets/just-C3xXABnW.js +1 -0
- package/dist/web/assets/kanagawa-dragon-2Sk8Rx83.js +1 -0
- package/dist/web/assets/kanagawa-lotus-CQVSWfJp.js +1 -0
- package/dist/web/assets/kanagawa-wave-BKWNioLX.js +1 -0
- package/dist/web/assets/kdl-B-2tSRmp.js +1 -0
- package/dist/web/assets/kotlin-DepsEzh3.js +1 -0
- package/dist/web/assets/kusto-BcCtXIb8.js +1 -0
- package/dist/web/assets/laserwave-BUqkO46F.js +1 -0
- package/dist/web/assets/latex-OIm821Jq.js +1 -0
- package/dist/web/assets/lean-CNO9ffpX.js +1 -0
- package/dist/web/assets/less-Dj0T9pWC.js +1 -0
- package/dist/web/assets/light-plus-C9Hnuc1T.js +1 -0
- package/dist/web/assets/liquid-CtRnMjLR.js +1 -0
- package/dist/web/assets/llvm-DbV9b66l.js +1 -0
- package/dist/web/assets/log-BMblmPyH.js +1 -0
- package/dist/web/assets/logo-B78qMxws.js +1 -0
- package/dist/web/assets/lua-C4GAsLLv.js +1 -0
- package/dist/web/assets/luau-BUd8xsdE.js +1 -0
- package/dist/web/assets/make-Ev-6cJrd.js +1 -0
- package/dist/web/assets/markdown-CS4LI6sN.js +1 -0
- package/dist/web/assets/marko-BzBo2m_h.js +1 -0
- package/dist/web/assets/material-theme-5rA1zn0D.js +1 -0
- package/dist/web/assets/material-theme-darker-DGOEiL65.js +1 -0
- package/dist/web/assets/material-theme-lighter-CULfFRX0.js +1 -0
- package/dist/web/assets/material-theme-ocean-LQZ9CleP.js +1 -0
- package/dist/web/assets/material-theme-palenight-Di_f5oks.js +1 -0
- package/dist/web/assets/matlab-C0qEtAx9.js +1 -0
- package/dist/web/assets/mdc-Diez5J4p.js +1 -0
- package/dist/web/assets/mdx-CzvnbLXb.js +1 -0
- package/dist/web/assets/mermaid-BPquZaKt.js +1 -0
- package/dist/web/assets/min-dark-rkuIbtJV.js +1 -0
- package/dist/web/assets/min-light-Dj_HOGsr.js +1 -0
- package/dist/web/assets/mipsasm-k5DQoS6j.js +1 -0
- package/dist/web/assets/mojo-sTTDuNnR.js +1 -0
- package/dist/web/assets/monokai-D5p-u2ij.js +1 -0
- package/dist/web/assets/moonbit-j5ChFtBC.js +1 -0
- package/dist/web/assets/move-Dj0Gmn6R.js +1 -0
- package/dist/web/assets/narrat-DJgMz2oW.js +1 -0
- package/dist/web/assets/nextflow-CApkvBGW.js +1 -0
- package/dist/web/assets/nextflow-groovy-eDLuZ_oi.js +1 -0
- package/dist/web/assets/nginx-B-O05-Ip.js +1 -0
- package/dist/web/assets/night-owl-CEdtPl3A.js +1 -0
- package/dist/web/assets/night-owl-light-GdSldewm.js +1 -0
- package/dist/web/assets/nim-DYodfN_j.js +1 -0
- package/dist/web/assets/nix-CxIPS3pb.js +1 -0
- package/dist/web/assets/nord-3WFAz5H9.js +1 -0
- package/dist/web/assets/nushell-GDfBmoBU.js +1 -0
- package/dist/web/assets/objective-c-MFQ_MGUa.js +1 -0
- package/dist/web/assets/objective-cpp-Y83LcBE7.js +1 -0
- package/dist/web/assets/ocaml-FxYfaJxu.js +1 -0
- package/dist/web/assets/odin-CprihY3z.js +1 -0
- package/dist/web/assets/one-dark-pro-BB6mpmmA.js +1 -0
- package/dist/web/assets/one-light-BYLoxNtg.js +1 -0
- package/dist/web/assets/openscad-Bc1FbpOi.js +1 -0
- package/dist/web/assets/pascal-Bb4d8cUL.js +1 -0
- package/dist/web/assets/perl-BajmpJw1.js +1 -0
- package/dist/web/assets/php-GbSlF-ma.js +1 -0
- package/dist/web/assets/pierre-dark-DbQedTMH.js +1 -0
- package/dist/web/assets/pierre-light-DxtrzyCi.js +1 -0
- package/dist/web/assets/pkl-tM25Sq0w.js +1 -0
- package/dist/web/assets/plastic-D3k2Xp_5.js +1 -0
- package/dist/web/assets/plsql-CLEfFhSj.js +1 -0
- package/dist/web/assets/po-CaAzdrrh.js +1 -0
- package/dist/web/assets/poimandres-bPTvT4Da.js +1 -0
- package/dist/web/assets/polar-TG7aTGdK.js +1 -0
- package/dist/web/assets/postcss-8kqfa9f0.js +1 -0
- package/dist/web/assets/powerquery-CtSu1Nfd.js +1 -0
- package/dist/web/assets/powershell-87lLBHMy.js +1 -0
- package/dist/web/assets/prisma-Dnf694DZ.js +1 -0
- package/dist/web/assets/prolog-C0XbHTWa.js +1 -0
- package/dist/web/assets/proto-BZP-HLIb.js +1 -0
- package/dist/web/assets/pug-B3pftVq7.js +1 -0
- package/dist/web/assets/puppet-CJYWgYC5.js +1 -0
- package/dist/web/assets/purescript-B95Q6BAd.js +1 -0
- package/dist/web/assets/python-CqTCsi7P.js +1 -0
- package/dist/web/assets/qml-CU7fIqWl.js +1 -0
- package/dist/web/assets/qmldir-DlIL4hls.js +1 -0
- package/dist/web/assets/qss-BW72E0q_.js +1 -0
- package/dist/web/assets/r-VFD3g93S.js +1 -0
- package/dist/web/assets/racket-CCAimEsC.js +1 -0
- package/dist/web/assets/raku-mSuqElkM.js +1 -0
- package/dist/web/assets/razor-YJmCxoz7.js +1 -0
- package/dist/web/assets/red-C-DA4yBI.js +1 -0
- package/dist/web/assets/reg-CGwMBJ2c.js +1 -0
- package/dist/web/assets/regexp-xQImVJyz.js +1 -0
- package/dist/web/assets/rel-JwrbYgX4.js +1 -0
- package/dist/web/assets/riscv-CoYyE75b.js +1 -0
- package/dist/web/assets/ron-C5wrhnmJ.js +1 -0
- package/dist/web/assets/rose-pine-DlrMPYYd.js +1 -0
- package/dist/web/assets/rose-pine-dawn-DBHFtZD2.js +1 -0
- package/dist/web/assets/rose-pine-moon-BBfrpe5q.js +1 -0
- package/dist/web/assets/rosmsg-DlimTR9t.js +1 -0
- package/dist/web/assets/rst-C-l1vIhG.js +1 -0
- package/dist/web/assets/ruby-ClXcG6Uc.js +1 -0
- package/dist/web/assets/rust-Cxnkxx3h.js +1 -0
- package/dist/web/assets/sas-UbdvwYYC.js +1 -0
- package/dist/web/assets/sass-DEyqUIpU.js +1 -0
- package/dist/web/assets/scala-i3RN3yAN.js +1 -0
- package/dist/web/assets/scheme-BcKdjYkO.js +1 -0
- package/dist/web/assets/scss-BSFxtSCj.js +1 -0
- package/dist/web/assets/sdbl-Be_XWc3n.js +1 -0
- package/dist/web/assets/shaderlab-DXAhMdPo.js +1 -0
- package/dist/web/assets/shellscript-DipAQUtx.js +1 -0
- package/dist/web/assets/shellsession-4iJrG6C5.js +1 -0
- package/dist/web/assets/slack-dark-3PDtm74m.js +1 -0
- package/dist/web/assets/slack-ochin-CwiuFRJD.js +1 -0
- package/dist/web/assets/smalltalk-BdBlL6ks.js +1 -0
- package/dist/web/assets/snazzy-light-Dyqc8Is2.js +1 -0
- package/dist/web/assets/solarized-dark-DZiTscIX.js +1 -0
- package/dist/web/assets/solarized-light-DBcfxrfG.js +1 -0
- package/dist/web/assets/solidity-DH-yUSWc.js +1 -0
- package/dist/web/assets/soy-DbrU_Nxg.js +1 -0
- package/dist/web/assets/sparql-BdcL8cbr.js +1 -0
- package/dist/web/assets/splunk-CIjc4kxs.js +1 -0
- package/dist/web/assets/sql-5eAwe7x9.js +1 -0
- package/dist/web/assets/ssh-config-BKVd4drG.js +1 -0
- package/dist/web/assets/stata-DPzpuJuP.js +1 -0
- package/dist/web/assets/stylus-tqAsmugv.js +1 -0
- package/dist/web/assets/surrealql-BFHjstCU.js +1 -0
- package/dist/web/assets/svelte-DEFiloGp.js +1 -0
- package/dist/web/assets/swift-CdDBQ3_Z.js +1 -0
- package/dist/web/assets/synthwave-84-CbbRs73K.js +1 -0
- package/dist/web/assets/system-verilog-CBqEY-9v.js +1 -0
- package/dist/web/assets/systemd-khRP5zwK.js +1 -0
- package/dist/web/assets/talonscript-D_lneH-6.js +1 -0
- package/dist/web/assets/tasl-CLymawGe.js +1 -0
- package/dist/web/assets/tcl-BRY1S87U.js +1 -0
- package/dist/web/assets/templ-B3axXApj.js +1 -0
- package/dist/web/assets/terraform-BqohMo2f.js +1 -0
- package/dist/web/assets/tex-DhbFB_y0.js +1 -0
- package/dist/web/assets/tokyo-night-BWUONxad.js +1 -0
- package/dist/web/assets/toml-C4c85Lwg.js +1 -0
- package/dist/web/assets/ts-tags-BN89t81C.js +1 -0
- package/dist/web/assets/tsv-DsZq9HBQ.js +1 -0
- package/dist/web/assets/tsx-LzmugIB3.js +1 -0
- package/dist/web/assets/turtle-Dpr8zLlw.js +1 -0
- package/dist/web/assets/twig-BcvJvETg.js +1 -0
- package/dist/web/assets/typescript-vZfgIWhk.js +1 -0
- package/dist/web/assets/typespec-DcqgATB-.js +1 -0
- package/dist/web/assets/typst-CeVxmuPg.js +1 -0
- package/dist/web/assets/v-C2Qsh2-1.js +1 -0
- package/dist/web/assets/vala-CvZ3yL7c.js +1 -0
- package/dist/web/assets/vb-B_p4qDw4.js +1 -0
- package/dist/web/assets/verilog-D8MGjxD7.js +1 -0
- package/dist/web/assets/vesper-DossXiE1.js +1 -0
- package/dist/web/assets/vhdl-MLyYh_Gz.js +1 -0
- package/dist/web/assets/viml-BuYIArcz.js +1 -0
- package/dist/web/assets/vitesse-black-C3kc1227.js +1 -0
- package/dist/web/assets/vitesse-dark-kWOu5V36.js +1 -0
- package/dist/web/assets/vitesse-light-DMtiL8bK.js +1 -0
- package/dist/web/assets/vue-DTJd19mx.js +1 -0
- package/dist/web/assets/vue-html-DN1O1Gud.js +1 -0
- package/dist/web/assets/vue-vine-CPt4e1Kz.js +1 -0
- package/dist/web/assets/vyper-CNqG09-_.js +1 -0
- package/dist/web/assets/wasm-BsQDV7Y0.js +1 -0
- package/dist/web/assets/wasm-DFVlQlgd.js +1 -0
- package/dist/web/assets/wenyan-BmOQge13.js +1 -0
- package/dist/web/assets/wgsl-CgWrmvIg.js +1 -0
- package/dist/web/assets/wikitext-DkwckXCk.js +1 -0
- package/dist/web/assets/wit-CtyVFGe7.js +1 -0
- package/dist/web/assets/wolfram-CXE4FrKz.js +1 -0
- package/dist/web/assets/xml-fA_cpwGb.js +1 -0
- package/dist/web/assets/xsl-3f3GC_Uf.js +1 -0
- package/dist/web/assets/yaml-Ca1_GRr1.js +1 -0
- package/dist/web/assets/zenscript-DH15wJt0.js +1 -0
- package/dist/web/assets/zig-CqXN9brD.js +1 -0
- package/dist/web/index.html +13 -0
- package/dist/web-inline/assets/index-BkEoZ-nI.css +2 -0
- package/dist/web-inline/assets/index-Qzj-BIcs.js +1933 -0
- package/dist/web-inline/index.html +13 -0
- package/package.json +65 -0
- package/skills/reviewdeck/SKILL.md +121 -0
- package/skills/reviewdeck/assets/prompt-template.md +111 -0
- package/skills/reviewdeck/references/get-diff.md +24 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" class="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Stacked Diff Review</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-Qzj-BIcs.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BkEoZ-nI.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "reviewdeck",
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "Split large PR diffs into reviewable sub-patches via indexed groups.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/neutree-ai/reviewdeck.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/neutree-ai/reviewdeck",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/neutree-ai/reviewdeck/issues"
|
|
12
|
+
},
|
|
13
|
+
"bin": {
|
|
14
|
+
"reviewdeck": "dist/reviewdeck.mjs"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"skills/reviewdeck",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"type": "module",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"test": "vp test",
|
|
24
|
+
"check": "vp check",
|
|
25
|
+
"check-deps": "depcruise src --config .dependency-cruiser.cjs",
|
|
26
|
+
"knip": "knip",
|
|
27
|
+
"build:cli": "esbuild src/cli/main.ts --bundle --platform=node --format=esm --outfile=dist/reviewdeck.mjs --banner:js='#!/usr/bin/env node'",
|
|
28
|
+
"build:web": "vp build -c src/web/vite.config.ts",
|
|
29
|
+
"build:html": "vp build -c src/web/vite.config.inline.ts",
|
|
30
|
+
"build": "npm run build:cli && npm run build:web && npm run build:html",
|
|
31
|
+
"lint": "vp test && vp check && knip && depcruise src --config .dependency-cruiser.cjs",
|
|
32
|
+
"pack:dry-run": "npm pack --dry-run",
|
|
33
|
+
"prepack": "npm run build",
|
|
34
|
+
"prepare": "vp config"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@pierre/diffs": "^1.1.0",
|
|
38
|
+
"class-variance-authority": "^0.7.1",
|
|
39
|
+
"clsx": "^2.1.1",
|
|
40
|
+
"lucide-react": "^0.577.0",
|
|
41
|
+
"react": "^19.2.4",
|
|
42
|
+
"react-dom": "^19.2.4",
|
|
43
|
+
"tailwind-merge": "^3.5.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@tailwindcss/vite": "^4.2.1",
|
|
47
|
+
"@types/react": "^19.2.14",
|
|
48
|
+
"@types/react-dom": "^19.2.3",
|
|
49
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
50
|
+
"dependency-cruiser": "^17.3.9",
|
|
51
|
+
"esbuild": "^0.27.4",
|
|
52
|
+
"knip": "^5.86.0",
|
|
53
|
+
"tailwindcss": "^4.2.1",
|
|
54
|
+
"tsx": "^4.21.0",
|
|
55
|
+
"vite-plus": "latest"
|
|
56
|
+
},
|
|
57
|
+
"overrides": {
|
|
58
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
|
|
59
|
+
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=18"
|
|
63
|
+
},
|
|
64
|
+
"packageManager": "npm@11.11.1"
|
|
65
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewdeck
|
|
3
|
+
description: Split a large PR diff into a sequence of smaller, reviewable sub-patches. Use when the user wants to break up a big PR for easier code review, or mentions review decks, patch splitting, or review chunking.
|
|
4
|
+
compatibility: Requires Node.js 18+ and npx (or the reviewdeck CLI installed globally).
|
|
5
|
+
metadata:
|
|
6
|
+
author: yanzhen
|
|
7
|
+
version: "0.1"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Reviewdeck
|
|
11
|
+
|
|
12
|
+
You help a code reviewer split a large PR diff into a sequence of smaller, logically coherent sub-patches, then prepare the PR for human review.
|
|
13
|
+
|
|
14
|
+
If the user wants to review a PR, do not stop after `split`. Continue into `render` unless the user explicitly says they only want the split output.
|
|
15
|
+
But do not substitute your own code review for the human review step unless the user explicitly asks you to review the code yourself.
|
|
16
|
+
|
|
17
|
+
When invoking the CLI via `npx`, use `npx reviewdeck@latest ...` so the workflow tracks the latest published CLI version.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
### Step 1: Get the diff
|
|
22
|
+
|
|
23
|
+
Ask the user for the diff, or generate it. See [get-diff reference](references/get-diff.md) for different methods.
|
|
24
|
+
|
|
25
|
+
### Step 2: Index changes
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx reviewdeck@latest index pr.diff
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
This outputs to stdout a numbered list of every changed line in the diff.
|
|
32
|
+
|
|
33
|
+
### Step 3: Generate split metadata
|
|
34
|
+
|
|
35
|
+
Read the index output, then read the [prompt template](assets/prompt-template.md) and follow its instructions to produce a JSON split plan.
|
|
36
|
+
|
|
37
|
+
When writing each group's `description`, optimize for reviewer guidance, not literal restatement.
|
|
38
|
+
The description should help someone understand why this group exists and why it appears at this point in the sequence.
|
|
39
|
+
|
|
40
|
+
If you notice concrete review issues while splitting, attach them as `draftComments` on the matching group.
|
|
41
|
+
Each draft comment must point to a `change` index that belongs to that same group.
|
|
42
|
+
These are candidate co-review comments for the human reviewer to accept or reject later in `render`, not your final autonomous review output.
|
|
43
|
+
|
|
44
|
+
### Step 4: Split and verify
|
|
45
|
+
|
|
46
|
+
Pipe the JSON directly via stdin:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
echo '<meta JSON>' | npx reviewdeck@latest split pr.diff -
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This validates the metadata, generates sub-patches, verifies that applying them sequentially reproduces the original diff, and outputs the sub-patches to stdout separated by `===SUB_PATCH===`.
|
|
53
|
+
If your metadata included `draftComments`, they are preserved for `render`.
|
|
54
|
+
|
|
55
|
+
To write sub-patches to files instead:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
echo '<meta JSON>' | npx reviewdeck@latest split pr.diff - -o output/
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If the command fails, read the error message, fix the metadata JSON, and retry.
|
|
62
|
+
|
|
63
|
+
### Step 5: Start human review
|
|
64
|
+
|
|
65
|
+
After `split` succeeds, the normal next step for PR review is `render`.
|
|
66
|
+
Use it to open a human review UI for the generated sub-patches and collect comments.
|
|
67
|
+
Default to the live render session. Only switch to `--html` when the user explicitly wants a static artifact, a file to share, or the environment clearly cannot support a live local review session.
|
|
68
|
+
|
|
69
|
+
Launch a local diff review UI:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# From a directory of .diff files
|
|
73
|
+
npx reviewdeck@latest render output/
|
|
74
|
+
|
|
75
|
+
# From stdin
|
|
76
|
+
echo '<meta JSON>' | npx reviewdeck@latest split pr.diff - | npx reviewdeck@latest render -
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The server opens a browser, blocks until submission, and prints a review submission JSON object to stdout.
|
|
80
|
+
That object contains:
|
|
81
|
+
|
|
82
|
+
- `comments`: the final comments to submit back to the source review
|
|
83
|
+
- `draftComments`: the agent draft comments with `accepted` / `rejected` / `pending` status
|
|
84
|
+
|
|
85
|
+
Treat `comments` as the final human-approved payload.
|
|
86
|
+
Treat `draftComments` as provenance that tells you which of your draft findings survived review.
|
|
87
|
+
|
|
88
|
+
If the user wants a file instead of a live browser session, generate self-contained HTML:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
echo '<meta JSON>' | npx reviewdeck@latest split pr.diff - | npx reviewdeck@latest render - --html > review.html
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Treat the live `render` session as the default human review handoff.
|
|
95
|
+
Prefer to actually launch it, wait for submission, and then continue the task with the returned submission JSON.
|
|
96
|
+
|
|
97
|
+
When you finish this step without waiting for a live session, prefer an output like:
|
|
98
|
+
|
|
99
|
+
- the split completed successfully
|
|
100
|
+
- where the review UI or HTML artifact is
|
|
101
|
+
- what the user should open next
|
|
102
|
+
|
|
103
|
+
Do not immediately switch into autonomous bug-finding or produce review findings unless the user explicitly asks for your own review.
|
|
104
|
+
|
|
105
|
+
After `render` completes and you have the submission JSON:
|
|
106
|
+
|
|
107
|
+
- summarize the accepted/rejected/pending draft comment outcome clearly
|
|
108
|
+
- if there are final `comments`, ask whether the user wants them submitted back to the source review system
|
|
109
|
+
- if the user has already made the target explicit in context, such as a specific PR or review thread, go ahead and submit there instead of asking again
|
|
110
|
+
- when you do submit, use `comments`, not the raw `draftComments`
|
|
111
|
+
|
|
112
|
+
If you are still before `render` submission and the user asked for PR review help, do not stop at “artifact generated” when a live local review session is possible.
|
|
113
|
+
|
|
114
|
+
## Tips
|
|
115
|
+
|
|
116
|
+
- Aim for 3-6 sub-patches per PR
|
|
117
|
+
- Order: peripheral/config first, core logic next, tests last
|
|
118
|
+
- Each sub-patch should be independently understandable
|
|
119
|
+
- Group descriptions should help the reviewer navigate the stack, not just repeat the touched area
|
|
120
|
+
- Use range syntax in changes (for example `"0-23"`) to keep the JSON compact
|
|
121
|
+
- Draft comments are optional and should be concrete enough that a human can accept or reject them inline
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Task: Split a PR diff into reviewable sub-patches
|
|
2
|
+
|
|
3
|
+
You are helping a code reviewer. Given a large PR diff, split it into a sequence of smaller, logically coherent sub-patches that are easier to review.
|
|
4
|
+
|
|
5
|
+
## Principles
|
|
6
|
+
|
|
7
|
+
- **Peripheral first, core last**: infrastructure, config, types -> implementation -> tests
|
|
8
|
+
- **Independent first, dependent last**: if B depends on A, A comes first
|
|
9
|
+
- **One concern per group**: don't mix refactoring with new features
|
|
10
|
+
- **Reviewer-oriented descriptions**: describe why this group exists in the review flow, not just the surface area it touches
|
|
11
|
+
- **Co-review drafts when warranted**: if you notice a concrete review concern while splitting, attach it as a draft comment instead of switching into a full review report
|
|
12
|
+
|
|
13
|
+
## Input
|
|
14
|
+
|
|
15
|
+
The indexed change lines are provided separately. Each `[N]` is a **change index**. `-` = deletion, `+` = addition, `LN` = line number.
|
|
16
|
+
|
|
17
|
+
## Output format
|
|
18
|
+
|
|
19
|
+
Output a single JSON object (no markdown fences, no commentary before or after):
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"groups": [
|
|
24
|
+
{
|
|
25
|
+
"description": "Add version selector plumbing so later upgrade flows have a stable input",
|
|
26
|
+
"changes": ["0-2", 5, 6],
|
|
27
|
+
"draftComments": [
|
|
28
|
+
{
|
|
29
|
+
"change": 6,
|
|
30
|
+
"body": "Check whether the new selector can drift out of sync when no compatible versions exist."
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"description": "Cover the upgrade path with e2e checks after the UI flow is in place",
|
|
36
|
+
"changes": ["3-4", "7-9"]
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Rules
|
|
43
|
+
|
|
44
|
+
1. Every change index must appear in exactly one group
|
|
45
|
+
2. No index may appear in more than one group
|
|
46
|
+
3. No index may be omitted
|
|
47
|
+
4. Groups are ordered — group 1 is applied first, group N last
|
|
48
|
+
5. Aim for 3-6 groups (adjust based on the PR's complexity)
|
|
49
|
+
6. Each group's `description` should read like a review-guiding commit message — a concise summary line, optionally followed by detail
|
|
50
|
+
7. Use range syntax for consecutive indices: `"0-2"` means `[0, 1, 2]`. Single indices can be plain numbers: `5`
|
|
51
|
+
8. `draftComments` is optional, but when you see a concrete reviewer-worthy concern while splitting, include it.
|
|
52
|
+
9. Each draft comment must anchor to a `change` that belongs to the same group.
|
|
53
|
+
|
|
54
|
+
## Description guidance
|
|
55
|
+
|
|
56
|
+
Good descriptions help a reviewer understand why this group should be reviewed as one unit and how it fits into the sequence.
|
|
57
|
+
|
|
58
|
+
Prefer descriptions that:
|
|
59
|
+
|
|
60
|
+
- explain the intent or review value of the group
|
|
61
|
+
- mention the dependency or sequencing reason when useful
|
|
62
|
+
- tell the reviewer what they can learn or verify in this step
|
|
63
|
+
|
|
64
|
+
Avoid descriptions that are only:
|
|
65
|
+
|
|
66
|
+
- a raw area label like `form version selector`
|
|
67
|
+
- an as-is restatement of filenames, component names, or ticket labels
|
|
68
|
+
- too vague to distinguish this group from adjacent ones
|
|
69
|
+
|
|
70
|
+
Better:
|
|
71
|
+
|
|
72
|
+
- `Add version selection plumbing so the upgrade flow has a stable entry point`
|
|
73
|
+
- `Show current version and status before wiring upgrade actions`
|
|
74
|
+
- `Isolate the upgrade dialog and action handling as the main behavior change`
|
|
75
|
+
- `Add e2e coverage once the upgrade flow is in place`
|
|
76
|
+
|
|
77
|
+
Worse:
|
|
78
|
+
|
|
79
|
+
- `version selector`
|
|
80
|
+
- `status display`
|
|
81
|
+
- `upgrade dialog`
|
|
82
|
+
- `e2e`
|
|
83
|
+
|
|
84
|
+
## Draft comment guidance
|
|
85
|
+
|
|
86
|
+
Use `draftComments` selectively but decisively. They are not the final submitted comments. They are candidate review comments that the human reviewer can accept or reject during `render`.
|
|
87
|
+
|
|
88
|
+
Prefer draft comments that:
|
|
89
|
+
|
|
90
|
+
- point to a specific risk, regression, or questionable assumption
|
|
91
|
+
- are anchored to one concrete indexed change
|
|
92
|
+
- read like something worth sending to the source review if accepted
|
|
93
|
+
|
|
94
|
+
If you already have enough evidence from the diff to state a concrete concern, prefer emitting the draft comment now rather than omitting it.
|
|
95
|
+
|
|
96
|
+
Avoid draft comments that are only:
|
|
97
|
+
|
|
98
|
+
- a summary of what the code does
|
|
99
|
+
- generic praise or noise
|
|
100
|
+
- a full review section pasted into one comment
|
|
101
|
+
|
|
102
|
+
Better:
|
|
103
|
+
|
|
104
|
+
- `Potential regression: this update path bypasses the sanitizing transform used by the normal edit flow.`
|
|
105
|
+
- `This selector keeps the old version when no compatible options exist, so the form may submit an unavailable version.`
|
|
106
|
+
|
|
107
|
+
Worse:
|
|
108
|
+
|
|
109
|
+
- `Adds selector logic`
|
|
110
|
+
- `Looks risky`
|
|
111
|
+
- `Need review`
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Getting a diff
|
|
2
|
+
|
|
3
|
+
## Local git
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# Current branch vs main
|
|
7
|
+
git diff main...HEAD
|
|
8
|
+
|
|
9
|
+
# Between two commits
|
|
10
|
+
git diff <commit-a> <commit-b>
|
|
11
|
+
|
|
12
|
+
# Staged changes
|
|
13
|
+
git diff --cached
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## GitHub CLI
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# PR diff by number
|
|
20
|
+
gh pr diff 123
|
|
21
|
+
|
|
22
|
+
# Specific PR in another repo
|
|
23
|
+
gh pr diff 123 --repo owner/repo
|
|
24
|
+
```
|