prr-kit 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +260 -235
- package/docs/assets/banner.svg +33 -165
- package/docs/assets/how-it-works.svg +87 -0
- package/package.json +60 -60
- package/src/core/agents/prr-master.agent.yaml +18 -7
- package/src/core/tasks/clear.md +140 -0
- package/src/core/tasks/help.md +15 -13
- package/src/core/workflows/clear/workflow.md +6 -0
- package/src/core/workflows/help/workflow.md +6 -0
- package/src/core/workflows/party-mode/steps/step-01-load-reviewers.md +35 -24
- package/src/core/workflows/party-mode/steps/step-02-discussion.md +45 -25
- package/src/core/workflows/party-mode/workflow.md +2 -2
- package/src/prr/agents/architecture-reviewer.agent.yaml +65 -45
- package/src/prr/agents/business-reviewer.agent.yaml +66 -0
- package/src/prr/agents/general-reviewer.agent.yaml +64 -48
- package/src/prr/agents/performance-reviewer.agent.yaml +65 -45
- package/src/prr/agents/security-reviewer.agent.yaml +67 -43
- package/src/prr/config-template.yaml +97 -0
- package/src/prr/data/stacks/actix.md +55 -0
- package/src/prr/data/stacks/alpine.md +47 -0
- package/src/prr/data/stacks/android.md +53 -0
- package/src/prr/data/stacks/angular.md +96 -0
- package/src/prr/data/stacks/ansible.md +55 -0
- package/src/prr/data/stacks/apollo.md +54 -0
- package/src/prr/data/stacks/astro.md +48 -0
- package/src/prr/data/stacks/aws-cdk.md +55 -0
- package/src/prr/data/stacks/axum.md +56 -0
- package/src/prr/data/stacks/babylonjs.md +55 -0
- package/src/prr/data/stacks/bash.md +53 -0
- package/src/prr/data/stacks/bevy.md +53 -0
- package/src/prr/data/stacks/bootstrap.md +52 -0
- package/src/prr/data/stacks/bun.md +55 -0
- package/src/prr/data/stacks/cpp.md +57 -0
- package/src/prr/data/stacks/csharp.md +95 -0
- package/src/prr/data/stacks/css.md +55 -0
- package/src/prr/data/stacks/cypress.md +53 -0
- package/src/prr/data/stacks/d3.md +53 -0
- package/src/prr/data/stacks/deno.md +49 -0
- package/src/prr/data/stacks/django.md +92 -0
- package/src/prr/data/stacks/docker.md +79 -0
- package/src/prr/data/stacks/drizzle.md +54 -0
- package/src/prr/data/stacks/dynamodb.md +55 -0
- package/src/prr/data/stacks/electron.md +44 -0
- package/src/prr/data/stacks/elixir.md +53 -0
- package/src/prr/data/stacks/expo.md +53 -0
- package/src/prr/data/stacks/expressjs.md +82 -0
- package/src/prr/data/stacks/fastapi.md +88 -0
- package/src/prr/data/stacks/fastify.md +60 -0
- package/src/prr/data/stacks/fiber.md +55 -0
- package/src/prr/data/stacks/firebase.md +43 -0
- package/src/prr/data/stacks/flask.md +46 -0
- package/src/prr/data/stacks/flutter.md +75 -0
- package/src/prr/data/stacks/gin.md +57 -0
- package/src/prr/data/stacks/github-actions.md +71 -0
- package/src/prr/data/stacks/go.md +88 -0
- package/src/prr/data/stacks/godot.md +56 -0
- package/src/prr/data/stacks/graphql.md +76 -0
- package/src/prr/data/stacks/grpc.md +56 -0
- package/src/prr/data/stacks/haskell.md +48 -0
- package/src/prr/data/stacks/helm.md +54 -0
- package/src/prr/data/stacks/hono.md +54 -0
- package/src/prr/data/stacks/htmx.md +38 -0
- package/src/prr/data/stacks/java.md +87 -0
- package/src/prr/data/stacks/jest-vitest.md +87 -0
- package/src/prr/data/stacks/jquery.md +50 -0
- package/src/prr/data/stacks/junit.md +53 -0
- package/src/prr/data/stacks/kotlin.md +89 -0
- package/src/prr/data/stacks/kubernetes.md +148 -0
- package/src/prr/data/stacks/langchain.md +56 -0
- package/src/prr/data/stacks/laravel.md +56 -0
- package/src/prr/data/stacks/libgdx.md +46 -0
- package/src/prr/data/stacks/lit.md +49 -0
- package/src/prr/data/stacks/love2d.md +51 -0
- package/src/prr/data/stacks/lua.md +51 -0
- package/src/prr/data/stacks/mobx.md +54 -0
- package/src/prr/data/stacks/mongodb.md +85 -0
- package/src/prr/data/stacks/monogame.md +51 -0
- package/src/prr/data/stacks/mysql.md +57 -0
- package/src/prr/data/stacks/nestjs.md +95 -0
- package/src/prr/data/stacks/nextjs.md +88 -0
- package/src/prr/data/stacks/nginx.md +55 -0
- package/src/prr/data/stacks/node.md +56 -0
- package/src/prr/data/stacks/nuxtjs.md +91 -0
- package/src/prr/data/stacks/openai-api.md +54 -0
- package/src/prr/data/stacks/opengl.md +54 -0
- package/src/prr/data/stacks/phaser.md +54 -0
- package/src/prr/data/stacks/phoenix.md +55 -0
- package/src/prr/data/stacks/php.md +56 -0
- package/src/prr/data/stacks/playwright.md +86 -0
- package/src/prr/data/stacks/postgresql.md +60 -0
- package/src/prr/data/stacks/prisma.md +81 -0
- package/src/prr/data/stacks/pygame.md +52 -0
- package/src/prr/data/stacks/pytest.md +53 -0
- package/src/prr/data/stacks/python.md +94 -0
- package/src/prr/data/stacks/pytorch.md +54 -0
- package/src/prr/data/stacks/qwik.md +50 -0
- package/src/prr/data/stacks/rails.md +48 -0
- package/src/prr/data/stacks/react-native.md +77 -0
- package/src/prr/data/stacks/react.md +104 -0
- package/src/prr/data/stacks/redis.md +76 -0
- package/src/prr/data/stacks/redux.md +107 -0
- package/src/prr/data/stacks/remix.md +51 -0
- package/src/prr/data/stacks/rust.md +88 -0
- package/src/prr/data/stacks/sass.md +51 -0
- package/src/prr/data/stacks/scala.md +50 -0
- package/src/prr/data/stacks/scikit-learn.md +53 -0
- package/src/prr/data/stacks/sequelize.md +54 -0
- package/src/prr/data/stacks/socket-io.md +54 -0
- package/src/prr/data/stacks/solidity.md +53 -0
- package/src/prr/data/stacks/solidjs.md +45 -0
- package/src/prr/data/stacks/spring-boot.md +92 -0
- package/src/prr/data/stacks/sql.md +85 -0
- package/src/prr/data/stacks/sqlite.md +55 -0
- package/src/prr/data/stacks/styled-components.md +51 -0
- package/src/prr/data/stacks/supabase.md +57 -0
- package/src/prr/data/stacks/svelte.md +77 -0
- package/src/prr/data/stacks/sveltekit.md +54 -0
- package/src/prr/data/stacks/swift.md +61 -0
- package/src/prr/data/stacks/tailwindcss.md +10 -0
- package/src/prr/data/stacks/tanstack-query.md +48 -0
- package/src/prr/data/stacks/tauri.md +52 -0
- package/src/prr/data/stacks/terraform.md +53 -0
- package/src/prr/data/stacks/three.md +53 -0
- package/src/prr/data/stacks/trpc.md +49 -0
- package/src/prr/data/stacks/typeorm.md +40 -0
- package/src/prr/data/stacks/typescript.md +83 -0
- package/src/prr/data/stacks/unity.md +61 -0
- package/src/prr/data/stacks/unreal.md +58 -0
- package/src/prr/data/stacks/vite.md +48 -0
- package/src/prr/data/stacks/vue3.md +95 -0
- package/src/prr/data/stacks/vulkan.md +53 -0
- package/src/prr/data/stacks/wasm.md +49 -0
- package/src/prr/data/stacks/webpack.md +48 -0
- package/src/prr/data/stacks/zig.md +51 -0
- package/src/prr/data/stacks/zustand.md +56 -0
- package/src/prr/workflows/1-discover/select-pr/steps/step-05-confirm.md +1 -0
- package/src/prr/workflows/1-discover/select-pr/workflow.md +1 -1
- package/src/prr/workflows/2-analyze/collect-pr-context/steps/step-01-analyze-files.md +334 -0
- package/src/prr/workflows/2-analyze/collect-pr-context/steps/step-02-collect-sources.md +451 -0
- package/src/prr/workflows/2-analyze/collect-pr-context/steps/step-03-build-knowledge-base.md +337 -0
- package/src/prr/workflows/2-analyze/collect-pr-context/workflow.md +123 -0
- package/src/prr/workflows/2-analyze/describe-pr/steps/step-02-classify.md +12 -6
- package/src/prr/workflows/2-analyze/describe-pr/steps/step-03-walkthrough.md +59 -1
- package/src/prr/workflows/3-review/architecture-review/checklist.md +4 -0
- package/src/prr/workflows/3-review/architecture-review/instructions.xml +32 -4
- package/src/prr/workflows/3-review/architecture-review/workflow.yaml +17 -18
- package/src/prr/workflows/3-review/business-review/checklist.md +27 -0
- package/src/prr/workflows/3-review/business-review/instructions.xml +153 -0
- package/src/prr/workflows/3-review/business-review/workflow.yaml +17 -0
- package/src/prr/workflows/3-review/general-review/checklist.md +5 -1
- package/src/prr/workflows/3-review/general-review/instructions.xml +39 -8
- package/src/prr/workflows/3-review/general-review/workflow.yaml +17 -18
- package/src/prr/workflows/3-review/performance-review/checklist.md +3 -1
- package/src/prr/workflows/3-review/performance-review/instructions.xml +10 -3
- package/src/prr/workflows/3-review/performance-review/workflow.yaml +17 -18
- package/src/prr/workflows/3-review/security-review/checklist.md +2 -1
- package/src/prr/workflows/3-review/security-review/instructions.xml +8 -3
- package/src/prr/workflows/3-review/security-review/workflow.yaml +18 -19
- package/src/prr/workflows/4-improve/improve-code/workflow.yaml +17 -18
- package/src/prr/workflows/6-report/generate-report/steps/step-01-collect.md +9 -2
- package/src/prr/workflows/6-report/generate-report/steps/step-02-organize.md +28 -7
- package/src/prr/workflows/6-report/generate-report/steps/step-03-write.md +6 -4
- package/src/prr/workflows/6-report/generate-report/templates/review-report.template.md +124 -78
- package/src/prr/workflows/6-report/post-comments/steps/step-01-format.md +104 -13
- package/src/prr/workflows/6-report/post-comments/steps/step-02-post.md +92 -21
- package/src/prr/workflows/6-report/post-comments/workflow.md +6 -0
- package/src/prr/workflows/quick/workflow.md +138 -32
- package/src/prr/workflows/0-setup/collect-project-context/steps/step-01-scan-configs.md +0 -106
- package/src/prr/workflows/0-setup/collect-project-context/steps/step-02-extract-rules.md +0 -131
- package/src/prr/workflows/0-setup/collect-project-context/steps/step-03-ask-context.md +0 -194
- package/src/prr/workflows/0-setup/collect-project-context/steps/step-04-save-context.md +0 -161
- package/src/prr/workflows/0-setup/collect-project-context/workflow.md +0 -58
package/docs/assets/banner.svg
CHANGED
|
@@ -1,179 +1,47 @@
|
|
|
1
|
-
<svg width="1200" height="
|
|
2
|
-
<defs>
|
|
3
|
-
<!-- Background gradient -->
|
|
4
|
-
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
5
|
-
<stop offset="0%" style="stop-color:#0d1117"/>
|
|
6
|
-
<stop offset="100%" style="stop-color:#161b22"/>
|
|
7
|
-
</linearGradient>
|
|
8
|
-
|
|
9
|
-
<!-- Accent gradient (purple → blue) -->
|
|
10
|
-
<linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
11
|
-
<stop offset="0%" style="stop-color:#a855f7"/>
|
|
12
|
-
<stop offset="100%" style="stop-color:#3b82f6"/>
|
|
13
|
-
</linearGradient>
|
|
14
|
-
|
|
15
|
-
<!-- Glow filter for accent line -->
|
|
16
|
-
<filter id="glow" x="-20%" y="-200%" width="140%" height="500%">
|
|
17
|
-
<feGaussianBlur stdDeviation="4" result="blur"/>
|
|
18
|
-
<feMerge>
|
|
19
|
-
<feMergeNode in="blur"/>
|
|
20
|
-
<feMergeNode in="SourceGraphic"/>
|
|
21
|
-
</feMerge>
|
|
22
|
-
</filter>
|
|
23
|
-
|
|
24
|
-
<!-- Subtle grid pattern -->
|
|
25
|
-
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
|
|
26
|
-
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#ffffff" stroke-width="0.3" opacity="0.04"/>
|
|
27
|
-
</pattern>
|
|
28
|
-
|
|
29
|
-
<!-- Corner dot pattern -->
|
|
30
|
-
<pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse">
|
|
31
|
-
<circle cx="1" cy="1" r="1" fill="#ffffff" opacity="0.06"/>
|
|
32
|
-
</pattern>
|
|
33
|
-
</defs>
|
|
1
|
+
<svg width="1200" height="280" viewBox="0 0 1200 280" xmlns="http://www.w3.org/2000/svg">
|
|
34
2
|
|
|
35
3
|
<!-- Background -->
|
|
36
|
-
<rect width="1200" height="
|
|
37
|
-
|
|
38
|
-
<!--
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<circle cx="980" cy="80" r="120" fill="#a855f7" opacity="0.06"/>
|
|
46
|
-
<circle cx="1100" cy="220" r="80" fill="#3b82f6" opacity="0.06"/>
|
|
47
|
-
<circle cx="150" cy="240" r="100" fill="#a855f7" opacity="0.04"/>
|
|
48
|
-
|
|
49
|
-
<!-- Top accent line -->
|
|
50
|
-
<rect x="0" y="0" width="1200" height="3" fill="url(#accent)" filter="url(#glow)"/>
|
|
51
|
-
|
|
52
|
-
<!-- Left vertical accent bar -->
|
|
53
|
-
<rect x="64" y="60" width="3" height="180" fill="url(#accent)" opacity="0.8" filter="url(#glow)"/>
|
|
54
|
-
|
|
55
|
-
<!-- Icon area: magnifying glass SVG path -->
|
|
56
|
-
<g transform="translate(100, 110)">
|
|
57
|
-
<circle cx="28" cy="28" r="26" fill="none" stroke="url(#accent)" stroke-width="3" opacity="0.9"/>
|
|
58
|
-
<circle cx="28" cy="28" r="18" fill="none" stroke="url(#accent)" stroke-width="1.5" opacity="0.3"/>
|
|
59
|
-
<line x1="47" y1="47" x2="62" y2="62" stroke="url(#accent)" stroke-width="4" stroke-linecap="round" opacity="0.9"/>
|
|
60
|
-
<!-- Code lines inside glass -->
|
|
61
|
-
<line x1="18" y1="23" x2="38" y2="23" stroke="#a855f7" stroke-width="2" stroke-linecap="round" opacity="0.6"/>
|
|
62
|
-
<line x1="18" y1="30" x2="32" y2="30" stroke="#3b82f6" stroke-width="2" stroke-linecap="round" opacity="0.6"/>
|
|
63
|
-
<line x1="18" y1="37" x2="36" y2="37" stroke="#a855f7" stroke-width="2" stroke-linecap="round" opacity="0.4"/>
|
|
4
|
+
<rect width="1200" height="280" fill="#000000"/>
|
|
5
|
+
|
|
6
|
+
<!-- Icon -->
|
|
7
|
+
<g transform="translate(80, 90)">
|
|
8
|
+
<circle cx="40" cy="40" r="32" fill="none" stroke="#ffffff" stroke-width="3"/>
|
|
9
|
+
<line x1="65" y1="65" x2="86" y2="86" stroke="#ffffff" stroke-width="4" stroke-linecap="round"/>
|
|
10
|
+
<line x1="26" y1="34" x2="54" y2="34" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" opacity="0.45"/>
|
|
11
|
+
<line x1="26" y1="42" x2="48" y2="42" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" opacity="0.45"/>
|
|
12
|
+
<line x1="26" y1="50" x2="52" y2="50" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" opacity="0.45"/>
|
|
64
13
|
</g>
|
|
65
14
|
|
|
66
|
-
<!--
|
|
67
|
-
<text x="
|
|
68
|
-
font-
|
|
69
|
-
|
|
15
|
+
<!-- Title -->
|
|
16
|
+
<text x="200" y="138"
|
|
17
|
+
font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
18
|
+
font-size="58" font-weight="700" letter-spacing="-2" fill="#ffffff">
|
|
19
|
+
PR Review Kit
|
|
70
20
|
</text>
|
|
71
21
|
|
|
72
|
-
<!--
|
|
73
|
-
<
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
font-size="20" font-weight="400" fill="#8b949e" letter-spacing="0.3">
|
|
78
|
-
AI-driven Pull Request review — structured, multi-perspective, actionable
|
|
22
|
+
<!-- Tagline -->
|
|
23
|
+
<text x="200" y="176"
|
|
24
|
+
font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
25
|
+
font-size="17" font-weight="400" fill="#555555" letter-spacing="0.2">
|
|
26
|
+
What if your AI actually understood your codebase before reviewing?
|
|
79
27
|
</text>
|
|
80
28
|
|
|
81
|
-
<!--
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<
|
|
85
|
-
<circle cx="18" cy="13" r="5" fill="#a855f7" opacity="0.9"/>
|
|
86
|
-
<text x="30" y="17.5" font-family="monospace" font-size="11" fill="#8b949e">Claude Code</text>
|
|
87
|
-
</g>
|
|
88
|
-
|
|
89
|
-
<!-- Badge 2: Cursor -->
|
|
90
|
-
<g transform="translate(314, 218)">
|
|
91
|
-
<rect width="74" height="26" rx="13" fill="#21262d" stroke="#30363d" stroke-width="1"/>
|
|
92
|
-
<circle cx="18" cy="13" r="5" fill="#3b82f6" opacity="0.9"/>
|
|
93
|
-
<text x="30" y="17.5" font-family="monospace" font-size="11" fill="#8b949e">Cursor</text>
|
|
94
|
-
</g>
|
|
29
|
+
<!-- Pills -->
|
|
30
|
+
<g transform="translate(200, 204)">
|
|
31
|
+
<rect width="130" height="28" rx="14" fill="none" stroke="#ffffff" stroke-width="1.2"/>
|
|
32
|
+
<text x="65" y="19" text-anchor="middle" font-family="monospace" font-size="11" fill="#ffffff">Stack-aware</text>
|
|
95
33
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<rect width="86" height="26" rx="13" fill="#21262d" stroke="#30363d" stroke-width="1"/>
|
|
99
|
-
<circle cx="18" cy="13" r="5" fill="#06b6d4" opacity="0.9"/>
|
|
100
|
-
<text x="30" y="17.5" font-family="monospace" font-size="11" fill="#8b949e">Windsurf</text>
|
|
101
|
-
</g>
|
|
34
|
+
<rect x="142" width="120" height="28" rx="14" fill="none" stroke="#333333" stroke-width="1.2"/>
|
|
35
|
+
<text x="202" y="19" text-anchor="middle" font-family="monospace" font-size="11" fill="#555555">Context-first</text>
|
|
102
36
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
<rect width="90" height="26" rx="13" fill="#21262d" stroke="#30363d" stroke-width="1"/>
|
|
106
|
-
<circle cx="18" cy="13" r="5" fill="#22c55e" opacity="0.9"/>
|
|
107
|
-
<text x="30" y="17.5" font-family="monospace" font-size="11" fill="#8b949e">Node 18+</text>
|
|
37
|
+
<rect x="274" width="136" height="28" rx="14" fill="none" stroke="#333333" stroke-width="1.2"/>
|
|
38
|
+
<text x="342" y="19" text-anchor="middle" font-family="monospace" font-size="11" fill="#555555">Any AI tool</text>
|
|
108
39
|
</g>
|
|
109
40
|
|
|
110
|
-
<!--
|
|
111
|
-
<
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
<text x="40" y="20" text-anchor="middle" font-family="monospace" font-size="12" fill="#a855f7" font-weight="600">SP</text>
|
|
116
|
-
|
|
117
|
-
<!-- Arrow -->
|
|
118
|
-
<line x1="80" y1="15" x2="110" y2="15" stroke="#30363d" stroke-width="1.5" marker-end="url(#arr)"/>
|
|
119
|
-
|
|
120
|
-
<!-- DP -->
|
|
121
|
-
<rect x="110" y="0" width="80" height="30" rx="6" fill="#21262d" stroke="#30363d" stroke-width="1"/>
|
|
122
|
-
<text x="150" y="20" text-anchor="middle" font-family="monospace" font-size="12" fill="#3b82f6" font-weight="600">DP</text>
|
|
123
|
-
|
|
124
|
-
<!-- Row 2: review types -->
|
|
125
|
-
<!-- Vertical line down from DP -->
|
|
126
|
-
<line x1="150" y1="30" x2="150" y2="55" stroke="#30363d" stroke-width="1.5"/>
|
|
127
|
-
<!-- Horizontal line -->
|
|
128
|
-
<line x1="30" y1="55" x2="270" y2="55" stroke="#30363d" stroke-width="1.5"/>
|
|
129
|
-
|
|
130
|
-
<!-- GR -->
|
|
131
|
-
<line x1="30" y1="55" x2="30" y2="75" stroke="#30363d" stroke-width="1.5"/>
|
|
132
|
-
<rect x="-10" y="75" width="80" height="28" rx="6" fill="#21262d" stroke="#a855f7" stroke-width="1" opacity="0.8"/>
|
|
133
|
-
<text x="30" y="93" text-anchor="middle" font-family="monospace" font-size="11" fill="#a855f7">GR</text>
|
|
134
|
-
|
|
135
|
-
<!-- SR -->
|
|
136
|
-
<line x1="110" y1="55" x2="110" y2="75" stroke="#30363d" stroke-width="1.5"/>
|
|
137
|
-
<rect x="70" y="75" width="80" height="28" rx="6" fill="#21262d" stroke="#ef4444" stroke-width="1" opacity="0.8"/>
|
|
138
|
-
<text x="110" y="93" text-anchor="middle" font-family="monospace" font-size="11" fill="#ef4444">SR</text>
|
|
139
|
-
|
|
140
|
-
<!-- PR -->
|
|
141
|
-
<line x1="190" y1="55" x2="190" y2="75" stroke="#30363d" stroke-width="1.5"/>
|
|
142
|
-
<rect x="150" y="75" width="80" height="28" rx="6" fill="#21262d" stroke="#f59e0b" stroke-width="1" opacity="0.8"/>
|
|
143
|
-
<text x="190" y="93" text-anchor="middle" font-family="monospace" font-size="11" fill="#f59e0b">PR</text>
|
|
144
|
-
|
|
145
|
-
<!-- AR -->
|
|
146
|
-
<line x1="270" y1="55" x2="270" y2="75" stroke="#30363d" stroke-width="1.5"/>
|
|
147
|
-
<rect x="230" y="75" width="80" height="28" rx="6" fill="#21262d" stroke="#06b6d4" stroke-width="1" opacity="0.8"/>
|
|
148
|
-
<text x="270" y="93" text-anchor="middle" font-family="monospace" font-size="11" fill="#06b6d4">AR</text>
|
|
149
|
-
|
|
150
|
-
<!-- Converge line -->
|
|
151
|
-
<line x1="30" y1="103" x2="30" y2="130" stroke="#30363d" stroke-width="1.5"/>
|
|
152
|
-
<line x1="110" y1="103" x2="110" y2="130" stroke="#30363d" stroke-width="1.5"/>
|
|
153
|
-
<line x1="190" y1="103" x2="190" y2="130" stroke="#30363d" stroke-width="1.5"/>
|
|
154
|
-
<line x1="270" y1="103" x2="270" y2="130" stroke="#30363d" stroke-width="1.5"/>
|
|
155
|
-
<line x1="30" y1="130" x2="270" y2="130" stroke="#30363d" stroke-width="1.5"/>
|
|
156
|
-
<line x1="150" y1="130" x2="150" y2="150" stroke="#30363d" stroke-width="1.5"/>
|
|
157
|
-
|
|
158
|
-
<!-- RR -->
|
|
159
|
-
<rect x="110" y="150" width="80" height="30" rx="6" fill="#21262d" stroke="#22c55e" stroke-width="1"/>
|
|
160
|
-
<text x="150" y="170" text-anchor="middle" font-family="monospace" font-size="12" fill="#22c55e" font-weight="600">RR</text>
|
|
161
|
-
|
|
162
|
-
<!-- Arrow to PC -->
|
|
163
|
-
<line x1="190" y1="165" x2="220" y2="165" stroke="#30363d" stroke-width="1.5"/>
|
|
164
|
-
|
|
165
|
-
<!-- PC -->
|
|
166
|
-
<rect x="220" y="150" width="80" height="30" rx="6" fill="#21262d" stroke="#8b949e" stroke-width="1"/>
|
|
167
|
-
<text x="260" y="170" text-anchor="middle" font-family="monospace" font-size="12" fill="#8b949e" font-weight="600">PC</text>
|
|
168
|
-
|
|
169
|
-
<!-- Labels -->
|
|
170
|
-
<text x="40" y="-10" font-family="monospace" font-size="10" fill="#484f58">Select PR</text>
|
|
171
|
-
<text x="115" y="-10" font-family="monospace" font-size="10" fill="#484f58">Describe</text>
|
|
172
|
-
<text x="0" y="118" font-family="monospace" font-size="9" fill="#484f58">Reviews</text>
|
|
173
|
-
<text x="110" y="200" font-family="monospace" font-size="10" fill="#484f58">Report</text>
|
|
174
|
-
<text x="225" y="200" font-family="monospace" font-size="10" fill="#484f58">GitHub</text>
|
|
175
|
-
</g>
|
|
41
|
+
<!-- Command block -->
|
|
42
|
+
<rect x="820" y="104" width="280" height="52" rx="4" fill="#0d0d0d"/>
|
|
43
|
+
<text x="840" y="126" font-family="monospace" font-size="11" fill="#444444">$ npx prr-kit init</text>
|
|
44
|
+
<line x1="840" y1="134" x2="1084" y2="134" stroke="#222222" stroke-width="1"/>
|
|
45
|
+
<text x="840" y="148" font-family="monospace" font-size="11" fill="#777777">/prr-quick</text>
|
|
176
46
|
|
|
177
|
-
<!-- Bottom accent line -->
|
|
178
|
-
<rect x="0" y="297" width="1200" height="3" fill="url(#accent)" opacity="0.4"/>
|
|
179
47
|
</svg>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<svg width="1200" height="240" viewBox="0 0 1200 240" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
|
|
3
|
+
<!-- Background -->
|
|
4
|
+
<rect width="1200" height="240" fill="#000000"/>
|
|
5
|
+
|
|
6
|
+
<!-- Title -->
|
|
7
|
+
<text x="600" y="38" text-anchor="middle"
|
|
8
|
+
font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
9
|
+
font-size="18" font-weight="700" fill="#ffffff" letter-spacing="-0.3">How It Works</text>
|
|
10
|
+
|
|
11
|
+
<!-- ══════════ PIPELINE ══════════ -->
|
|
12
|
+
|
|
13
|
+
<!-- 01 Select PR -->
|
|
14
|
+
<g transform="translate(40, 62)">
|
|
15
|
+
<rect width="130" height="76" rx="5" fill="#0d0d0d"/>
|
|
16
|
+
<text x="65" y="22" text-anchor="middle" font-family="monospace" font-size="8" fill="#333333" letter-spacing="2">01</text>
|
|
17
|
+
<text x="65" y="48" text-anchor="middle" font-family="monospace" font-size="22" fill="#ffffff" font-weight="700">SP</text>
|
|
18
|
+
<text x="65" y="66" text-anchor="middle" font-family="-apple-system, 'Segoe UI', sans-serif" font-size="11" fill="#555555">Select PR</text>
|
|
19
|
+
</g>
|
|
20
|
+
|
|
21
|
+
<line x1="170" y1="100" x2="196" y2="100" stroke="#2a2a2a" stroke-width="1.5"/>
|
|
22
|
+
<polygon points="196,96 204,100 196,104" fill="#2a2a2a"/>
|
|
23
|
+
|
|
24
|
+
<!-- 02 Describe PR -->
|
|
25
|
+
<g transform="translate(204, 62)">
|
|
26
|
+
<rect width="130" height="76" rx="5" fill="#0d0d0d"/>
|
|
27
|
+
<text x="65" y="22" text-anchor="middle" font-family="monospace" font-size="8" fill="#333333" letter-spacing="2">02</text>
|
|
28
|
+
<text x="65" y="48" text-anchor="middle" font-family="monospace" font-size="22" fill="#ffffff" font-weight="700">DP</text>
|
|
29
|
+
<text x="65" y="66" text-anchor="middle" font-family="-apple-system, 'Segoe UI', sans-serif" font-size="11" fill="#555555">Describe PR</text>
|
|
30
|
+
</g>
|
|
31
|
+
|
|
32
|
+
<!-- dashed arrow = auto -->
|
|
33
|
+
<line x1="334" y1="100" x2="354" y2="100" stroke="#2a2a2a" stroke-width="1.5" stroke-dasharray="4,3"/>
|
|
34
|
+
<polygon points="354,96 362,100 354,104" fill="#2a2a2a"/>
|
|
35
|
+
<text x="348" y="92" text-anchor="middle" font-family="monospace" font-size="8" fill="#333333">auto</text>
|
|
36
|
+
|
|
37
|
+
<!-- 03 Collect Context (highlighted) -->
|
|
38
|
+
<g transform="translate(362, 50)">
|
|
39
|
+
<rect width="186" height="100" rx="5" fill="#0d0d0d" stroke="#ffffff" stroke-width="1.2"/>
|
|
40
|
+
<text x="12" y="20" font-family="monospace" font-size="8" fill="#333333" letter-spacing="1">03</text>
|
|
41
|
+
<text x="93" y="52" text-anchor="middle" font-family="monospace" font-size="15" fill="#ffffff" font-weight="700">Collect Context</text>
|
|
42
|
+
<text x="93" y="72" text-anchor="middle" font-family="monospace" font-size="9" fill="#444444">Reads your actual project config</text>
|
|
43
|
+
<text x="93" y="88" text-anchor="middle" font-family="monospace" font-size="9" fill="#333333">→ pr-context.yaml</text>
|
|
44
|
+
</g>
|
|
45
|
+
|
|
46
|
+
<line x1="548" y1="100" x2="568" y2="100" stroke="#2a2a2a" stroke-width="1.5"/>
|
|
47
|
+
<polygon points="568,96 576,100 568,104" fill="#2a2a2a"/>
|
|
48
|
+
|
|
49
|
+
<!-- 04 Deep Review (mystery) -->
|
|
50
|
+
<g transform="translate(576, 50)">
|
|
51
|
+
<rect width="222" height="100" rx="5" fill="#0d0d0d"/>
|
|
52
|
+
<text x="12" y="20" font-family="monospace" font-size="8" fill="#333333" letter-spacing="1">04</text>
|
|
53
|
+
<text x="111" y="52" text-anchor="middle" font-family="-apple-system, 'Segoe UI', sans-serif" font-size="13" fill="#cccccc" font-weight="600">Deep Review</text>
|
|
54
|
+
<text x="111" y="72" text-anchor="middle" font-family="monospace" font-size="9" fill="#444444">Security · Perf · Arch · Bugs</text>
|
|
55
|
+
<text x="111" y="88" text-anchor="middle" font-family="monospace" font-size="9" fill="#333333">structured findings per concern</text>
|
|
56
|
+
</g>
|
|
57
|
+
|
|
58
|
+
<line x1="798" y1="100" x2="818" y2="100" stroke="#2a2a2a" stroke-width="1.5"/>
|
|
59
|
+
<polygon points="818,96 826,100 818,104" fill="#2a2a2a"/>
|
|
60
|
+
|
|
61
|
+
<!-- 05 Report -->
|
|
62
|
+
<g transform="translate(826, 62)">
|
|
63
|
+
<rect width="130" height="76" rx="5" fill="#0d0d0d"/>
|
|
64
|
+
<text x="65" y="22" text-anchor="middle" font-family="monospace" font-size="8" fill="#333333" letter-spacing="2">05</text>
|
|
65
|
+
<text x="65" y="48" text-anchor="middle" font-family="monospace" font-size="22" fill="#ffffff" font-weight="700">RR</text>
|
|
66
|
+
<text x="65" y="66" text-anchor="middle" font-family="-apple-system, 'Segoe UI', sans-serif" font-size="11" fill="#555555">Report</text>
|
|
67
|
+
</g>
|
|
68
|
+
|
|
69
|
+
<line x1="956" y1="100" x2="976" y2="100" stroke="#2a2a2a" stroke-width="1.5"/>
|
|
70
|
+
<polygon points="976,96 984,100 976,104" fill="#2a2a2a"/>
|
|
71
|
+
|
|
72
|
+
<!-- 06 Post Comments (optional, dimmed) -->
|
|
73
|
+
<g transform="translate(984, 62)" opacity="0.4">
|
|
74
|
+
<rect width="130" height="76" rx="5" fill="#0d0d0d"/>
|
|
75
|
+
<text x="65" y="22" text-anchor="middle" font-family="monospace" font-size="8" fill="#333333" letter-spacing="2">06</text>
|
|
76
|
+
<text x="65" y="48" text-anchor="middle" font-family="monospace" font-size="22" fill="#ffffff" font-weight="700">PC</text>
|
|
77
|
+
<text x="65" y="66" text-anchor="middle" font-family="-apple-system, 'Segoe UI', sans-serif" font-size="11" fill="#555555">Post Comments</text>
|
|
78
|
+
</g>
|
|
79
|
+
<text x="1049" y="153" text-anchor="middle" font-family="monospace" font-size="8" fill="#333333">optional</text>
|
|
80
|
+
|
|
81
|
+
<!-- ══════════ Quick mode ══════════ -->
|
|
82
|
+
<rect x="40" y="178" width="400" height="30" rx="4" fill="#0d0d0d"/>
|
|
83
|
+
<text x="56" y="198" font-family="monospace" font-size="10" fill="#555555">Quick mode: </text>
|
|
84
|
+
<text x="136" y="198" font-family="monospace" font-size="10" fill="#ffffff">/prr-quick</text>
|
|
85
|
+
<text x="208" y="198" font-family="monospace" font-size="10" fill="#333333"> — one command, full pipeline</text>
|
|
86
|
+
|
|
87
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "prr-kit",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "AI-driven Pull Request Review Kit — structured agent workflows for thorough, consistent code review",
|
|
5
|
-
"main": "tools/cli/prr-cli.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"prr-kit": "tools/prr-npx-wrapper.js",
|
|
8
|
-
"pr-review": "tools/prr-npx-wrapper.js"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"prr:install": "node tools/cli/prr-cli.js install",
|
|
12
|
-
"prr:uninstall": "node tools/cli/prr-cli.js uninstall",
|
|
13
|
-
"prr:status": "node tools/cli/prr-cli.js status",
|
|
14
|
-
"test": "node test/test-agent-schema.js && node test/test-installation-components.js",
|
|
15
|
-
"test:schemas": "node test/test-agent-schema.js",
|
|
16
|
-
"test:install": "node test/test-installation-components.js",
|
|
17
|
-
"lint": "eslint . --ext .js,.cjs,.mjs --max-warnings=0"
|
|
18
|
-
},
|
|
19
|
-
"engines": {
|
|
20
|
-
"node": ">=20.0.0"
|
|
21
|
-
},
|
|
22
|
-
"files": [
|
|
23
|
-
"src/",
|
|
24
|
-
"tools/",
|
|
25
|
-
"docs/assets/"
|
|
26
|
-
],
|
|
27
|
-
"keywords": [
|
|
28
|
-
"code-review",
|
|
29
|
-
"pull-request",
|
|
30
|
-
"ai",
|
|
31
|
-
"agent",
|
|
32
|
-
"workflow",
|
|
33
|
-
"claude",
|
|
34
|
-
"cursor",
|
|
35
|
-
"windsurf",
|
|
36
|
-
"github",
|
|
37
|
-
"gitlab"
|
|
38
|
-
],
|
|
39
|
-
"repository": {
|
|
40
|
-
"type": "git",
|
|
41
|
-
"url": "git+https://github.com/mrquangthai278/prr-kit.git"
|
|
42
|
-
},
|
|
43
|
-
"homepage": "https://github.com/mrquangthai278/prr-kit#readme",
|
|
44
|
-
"bugs": {
|
|
45
|
-
"url": "https://github.com/mrquangthai278/prr-kit/issues"
|
|
46
|
-
},
|
|
47
|
-
"license": "MIT",
|
|
48
|
-
"dependencies": {
|
|
49
|
-
"@clack/prompts": "^0.10.0",
|
|
50
|
-
"chalk": "^4.1.2",
|
|
51
|
-
"commander": "^14.0.0",
|
|
52
|
-
"csv-parse": "^6.1.0",
|
|
53
|
-
"fs-extra": "^11.3.0",
|
|
54
|
-
"glob": "^11.0.3",
|
|
55
|
-
"yaml": "^2.7.0"
|
|
56
|
-
},
|
|
57
|
-
"devDependencies": {
|
|
58
|
-
"eslint": "^9.0.0"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "prr-kit",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "AI-driven Pull Request Review Kit — structured agent workflows for thorough, consistent code review",
|
|
5
|
+
"main": "tools/cli/prr-cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"prr-kit": "tools/prr-npx-wrapper.js",
|
|
8
|
+
"pr-review": "tools/prr-npx-wrapper.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"prr:install": "node tools/cli/prr-cli.js install",
|
|
12
|
+
"prr:uninstall": "node tools/cli/prr-cli.js uninstall",
|
|
13
|
+
"prr:status": "node tools/cli/prr-cli.js status",
|
|
14
|
+
"test": "node test/test-agent-schema.js && node test/test-installation-components.js",
|
|
15
|
+
"test:schemas": "node test/test-agent-schema.js",
|
|
16
|
+
"test:install": "node test/test-installation-components.js",
|
|
17
|
+
"lint": "eslint . --ext .js,.cjs,.mjs --max-warnings=0"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=20.0.0"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"src/",
|
|
24
|
+
"tools/",
|
|
25
|
+
"docs/assets/"
|
|
26
|
+
],
|
|
27
|
+
"keywords": [
|
|
28
|
+
"code-review",
|
|
29
|
+
"pull-request",
|
|
30
|
+
"ai",
|
|
31
|
+
"agent",
|
|
32
|
+
"workflow",
|
|
33
|
+
"claude",
|
|
34
|
+
"cursor",
|
|
35
|
+
"windsurf",
|
|
36
|
+
"github",
|
|
37
|
+
"gitlab"
|
|
38
|
+
],
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "git+https://github.com/mrquangthai278/prr-kit.git"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/mrquangthai278/prr-kit#readme",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/mrquangthai278/prr-kit/issues"
|
|
46
|
+
},
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@clack/prompts": "^0.10.0",
|
|
50
|
+
"chalk": "^4.1.2",
|
|
51
|
+
"commander": "^14.0.0",
|
|
52
|
+
"csv-parse": "^6.1.0",
|
|
53
|
+
"fs-extra": "^11.3.0",
|
|
54
|
+
"glob": "^11.0.3",
|
|
55
|
+
"yaml": "^2.7.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"eslint": "^9.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -4,7 +4,7 @@ agent:
|
|
|
4
4
|
name: "PRR Master"
|
|
5
5
|
title: "PR Review Master Orchestrator"
|
|
6
6
|
icon: "🔍"
|
|
7
|
-
capabilities: "PR discovery, review orchestration, report generation, workflow routing, git operations"
|
|
7
|
+
capabilities: "PR discovery, review orchestration, report generation, workflow routing, git operations, MCP tool integration, RAG context enrichment"
|
|
8
8
|
hasSidecar: false
|
|
9
9
|
|
|
10
10
|
persona:
|
|
@@ -18,22 +18,25 @@ agent:
|
|
|
18
18
|
- For security-sensitive changes: always recommend security review
|
|
19
19
|
- For performance-critical code: always recommend performance review
|
|
20
20
|
- Keep track of which reviews have been completed in the session
|
|
21
|
+
- If MCP tools are available (Confluence, Jira, Linear, Figma, etc.), use them during context collection to enrich review quality
|
|
22
|
+
- If RAG tools are available, query for similar patterns and past decisions to provide richer context
|
|
23
|
+
- Always gracefully degrade: if external tools are unavailable, proceed with local context only — never block the review
|
|
24
|
+
- When a PM MCP is available, extract issue key from branch name and fetch acceptance criteria to use as review checklist
|
|
21
25
|
|
|
22
26
|
critical_actions:
|
|
23
|
-
- "
|
|
27
|
+
- "Context is collected AUTOMATICALLY after Describe PR — no manual context collection needed"
|
|
24
28
|
- "Run [SP] Select PR FIRST before any review — never review without knowing the exact branch/diff"
|
|
25
29
|
- "After Select PR, suggest running [DP] Describe PR to understand scope before diving into review"
|
|
30
|
+
- "Context collection happens automatically after DP — it's always fresh and PR-specific"
|
|
26
31
|
- "Track completed reviews and remind user of remaining uncompleted review types"
|
|
27
32
|
- "For PRs touching auth, API keys, or user data: always suggest [SR] Security Review"
|
|
33
|
+
- "For feature PRs and PRs with data migration: always run [BR] Business Review to assess user impact and deployment risk"
|
|
34
|
+
- "Business Review runs LAST in the pipeline — it synthesizes technical findings into business language"
|
|
28
35
|
|
|
29
36
|
menu:
|
|
30
37
|
- trigger: "QR or fuzzy match on quick"
|
|
31
38
|
exec: "{project-root}/_prr/prr/workflows/quick/workflow.md"
|
|
32
|
-
description: "[QR] Quick Review: Full pipeline
|
|
33
|
-
|
|
34
|
-
- trigger: "CP or fuzzy match on collect-project-context"
|
|
35
|
-
exec: "{project-root}/_prr/prr/workflows/0-setup/collect-project-context/workflow.md"
|
|
36
|
-
description: "[CP] Collect Project Context: Scan configs, extract rules, ask domain — run once per project"
|
|
39
|
+
description: "[QR] Quick Review: Full pipeline — select → describe → collect context → review → report"
|
|
37
40
|
|
|
38
41
|
- trigger: "SP or fuzzy match on select-pr"
|
|
39
42
|
exec: "{project-root}/_prr/prr/workflows/1-discover/select-pr/workflow.md"
|
|
@@ -59,6 +62,10 @@ agent:
|
|
|
59
62
|
workflow: "{project-root}/_prr/prr/workflows/3-review/architecture-review/workflow.yaml"
|
|
60
63
|
description: "[AR] Architecture Review: SOLID, layering, coupling, consistency with codebase"
|
|
61
64
|
|
|
65
|
+
- trigger: "BR or fuzzy match on business-review"
|
|
66
|
+
workflow: "{project-root}/_prr/prr/workflows/3-review/business-review/workflow.yaml"
|
|
67
|
+
description: "[BR] Business Review: User impact, business risk, feature completeness, data safety, observability"
|
|
68
|
+
|
|
62
69
|
- trigger: "IC or fuzzy match on improve-code"
|
|
63
70
|
workflow: "{project-root}/_prr/prr/workflows/4-improve/improve-code/workflow.yaml"
|
|
64
71
|
description: "[IC] Improve Code: Concrete inline code suggestions with before/after fixes"
|
|
@@ -78,3 +85,7 @@ agent:
|
|
|
78
85
|
- trigger: "HH or fuzzy match on help"
|
|
79
86
|
exec: "{project-root}/_prr/core/tasks/help.md"
|
|
80
87
|
description: "[HH] Help: Show review workflow guide and available commands"
|
|
88
|
+
|
|
89
|
+
- trigger: "CL or fuzzy match on clear or clean or reset"
|
|
90
|
+
exec: "{project-root}/_prr/core/tasks/clear.md"
|
|
91
|
+
description: "[CL] Clear: Remove context files and/or review reports from output folder"
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Clear PRR Output
|
|
2
|
+
|
|
3
|
+
**Goal:** Remove prr-kit context files and/or review reports from the output folder. Useful when starting fresh, switching projects, or cleaning up after a review session.
|
|
4
|
+
|
|
5
|
+
## EXECUTION
|
|
6
|
+
|
|
7
|
+
### 1. Load Config
|
|
8
|
+
|
|
9
|
+
Read `{project-root}/_prr/prr/config.yaml` to get `review_output` path.
|
|
10
|
+
|
|
11
|
+
### 2. Scan Output Folder
|
|
12
|
+
|
|
13
|
+
List all files currently in `{review_output}`:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
ls "{review_output}/"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Group into three categories:
|
|
20
|
+
|
|
21
|
+
**Context files** (session state + knowledge bases):
|
|
22
|
+
- `current-pr-context.yaml` — active session state (which PR is selected)
|
|
23
|
+
- `pr-*-context.yaml` — per-PR knowledge bases built during context collection
|
|
24
|
+
|
|
25
|
+
**Intermediate review files** (individual review output, used by [RR] and [PC]):
|
|
26
|
+
- `general-review-*.md`
|
|
27
|
+
- `security-review-*.md`
|
|
28
|
+
- `performance-review-*.md`
|
|
29
|
+
- `architecture-review-*.md`
|
|
30
|
+
- `business-review-*.md`
|
|
31
|
+
- `improve-code-*.md`
|
|
32
|
+
- `pr-description-*.md`
|
|
33
|
+
|
|
34
|
+
**Review reports** (final compiled reports):
|
|
35
|
+
- `review-*.md` — final review reports generated by [RR]
|
|
36
|
+
|
|
37
|
+
### 3. Display What Exists
|
|
38
|
+
|
|
39
|
+
Show the user exactly what will be affected:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
🗂️ PRR Output — {review_output}
|
|
43
|
+
|
|
44
|
+
Context files ({n}):
|
|
45
|
+
• current-pr-context.yaml
|
|
46
|
+
• pr-feature-auth-...-context.yaml
|
|
47
|
+
• pr-feature-search-...-context.yaml
|
|
48
|
+
... (list all pr-*.yaml)
|
|
49
|
+
|
|
50
|
+
Intermediate review files ({k}):
|
|
51
|
+
• general-review-2026-02-21.md
|
|
52
|
+
• security-review-2026-02-21.md
|
|
53
|
+
• pr-description-2026-02-21.md
|
|
54
|
+
... (list all intermediate review files)
|
|
55
|
+
|
|
56
|
+
Review reports ({m}):
|
|
57
|
+
• review-feature-auth-indexeddb-migration-2026-02-21.md
|
|
58
|
+
• review-feature-add-search-functionality-2026-02-21.md
|
|
59
|
+
... (list all review-*.md)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If output folder is already empty or doesn't exist:
|
|
63
|
+
```
|
|
64
|
+
✅ Nothing to clear — output folder is already empty.
|
|
65
|
+
```
|
|
66
|
+
Then stop.
|
|
67
|
+
|
|
68
|
+
### 4. Ask Scope
|
|
69
|
+
|
|
70
|
+
Ask the user what to clear:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
What would you like to clear?
|
|
74
|
+
|
|
75
|
+
[1] All — context files + intermediate review files + review reports
|
|
76
|
+
[2] Context only — clear session state and knowledge bases (keep reports)
|
|
77
|
+
[3] Reports only — clear intermediate review files + final review reports (keep context)
|
|
78
|
+
[4] Cancel — do nothing
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Wait for user input.
|
|
82
|
+
|
|
83
|
+
### 5. Execute Deletion
|
|
84
|
+
|
|
85
|
+
**If [1] All:**
|
|
86
|
+
```bash
|
|
87
|
+
rm -f "{review_output}/current-pr-context.yaml"
|
|
88
|
+
rm -f "{review_output}"/pr-*-context.yaml
|
|
89
|
+
rm -f "{review_output}"/general-review-*.md
|
|
90
|
+
rm -f "{review_output}"/security-review-*.md
|
|
91
|
+
rm -f "{review_output}"/performance-review-*.md
|
|
92
|
+
rm -f "{review_output}"/architecture-review-*.md
|
|
93
|
+
rm -f "{review_output}"/business-review-*.md
|
|
94
|
+
rm -f "{review_output}"/improve-code-*.md
|
|
95
|
+
rm -f "{review_output}"/pr-description-*.md
|
|
96
|
+
rm -f "{review_output}"/review-*.md
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**If [2] Context only:**
|
|
100
|
+
```bash
|
|
101
|
+
rm -f "{review_output}/current-pr-context.yaml"
|
|
102
|
+
rm -f "{review_output}"/pr-*-context.yaml
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**If [3] Reports only:**
|
|
106
|
+
```bash
|
|
107
|
+
rm -f "{review_output}"/general-review-*.md
|
|
108
|
+
rm -f "{review_output}"/security-review-*.md
|
|
109
|
+
rm -f "{review_output}"/performance-review-*.md
|
|
110
|
+
rm -f "{review_output}"/architecture-review-*.md
|
|
111
|
+
rm -f "{review_output}"/business-review-*.md
|
|
112
|
+
rm -f "{review_output}"/improve-code-*.md
|
|
113
|
+
rm -f "{review_output}"/pr-description-*.md
|
|
114
|
+
rm -f "{review_output}"/review-*.md
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**If [4] Cancel:**
|
|
118
|
+
```
|
|
119
|
+
❌ Cancelled — nothing was deleted.
|
|
120
|
+
```
|
|
121
|
+
Stop.
|
|
122
|
+
|
|
123
|
+
### 6. Confirm Deletion
|
|
124
|
+
|
|
125
|
+
Verify files are gone and report:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
129
|
+
✅ Clear complete
|
|
130
|
+
|
|
131
|
+
Deleted:
|
|
132
|
+
🗑️ Context files: {n_ctx} file(s) removed
|
|
133
|
+
🗑️ Review reports: {n_rpt} file(s) removed
|
|
134
|
+
|
|
135
|
+
Output folder: {review_output}
|
|
136
|
+
Status: clean
|
|
137
|
+
|
|
138
|
+
Ready for a fresh review session.
|
|
139
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
140
|
+
```
|