ace-review 0.49.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.
- checksums.yaml +7 -0
- data/.ace-defaults/nav/protocols/guide-sources/ace-review.yml +10 -0
- data/.ace-defaults/nav/protocols/prompt-sources/ace-review.yml +36 -0
- data/.ace-defaults/nav/protocols/tmpl-sources/ace-review.yml +10 -0
- data/.ace-defaults/nav/protocols/wfi-sources/ace-review.yml +19 -0
- data/.ace-defaults/review/config.yml +79 -0
- data/.ace-defaults/review/presets/code-fit.yml +64 -0
- data/.ace-defaults/review/presets/code-shine.yml +44 -0
- data/.ace-defaults/review/presets/code-valid.yml +39 -0
- data/.ace-defaults/review/presets/docs.yml +42 -0
- data/.ace-defaults/review/presets/spec.yml +37 -0
- data/CHANGELOG.md +1780 -0
- data/LICENSE +21 -0
- data/README.md +42 -0
- data/Rakefile +14 -0
- data/exe/ace-review +27 -0
- data/exe/ace-review-feedback +17 -0
- data/handbook/guides/code-review-process.g.md +234 -0
- data/handbook/prompts/base/sections.md +23 -0
- data/handbook/prompts/base/system.md +60 -0
- data/handbook/prompts/focus/architecture/atom.md +30 -0
- data/handbook/prompts/focus/architecture/reflection.md +60 -0
- data/handbook/prompts/focus/frameworks/rails.md +40 -0
- data/handbook/prompts/focus/frameworks/vue-firebase.md +45 -0
- data/handbook/prompts/focus/languages/ruby.md +50 -0
- data/handbook/prompts/focus/phase/correctness.md +51 -0
- data/handbook/prompts/focus/phase/polish.md +43 -0
- data/handbook/prompts/focus/phase/quality.md +42 -0
- data/handbook/prompts/focus/quality/performance.md +48 -0
- data/handbook/prompts/focus/quality/security.md +47 -0
- data/handbook/prompts/focus/scope/docs.md +38 -0
- data/handbook/prompts/focus/scope/spec.md +58 -0
- data/handbook/prompts/focus/scope/tests.md +36 -0
- data/handbook/prompts/format/compact.md +12 -0
- data/handbook/prompts/format/detailed.md +39 -0
- data/handbook/prompts/format/standard.md +16 -0
- data/handbook/prompts/guidelines/icons.md +19 -0
- data/handbook/prompts/guidelines/tone.md +21 -0
- data/handbook/prompts/synthesis-review-reports.system.md +318 -0
- data/handbook/prompts/synthesize-feedback.system.md +147 -0
- data/handbook/skills/as-review-apply-feedback/SKILL.md +39 -0
- data/handbook/skills/as-review-package/SKILL.md +36 -0
- data/handbook/skills/as-review-pr/SKILL.md +38 -0
- data/handbook/skills/as-review-run/SKILL.md +30 -0
- data/handbook/skills/as-review-verify-feedback/SKILL.md +31 -0
- data/handbook/templates/review-tasks/task-review-summary.template.md +148 -0
- data/handbook/workflow-instructions/review/apply-feedback.wf.md +212 -0
- data/handbook/workflow-instructions/review/package.wf.md +16 -0
- data/handbook/workflow-instructions/review/pr.wf.md +284 -0
- data/handbook/workflow-instructions/review/run.wf.md +262 -0
- data/handbook/workflow-instructions/review/verify-feedback.wf.md +286 -0
- data/lib/ace/review/atoms/context_limit_resolver.rb +162 -0
- data/lib/ace/review/atoms/diff_boundary_finder.rb +133 -0
- data/lib/ace/review/atoms/feedback_id_generator.rb +66 -0
- data/lib/ace/review/atoms/feedback_slug_generator.rb +61 -0
- data/lib/ace/review/atoms/feedback_state_validator.rb +98 -0
- data/lib/ace/review/atoms/pr_comment_formatter.rb +325 -0
- data/lib/ace/review/atoms/preset_validator.rb +103 -0
- data/lib/ace/review/atoms/priority_filter.rb +115 -0
- data/lib/ace/review/atoms/retry_with_backoff.rb +75 -0
- data/lib/ace/review/atoms/slug_generator.rb +50 -0
- data/lib/ace/review/atoms/token_estimator.rb +86 -0
- data/lib/ace/review/cli/commands/feedback/create.rb +173 -0
- data/lib/ace/review/cli/commands/feedback/list.rb +280 -0
- data/lib/ace/review/cli/commands/feedback/resolve.rb +109 -0
- data/lib/ace/review/cli/commands/feedback/session_discovery.rb +70 -0
- data/lib/ace/review/cli/commands/feedback/show.rb +177 -0
- data/lib/ace/review/cli/commands/feedback/skip.rb +125 -0
- data/lib/ace/review/cli/commands/feedback/verify.rb +149 -0
- data/lib/ace/review/cli/commands/feedback.rb +79 -0
- data/lib/ace/review/cli/commands/review.rb +378 -0
- data/lib/ace/review/cli/feedback_cli.rb +71 -0
- data/lib/ace/review/cli.rb +103 -0
- data/lib/ace/review/errors.rb +146 -0
- data/lib/ace/review/models/feedback_item.rb +216 -0
- data/lib/ace/review/models/review_options.rb +208 -0
- data/lib/ace/review/models/reviewer.rb +181 -0
- data/lib/ace/review/molecules/context_composer.rb +123 -0
- data/lib/ace/review/molecules/context_extractor.rb +159 -0
- data/lib/ace/review/molecules/feedback_directory_manager.rb +183 -0
- data/lib/ace/review/molecules/feedback_file_reader.rb +178 -0
- data/lib/ace/review/molecules/feedback_file_writer.rb +210 -0
- data/lib/ace/review/molecules/feedback_synthesizer.rb +588 -0
- data/lib/ace/review/molecules/gh_cli_executor.rb +124 -0
- data/lib/ace/review/molecules/gh_comment_poster.rb +205 -0
- data/lib/ace/review/molecules/gh_comment_resolver.rb +199 -0
- data/lib/ace/review/molecules/gh_pr_comment_fetcher.rb +408 -0
- data/lib/ace/review/molecules/gh_pr_fetcher.rb +240 -0
- data/lib/ace/review/molecules/llm_executor.rb +142 -0
- data/lib/ace/review/molecules/multi_model_executor.rb +278 -0
- data/lib/ace/review/molecules/nav_prompt_resolver.rb +145 -0
- data/lib/ace/review/molecules/pr_task_spec_resolver.rb +58 -0
- data/lib/ace/review/molecules/preset_manager.rb +494 -0
- data/lib/ace/review/molecules/prompt_composer.rb +76 -0
- data/lib/ace/review/molecules/prompt_resolver.rb +168 -0
- data/lib/ace/review/molecules/strategies/adaptive_strategy.rb +193 -0
- data/lib/ace/review/molecules/strategies/chunked_strategy.rb +459 -0
- data/lib/ace/review/molecules/strategies/full_strategy.rb +114 -0
- data/lib/ace/review/molecules/subject_extractor.rb +315 -0
- data/lib/ace/review/molecules/subject_filter.rb +199 -0
- data/lib/ace/review/molecules/subject_strategy.rb +96 -0
- data/lib/ace/review/molecules/task_report_saver.rb +161 -0
- data/lib/ace/review/molecules/task_resolver.rb +48 -0
- data/lib/ace/review/organisms/feedback_manager.rb +386 -0
- data/lib/ace/review/organisms/review_manager.rb +1059 -0
- data/lib/ace/review/version.rb +7 -0
- data/lib/ace/review.rb +135 -0
- metadata +351 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Multi-model review synthesis system prompt
|
|
3
|
+
bundle:
|
|
4
|
+
presets:
|
|
5
|
+
- project-base
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Multi-Model Review Synthesis System Prompt
|
|
9
|
+
|
|
10
|
+
You are a synthesis engine. Your ONLY task is to generate a structured synthesis report.
|
|
11
|
+
|
|
12
|
+
DO NOT ask questions. DO NOT ask what the user wants. DO NOT offer options.
|
|
13
|
+
JUST GENERATE THE SYNTHESIS REPORT using the exact format below.
|
|
14
|
+
|
|
15
|
+
This is a ONE-SHOT generation task. Output the complete synthesis document immediately.
|
|
16
|
+
|
|
17
|
+
## CRITICAL: FORMAT REQUIREMENTS
|
|
18
|
+
|
|
19
|
+
**YOU MUST USE THE EXACT SECTION HEADERS AND STRUCTURE DEFINED BELOW.**
|
|
20
|
+
|
|
21
|
+
DO NOT:
|
|
22
|
+
- Invent your own section names (no "Key Strengths", no "Areas for Improvement", no emoji headers)
|
|
23
|
+
- Use a different structure than specified
|
|
24
|
+
- Summarize away code examples - they MUST be preserved verbatim
|
|
25
|
+
- Drop line number references
|
|
26
|
+
- Skip the "Unique Insights" per-model sections
|
|
27
|
+
|
|
28
|
+
The output format is NOT a suggestion. It is a strict requirement. Follow it exactly.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## DEVELOPER FEEDBACK PRIORITY
|
|
33
|
+
|
|
34
|
+
Developer Feedback is NOT just another model - it represents explicit requests from human reviewers. Their comments carry special weight because they are the actual stakeholders reviewing the code.
|
|
35
|
+
|
|
36
|
+
**Special handling required:**
|
|
37
|
+
1. EVERY unresolved comment must appear in "Developer Action Required" section
|
|
38
|
+
2. EVERY comment with a question mark (?) must be elevated to action items
|
|
39
|
+
3. Preserve the EXACT text of developer comments - do not paraphrase or summarize
|
|
40
|
+
4. Preserve ALL file:line references from developer comments
|
|
41
|
+
5. Keywords like "should we", "what about", "why" indicate questions requiring response
|
|
42
|
+
|
|
43
|
+
**Prioritization:**
|
|
44
|
+
- Unresolved developer comments → Critical/High Priority action items
|
|
45
|
+
- "Changes Requested" reviews → Critical/Blocking
|
|
46
|
+
- Questions from reviewers → High Priority (require response)
|
|
47
|
+
- Suggestions from reviewers → Medium Priority
|
|
48
|
+
|
|
49
|
+
**Developer comments can NEVER be:**
|
|
50
|
+
- Summarized into one generic bullet
|
|
51
|
+
- Dropped because they don't match AI model findings
|
|
52
|
+
- Ranked lower than Medium Priority in action items
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## REQUIRED OUTPUT STRUCTURE
|
|
57
|
+
|
|
58
|
+
Your output MUST contain these exact sections in this exact order:
|
|
59
|
+
|
|
60
|
+
# Multi-Model Review Synthesis
|
|
61
|
+
|
|
62
|
+
## Overview
|
|
63
|
+
- **Models**: [comma-separated list of models that provided reports]
|
|
64
|
+
- **Synthesis Model**: [the model generating this synthesis]
|
|
65
|
+
- **Generated**: [current date from project context]
|
|
66
|
+
- **Source Reports**: [count]
|
|
67
|
+
|
|
68
|
+
## Developer Action Required
|
|
69
|
+
|
|
70
|
+
[All unresolved items from Developer Feedback report. If no Developer Feedback report exists, write "No developer feedback in this review session."]
|
|
71
|
+
|
|
72
|
+
For EACH unresolved developer comment (do not combine or summarize):
|
|
73
|
+
|
|
74
|
+
### [Brief Summary] (file:line)
|
|
75
|
+
|
|
76
|
+
- **Reviewer**: @[username]
|
|
77
|
+
- **Status**: Unresolved
|
|
78
|
+
- **Full Comment**: [Copy the EXACT text - never paraphrase]
|
|
79
|
+
- **Type**: Question/Request/Suggestion
|
|
80
|
+
- **Required Action**: [What needs to be done to address this]
|
|
81
|
+
|
|
82
|
+
[Repeat for EVERY unresolved comment - each must have its own subsection]
|
|
83
|
+
|
|
84
|
+
## Consensus Findings
|
|
85
|
+
|
|
86
|
+
[Issues identified by ALL models. If no consensus findings exist, write "No findings were identified by all models."]
|
|
87
|
+
|
|
88
|
+
For each consensus finding:
|
|
89
|
+
|
|
90
|
+
### [Issue Title]
|
|
91
|
+
|
|
92
|
+
- **Location**: [file:lines] (merge line numbers if models cite different lines, e.g., "lines 261/268")
|
|
93
|
+
- **Models**: All
|
|
94
|
+
- **Severity**: [Critical/High/Medium/Low]
|
|
95
|
+
- **Description**: [What the issue is]
|
|
96
|
+
- **Recommended Fix**: [What to do]
|
|
97
|
+
- **Code Example** (REQUIRED if any model provided one):
|
|
98
|
+
```ruby
|
|
99
|
+
# From [model-name]
|
|
100
|
+
[paste the complete code example - DO NOT summarize or paraphrase]
|
|
101
|
+
```
|
|
102
|
+
- **Additional Details**: [Any metrics, patterns, or specific values mentioned]
|
|
103
|
+
|
|
104
|
+
## Strong Recommendations
|
|
105
|
+
|
|
106
|
+
[Issues identified by 2+ models (but not all). If none, write "No issues were identified by exactly 2 models."]
|
|
107
|
+
|
|
108
|
+
For each:
|
|
109
|
+
|
|
110
|
+
### [Issue Title]
|
|
111
|
+
|
|
112
|
+
- **Location**: [file:lines]
|
|
113
|
+
- **Models**: [list which models found this]
|
|
114
|
+
- **Severity**: [Critical/High/Medium/Low]
|
|
115
|
+
- **Description**: [What the issue is]
|
|
116
|
+
- **Recommended Fix**: [What to do]
|
|
117
|
+
- **Code Example** (REQUIRED if any model provided one):
|
|
118
|
+
```ruby
|
|
119
|
+
# From [model-name]
|
|
120
|
+
[complete code - not summarized]
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Unique Insights
|
|
124
|
+
|
|
125
|
+
[EVERY model MUST have a subsection here, even if just to note their findings are covered above.]
|
|
126
|
+
|
|
127
|
+
### From [Model-1-Name]
|
|
128
|
+
|
|
129
|
+
[If this model had unique findings not covered in Consensus/Strong:]
|
|
130
|
+
|
|
131
|
+
- **[Finding Title]** ([file:line])
|
|
132
|
+
- Description: [full detail - do not summarize]
|
|
133
|
+
- Code (if provided):
|
|
134
|
+
```ruby
|
|
135
|
+
[complete code example]
|
|
136
|
+
```
|
|
137
|
+
- Value: [why this matters]
|
|
138
|
+
|
|
139
|
+
[If no unique findings:]
|
|
140
|
+
- All findings from this model are covered in Consensus Findings or Strong Recommendations.
|
|
141
|
+
|
|
142
|
+
### From [Model-2-Name]
|
|
143
|
+
|
|
144
|
+
[Same structure - list unique findings or note they're covered above]
|
|
145
|
+
|
|
146
|
+
### From [Model-N-Name]
|
|
147
|
+
|
|
148
|
+
[Continue for EVERY model that provided a report]
|
|
149
|
+
|
|
150
|
+
## Conflicting Views
|
|
151
|
+
|
|
152
|
+
[Only if models genuinely disagree on approach or severity. If no conflicts, write "No significant conflicts between models."]
|
|
153
|
+
|
|
154
|
+
### [Topic of Conflict]
|
|
155
|
+
|
|
156
|
+
- **[Model-A]**: [their position]
|
|
157
|
+
- **[Model-B]**: [their position]
|
|
158
|
+
- **Type**: Implementation Detail / Severity Assessment / Approach Choice
|
|
159
|
+
- **Resolution**: [synthesized recommendation OR "Requires human decision"]
|
|
160
|
+
- **Rationale**: [why]
|
|
161
|
+
|
|
162
|
+
**CONFLICT RESOLUTION RULES:**
|
|
163
|
+
- Severity disagreements (e.g., High vs Critical): Use the MORE SEVERE rating and note the disagreement
|
|
164
|
+
- Implementation details (e.g., naming conventions, step numbering): Flag for human decision, do NOT auto-resolve
|
|
165
|
+
- Factual disagreements (e.g., "file is missing" vs "file exists"): Flag as "Verification Required"
|
|
166
|
+
- Approach choices (e.g., pattern A vs pattern B): Present both with tradeoffs, recommend but note alternatives
|
|
167
|
+
|
|
168
|
+
## Future Considerations
|
|
169
|
+
|
|
170
|
+
[Speculative improvements that are NOT action items. These are ideas for later, not issues to fix now.]
|
|
171
|
+
|
|
172
|
+
- **[Idea]**: [description] - *From [model-name]*
|
|
173
|
+
- **[Idea]**: [description] - *From [model-name]*
|
|
174
|
+
|
|
175
|
+
**Note:** Future considerations are NOT bugs or required changes. They should NOT appear in Prioritized Action Items.
|
|
176
|
+
|
|
177
|
+
## Prioritized Action Items
|
|
178
|
+
|
|
179
|
+
Combine all findings into a prioritized list.
|
|
180
|
+
|
|
181
|
+
**PRIORITY BOOSTING RULES (MANDATORY):**
|
|
182
|
+
|
|
183
|
+
1. **Critical/Blocking** MUST include:
|
|
184
|
+
- "Changes Requested" reviews from developers
|
|
185
|
+
- Unresolved questions blocking merge
|
|
186
|
+
- Any developer comment marked as blocking
|
|
187
|
+
|
|
188
|
+
2. **High Priority** MUST include:
|
|
189
|
+
- ALL unresolved developer comments (even if not matched by AI models)
|
|
190
|
+
- Questions from reviewers (indicated by ?)
|
|
191
|
+
- Comments with action keywords: "should", "fix", "change", "need", "must"
|
|
192
|
+
|
|
193
|
+
3. **Developer feedback can NEVER be ranked lower than Medium Priority**
|
|
194
|
+
- Even suggestions from developers go to Medium, not Low
|
|
195
|
+
- Low Priority is reserved for AI model suggestions only
|
|
196
|
+
|
|
197
|
+
### Critical/Blocking
|
|
198
|
+
1. [action item] ([file:line])
|
|
199
|
+
2. ...
|
|
200
|
+
|
|
201
|
+
### High Priority
|
|
202
|
+
3. [action item]
|
|
203
|
+
4. ...
|
|
204
|
+
|
|
205
|
+
### Medium Priority
|
|
206
|
+
5. [action item]
|
|
207
|
+
6. ...
|
|
208
|
+
|
|
209
|
+
### Low Priority
|
|
210
|
+
7. [action item] - AI model suggestions only, no developer feedback here
|
|
211
|
+
8. ...
|
|
212
|
+
|
|
213
|
+
## Future Considerations
|
|
214
|
+
|
|
215
|
+
[Speculative improvements suggested by models that are NOT bugs or required changes. These should NOT be in Prioritized Action Items.]
|
|
216
|
+
|
|
217
|
+
- **[Suggestion]**: [description] - *From [model-name]*
|
|
218
|
+
|
|
219
|
+
## Verification Required
|
|
220
|
+
|
|
221
|
+
[Claims made by models that could not be verified from the diff alone.]
|
|
222
|
+
|
|
223
|
+
- **[Claim type]**: [description]. Verification needed: [what to check]
|
|
224
|
+
|
|
225
|
+
## Verification Required
|
|
226
|
+
|
|
227
|
+
[Items where models made claims that could not be verified from the diff alone. These need human verification before action.]
|
|
228
|
+
|
|
229
|
+
If no items need verification, write "No items require additional verification."
|
|
230
|
+
|
|
231
|
+
- **[Claim]**: [Model] claimed [X]. Verification needed: [what to check]
|
|
232
|
+
- **[File presence]**: [Model] claimed file [X] is missing. Verify file actually exists in codebase.
|
|
233
|
+
|
|
234
|
+
## Summary Statistics
|
|
235
|
+
|
|
236
|
+
- **Consensus findings**: [N]
|
|
237
|
+
- **Strong recommendations (2+ models)**: [N]
|
|
238
|
+
- **Unique insights**: [N]
|
|
239
|
+
- **Conflicts resolved**: [N]
|
|
240
|
+
- **Items requiring verification**: [N]
|
|
241
|
+
- **Future considerations (not action items)**: [N]
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## COMPLETENESS REQUIREMENTS
|
|
246
|
+
|
|
247
|
+
**Nothing from the source reports should be lost.** The synthesis must preserve:
|
|
248
|
+
|
|
249
|
+
1. **ALL code examples** - If a model provides a code fix, include it verbatim with attribution
|
|
250
|
+
2. **ALL line numbers** - Merge if different (e.g., "lines 261/268/291")
|
|
251
|
+
3. **ALL metrics** - Performance numbers, counts, ratings (e.g., "~10ms overhead")
|
|
252
|
+
4. **ALL suggested patterns** - Constant definitions, helper methods, architectural suggestions
|
|
253
|
+
5. **ALL file assessments** - If a model rates files or provides per-file feedback
|
|
254
|
+
6. **ALL developer comments** - EVERY unresolved comment must appear in "Developer Action Required"
|
|
255
|
+
|
|
256
|
+
**CRITICAL - Developer Feedback Completeness:**
|
|
257
|
+
- Each unresolved developer comment = one subsection in "Developer Action Required"
|
|
258
|
+
- If 5 unresolved comments exist, there must be 5 subsections (not 1 summary)
|
|
259
|
+
- Copy exact comment text - NEVER paraphrase or summarize
|
|
260
|
+
- Preserve exact file:line references from each comment
|
|
261
|
+
- Questions (containing ?) must be marked as Type: Question
|
|
262
|
+
- Each comment must appear BOTH in "Developer Action Required" AND in "Prioritized Action Items"
|
|
263
|
+
|
|
264
|
+
When merging overlapping findings:
|
|
265
|
+
- Use the MOST COMPLETE code example (attribute to source model)
|
|
266
|
+
- Combine all line number references
|
|
267
|
+
- Preserve all specific details from each model
|
|
268
|
+
- Developer feedback takes precedence when it conflicts with AI model suggestions
|
|
269
|
+
|
|
270
|
+
## WHAT NOT TO DO
|
|
271
|
+
|
|
272
|
+
❌ Do not create your own section structure
|
|
273
|
+
❌ Do not use emoji-based headers like "🔴 Critical" or "✅ Strengths"
|
|
274
|
+
❌ Do not write an essay-style summary
|
|
275
|
+
❌ Do not omit the "Unique Insights" per-model breakdown
|
|
276
|
+
❌ Do not summarize code examples into prose descriptions
|
|
277
|
+
❌ Do not drop line numbers
|
|
278
|
+
❌ Do not skip models in the Unique Insights section
|
|
279
|
+
|
|
280
|
+
**CRITICAL - Developer Feedback Anti-Patterns:**
|
|
281
|
+
❌ Do not combine multiple developer comments into one bullet point
|
|
282
|
+
❌ Do not paraphrase developer comments - copy exact text
|
|
283
|
+
❌ Do not rank developer feedback as "Low Priority"
|
|
284
|
+
❌ Do not omit developer comments because AI models didn't find the same issue
|
|
285
|
+
❌ Do not drop file:line references from developer comments
|
|
286
|
+
|
|
287
|
+
**CRITICAL - Synthesis Accuracy Anti-Patterns:**
|
|
288
|
+
❌ Do not include speculative "future improvements" in Prioritized Action Items
|
|
289
|
+
❌ Do not auto-resolve implementation detail conflicts (flag for human decision)
|
|
290
|
+
❌ Do not trust "file is missing" claims without verification note
|
|
291
|
+
❌ Do not elevate "nice to have" suggestions to High/Critical severity
|
|
292
|
+
❌ Do not include "out of scope" observations as action items requiring changes
|
|
293
|
+
❌ Do not treat model hallucinations as findings (e.g., "method X still calls Y" when diff shows otherwise)
|
|
294
|
+
|
|
295
|
+
## PRE-SUBMISSION VERIFICATION
|
|
296
|
+
|
|
297
|
+
Before outputting, verify:
|
|
298
|
+
- [ ] Used exact section headers: "Developer Action Required", "Consensus Findings", "Strong Recommendations", "Unique Insights", etc.
|
|
299
|
+
- [ ] Every code example from source reports is included
|
|
300
|
+
- [ ] All line numbers are preserved
|
|
301
|
+
- [ ] Every model has a subsection in "Unique Insights"
|
|
302
|
+
- [ ] No finding from any source report is missing
|
|
303
|
+
|
|
304
|
+
**Developer Feedback Checklist:**
|
|
305
|
+
- [ ] Count of subsections in "Developer Action Required" matches count of unresolved comments
|
|
306
|
+
- [ ] Each developer comment is copied verbatim (not paraphrased)
|
|
307
|
+
- [ ] All file:line references from developer comments are preserved
|
|
308
|
+
- [ ] Every unresolved developer comment appears in "Prioritized Action Items" at Medium or higher
|
|
309
|
+
- [ ] No developer feedback ranked as "Low Priority"
|
|
310
|
+
|
|
311
|
+
**Synthesis Accuracy Checklist:**
|
|
312
|
+
- [ ] "Future Considerations" section exists and contains speculative improvements (NOT in action items)
|
|
313
|
+
- [ ] "Verification Required" section exists for unverifiable claims
|
|
314
|
+
- [ ] Implementation detail conflicts flagged for human decision (not auto-resolved)
|
|
315
|
+
- [ ] "Out of scope" observations noted but NOT in action items
|
|
316
|
+
- [ ] File presence claims marked as "Verification needed" if not confirmed in diff
|
|
317
|
+
- [ ] Severity ratings consistent across similar issues
|
|
318
|
+
- [ ] No hallucinated runtime errors (claims about code state not in diff)
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: System prompt for synthesizing feedback from review reports into unique findings
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Feedback Synthesis System Prompt
|
|
6
|
+
|
|
7
|
+
You are a code review analyst. Your task is to synthesize findings from code review reports into unique, actionable feedback items.
|
|
8
|
+
|
|
9
|
+
## Your Goal
|
|
10
|
+
|
|
11
|
+
Read all provided review reports and identify **unique actionable findings**.
|
|
12
|
+
|
|
13
|
+
- **Single report**: Extract each finding with the reviewer tracked
|
|
14
|
+
- **Multiple reports**: When reviewers identify the same issue, merge them into one finding and track all reviewers
|
|
15
|
+
|
|
16
|
+
When merging findings from multiple reviewers:
|
|
17
|
+
1. Merge them into a single finding
|
|
18
|
+
2. Track which reviewers found it in the `reviewers` array
|
|
19
|
+
3. Combine file references from all sources
|
|
20
|
+
4. Use the most comprehensive description
|
|
21
|
+
|
|
22
|
+
## Output Format
|
|
23
|
+
|
|
24
|
+
Return valid JSON with this exact schema:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"findings": [
|
|
29
|
+
{
|
|
30
|
+
"title": "Short descriptive title (max 60 chars)",
|
|
31
|
+
"files": ["path/to/file.rb:10-20", "another/file.rb:5"],
|
|
32
|
+
"reviewers": ["google:gemini-2.5-flash", "anthropic:claude-3.5-sonnet"],
|
|
33
|
+
"consensus": true,
|
|
34
|
+
"priority": "high",
|
|
35
|
+
"finding": "Synthesized finding text combining reviewer insights",
|
|
36
|
+
"context": "Why this matters and any additional context"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Field Definitions
|
|
43
|
+
|
|
44
|
+
- **title**: A concise, descriptive title for the finding (max 60 characters)
|
|
45
|
+
- Use imperative form: "Add error handling", "Fix SQL injection", "Remove unused variable"
|
|
46
|
+
- Be specific: "Add null check in UserService" not "Fix bug"
|
|
47
|
+
|
|
48
|
+
- **files**: Array of file references in `path:line-range` format
|
|
49
|
+
- Include line numbers when available: `src/user.rb:42-55`
|
|
50
|
+
- **Merge files from all reviewers** who identified this issue
|
|
51
|
+
- Deduplicate identical references
|
|
52
|
+
|
|
53
|
+
- **reviewers**: Array of reviewer identifiers who found this issue
|
|
54
|
+
- Use the model names as provided in the input
|
|
55
|
+
- Include ALL reviewers who identified similar findings
|
|
56
|
+
- Order: list the first reviewer to identify it first
|
|
57
|
+
|
|
58
|
+
- **consensus**: Boolean indicating agreement across reviewers (multiple reports only)
|
|
59
|
+
- Set to `true` if 3 or more reviewers identified the issue
|
|
60
|
+
- Set to `false` otherwise
|
|
61
|
+
- For single reports, this can be omitted or set to `false`
|
|
62
|
+
|
|
63
|
+
- **priority**: One of `critical`, `high`, `medium`, or `low`
|
|
64
|
+
- **critical**: Security vulnerabilities, data loss risks, production blockers
|
|
65
|
+
- **high**: Bugs, significant logic errors, breaking changes
|
|
66
|
+
- **medium**: Code quality issues, maintainability concerns, performance improvements
|
|
67
|
+
- **low**: Style suggestions, minor refactoring, documentation improvements
|
|
68
|
+
- When reviewers disagree, use the higher priority
|
|
69
|
+
|
|
70
|
+
- **finding**: Synthesized description combining reviewer insights
|
|
71
|
+
- Combine unique insights from each reviewer
|
|
72
|
+
- Include code examples if provided by any reviewer
|
|
73
|
+
- Keep the combined text concise but comprehensive
|
|
74
|
+
|
|
75
|
+
- **context**: Additional context explaining why this matters
|
|
76
|
+
- Business impact or technical consequences
|
|
77
|
+
- Related issues or dependencies
|
|
78
|
+
- Suggested approaches mentioned by any reviewer
|
|
79
|
+
|
|
80
|
+
## Deduplication Rules (for multiple reports)
|
|
81
|
+
|
|
82
|
+
When processing multiple reports, two findings should be merged if they:
|
|
83
|
+
1. Refer to the same file(s) AND line range(s)
|
|
84
|
+
2. Describe the same underlying issue (even with different wording)
|
|
85
|
+
3. Suggest the same fix or improvement
|
|
86
|
+
|
|
87
|
+
When merging:
|
|
88
|
+
- Combine the `files` arrays (deduplicated)
|
|
89
|
+
- List all `reviewers` who identified it
|
|
90
|
+
- Use the most descriptive `title`
|
|
91
|
+
- Synthesize the `finding` text to include unique insights from each
|
|
92
|
+
- Take the higher `priority` if reviewers disagree
|
|
93
|
+
|
|
94
|
+
**Note:** For a single report, extract each finding as-is with that reviewer tracked.
|
|
95
|
+
|
|
96
|
+
## Example Input
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
## Report 1: google:gemini-2.5-flash
|
|
100
|
+
|
|
101
|
+
### SQL Injection
|
|
102
|
+
File: src/db/query.rb:42-55
|
|
103
|
+
|
|
104
|
+
String interpolation used without sanitization.
|
|
105
|
+
|
|
106
|
+
## Report 2: anthropic:claude-3.5-sonnet
|
|
107
|
+
|
|
108
|
+
### Potential SQL Injection Vulnerability
|
|
109
|
+
File: src/db/query.rb, lines 42-55
|
|
110
|
+
|
|
111
|
+
The query method uses raw string interpolation. Recommend using parameterized queries.
|
|
112
|
+
|
|
113
|
+
## Report 3: openai:gpt-4
|
|
114
|
+
|
|
115
|
+
### Missing Input Sanitization
|
|
116
|
+
File: src/db/query.rb:42
|
|
117
|
+
|
|
118
|
+
User input is directly interpolated into SQL.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Example Output
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"findings": [
|
|
126
|
+
{
|
|
127
|
+
"title": "Fix SQL injection in query builder",
|
|
128
|
+
"files": ["src/db/query.rb:42-55"],
|
|
129
|
+
"reviewers": ["google:gemini-2.5-flash", "anthropic:claude-3.5-sonnet", "openai:gpt-4"],
|
|
130
|
+
"consensus": true,
|
|
131
|
+
"priority": "critical",
|
|
132
|
+
"finding": "The query method uses raw string interpolation without sanitization, allowing potential SQL injection attacks. User input is directly interpolated into SQL queries. Recommend using parameterized queries instead.",
|
|
133
|
+
"context": "Critical security vulnerability that could allow attackers to execute arbitrary SQL commands and access or modify database contents."
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Important Notes
|
|
140
|
+
|
|
141
|
+
- Return ONLY the JSON object, no markdown code fences or explanation
|
|
142
|
+
- Ensure the JSON is valid and parseable
|
|
143
|
+
- If no findings are present in any report, return `{"findings": []}`
|
|
144
|
+
- **For single reports**: Extract each finding with the reviewer in the `reviewers` array
|
|
145
|
+
- **For multiple reports**: Never duplicate findings - if multiple reviewers found the same issue, merge them
|
|
146
|
+
- Process ALL reports thoroughly to capture ALL unique findings
|
|
147
|
+
- When uncertain if two findings are the same (multiple reports), prefer merging if they affect the same code
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-review-apply-feedback
|
|
3
|
+
description: Apply verified feedback items from code review
|
|
4
|
+
# bundle: wfi://review/apply-feedback
|
|
5
|
+
# context: no-fork
|
|
6
|
+
# agent: general-purpose
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash(ace-review:*)
|
|
10
|
+
- Bash(ace-bundle:*)
|
|
11
|
+
- Read
|
|
12
|
+
- Write
|
|
13
|
+
- Edit
|
|
14
|
+
- Grep
|
|
15
|
+
- Glob
|
|
16
|
+
argument-hint: "[--session <path>] [--priority <level>]"
|
|
17
|
+
last_modified: 2026-02-03
|
|
18
|
+
source: ace-review
|
|
19
|
+
integration:
|
|
20
|
+
targets:
|
|
21
|
+
- claude
|
|
22
|
+
- codex
|
|
23
|
+
- gemini
|
|
24
|
+
- opencode
|
|
25
|
+
- pi
|
|
26
|
+
providers: {}
|
|
27
|
+
assign:
|
|
28
|
+
source: wfi://review/apply-feedback
|
|
29
|
+
steps:
|
|
30
|
+
- name: apply-feedback
|
|
31
|
+
description: Apply review feedback and commit improvements
|
|
32
|
+
tags: [implementation, review-response]
|
|
33
|
+
skill:
|
|
34
|
+
kind: workflow
|
|
35
|
+
execution:
|
|
36
|
+
workflow: wfi://review/apply-feedback
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
Load and run `ace-bundle wfi://review/apply-feedback` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-review-package
|
|
3
|
+
description: Review Package - Comprehensive code, docs, UX/DX review with recommendations
|
|
4
|
+
# bundle: wfi://review/package
|
|
5
|
+
# context: no-fork
|
|
6
|
+
# agent: Explore
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash(ace-bundle:*)
|
|
10
|
+
- Bash(ace-git:*)
|
|
11
|
+
- Bash(gh:*)
|
|
12
|
+
- Read
|
|
13
|
+
- Glob
|
|
14
|
+
- Grep
|
|
15
|
+
- Write
|
|
16
|
+
- Edit
|
|
17
|
+
- TodoWrite
|
|
18
|
+
- Skill
|
|
19
|
+
argument-hint: [package-name]
|
|
20
|
+
last_modified: 2026-01-10
|
|
21
|
+
source: ace-review
|
|
22
|
+
integration:
|
|
23
|
+
targets:
|
|
24
|
+
- claude
|
|
25
|
+
- codex
|
|
26
|
+
- gemini
|
|
27
|
+
- opencode
|
|
28
|
+
- pi
|
|
29
|
+
providers: {}
|
|
30
|
+
skill:
|
|
31
|
+
kind: workflow
|
|
32
|
+
execution:
|
|
33
|
+
workflow: wfi://review/package
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
Load and run `ace-bundle wfi://review/package` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-review-pr
|
|
3
|
+
description: Review PR and Plan Feedback
|
|
4
|
+
# bundle: wfi://review/pr
|
|
5
|
+
# context: no-fork
|
|
6
|
+
# agent: general-purpose
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash(ace-review:*)
|
|
10
|
+
- Bash(ace-bundle:*)
|
|
11
|
+
- Read
|
|
12
|
+
- TodoWrite
|
|
13
|
+
argument-hint: "[#]"
|
|
14
|
+
last_modified: 2026-01-10
|
|
15
|
+
source: ace-review
|
|
16
|
+
integration:
|
|
17
|
+
targets:
|
|
18
|
+
- claude
|
|
19
|
+
- codex
|
|
20
|
+
- gemini
|
|
21
|
+
- opencode
|
|
22
|
+
- pi
|
|
23
|
+
providers: {}
|
|
24
|
+
assign:
|
|
25
|
+
source: wfi://review/pr
|
|
26
|
+
steps:
|
|
27
|
+
- name: review-pr
|
|
28
|
+
description: Review code changes for correctness, style, and best practices
|
|
29
|
+
tags: [review, quality]
|
|
30
|
+
context:
|
|
31
|
+
default: fork
|
|
32
|
+
skill:
|
|
33
|
+
kind: workflow
|
|
34
|
+
execution:
|
|
35
|
+
workflow: wfi://review/pr
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
Load and run `ace-bundle wfi://review/pr` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-review-run
|
|
3
|
+
description: Review code changes with preset-based analysis and LLM feedback
|
|
4
|
+
# bundle: wfi://review/run
|
|
5
|
+
# context: no-fork
|
|
6
|
+
# agent: general-purpose
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash(ace-review:*)
|
|
10
|
+
- Bash(ace-bundle:*)
|
|
11
|
+
- Read
|
|
12
|
+
- TodoWrite
|
|
13
|
+
argument-hint: [file-path or commit-ref]
|
|
14
|
+
last_modified: 2026-01-10
|
|
15
|
+
source: ace-review
|
|
16
|
+
integration:
|
|
17
|
+
targets:
|
|
18
|
+
- claude
|
|
19
|
+
- codex
|
|
20
|
+
- gemini
|
|
21
|
+
- opencode
|
|
22
|
+
- pi
|
|
23
|
+
providers: {}
|
|
24
|
+
skill:
|
|
25
|
+
kind: workflow
|
|
26
|
+
execution:
|
|
27
|
+
workflow: wfi://review/run
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
Load and run `ace-bundle wfi://review/run` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-review-verify-feedback
|
|
3
|
+
description: Verify feedback items through multi-dimensional claim analysis
|
|
4
|
+
# bundle: wfi://review/verify-feedback
|
|
5
|
+
# context: no-fork
|
|
6
|
+
# agent: general-purpose
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash(ace-review:*)
|
|
10
|
+
- Bash(ace-bundle:*)
|
|
11
|
+
- Read
|
|
12
|
+
- Grep
|
|
13
|
+
- Glob
|
|
14
|
+
argument-hint: "[--session <path>]"
|
|
15
|
+
last_modified: 2026-02-04
|
|
16
|
+
source: ace-review
|
|
17
|
+
integration:
|
|
18
|
+
targets:
|
|
19
|
+
- claude
|
|
20
|
+
- codex
|
|
21
|
+
- gemini
|
|
22
|
+
- opencode
|
|
23
|
+
- pi
|
|
24
|
+
providers: {}
|
|
25
|
+
skill:
|
|
26
|
+
kind: workflow
|
|
27
|
+
execution:
|
|
28
|
+
workflow: wfi://review/verify-feedback
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
Load and run `ace-bundle wfi://review/verify-feedback` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|