prr-kit 1.1.3 → 1.2.1

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 +30 -248
  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,265 +1,47 @@
1
- <svg width="1200" height="340" viewBox="0 0 1200 340" xmlns="http://www.w3.org/2000/svg">
2
- <defs>
3
- <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#0d1117"/>
5
- <stop offset="100%" style="stop-color:#161b22"/>
6
- </linearGradient>
7
- <linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
8
- <stop offset="0%" style="stop-color:#a855f7"/>
9
- <stop offset="100%" style="stop-color:#3b82f6"/>
10
- </linearGradient>
11
- <filter id="glow" x="-20%" y="-200%" width="140%" height="500%">
12
- <feGaussianBlur stdDeviation="4" result="blur"/>
13
- <feMerge>
14
- <feMergeNode in="blur"/>
15
- <feMergeNode in="SourceGraphic"/>
16
- </feMerge>
17
- </filter>
18
- <pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
19
- <path d="M 40 0 L 0 0 0 40" fill="none" stroke="#ffffff" stroke-width="0.3" opacity="0.04"/>
20
- </pattern>
21
- <pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse">
22
- <circle cx="1" cy="1" r="1" fill="#ffffff" opacity="0.06"/>
23
- </pattern>
24
- </defs>
1
+ <svg width="1200" height="280" viewBox="0 0 1200 280" xmlns="http://www.w3.org/2000/svg">
25
2
 
26
3
  <!-- Background -->
27
- <rect width="1200" height="340" fill="url(#bg)"/>
28
- <rect width="1200" height="340" fill="url(#grid)"/>
29
- <rect x="800" y="0" width="400" height="340" fill="url(#dots)"/>
4
+ <rect width="1200" height="280" fill="#000000"/>
30
5
 
31
- <!-- Decorative circles -->
32
- <circle cx="980" cy="90" r="130" fill="#a855f7" opacity="0.05"/>
33
- <circle cx="1100" cy="260" r="90" fill="#3b82f6" opacity="0.05"/>
34
- <circle cx="150" cy="280" r="110" fill="#a855f7" opacity="0.04"/>
35
-
36
- <!-- Top accent line -->
37
- <rect x="0" y="0" width="1200" height="3" fill="url(#accent)" filter="url(#glow)"/>
38
-
39
- <!-- Left vertical accent bar -->
40
- <rect x="64" y="60" width="3" height="220" fill="url(#accent)" opacity="0.8" filter="url(#glow)"/>
41
-
42
- <!-- Magnifying glass icon -->
43
- <g transform="translate(100, 108)">
44
- <circle cx="28" cy="28" r="26" fill="none" stroke="url(#accent)" stroke-width="3" opacity="0.9"/>
45
- <circle cx="28" cy="28" r="18" fill="none" stroke="url(#accent)" stroke-width="1.5" opacity="0.3"/>
46
- <line x1="47" y1="47" x2="62" y2="62" stroke="url(#accent)" stroke-width="4" stroke-linecap="round" opacity="0.9"/>
47
- <line x1="18" y1="23" x2="38" y2="23" stroke="#a855f7" stroke-width="2" stroke-linecap="round" opacity="0.6"/>
48
- <line x1="18" y1="30" x2="32" y2="30" stroke="#3b82f6" stroke-width="2" stroke-linecap="round" opacity="0.6"/>
49
- <line x1="18" y1="37" x2="36" y2="37" stroke="#a855f7" stroke-width="2" stroke-linecap="round" opacity="0.4"/>
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"/>
50
13
  </g>
51
14
 
52
- <!-- Main title -->
53
- <text x="190" y="138" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
54
- font-size="52" font-weight="700" letter-spacing="-1" fill="#ffffff">
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">
55
19
  PR Review Kit
56
20
  </text>
57
21
 
58
- <!-- Accent underline -->
59
- <rect x="190" y="150" width="340" height="2" fill="url(#accent)" opacity="0.5" rx="1"/>
60
-
61
- <!-- Subtitle -->
62
- <text x="492" y="175" text-anchor="middle"
22
+ <!-- Tagline -->
23
+ <text x="200" y="176"
63
24
  font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
64
- font-size="15" font-weight="400" fill="#8b949e" letter-spacing="0.2">
65
- Install the kit, configure it once, and start getting structured AI reviews on every PR.
25
+ font-size="17" font-weight="400" fill="#555555" letter-spacing="0.2">
26
+ What if your AI actually understood your codebase before reviewing?
66
27
  </text>
67
28
 
68
- <!-- ── IDE Badges Row 1: Preferred ── -->
69
- <!-- Claude Code -->
70
- <g transform="translate(192, 200)">
71
- <rect width="104" height="24" rx="12" fill="#21262d" stroke="#a855f7" stroke-width="1" opacity="0.9"/>
72
- <circle cx="14" cy="12" r="4" fill="#a855f7"/>
73
- <text x="24" y="16" font-family="monospace" font-size="10" fill="#c9b8f5">Claude Code</text>
74
- </g>
75
-
76
- <!-- Cursor -->
77
- <g transform="translate(304, 200)">
78
- <rect width="64" height="24" rx="12" fill="#21262d" stroke="#3b82f6" stroke-width="1" opacity="0.9"/>
79
- <circle cx="14" cy="12" r="4" fill="#3b82f6"/>
80
- <text x="24" y="16" font-family="monospace" font-size="10" fill="#93c5fd">Cursor</text>
81
- </g>
82
-
83
- <!-- Windsurf -->
84
- <g transform="translate(376, 200)">
85
- <rect width="76" height="24" rx="12" fill="#21262d" stroke="#06b6d4" stroke-width="1" opacity="0.9"/>
86
- <circle cx="14" cy="12" r="4" fill="#06b6d4"/>
87
- <text x="24" y="16" font-family="monospace" font-size="10" fill="#67e8f9">Windsurf</text>
88
- </g>
89
-
90
- <!-- GitHub Copilot -->
91
- <g transform="translate(460, 200)">
92
- <rect width="110" height="24" rx="12" fill="#21262d" stroke="#2da44e" stroke-width="1" opacity="0.9"/>
93
- <circle cx="14" cy="12" r="4" fill="#2da44e"/>
94
- <text x="24" y="16" font-family="monospace" font-size="10" fill="#7ee8a2">GitHub Copilot</text>
95
- </g>
96
-
97
- <!-- Gemini CLI -->
98
- <g transform="translate(578, 200)">
99
- <rect width="82" height="24" rx="12" fill="#21262d" stroke="#4285f4" stroke-width="1" opacity="0.9"/>
100
- <circle cx="14" cy="12" r="4" fill="#4285f4"/>
101
- <text x="24" y="16" font-family="monospace" font-size="10" fill="#93b4fb">Gemini CLI</text>
102
- </g>
103
-
104
- <!-- ── IDE Badges Row 2 ── -->
105
- <!-- Cline -->
106
- <g transform="translate(192, 232)">
107
- <rect width="50" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
108
- <circle cx="11" cy="10" r="3.5" fill="#ef4444"/>
109
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Cline</text>
110
- </g>
111
-
112
- <!-- Roo -->
113
- <g transform="translate(249, 232)">
114
- <rect width="70" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
115
- <circle cx="11" cy="10" r="3.5" fill="#f97316"/>
116
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Roo Cline</text>
117
- </g>
118
-
119
- <!-- Kiro -->
120
- <g transform="translate(326, 232)">
121
- <rect width="46" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
122
- <circle cx="11" cy="10" r="3.5" fill="#f59e0b"/>
123
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Kiro</text>
124
- </g>
125
-
126
- <!-- OpenCode -->
127
- <g transform="translate(379, 232)">
128
- <rect width="74" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
129
- <circle cx="11" cy="10" r="3.5" fill="#8b5cf6"/>
130
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">OpenCode</text>
131
- </g>
132
-
133
- <!-- Antigravity -->
134
- <g transform="translate(460, 232)">
135
- <rect width="82" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
136
- <circle cx="11" cy="10" r="3.5" fill="#4285f4"/>
137
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Antigravity</text>
138
- </g>
139
-
140
- <!-- Auggie -->
141
- <g transform="translate(549, 232)">
142
- <rect width="56" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
143
- <circle cx="11" cy="10" r="3.5" fill="#06b6d4"/>
144
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Auggie</text>
145
- </g>
146
-
147
- <!-- Codex -->
148
- <g transform="translate(612, 232)">
149
- <rect width="52" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
150
- <circle cx="11" cy="10" r="3.5" fill="#10b981"/>
151
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Codex</text>
152
- </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>
153
33
 
154
- <!-- Crush -->
155
- <g transform="translate(671, 232)">
156
- <rect width="50" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
157
- <circle cx="11" cy="10" r="3.5" fill="#ec4899"/>
158
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Crush</text>
159
- </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>
160
36
 
161
- <!-- ── IDE Badges Row 3 ── -->
162
- <!-- iFlow -->
163
- <g transform="translate(192, 260)">
164
- <rect width="50" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
165
- <circle cx="11" cy="10" r="3.5" fill="#6366f1"/>
166
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">iFlow</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>
167
39
  </g>
168
40
 
169
- <!-- KiloCoder -->
170
- <g transform="translate(249, 260)">
171
- <rect width="74" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
172
- <circle cx="11" cy="10" r="3.5" fill="#14b8a6"/>
173
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">KiloCoder</text>
174
- </g>
175
-
176
- <!-- QwenCoder -->
177
- <g transform="translate(330, 260)">
178
- <rect width="76" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
179
- <circle cx="11" cy="10" r="3.5" fill="#f97316"/>
180
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">QwenCoder</text>
181
- </g>
182
-
183
- <!-- Rovo Dev -->
184
- <g transform="translate(413, 260)">
185
- <rect width="68" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
186
- <circle cx="11" cy="10" r="3.5" fill="#0052cc"/>
187
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Rovo Dev</text>
188
- </g>
189
-
190
- <!-- Trae -->
191
- <g transform="translate(488, 260)">
192
- <rect width="46" height="20" rx="10" fill="#21262d" stroke="#30363d" stroke-width="1"/>
193
- <circle cx="11" cy="10" r="3.5" fill="#84cc16"/>
194
- <text x="19" y="14" font-family="monospace" font-size="9" fill="#8b949e">Trae</text>
195
- </g>
196
-
197
- <!-- ── Right side: review flow diagram ── -->
198
- <g transform="translate(820, 60)" opacity="0.85">
199
- <!-- SP -->
200
- <rect x="0" y="0" width="80" height="30" rx="6" fill="#21262d" stroke="#30363d" stroke-width="1"/>
201
- <text x="40" y="20" text-anchor="middle" font-family="monospace" font-size="12" fill="#a855f7" font-weight="600">SP</text>
202
-
203
- <!-- Arrow SP→DP -->
204
- <line x1="80" y1="15" x2="108" y2="15" stroke="#30363d" stroke-width="1.5"/>
205
- <polygon points="108,11 116,15 108,19" fill="#30363d"/>
206
-
207
- <!-- DP -->
208
- <rect x="116" y="0" width="80" height="30" rx="6" fill="#21262d" stroke="#30363d" stroke-width="1"/>
209
- <text x="156" y="20" text-anchor="middle" font-family="monospace" font-size="12" fill="#3b82f6" font-weight="600">DP</text>
210
-
211
- <!-- Vertical from DP -->
212
- <line x1="156" y1="30" x2="156" y2="56" stroke="#30363d" stroke-width="1.5"/>
213
- <line x1="28" y1="56" x2="276" y2="56" stroke="#30363d" stroke-width="1.5"/>
214
-
215
- <!-- GR -->
216
- <line x1="28" y1="56" x2="28" y2="76" stroke="#30363d" stroke-width="1.5"/>
217
- <rect x="-12" y="76" width="80" height="28" rx="6" fill="#21262d" stroke="#a855f7" stroke-width="1" opacity="0.8"/>
218
- <text x="28" y="94" text-anchor="middle" font-family="monospace" font-size="11" fill="#a855f7">GR</text>
219
-
220
- <!-- SR -->
221
- <line x1="108" y1="56" x2="108" y2="76" stroke="#30363d" stroke-width="1.5"/>
222
- <rect x="68" y="76" width="80" height="28" rx="6" fill="#21262d" stroke="#ef4444" stroke-width="1" opacity="0.8"/>
223
- <text x="108" y="94" text-anchor="middle" font-family="monospace" font-size="11" fill="#ef4444">SR</text>
224
-
225
- <!-- PR -->
226
- <line x1="196" y1="56" x2="196" y2="76" stroke="#30363d" stroke-width="1.5"/>
227
- <rect x="156" y="76" width="80" height="28" rx="6" fill="#21262d" stroke="#f59e0b" stroke-width="1" opacity="0.8"/>
228
- <text x="196" y="94" text-anchor="middle" font-family="monospace" font-size="11" fill="#f59e0b">PR</text>
229
-
230
- <!-- AR -->
231
- <line x1="276" y1="56" x2="276" y2="76" stroke="#30363d" stroke-width="1.5"/>
232
- <rect x="236" y="76" width="80" height="28" rx="6" fill="#21262d" stroke="#06b6d4" stroke-width="1" opacity="0.8"/>
233
- <text x="276" y="94" text-anchor="middle" font-family="monospace" font-size="11" fill="#06b6d4">AR</text>
234
-
235
- <!-- Converge lines -->
236
- <line x1="28" y1="104" x2="28" y2="132" stroke="#30363d" stroke-width="1.5"/>
237
- <line x1="108" y1="104" x2="108" y2="132" stroke="#30363d" stroke-width="1.5"/>
238
- <line x1="196" y1="104" x2="196" y2="132" stroke="#30363d" stroke-width="1.5"/>
239
- <line x1="276" y1="104" x2="276" y2="132" stroke="#30363d" stroke-width="1.5"/>
240
- <line x1="28" y1="132" x2="276" y2="132" stroke="#30363d" stroke-width="1.5"/>
241
- <line x1="152" y1="132" x2="152" y2="152" stroke="#30363d" stroke-width="1.5"/>
242
-
243
- <!-- RR -->
244
- <rect x="112" y="152" width="80" height="30" rx="6" fill="#21262d" stroke="#22c55e" stroke-width="1"/>
245
- <text x="152" y="172" text-anchor="middle" font-family="monospace" font-size="12" fill="#22c55e" font-weight="600">RR</text>
246
-
247
- <!-- Arrow RR→PC -->
248
- <line x1="192" y1="167" x2="220" y2="167" stroke="#30363d" stroke-width="1.5"/>
249
- <polygon points="220,163 228,167 220,171" fill="#30363d"/>
250
-
251
- <!-- PC -->
252
- <rect x="228" y="152" width="80" height="30" rx="6" fill="#21262d" stroke="#8b949e" stroke-width="1"/>
253
- <text x="268" y="172" text-anchor="middle" font-family="monospace" font-size="12" fill="#8b949e" font-weight="600">PC</text>
254
-
255
- <!-- Labels -->
256
- <text x="16" y="-10" font-family="monospace" font-size="10" fill="#484f58">Select PR</text>
257
- <text x="120" y="-10" font-family="monospace" font-size="10" fill="#484f58">Describe</text>
258
- <text x="0" y="122" font-family="monospace" font-size="9" fill="#484f58">Reviews</text>
259
- <text x="112" y="202" font-family="monospace" font-size="10" fill="#484f58">Report</text>
260
- <text x="232" y="202" font-family="monospace" font-size="10" fill="#484f58">Post</text>
261
- </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>
262
46
 
263
- <!-- Bottom accent line -->
264
- <rect x="0" y="337" width="1200" height="3" fill="url(#accent)" opacity="0.4"/>
265
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.3",
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.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://prrkit.sitenow.cloud/",
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"