maxsimcli 4.1.0 → 4.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 (80) hide show
  1. package/README.md +14 -5
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/assets/CHANGELOG.md +32 -0
  4. package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +32 -0
  5. package/dist/assets/dashboard/client/assets/{index-C_eAetZJ.js → index-nAXJLp0_.js} +61 -59
  6. package/dist/assets/dashboard/client/index.html +2 -2
  7. package/dist/assets/dashboard/server.js +26 -11
  8. package/dist/assets/templates/agents/AGENTS.md +18 -69
  9. package/dist/assets/templates/agents/maxsim-code-reviewer.md +17 -92
  10. package/dist/assets/templates/agents/maxsim-codebase-mapper.md +57 -694
  11. package/dist/assets/templates/agents/maxsim-debugger.md +80 -925
  12. package/dist/assets/templates/agents/maxsim-executor.md +94 -431
  13. package/dist/assets/templates/agents/maxsim-integration-checker.md +51 -319
  14. package/dist/assets/templates/agents/maxsim-phase-researcher.md +63 -429
  15. package/dist/assets/templates/agents/maxsim-plan-checker.md +79 -568
  16. package/dist/assets/templates/agents/maxsim-planner.md +125 -855
  17. package/dist/assets/templates/agents/maxsim-project-researcher.md +32 -472
  18. package/dist/assets/templates/agents/maxsim-research-synthesizer.md +25 -134
  19. package/dist/assets/templates/agents/maxsim-roadmapper.md +66 -480
  20. package/dist/assets/templates/agents/maxsim-spec-reviewer.md +13 -55
  21. package/dist/assets/templates/agents/maxsim-verifier.md +95 -450
  22. package/dist/assets/templates/commands/maxsim/artefakte.md +122 -0
  23. package/dist/assets/templates/commands/maxsim/batch.md +42 -0
  24. package/dist/assets/templates/commands/maxsim/check-todos.md +1 -0
  25. package/dist/assets/templates/commands/maxsim/sdd.md +39 -0
  26. package/dist/assets/templates/references/thinking-partner.md +33 -0
  27. package/dist/assets/templates/workflows/batch.md +420 -0
  28. package/dist/assets/templates/workflows/check-todos.md +85 -1
  29. package/dist/assets/templates/workflows/discuss-phase.md +31 -0
  30. package/dist/assets/templates/workflows/execute-plan.md +96 -27
  31. package/dist/assets/templates/workflows/help.md +47 -0
  32. package/dist/assets/templates/workflows/sdd.md +426 -0
  33. package/dist/backend-server.cjs +174 -51
  34. package/dist/backend-server.cjs.map +1 -1
  35. package/dist/cli.cjs +310 -146
  36. package/dist/cli.cjs.map +1 -1
  37. package/dist/cli.js +5 -5
  38. package/dist/cli.js.map +1 -1
  39. package/dist/core/artefakte.d.ts.map +1 -1
  40. package/dist/core/artefakte.js +16 -0
  41. package/dist/core/artefakte.js.map +1 -1
  42. package/dist/core/context-loader.d.ts +1 -0
  43. package/dist/core/context-loader.d.ts.map +1 -1
  44. package/dist/core/context-loader.js +58 -0
  45. package/dist/core/context-loader.js.map +1 -1
  46. package/dist/core/core.d.ts +6 -0
  47. package/dist/core/core.d.ts.map +1 -1
  48. package/dist/core/core.js +238 -0
  49. package/dist/core/core.js.map +1 -1
  50. package/dist/core/index.d.ts +1 -1
  51. package/dist/core/index.d.ts.map +1 -1
  52. package/dist/core/index.js +5 -3
  53. package/dist/core/index.js.map +1 -1
  54. package/dist/core/phase.d.ts +11 -11
  55. package/dist/core/phase.d.ts.map +1 -1
  56. package/dist/core/phase.js +88 -73
  57. package/dist/core/phase.js.map +1 -1
  58. package/dist/core/roadmap.d.ts +2 -2
  59. package/dist/core/roadmap.d.ts.map +1 -1
  60. package/dist/core/roadmap.js +11 -10
  61. package/dist/core/roadmap.js.map +1 -1
  62. package/dist/core/state.d.ts +11 -11
  63. package/dist/core/state.d.ts.map +1 -1
  64. package/dist/core/state.js +60 -54
  65. package/dist/core/state.js.map +1 -1
  66. package/dist/core-RRjCSt0G.cjs.map +1 -1
  67. package/dist/{lifecycle-D4E9yP6E.cjs → lifecycle-0M4VqOMm.cjs} +2 -2
  68. package/dist/{lifecycle-D4E9yP6E.cjs.map → lifecycle-0M4VqOMm.cjs.map} +1 -1
  69. package/dist/mcp/context-tools.d.ts.map +1 -1
  70. package/dist/mcp/context-tools.js +7 -3
  71. package/dist/mcp/context-tools.js.map +1 -1
  72. package/dist/mcp/phase-tools.js +3 -3
  73. package/dist/mcp/phase-tools.js.map +1 -1
  74. package/dist/mcp-server.cjs +163 -40
  75. package/dist/mcp-server.cjs.map +1 -1
  76. package/dist/{server-pvY2WbKj.cjs → server-G1MIg_Oe.cjs} +7 -7
  77. package/dist/server-G1MIg_Oe.cjs.map +1 -0
  78. package/package.json +1 -1
  79. package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +0 -32
  80. package/dist/server-pvY2WbKj.cjs.map +0 -1
@@ -10,8 +10,8 @@
10
10
  href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800;900&family=Geist+Mono:wght@400;500;600;700&display=swap"
11
11
  rel="stylesheet"
12
12
  />
13
- <script type="module" crossorigin src="/assets/index-C_eAetZJ.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-CmiJKqOU.css">
13
+ <script type="module" crossorigin src="/assets/index-nAXJLp0_.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-C199D4Eb.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="root"></div>
@@ -32133,7 +32133,7 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32133
32133
  */
32134
32134
  var debug = require_src$3()("express:view");
32135
32135
  var path$19 = require("path");
32136
- var fs$23 = require("fs");
32136
+ var fs$20 = require("fs");
32137
32137
  /**
32138
32138
  * Module variables.
32139
32139
  * @private
@@ -32239,7 +32239,7 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32239
32239
  function tryStat(path$73) {
32240
32240
  debug("stat \"%s\"", path$73);
32241
32241
  try {
32242
- return fs$23.statSync(path$73);
32242
+ return fs$20.statSync(path$73);
32243
32243
  } catch (e) {
32244
32244
  return;
32245
32245
  }
@@ -34460,7 +34460,7 @@ var require_types$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34460
34460
  //#region ../../node_modules/send/node_modules/mime/mime.js
34461
34461
  var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34462
34462
  require("path");
34463
- var fs$22 = require("fs");
34463
+ var fs$19 = require("fs");
34464
34464
  function Mime() {
34465
34465
  this.types = Object.create(null);
34466
34466
  this.extensions = Object.create(null);
@@ -34495,7 +34495,7 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34495
34495
  Mime.prototype.load = function(file) {
34496
34496
  this._loading = file;
34497
34497
  var map = {};
34498
- fs$22.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) {
34498
+ fs$19.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) {
34499
34499
  var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/);
34500
34500
  map[fields.shift()] = fields;
34501
34501
  });
@@ -34774,7 +34774,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34774
34774
  var escapeHtml = require_escape_html();
34775
34775
  var etag = require_etag();
34776
34776
  var fresh = require_fresh();
34777
- var fs$21 = require("fs");
34777
+ var fs$18 = require("fs");
34778
34778
  var mime = require_mime();
34779
34779
  var ms = require_ms();
34780
34780
  var onFinished = require_on_finished();
@@ -35239,7 +35239,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35239
35239
  var i = 0;
35240
35240
  var self = this;
35241
35241
  debug("stat \"%s\"", path$64);
35242
- fs$21.stat(path$64, function onstat(err, stat) {
35242
+ fs$18.stat(path$64, function onstat(err, stat) {
35243
35243
  if (err && err.code === "ENOENT" && !extname(path$64) && path$64[path$64.length - 1] !== sep) return next(err);
35244
35244
  if (err) return self.onStatError(err);
35245
35245
  if (stat.isDirectory()) return self.redirect(path$64);
@@ -35250,7 +35250,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35250
35250
  if (self._extensions.length <= i) return err ? self.onStatError(err) : self.error(404);
35251
35251
  var p = path$64 + "." + self._extensions[i++];
35252
35252
  debug("stat \"%s\"", p);
35253
- fs$21.stat(p, function(err, stat) {
35253
+ fs$18.stat(p, function(err, stat) {
35254
35254
  if (err) return next(err);
35255
35255
  if (stat.isDirectory()) return next();
35256
35256
  self.emit("file", p, stat);
@@ -35274,7 +35274,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35274
35274
  }
35275
35275
  var p = join(path$65, self._index[i]);
35276
35276
  debug("stat \"%s\"", p);
35277
- fs$21.stat(p, function(err, stat) {
35277
+ fs$18.stat(p, function(err, stat) {
35278
35278
  if (err) return next(err);
35279
35279
  if (stat.isDirectory()) return next();
35280
35280
  self.emit("file", p, stat);
@@ -35293,7 +35293,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35293
35293
  SendStream.prototype.stream = function stream(path$66, options) {
35294
35294
  var self = this;
35295
35295
  var res = this.res;
35296
- var stream$5 = fs$21.createReadStream(path$66, options);
35296
+ var stream$5 = fs$18.createReadStream(path$66, options);
35297
35297
  this.emit("stream", stream$5);
35298
35298
  stream$5.pipe(res);
35299
35299
  function cleanup() {
@@ -65205,7 +65205,7 @@ var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65205
65205
  //#endregion
65206
65206
  //#region ../../node_modules/supports-color/index.js
65207
65207
  var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => {
65208
- const os$4 = require("os");
65208
+ const os$5 = require("os");
65209
65209
  const tty$1 = require("tty");
65210
65210
  const hasFlag = require_has_flag();
65211
65211
  const { env } = process;
@@ -65232,7 +65232,7 @@ var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) =>
65232
65232
  const min = forceColor || 0;
65233
65233
  if (env.TERM === "dumb") return min;
65234
65234
  if (process.platform === "win32") {
65235
- const osRelease = os$4.release().split(".");
65235
+ const osRelease = os$5.release().split(".");
65236
65236
  if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
65237
65237
  return 1;
65238
65238
  }
@@ -78476,6 +78476,21 @@ app.get("/api/server-info", (_req, res) => {
78476
78476
  projectCwd
78477
78477
  });
78478
78478
  });
78479
+ app.get("/api/dashboards", async (_req, res) => {
78480
+ try {
78481
+ const dashboards = (await listRunningDashboards()).map((d) => ({
78482
+ port: d.port,
78483
+ cwd: d.cwd,
78484
+ projectName: node_path.basename(d.cwd),
78485
+ uptime: d.uptime,
78486
+ isCurrent: d.port === resolvedPort
78487
+ }));
78488
+ return res.json({ dashboards });
78489
+ } catch (err) {
78490
+ log("ERROR", "api", "Failed to list dashboards:", err);
78491
+ return res.status(500).json({ error: "Failed to list running dashboards" });
78492
+ }
78493
+ });
78479
78494
  let shutdownFn = null;
78480
78495
  app.post("/api/shutdown", (_req, res) => {
78481
78496
  res.json({ shutdown: true });
@@ -1,76 +1,32 @@
1
1
  # AGENTS.md — Agent-Skill Registry
2
2
 
3
- This file maps MAXSIM agents to the skills they should auto-load and enforce during execution.
4
-
5
- ## How This Registry Works
6
-
7
- When a MAXSIM agent is spawned, it checks this registry to determine which skills apply. Skills are behavioral rules that constrain agent actions — they are not optional guidelines.
8
-
9
- Agents load skills by reading `SKILL.md` from each skill directory listed in their entry below. Skills are loaded once at agent startup and enforced throughout the session.
3
+ Maps MAXSIM agents to the skills they auto-load and enforce during execution. Skills are behavioral rules loaded once at agent startup from `SKILL.md` in each skill directory.
10
4
 
11
5
  ### Auto-Trigger Skills
12
6
 
13
- Skills with `alwaysApply: true` in their frontmatter are loaded automatically at the start of every conversation, without requiring an explicit command or agent spawn. This ensures foundational workflow rules are always active.
7
+ Skills with `alwaysApply: true` load automatically at conversation start:
14
8
 
15
9
  | Skill | Purpose |
16
10
  |-------|---------|
17
- | `using-maxsim` | Routes all work through MAXSIM commands — prevents ad-hoc coding without plans |
11
+ | `using-maxsim` | Routes all work through MAXSIM commands |
18
12
 
19
13
  ## Registry
20
14
 
21
- ### maxsim-executor
22
-
23
- **Skills:** `tdd`, `verification-before-completion`, `using-maxsim`
24
-
25
- The executor implements plan tasks. TDD ensures tests are written before code. Verification ensures completion claims have evidence. Using-maxsim ensures work stays within the plan structure.
26
-
27
- ### maxsim-debugger
28
-
29
- **Skills:** `systematic-debugging`, `verification-before-completion`
30
-
31
- The debugger investigates bugs. Systematic-debugging enforces the reproduce-hypothesize-isolate-verify-fix cycle. Verification ensures the fix is confirmed with evidence before claiming resolution.
32
-
33
- ### maxsim-verifier
34
-
35
- **Skills:** `verification-before-completion`
36
-
37
- The verifier checks phase goal achievement. Verification-before-completion is its core purpose — every claim must have fresh evidence.
38
-
39
- ### maxsim-planner
40
-
41
- **Skills:** `using-maxsim`
42
-
43
- The planner creates PLAN.md files. Using-maxsim ensures plans reference the correct workflow structure and available skills.
44
-
45
- ### maxsim-code-reviewer
46
-
47
- **Skills:** `verification-before-completion`
48
-
49
- The code reviewer checks implementation quality. Verification ensures review findings are backed by evidence from the codebase, not assumptions.
50
-
51
- ### maxsim-roadmapper
52
-
53
- **Skills:** `using-maxsim`
54
-
55
- The roadmapper creates project roadmaps. Using-maxsim ensures roadmaps align with the MAXSIM phase structure.
56
-
57
- ### maxsim-phase-researcher
58
-
59
- **Skills:** `memory-management`
60
-
61
- The phase researcher gathers context for planning. Memory-management ensures valuable research findings are persisted for future sessions.
62
-
63
- ### maxsim-project-researcher
64
-
65
- **Skills:** `memory-management`
66
-
67
- The project researcher analyzes project structure during init. Memory-management ensures architectural patterns and conventions are saved.
68
-
69
- ### maxsim-integration-checker
70
-
71
- **Skills:** `verification-before-completion`
72
-
73
- The integration checker validates cross-component wiring. Verification ensures integration claims are tested, not assumed.
15
+ | Agent | Skills | Role |
16
+ |-------|--------|------|
17
+ | `maxsim-executor` | `tdd`, `verification-before-completion`, `using-maxsim` | Implements plan tasks with TDD and verified completion |
18
+ | `maxsim-debugger` | `systematic-debugging`, `verification-before-completion` | Investigates bugs via reproduce-hypothesize-isolate-verify-fix cycle |
19
+ | `maxsim-verifier` | `verification-before-completion` | Checks phase goal achievement with fresh evidence |
20
+ | `maxsim-planner` | `using-maxsim` | Creates executable PLAN.md files for phases |
21
+ | `maxsim-plan-checker` | `verification-before-completion` | Verifies plans achieve phase goal before execution |
22
+ | `maxsim-code-reviewer` | `verification-before-completion` | Reviews implementation for code quality with evidence |
23
+ | `maxsim-spec-reviewer` | `verification-before-completion` | Reviews implementation for spec compliance |
24
+ | `maxsim-roadmapper` | `using-maxsim` | Creates project roadmaps with phase breakdown and requirement mapping |
25
+ | `maxsim-phase-researcher` | `memory-management` | Researches phase implementation domain for planning context |
26
+ | `maxsim-project-researcher` | `memory-management` | Researches project domain ecosystem during init |
27
+ | `maxsim-research-synthesizer` | `memory-management` | Synthesizes parallel research outputs into unified findings |
28
+ | `maxsim-codebase-mapper` | `memory-management` | Maps codebase structure, patterns, and conventions |
29
+ | `maxsim-integration-checker` | `verification-before-completion` | Validates cross-component integration with tested evidence |
74
30
 
75
31
  ## Skill Reference
76
32
 
@@ -85,10 +41,3 @@ The integration checker validates cross-component wiring. Verification ensures i
85
41
  | `roadmap-writing` | `skills/roadmap-writing/` | Phased planning with success criteria |
86
42
  | `simplify` | `skills/simplify/` | Code simplification and cleanup |
87
43
  | `code-review` | `skills/code-review/` | Implementation quality review |
88
-
89
- ## Adding New Skills
90
-
91
- 1. Create a directory under `skills/` with a `SKILL.md` file
92
- 2. Follow the existing skill format (frontmatter + Iron Law + Gate Function + Red Flags)
93
- 3. Add the skill to the relevant agent entries in this registry
94
- 4. Add the skill to the reference table above
@@ -8,106 +8,62 @@ color: purple
8
8
  <role>
9
9
  You are a MAXSIM code-quality reviewer. Spawned by the executor AFTER the spec-compliance reviewer passes. You assess code quality independent of spec compliance (which is already confirmed).
10
10
 
11
- Your job: Review every modified file for correctness, conventions, error handling, security, and maintainability. You are a senior developer doing a thorough code review.
11
+ Review every modified file for correctness, conventions, error handling, security, and maintainability. You are a senior developer doing a thorough code review.
12
12
 
13
- You are NOT checking spec compliance that was already done by the spec-reviewer. You are checking whether the code is well-written, safe, and maintainable.
14
-
15
- **You receive all context inline from the executor.** The executor passes the file list and relevant context directly in your prompt. Read CLAUDE.md for project conventions.
13
+ **You receive all context inline from the executor.** Read CLAUDE.md for project conventions.
16
14
  </role>
17
15
 
18
- <core_principle>
19
- Code quality means:
20
- - The code is correct (no logic bugs, no edge case failures)
21
- - The code follows project conventions (from CLAUDE.md)
22
- - The code handles errors gracefully
23
- - The code has no security vulnerabilities
24
- - The code is maintainable (clear naming, reasonable size, no magic values)
25
-
26
- You are evaluating code a senior developer would be proud to ship — not just code that passes tests.
27
- </core_principle>
28
-
29
16
  <review_dimensions>
30
17
 
31
- Review each modified file against these 5 dimensions, in order:
18
+ Review each modified file against these 5 dimensions:
32
19
 
33
20
  ## 1. Correctness
34
-
35
- - Logic bugs (wrong comparisons, off-by-one, inverted conditions)
36
- - Missing null/undefined checks
37
- - Race conditions in async code
38
- - Incorrect error propagation
39
- - Type mismatches or unsafe casts
21
+ Logic bugs, missing null/undefined checks, race conditions in async code, incorrect error propagation, type mismatches or unsafe casts.
40
22
 
41
23
  ## 2. Conventions
42
-
43
- - Read CLAUDE.md for project-specific conventions
44
- - Consistent naming (variables, functions, files)
45
- - Consistent patterns with existing codebase
46
- - Import ordering and module structure
47
- - Comment style and documentation
24
+ Read CLAUDE.md for project-specific conventions. Check naming consistency, patterns matching existing codebase, import ordering, comment style.
48
25
 
49
26
  ## 3. Error Handling
50
-
51
- - Try/catch where async operations can fail
52
- - Meaningful error messages (not generic "Something went wrong")
53
- - Graceful degradation (app does not crash on recoverable errors)
54
- - Error boundaries where applicable
55
- - Proper error propagation (not swallowed silently)
27
+ Try/catch around async operations, meaningful error messages, graceful degradation, proper propagation (not swallowed silently).
56
28
 
57
29
  ## 4. Security
58
-
59
- - No hardcoded secrets, API keys, or credentials
60
- - No SQL/NoSQL injection vectors
61
- - No path traversal vulnerabilities
62
- - No unsafe eval, Function(), or dynamic code execution
63
- - No XSS vectors in user-facing output
64
- - Proper input validation and sanitization
30
+ No hardcoded secrets/keys, no injection vectors (SQL/NoSQL/XSS), no path traversal, no unsafe eval/Function(), proper input validation.
65
31
 
66
32
  ## 5. Maintainability
67
-
68
- - Clear, descriptive naming (no single-letter variables outside loops)
69
- - Reasonable function/method size (under ~50 lines)
70
- - No magic numbers or strings (use named constants)
71
- - No dead code, commented-out blocks, or unused imports
72
- - DRY — no duplicated logic that should be extracted
33
+ Clear naming, reasonable function size (<50 lines), named constants (no magic numbers), no dead code or unused imports, DRY.
73
34
 
74
35
  </review_dimensions>
75
36
 
76
37
  <review_process>
77
38
 
39
+ **HARD-GATE: NO PASS VERDICT WITHOUT READING EVERY MODIFIED FILE IN FULL.**
40
+
78
41
  ## Step 1: Load Project Conventions
79
42
 
80
43
  ```bash
81
44
  cat CLAUDE.md 2>/dev/null
82
45
  ```
83
46
 
84
- Note project-specific conventions, patterns, and requirements.
85
-
86
47
  ## Step 2: Read Each Modified File
87
48
 
88
- For each file the executor lists as modified in this wave:
49
+ For each file the executor lists as modified:
89
50
  1. Read the ENTIRE file using the Read tool
90
- 2. Assess all 5 dimensions above
91
- 3. Record any issues found with severity
51
+ 2. Assess all 5 dimensions
52
+ 3. Record issues with severity
92
53
 
93
54
  ## Step 3: Classify Issues
94
55
 
95
- For each issue found, assign severity:
96
-
97
- - **CRITICAL:** Must fix before merge. Logic bugs, security vulnerabilities, data loss risks, crashes.
98
- - **WARNING:** Should fix. Poor error handling, convention violations, potential edge case failures.
99
- - **NOTE:** Consider for improvement. Style preferences, minor naming issues, optimization opportunities.
56
+ - **CRITICAL:** Must fix. Logic bugs, security vulnerabilities, data loss risks, crashes.
57
+ - **WARNING:** Should fix. Poor error handling, convention violations, potential edge cases.
58
+ - **NOTE:** Consider improving. Style preferences, minor naming issues, optimizations.
100
59
 
101
60
  ## Step 4: Produce Verdict
102
61
 
103
- Compile findings into the structured verdict format below.
104
-
105
62
  </review_process>
106
63
 
107
64
  <verdict_format>
108
65
  Return this exact structure:
109
66
 
110
- ```markdown
111
67
  ## CODE REVIEW: PASS | FAIL
112
68
 
113
69
  ### Issues
@@ -124,46 +80,15 @@ Return this exact structure:
124
80
  - Warning: N
125
81
  - Note: N
126
82
 
127
- PASS if 0 critical issues. FAIL if any critical issues.
128
- Warnings and notes are advisory — they do not block.
129
- ```
130
-
131
83
  **Verdict rules:**
132
84
  - PASS: Zero CRITICAL issues. Warnings and notes are logged but do not block.
133
- - FAIL: One or more CRITICAL issues exist. List each with actionable fix suggestion.
85
+ - FAIL: One or more CRITICAL issues. List each with actionable fix suggestion.
134
86
  </verdict_format>
135
87
 
136
- <anti_rationalization>
137
-
138
- <HARD-GATE>
139
- NO PASS VERDICT WITHOUT READING EVERY MODIFIED FILE IN FULL.
140
- Scanning is not reading. Spot-checking is not reviewing.
141
- </HARD-GATE>
142
-
143
- **Common Rationalizations to Resist:**
144
-
145
- | Rationalization | Why It's Wrong | What to Do Instead |
146
- |----------------|---------------|-------------------|
147
- | "The spec reviewer already checked" | Spec review checks compliance, not quality | Quality is a separate concern — review fully |
148
- | "It's just markdown/config" | Config errors cause runtime failures | Read config files with same rigor as code |
149
- | "The tests pass so it must be fine" | Tests verify behavior, not quality | Passing tests can still have security holes |
150
- | "This is a small change" | Small changes can introduce critical bugs | Every line deserves review |
151
- | "I'll flag it next time" | Next time never comes — flag it now | Document the issue with severity and suggestion |
152
-
153
- **Red Flags — You Are About To Fail Your Review:**
154
- - Skipping files because they "look simple"
155
- - Issuing PASS without reading ALL modified files in full
156
- - Confusing spec compliance with code quality
157
- - Writing zero issues (every nontrivial change has at least a NOTE)
158
- - Not checking CLAUDE.md for project conventions
159
-
160
- </anti_rationalization>
161
-
162
88
  <success_criteria>
163
89
  - [ ] CLAUDE.md read for project conventions
164
90
  - [ ] Every modified file read in FULL (not scanned)
165
91
  - [ ] All 5 review dimensions assessed per file
166
92
  - [ ] Every issue has severity, file, line, and actionable suggestion
167
93
  - [ ] Verdict is PASS only if zero CRITICAL issues
168
- - [ ] No file skipped regardless of perceived simplicity
169
94
  </success_criteria>