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.
Files changed (173) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +260 -235
  3. package/docs/assets/banner.svg +33 -165
  4. package/docs/assets/how-it-works.svg +87 -0
  5. package/package.json +60 -60
  6. package/src/core/agents/prr-master.agent.yaml +18 -7
  7. package/src/core/tasks/clear.md +140 -0
  8. package/src/core/tasks/help.md +15 -13
  9. package/src/core/workflows/clear/workflow.md +6 -0
  10. package/src/core/workflows/help/workflow.md +6 -0
  11. package/src/core/workflows/party-mode/steps/step-01-load-reviewers.md +35 -24
  12. package/src/core/workflows/party-mode/steps/step-02-discussion.md +45 -25
  13. package/src/core/workflows/party-mode/workflow.md +2 -2
  14. package/src/prr/agents/architecture-reviewer.agent.yaml +65 -45
  15. package/src/prr/agents/business-reviewer.agent.yaml +66 -0
  16. package/src/prr/agents/general-reviewer.agent.yaml +64 -48
  17. package/src/prr/agents/performance-reviewer.agent.yaml +65 -45
  18. package/src/prr/agents/security-reviewer.agent.yaml +67 -43
  19. package/src/prr/config-template.yaml +97 -0
  20. package/src/prr/data/stacks/actix.md +55 -0
  21. package/src/prr/data/stacks/alpine.md +47 -0
  22. package/src/prr/data/stacks/android.md +53 -0
  23. package/src/prr/data/stacks/angular.md +96 -0
  24. package/src/prr/data/stacks/ansible.md +55 -0
  25. package/src/prr/data/stacks/apollo.md +54 -0
  26. package/src/prr/data/stacks/astro.md +48 -0
  27. package/src/prr/data/stacks/aws-cdk.md +55 -0
  28. package/src/prr/data/stacks/axum.md +56 -0
  29. package/src/prr/data/stacks/babylonjs.md +55 -0
  30. package/src/prr/data/stacks/bash.md +53 -0
  31. package/src/prr/data/stacks/bevy.md +53 -0
  32. package/src/prr/data/stacks/bootstrap.md +52 -0
  33. package/src/prr/data/stacks/bun.md +55 -0
  34. package/src/prr/data/stacks/cpp.md +57 -0
  35. package/src/prr/data/stacks/csharp.md +95 -0
  36. package/src/prr/data/stacks/css.md +55 -0
  37. package/src/prr/data/stacks/cypress.md +53 -0
  38. package/src/prr/data/stacks/d3.md +53 -0
  39. package/src/prr/data/stacks/deno.md +49 -0
  40. package/src/prr/data/stacks/django.md +92 -0
  41. package/src/prr/data/stacks/docker.md +79 -0
  42. package/src/prr/data/stacks/drizzle.md +54 -0
  43. package/src/prr/data/stacks/dynamodb.md +55 -0
  44. package/src/prr/data/stacks/electron.md +44 -0
  45. package/src/prr/data/stacks/elixir.md +53 -0
  46. package/src/prr/data/stacks/expo.md +53 -0
  47. package/src/prr/data/stacks/expressjs.md +82 -0
  48. package/src/prr/data/stacks/fastapi.md +88 -0
  49. package/src/prr/data/stacks/fastify.md +60 -0
  50. package/src/prr/data/stacks/fiber.md +55 -0
  51. package/src/prr/data/stacks/firebase.md +43 -0
  52. package/src/prr/data/stacks/flask.md +46 -0
  53. package/src/prr/data/stacks/flutter.md +75 -0
  54. package/src/prr/data/stacks/gin.md +57 -0
  55. package/src/prr/data/stacks/github-actions.md +71 -0
  56. package/src/prr/data/stacks/go.md +88 -0
  57. package/src/prr/data/stacks/godot.md +56 -0
  58. package/src/prr/data/stacks/graphql.md +76 -0
  59. package/src/prr/data/stacks/grpc.md +56 -0
  60. package/src/prr/data/stacks/haskell.md +48 -0
  61. package/src/prr/data/stacks/helm.md +54 -0
  62. package/src/prr/data/stacks/hono.md +54 -0
  63. package/src/prr/data/stacks/htmx.md +38 -0
  64. package/src/prr/data/stacks/java.md +87 -0
  65. package/src/prr/data/stacks/jest-vitest.md +87 -0
  66. package/src/prr/data/stacks/jquery.md +50 -0
  67. package/src/prr/data/stacks/junit.md +53 -0
  68. package/src/prr/data/stacks/kotlin.md +89 -0
  69. package/src/prr/data/stacks/kubernetes.md +148 -0
  70. package/src/prr/data/stacks/langchain.md +56 -0
  71. package/src/prr/data/stacks/laravel.md +56 -0
  72. package/src/prr/data/stacks/libgdx.md +46 -0
  73. package/src/prr/data/stacks/lit.md +49 -0
  74. package/src/prr/data/stacks/love2d.md +51 -0
  75. package/src/prr/data/stacks/lua.md +51 -0
  76. package/src/prr/data/stacks/mobx.md +54 -0
  77. package/src/prr/data/stacks/mongodb.md +85 -0
  78. package/src/prr/data/stacks/monogame.md +51 -0
  79. package/src/prr/data/stacks/mysql.md +57 -0
  80. package/src/prr/data/stacks/nestjs.md +95 -0
  81. package/src/prr/data/stacks/nextjs.md +88 -0
  82. package/src/prr/data/stacks/nginx.md +55 -0
  83. package/src/prr/data/stacks/node.md +56 -0
  84. package/src/prr/data/stacks/nuxtjs.md +91 -0
  85. package/src/prr/data/stacks/openai-api.md +54 -0
  86. package/src/prr/data/stacks/opengl.md +54 -0
  87. package/src/prr/data/stacks/phaser.md +54 -0
  88. package/src/prr/data/stacks/phoenix.md +55 -0
  89. package/src/prr/data/stacks/php.md +56 -0
  90. package/src/prr/data/stacks/playwright.md +86 -0
  91. package/src/prr/data/stacks/postgresql.md +60 -0
  92. package/src/prr/data/stacks/prisma.md +81 -0
  93. package/src/prr/data/stacks/pygame.md +52 -0
  94. package/src/prr/data/stacks/pytest.md +53 -0
  95. package/src/prr/data/stacks/python.md +94 -0
  96. package/src/prr/data/stacks/pytorch.md +54 -0
  97. package/src/prr/data/stacks/qwik.md +50 -0
  98. package/src/prr/data/stacks/rails.md +48 -0
  99. package/src/prr/data/stacks/react-native.md +77 -0
  100. package/src/prr/data/stacks/react.md +104 -0
  101. package/src/prr/data/stacks/redis.md +76 -0
  102. package/src/prr/data/stacks/redux.md +107 -0
  103. package/src/prr/data/stacks/remix.md +51 -0
  104. package/src/prr/data/stacks/rust.md +88 -0
  105. package/src/prr/data/stacks/sass.md +51 -0
  106. package/src/prr/data/stacks/scala.md +50 -0
  107. package/src/prr/data/stacks/scikit-learn.md +53 -0
  108. package/src/prr/data/stacks/sequelize.md +54 -0
  109. package/src/prr/data/stacks/socket-io.md +54 -0
  110. package/src/prr/data/stacks/solidity.md +53 -0
  111. package/src/prr/data/stacks/solidjs.md +45 -0
  112. package/src/prr/data/stacks/spring-boot.md +92 -0
  113. package/src/prr/data/stacks/sql.md +85 -0
  114. package/src/prr/data/stacks/sqlite.md +55 -0
  115. package/src/prr/data/stacks/styled-components.md +51 -0
  116. package/src/prr/data/stacks/supabase.md +57 -0
  117. package/src/prr/data/stacks/svelte.md +77 -0
  118. package/src/prr/data/stacks/sveltekit.md +54 -0
  119. package/src/prr/data/stacks/swift.md +61 -0
  120. package/src/prr/data/stacks/tailwindcss.md +10 -0
  121. package/src/prr/data/stacks/tanstack-query.md +48 -0
  122. package/src/prr/data/stacks/tauri.md +52 -0
  123. package/src/prr/data/stacks/terraform.md +53 -0
  124. package/src/prr/data/stacks/three.md +53 -0
  125. package/src/prr/data/stacks/trpc.md +49 -0
  126. package/src/prr/data/stacks/typeorm.md +40 -0
  127. package/src/prr/data/stacks/typescript.md +83 -0
  128. package/src/prr/data/stacks/unity.md +61 -0
  129. package/src/prr/data/stacks/unreal.md +58 -0
  130. package/src/prr/data/stacks/vite.md +48 -0
  131. package/src/prr/data/stacks/vue3.md +95 -0
  132. package/src/prr/data/stacks/vulkan.md +53 -0
  133. package/src/prr/data/stacks/wasm.md +49 -0
  134. package/src/prr/data/stacks/webpack.md +48 -0
  135. package/src/prr/data/stacks/zig.md +51 -0
  136. package/src/prr/data/stacks/zustand.md +56 -0
  137. package/src/prr/workflows/1-discover/select-pr/steps/step-05-confirm.md +1 -0
  138. package/src/prr/workflows/1-discover/select-pr/workflow.md +1 -1
  139. package/src/prr/workflows/2-analyze/collect-pr-context/steps/step-01-analyze-files.md +334 -0
  140. package/src/prr/workflows/2-analyze/collect-pr-context/steps/step-02-collect-sources.md +451 -0
  141. package/src/prr/workflows/2-analyze/collect-pr-context/steps/step-03-build-knowledge-base.md +337 -0
  142. package/src/prr/workflows/2-analyze/collect-pr-context/workflow.md +123 -0
  143. package/src/prr/workflows/2-analyze/describe-pr/steps/step-02-classify.md +12 -6
  144. package/src/prr/workflows/2-analyze/describe-pr/steps/step-03-walkthrough.md +59 -1
  145. package/src/prr/workflows/3-review/architecture-review/checklist.md +4 -0
  146. package/src/prr/workflows/3-review/architecture-review/instructions.xml +32 -4
  147. package/src/prr/workflows/3-review/architecture-review/workflow.yaml +17 -18
  148. package/src/prr/workflows/3-review/business-review/checklist.md +27 -0
  149. package/src/prr/workflows/3-review/business-review/instructions.xml +153 -0
  150. package/src/prr/workflows/3-review/business-review/workflow.yaml +17 -0
  151. package/src/prr/workflows/3-review/general-review/checklist.md +5 -1
  152. package/src/prr/workflows/3-review/general-review/instructions.xml +39 -8
  153. package/src/prr/workflows/3-review/general-review/workflow.yaml +17 -18
  154. package/src/prr/workflows/3-review/performance-review/checklist.md +3 -1
  155. package/src/prr/workflows/3-review/performance-review/instructions.xml +10 -3
  156. package/src/prr/workflows/3-review/performance-review/workflow.yaml +17 -18
  157. package/src/prr/workflows/3-review/security-review/checklist.md +2 -1
  158. package/src/prr/workflows/3-review/security-review/instructions.xml +8 -3
  159. package/src/prr/workflows/3-review/security-review/workflow.yaml +18 -19
  160. package/src/prr/workflows/4-improve/improve-code/workflow.yaml +17 -18
  161. package/src/prr/workflows/6-report/generate-report/steps/step-01-collect.md +9 -2
  162. package/src/prr/workflows/6-report/generate-report/steps/step-02-organize.md +28 -7
  163. package/src/prr/workflows/6-report/generate-report/steps/step-03-write.md +6 -4
  164. package/src/prr/workflows/6-report/generate-report/templates/review-report.template.md +124 -78
  165. package/src/prr/workflows/6-report/post-comments/steps/step-01-format.md +104 -13
  166. package/src/prr/workflows/6-report/post-comments/steps/step-02-post.md +92 -21
  167. package/src/prr/workflows/6-report/post-comments/workflow.md +6 -0
  168. package/src/prr/workflows/quick/workflow.md +138 -32
  169. package/src/prr/workflows/0-setup/collect-project-context/steps/step-01-scan-configs.md +0 -106
  170. package/src/prr/workflows/0-setup/collect-project-context/steps/step-02-extract-rules.md +0 -131
  171. package/src/prr/workflows/0-setup/collect-project-context/steps/step-03-ask-context.md +0 -194
  172. package/src/prr/workflows/0-setup/collect-project-context/steps/step-04-save-context.md +0 -161
  173. package/src/prr/workflows/0-setup/collect-project-context/workflow.md +0 -58
@@ -1,179 +1,47 @@
1
- <svg width="1200" height="300" viewBox="0 0 1200 300" xmlns="http://www.w3.org/2000/svg">
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="300" fill="url(#bg)"/>
37
-
38
- <!-- Grid overlay -->
39
- <rect width="1200" height="300" fill="url(#grid)"/>
40
-
41
- <!-- Dot pattern on right side -->
42
- <rect x="800" y="0" width="400" height="300" fill="url(#dots)"/>
43
-
44
- <!-- Decorative circles (blurred, background) -->
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
- <!-- Main title -->
67
- <text x="190" y="145" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
68
- font-size="52" font-weight="700" letter-spacing="-1" fill="#ffffff">
69
- PR Review Framework
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
- <!-- Accent underline under title -->
73
- <rect x="190" y="157" width="420" height="2" fill="url(#accent)" opacity="0.5" rx="1"/>
74
-
75
- <!-- Subtitle -->
76
- <text x="192" y="192" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
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
- <!-- Badges row -->
82
- <!-- Badge 1: Claude Code -->
83
- <g transform="translate(192, 218)">
84
- <rect width="112" height="26" rx="13" fill="#21262d" stroke="#30363d" stroke-width="1"/>
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
- <!-- Badge 3: Windsurf -->
97
- <g transform="translate(398, 218)">
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
- <!-- Badge 4: Node.js -->
104
- <g transform="translate(494, 218)">
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
- <!-- Right side: review flow diagram -->
111
- <g transform="translate(820, 55)" opacity="0.85">
112
- <!-- Flow boxes -->
113
- <!-- SP -->
114
- <rect x="0" y="0" width="80" height="30" rx="6" fill="#21262d" stroke="#30363d" stroke-width="1"/>
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.1.2",
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
- - "Run [CP] Collect Project Context ONCE before the first review of a new project"
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 in one command — select branch → describe → all reviews → report"
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 contextreview → 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
+ ```