cc-reviewer 6.0.0 → 6.1.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.
@@ -34,6 +34,35 @@ If the question references the codebase, populate `relevantFiles` with the minim
34
34
 
35
35
  If the current working directory is `/etc`, `~`, `~/.ssh`, or any other clearly sensitive system path, **refuse**. Tell the user: "Please invoke `/multi-consult` from a project root — `<cwd>` looks sensitive." Do not call the tool.
36
36
 
37
+ ### 4. Extract criteria; clarify load-bearing assumptions BEFORE calling
38
+
39
+ Pin what the question is being judged against. Once criteria are explicit, the panel's recommendation is anchored to them instead of floating — this is the fix for "ask twice, get a different answer." Stochastic re-runs converge much better against fixed criteria than against an under-specified question.
40
+
41
+ **4a. Append a CRITERIA block to the end of `question`**, priority-ordered, each tagged `[stated]` or `[assumed]`:
42
+
43
+ ```
44
+ CRITERIA (priority order):
45
+ 1. [stated] cost-per-request under $X / 1M ops
46
+ 2. [stated] team writes Go; minimize ops complexity
47
+ 3. [assumed] sustained ~10k QPS write rate
48
+ 4. [assumed] eventual consistency acceptable for analytics
49
+ ```
50
+
51
+ - `[stated]` = explicit in the user's message or earlier conversation.
52
+ - `[assumed]` = you needed to fix it to recommend; the user did NOT say.
53
+ - Cap `[assumed]` at 3. If the top 3 don't fit, the question is too vague — bounce back to the user before calling.
54
+
55
+ **4b. Pre-call clarification gate.** Scan your `[assumed]` criteria. If any is **load-bearing** (the recommendation would flip if the assumption is wrong), STOP and ask the user before invoking the tool:
56
+
57
+ > "Before I consult the panel, I need to confirm: <restate assumption>. Is that right, or should I adjust to <plausible alternative>?"
58
+
59
+ A burned panel call on a wrong assumed criterion costs more than the round-trip.
60
+
61
+ **Skip the gate when:**
62
+ - `[stated]` criteria fully pin the answer space (no assumptions needed).
63
+ - The user told you to proceed without clarification.
64
+ - Remaining assumptions are clearly incidental (would not flip the rec).
65
+
37
66
  ## Tool Invocation
38
67
 
39
68
  Call `multi_consult` with:
@@ -23,17 +23,27 @@ Use `/multi-review` when you want thorough parallel reviews from all available m
23
23
 
24
24
  ## Before Calling - PREPARE THE HANDOFF
25
25
 
26
- ### 1. Summarize What You Did (Brief!)
26
+ ### 1. Summarize What You Did + State the Acceptance Bar
27
+
28
+ Don't just say what you did — also state the bar the work needs to clear. The bar is what lets reviewers calibrate "material" vs "nice to have." Without it, reviewers default to general code-quality vibes, which produces drift across runs.
29
+
27
30
  ```
28
- "Implemented caching layer for the product catalog API using Redis.
29
- Added cache invalidation on product updates."
31
+ "Implemented caching layer for the product catalog API using Redis with cache invalidation on product updates.
32
+ Bar: safe under concurrent updates (no stale reads on the next request) AND p95 read latency under 50ms."
30
33
  ```
31
34
 
32
- ### 2. List Your Uncertainties
35
+ ### 2. List Your Uncertainties — Tag Load-Bearing vs Incidental
36
+
37
+ Tag each uncertainty:
38
+ - `[load-bearing]` = if your assumption here is wrong, the work is NOT shipping-ready
39
+ - `[incidental]` = nice to verify but won't block ship
40
+
41
+ Reviewers prioritize accordingly, and your synthesis can elevate `[load-bearing]` items above stylistic findings.
42
+
33
43
  ```
34
44
  UNCERTAINTIES:
35
- - "Is the cache TTL appropriate for this data?"
36
- - "Does the invalidation handle all update scenarios?"
45
+ - [load-bearing] "Is the cache invalidation race-free under concurrent updates?"
46
+ - [incidental] "Is the TTL value optimal could it be 60s instead of 30s?"
37
47
  ```
38
48
 
39
49
  ### 3. Ask Specific Questions
@@ -43,6 +53,16 @@ QUESTIONS:
43
53
  - "Is there a race condition in the invalidation logic?"
44
54
  ```
45
55
 
56
+ ### 4. Identify Decisions You Made
57
+
58
+ If you chose between alternatives — caching strategy, retry policy, error-handling shape, schema design, etc. — list them with rationale. The handoff schema's `decisions[]` field gives the adversarial reviewer a concrete hook to attack the design choice rather than just hunt for bugs. Skip if the change is a straightforward bug fix with no design choice involved.
59
+
60
+ ```
61
+ DECISIONS:
62
+ 1. Chose write-through cache over write-behind. Rationale: stronger read-after-write consistency at the cost of slightly slower writes; we prioritize correctness for catalog data.
63
+ 2. Chose 30s TTL with explicit invalidation on update. Rationale: TTL bounds staleness if invalidation misses; explicit invalidation catches the common path immediately.
64
+ ```
65
+
46
66
  ## Tool Invocation
47
67
 
48
68
  Call `multi_review` with:
@@ -67,14 +87,19 @@ Call `multi_review` with:
67
87
  ```
68
88
  SUMMARY:
69
89
  <what you did, 1-3 sentences>
90
+ Bar: <what counts as shipping-ready — concrete acceptance criteria>
70
91
 
71
92
  UNCERTAINTIES (verify these):
72
- 1. <uncertainty>
73
- 2. <uncertainty>
93
+ 1. [load-bearing|incidental] <uncertainty>
94
+ 2. [load-bearing|incidental] <uncertainty>
74
95
 
75
96
  QUESTIONS:
76
97
  1. <question>
77
98
 
99
+ DECISIONS:
100
+ 1. <choice>. Rationale: <why this over alternatives>
101
+ 2. <choice>. Rationale: <why this over alternatives>
102
+
78
103
  PRIORITY FILES:
79
104
  - <file>
80
105
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-reviewer",
3
- "version": "6.0.0",
3
+ "version": "6.1.0",
4
4
  "description": "MCP server for Claude Code - Get second-opinion feedback from Codex/Gemini CLIs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",