@mrciphersmith/keryx 0.2.70 → 0.2.71
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.
- package/dist/cli.js +10357 -4676
- package/docs/README.md +54 -0
- package/docs/requirements/shared-agent-context/README.md +104 -0
- package/package.json +3 -2
- package/src/gdskills/bundled/rules/core/model-selection.mdc +184 -31
- package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +36 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +78 -19
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +28 -3
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +28 -3
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +28 -3
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +28 -3
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +28 -3
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +20 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +20 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +21 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +20 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +20 -2
- package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +3 -1
- package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/planner/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/push/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +2 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +1 -1
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +37 -10
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +48 -14
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +49 -12
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +34 -2
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +33 -2
- package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +70 -29
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +34 -3
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +49 -15
- package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +39 -11
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +590 -21
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-finding.schema.json +7 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/verification-claim.schema.json +78 -0
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +43 -13
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +8 -2
- package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +185 -0
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +44 -13
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +26 -6
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +35 -3
- package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +276 -0
- package/src/gdskills/contracts/review-finding.schema.json +119 -1
- package/src/gdskills/contracts/subagent-dispatch.schema.json +59 -3
- package/src/gdskills/bundled/skills/review/review-strict/SKILL.md +0 -328
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-frontend-conventions
|
|
3
|
+
model_tier: standard
|
|
3
4
|
description: |
|
|
4
5
|
Use when reviewing frontend code against repository-local conventions commonly
|
|
5
6
|
captured in CLAUDE.md or similar project guides: React/MobX boundaries,
|
|
@@ -11,6 +12,7 @@ metadata:
|
|
|
11
12
|
author: "MrCipherSmith"
|
|
12
13
|
version: "1.0.0"
|
|
13
14
|
category: "review"
|
|
15
|
+
stack_requires: "react,mobx"
|
|
14
16
|
license: "MIT"
|
|
15
17
|
---
|
|
16
18
|
|
|
@@ -95,6 +97,27 @@ project-specific guide was found.
|
|
|
95
97
|
|
|
96
98
|
---
|
|
97
99
|
|
|
100
|
+
## Iron Laws
|
|
101
|
+
|
|
102
|
+
### Shared laws (every reviewer)
|
|
103
|
+
|
|
104
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
105
|
+
name the input, call, or condition that reaches the code, you have an
|
|
106
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
107
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
108
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
109
|
+
pattern because it is often wrong elsewhere.
|
|
110
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
111
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
112
|
+
finding hide the other nine problems.
|
|
113
|
+
|
|
114
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
115
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
116
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
117
|
+
boundary is the trigger-and-outcome test.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
98
121
|
## Orchestrated Review Contract
|
|
99
122
|
|
|
100
123
|
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/review-orchestrator/reviewer-finding.schema.json`, then a concise markdown summary. Keep findings evidence-based, include concrete `suggested_fix` for every blocker/major, and return `NEEDS_CONTEXT` instead of guessing when required context is missing.
|
|
@@ -138,7 +161,15 @@ observation is theatre, not rigour.
|
|
|
138
161
|
- **Fix**: concrete project-aligned change
|
|
139
162
|
```
|
|
140
163
|
|
|
141
|
-
Severity
|
|
142
|
-
|
|
143
|
-
|
|
164
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
165
|
+
This reviewer keeps no rubric of its own; what follows is where its recurring
|
|
166
|
+
conditions land under that rubric.
|
|
167
|
+
|
|
168
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| Unguarded direct storage writes that can throw on quota | `blocker` | Crash on a reachable input |
|
|
171
|
+
| Lost reactivity; masked translation or error behaviour | `major` | Named trigger and named outcome. Identical to `review-frontend`'s rating for lost reactivity, deliberately |
|
|
172
|
+
| A convention violation the linter or CI already fails on | `minor` | The machine catches it; a reviewer restating it is not a merge gate |
|
|
173
|
+
| Naming, story coverage, file placement | `minor` | Correct today; the cost is to the next editor |
|
|
174
|
+
| A convention preference with no named consequence | `info` | Shared laws 1 and 2 |
|
|
144
175
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-highload
|
|
3
|
+
model_tier: deep
|
|
3
4
|
description: |
|
|
4
5
|
Use when: reviewing code that will run under high concurrency or high traffic —
|
|
5
6
|
race conditions, connection pool exhaustion, cache invalidation, missing indexes,
|
|
@@ -10,7 +11,6 @@ description: |
|
|
|
10
11
|
NOT for: frontend re-render performance (review-performance), general N+1 queries
|
|
11
12
|
(review-performance), clean code style (review-clean-code), or NestJS module structure
|
|
12
13
|
(review-architecture).
|
|
13
|
-
version: "1.0.0"
|
|
14
14
|
triggers:
|
|
15
15
|
- "review highload"
|
|
16
16
|
- "review scalability"
|
|
@@ -23,8 +23,8 @@ metadata:
|
|
|
23
23
|
author: "MrCipherSmith"
|
|
24
24
|
version: "1.0.0"
|
|
25
25
|
category: "review"
|
|
26
|
+
compatible_harnesses: "cursor,codex,zed,opencode,claude"
|
|
26
27
|
license: "MIT"
|
|
27
|
-
compatibility: "cursor,codex,zed,opencode,claude"
|
|
28
28
|
---
|
|
29
29
|
|
|
30
30
|
# Review: High-Load & Scalability
|
|
@@ -86,11 +86,38 @@ Pre-existing problems in unchanged lines are out of scope unless the diff makes
|
|
|
86
86
|
|
|
87
87
|
## Iron Laws
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
### Shared laws (every reviewer)
|
|
90
|
+
|
|
91
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
92
|
+
name the input, call, or condition that reaches the code, you have an
|
|
93
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
94
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
95
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
96
|
+
pattern because it is often wrong elsewhere.
|
|
97
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
98
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
99
|
+
finding hide the other nine problems.
|
|
100
|
+
|
|
101
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
102
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
103
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
104
|
+
boundary is the trigger-and-outcome test.
|
|
105
|
+
|
|
106
|
+
### High-load laws
|
|
107
|
+
|
|
108
|
+
1. **Every finding states its failure mode: what breaks, and at what load.** "OOM
|
|
109
|
+
at ~1k RPS", "pool exhausted at 500 concurrent users", "duplicate charge on the
|
|
110
|
+
first retry". This is what shared law 1 asks of a load finding — a load level
|
|
111
|
+
is the trigger.
|
|
112
|
+
2. **A race condition on shared mutable state is never dismissed as unlikely.**
|
|
113
|
+
"It probably won't happen in practice" is not an argument; races manifest
|
|
114
|
+
unpredictably under load. Its *severity* still comes from its outcome — see the
|
|
115
|
+
conditions table below — but it is never dropped for improbability.
|
|
116
|
+
3. **An unbounded resource that grows with request rate is never `minor`.**
|
|
117
|
+
Connections, threads, queues, in-memory collections: under load it exhausts.
|
|
118
|
+
4. **Architecture opinions without a named pattern violation and a load-related
|
|
119
|
+
failure mode are `info` only.** State the failure mode, not just that "it could
|
|
120
|
+
be better".
|
|
94
121
|
|
|
95
122
|
---
|
|
96
123
|
|
|
@@ -423,14 +450,21 @@ observation is theatre, not rigour.
|
|
|
423
450
|
|
|
424
451
|
The **Failure mode** line is mandatory for this reviewer — every finding must state the load-related consequence (OOM at 1k RPS, connection exhaustion at 500 concurrent users, duplicate charges on retry, etc.).
|
|
425
452
|
|
|
426
|
-
Severity
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
|
431
|
-
|
|
432
|
-
| `
|
|
433
|
-
| `
|
|
453
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
454
|
+
This reviewer keeps no table of its own; what follows is where its recurring
|
|
455
|
+
conditions land under that rubric, not a second rubric.
|
|
456
|
+
|
|
457
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
458
|
+
|---|---|---|
|
|
459
|
+
| Race condition on shared mutable state | `blocker` **if** the interleaving can corrupt or lose data; otherwise `major` | Same wording as `review-logic`, deliberately: the outcome decides, not the word "race" |
|
|
460
|
+
| Non-idempotent retry of an operation with side effects | `blocker` | A retried write duplicates or corrupts persisted state |
|
|
461
|
+
| Unbounded in-memory queue or collection growing with request rate | `blocker` | OOM is a crash; state the rate that reaches it |
|
|
462
|
+
| Distributed cron or job with no lock | `blocker` | Concurrent runs duplicate side effects |
|
|
463
|
+
| Transaction held open across external I/O | `blocker` | Pool exhaustion takes the service down |
|
|
464
|
+
| Blocking I/O on a thread or fiber shared with the event loop | `major` | Named trigger: a request served on that thread. Named outcome: every concurrent request on it stalls behind the one slow call. Restored — the per-reviewer rubric that carried this floor was deleted and the conditions table did not pick it up, leaving the skill's own description advertising hot-path blocking I/O with no rule assigning it a severity |
|
|
465
|
+
| Connection without a pool; unbounded `Promise.all`; missing retry timeout or backoff; cache stampede on a hot key; N+1 on a hot path; long transaction; missing DLQ | `major` | Named trigger (a load level) and named outcome, but the outcome is degradation, not one of the four shapes |
|
|
466
|
+
| Backoff without jitter; TTL misconfigured; per-request allocation on a hot path; full-row fetch for one field | `minor` | Correct under load; the cost is to whoever tunes it next |
|
|
467
|
+
| Architectural note with no failure mode at a stated load | `info` | Shared law 1 |
|
|
434
468
|
|
|
435
469
|
---
|
|
436
470
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-logic
|
|
3
|
+
model_tier: standard
|
|
3
4
|
description: |
|
|
4
5
|
Use when: reviewing code for logic correctness, algorithmic bugs, missing error handling,
|
|
5
6
|
async/await mistakes, null/undefined risks, race conditions, type contract violations,
|
|
@@ -7,7 +8,6 @@ description: |
|
|
|
7
8
|
Also invoked directly: "review logic", "check correctness", "are there any bugs here".
|
|
8
9
|
NOT for: security vulnerabilities, performance profiling, style/naming preferences,
|
|
9
10
|
or architectural pattern concerns — those belong in their respective specialized reviewers.
|
|
10
|
-
version: "1.0.0"
|
|
11
11
|
triggers:
|
|
12
12
|
- "review logic"
|
|
13
13
|
- "check correctness"
|
|
@@ -19,8 +19,8 @@ metadata:
|
|
|
19
19
|
author: "MrCipherSmith"
|
|
20
20
|
version: "1.0.0"
|
|
21
21
|
category: "review"
|
|
22
|
+
compatible_harnesses: "cursor,codex,zed,opencode,claude"
|
|
22
23
|
license: "MIT"
|
|
23
|
-
compatibility: "cursor,codex,zed,opencode,claude"
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
# Review Logic
|
|
@@ -220,16 +220,44 @@ observation is theatre, not rigour.
|
|
|
220
220
|
```
|
|
221
221
|
```
|
|
222
222
|
|
|
223
|
-
Severity
|
|
223
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
224
|
+
This reviewer keeps no table of its own; what follows is where its recurring
|
|
225
|
+
conditions land under that rubric, not a second rubric.
|
|
226
|
+
|
|
227
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
228
|
+
|---|---|---|
|
|
229
|
+
| Unhandled promise rejection reaching the process | `blocker` | Crash |
|
|
230
|
+
| Corrupted or lost persisted/returned data | `blocker` | Data loss or corruption |
|
|
231
|
+
| Unimplemented acceptance criterion | `blocker` | Named shape 4 |
|
|
232
|
+
| Race condition on shared mutable state | `blocker` **if** the interleaving can corrupt or lose data; otherwise `major` | The outcome decides, not the word "race" |
|
|
233
|
+
| Silent wrong result on a named input | `major` | Trigger and outcome are both named |
|
|
234
|
+
| Swallowed error that hides a failed operation | `major` — `blocker` only if the caller then persists or returns wrong data | Silent failure is wrong behaviour; corruption is a different shape |
|
|
235
|
+
| Type contract broken (declared type is not what is returned) | `major` | Callers observe the wrong value |
|
|
236
|
+
| Edge case not handled, no input that reaches it named | `minor` | No trigger; the cost is to the next editor |
|
|
237
|
+
| Non-null assertion without a comment | `minor` | Behaves correctly today; the cost is to the reader |
|
|
238
|
+
| "Could be more defensive", no observable defect | `info` | Neither trigger nor maintenance cost named |
|
|
239
|
+
|
|
240
|
+
## Iron Laws
|
|
241
|
+
|
|
242
|
+
### Shared laws (every reviewer)
|
|
243
|
+
|
|
244
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
245
|
+
name the input, call, or condition that reaches the code, you have an
|
|
246
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
247
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
248
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
249
|
+
pattern because it is often wrong elsewhere.
|
|
250
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
251
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
252
|
+
finding hide the other nine problems.
|
|
253
|
+
|
|
254
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
255
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
256
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
257
|
+
boundary is the trigger-and-outcome test.
|
|
258
|
+
|
|
259
|
+
### Logic laws
|
|
224
260
|
|
|
225
|
-
| Severity | When to use |
|
|
226
|
-
|----------|------------|
|
|
227
|
-
| `blocker` | Crash, data corruption, unimplemented acceptance criterion, unhandled promise rejection in critical path |
|
|
228
|
-
| `major` | Silent wrong result, race condition, swallowed error, type contract broken |
|
|
229
|
-
| `minor` | Edge case not handled but unlikely in practice, non-null assertion without comment |
|
|
230
|
-
| `info` | Suggestion to make code more defensive, no current observable defect |
|
|
231
|
-
|
|
232
|
-
Iron laws:
|
|
233
261
|
- Every `blocker` MUST include a concrete reproduction scenario or a spec reference.
|
|
234
262
|
- NEVER flag a style preference (naming, formatting) as a logic bug.
|
|
235
263
|
- If in doubt between `major` and `blocker`, use `major` — overstating severity loses credibility.
|