@mrciphersmith/keryx 0.2.69 → 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 +11136 -4863
- package/docs/README.md +54 -0
- package/docs/requirements/shared-agent-context/README.md +104 -0
- package/package.json +3 -2
- package/src/gdgraph/build-lang.test.ts +10 -3
- package/src/gdgraph/build.ts +54 -9
- package/src/gdgraph/import-kind.test.ts +205 -0
- package/src/gdgraph/query.ts +6 -1
- package/src/gdgraph/types.ts +34 -0
- 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/rules/core/subagent-status-protocol.md +27 -1
- 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 +159 -20
- 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 +22 -3
- 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 +659 -64
- 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-architecture
|
|
3
|
+
model_tier: deep
|
|
3
4
|
description: |
|
|
4
5
|
Use when: reviewing code for architectural violations — layer violations, dependency direction
|
|
5
6
|
mistakes, module boundary coupling, SOLID principle breaches, NestJS module/provider structure,
|
|
@@ -7,7 +8,6 @@ description: |
|
|
|
7
8
|
Triggered by: "review architecture", "check architecture", "architectural review",
|
|
8
9
|
or dispatched by review-orchestrator with --architecture or --backend.
|
|
9
10
|
NOT for: style/naming preferences, logic correctness bugs, or security vulnerabilities.
|
|
10
|
-
version: "1.0.0"
|
|
11
11
|
triggers:
|
|
12
12
|
- "review architecture"
|
|
13
13
|
- "check architecture"
|
|
@@ -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 Architecture
|
|
@@ -257,16 +257,43 @@ observation is theatre, not rigour.
|
|
|
257
257
|
```
|
|
258
258
|
```
|
|
259
259
|
|
|
260
|
-
Severity
|
|
260
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
261
|
+
This reviewer keeps no table of its own; what follows is where its recurring
|
|
262
|
+
conditions land under that rubric, not a second rubric.
|
|
261
263
|
|
|
262
|
-
| Severity |
|
|
263
|
-
|
|
264
|
-
|
|
|
265
|
-
|
|
|
266
|
-
| `
|
|
267
|
-
|
|
|
264
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
265
|
+
|---|---|---|
|
|
266
|
+
| Circular dependency that fails at runtime (an import resolves to `undefined` on a path the change reaches) | `blocker` | Crash |
|
|
267
|
+
| Module scope mismatch that produces wrong data across requests | `blocker` | Data corruption |
|
|
268
|
+
| Layer violation — API/IO call in a component, business logic in a controller, domain importing infrastructure | `major` | A named trigger and a named outcome, but structural: not a crash, data loss, vulnerability, or missing acceptance criterion. Identical to `review-frontend`'s rule for the same condition |
|
|
269
|
+
| Broken DIP; cross-module coupling with a named consequence | `major` | Same |
|
|
270
|
+
| SRP smell with a clear separation path; ISP violation; a component reading several raw observables instead of a computed | `minor` | The code is correct; the cost is to whoever restructures it next |
|
|
271
|
+
| Architectural opinion with no named violation | `info` | Shared laws 1 and 2 |
|
|
272
|
+
|
|
273
|
+
A circular import that resolves cleanly is not a `blocker` — it is `minor`, and
|
|
274
|
+
if the concern is purely readability it belongs to `review-style`.
|
|
275
|
+
|
|
276
|
+
## Iron Laws
|
|
277
|
+
|
|
278
|
+
### Shared laws (every reviewer)
|
|
279
|
+
|
|
280
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
281
|
+
name the input, call, or condition that reaches the code, you have an
|
|
282
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
283
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
284
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
285
|
+
pattern because it is often wrong elsewhere.
|
|
286
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
287
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
288
|
+
finding hide the other nine problems.
|
|
289
|
+
|
|
290
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
291
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
292
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
293
|
+
boundary is the trigger-and-outcome test.
|
|
294
|
+
|
|
295
|
+
### Architecture laws
|
|
268
296
|
|
|
269
|
-
Iron laws:
|
|
270
297
|
- Only flag actual violations found **in the diff**, not pre-existing issues untouched by the change.
|
|
271
298
|
- Every finding MUST cite a specific `file:line` from the diff.
|
|
272
299
|
- Architecture opinions without a clear, named violation (layer, SOLID principle, pattern misuse) are `info` only — never `blocker` or `major`.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-backend
|
|
3
|
+
model_tier: standard
|
|
3
4
|
description: |
|
|
4
5
|
Use when: reviewing NestJS backend changes — API design, service layer, DTO validation,
|
|
5
6
|
database patterns, and TypeScript correctness. Covers "review backend", "backend review",
|
|
@@ -7,7 +8,6 @@ description: |
|
|
|
7
8
|
NOT for: frontend patterns, MobX, React components, general security vulnerabilities
|
|
8
9
|
(use review-security-code for XSS/injection/auth-bypass), or performance profiling
|
|
9
10
|
(use review-performance).
|
|
10
|
-
version: "1.0.0"
|
|
11
11
|
triggers:
|
|
12
12
|
- "review backend"
|
|
13
13
|
- "backend review"
|
|
@@ -18,8 +18,9 @@ metadata:
|
|
|
18
18
|
author: "MrCipherSmith"
|
|
19
19
|
version: "1.0.0"
|
|
20
20
|
category: "review"
|
|
21
|
+
compatible_harnesses: "cursor,codex,zed,opencode,claude"
|
|
22
|
+
stack_requires: "nestjs,prisma"
|
|
21
23
|
license: "MIT"
|
|
22
|
-
compatibility: "cursor,codex,zed,opencode,claude"
|
|
23
24
|
---
|
|
24
25
|
|
|
25
26
|
# Review — Backend (NestJS / API / DB)
|
|
@@ -175,22 +176,55 @@ Only review files changed in scope. Do not comment on legacy code outside the di
|
|
|
175
176
|
- No `as any` or unsafe casts (`as unknown as T`) without a comment explaining why
|
|
176
177
|
- `@ts-ignore` / `@ts-expect-error` without explanation comment — flag as `minor`
|
|
177
178
|
|
|
179
|
+
**This is the one severity for this condition, repo-wide.** It was previously
|
|
180
|
+
`minor` here and `major` in `review-strict`, which is deleted. `minor` is what
|
|
181
|
+
the canonical rubric returns: a suppressed compiler error names no trigger and
|
|
182
|
+
no observable wrong outcome — the code does exactly what it did before the
|
|
183
|
+
comment was added. What it costs is the next reader, who cannot tell what was
|
|
184
|
+
suppressed or whether it is still needed. That is the definition of `minor`.
|
|
185
|
+
It becomes `major` only when you can name the input the suppressed error was
|
|
186
|
+
hiding and the wrong value it produces — at which point the finding is about
|
|
187
|
+
that bug, not about the comment.
|
|
188
|
+
|
|
178
189
|
---
|
|
179
190
|
|
|
180
191
|
## Iron Laws
|
|
181
192
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
193
|
+
### Shared laws (every reviewer)
|
|
194
|
+
|
|
195
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
196
|
+
name the input, call, or condition that reaches the code, you have an
|
|
197
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
198
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
199
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
200
|
+
pattern because it is often wrong elsewhere.
|
|
201
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
202
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
203
|
+
finding hide the other nine problems.
|
|
204
|
+
|
|
205
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
206
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
207
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
208
|
+
boundary is the trigger-and-outcome test.
|
|
209
|
+
|
|
210
|
+
### Backend conditions
|
|
211
|
+
|
|
212
|
+
Where this reviewer's recurring conditions land under the canonical rubric. Not a
|
|
213
|
+
second rubric — each `blocker` names which of the four merge-blocking shapes it
|
|
214
|
+
is, and a condition that cannot name one is not a `blocker`.
|
|
215
|
+
|
|
216
|
+
| Condition | Severity | Shape |
|
|
217
|
+
|---|---|---|
|
|
218
|
+
| Missing DTO validation on an endpoint accepting user input | `blocker` | Exploitable vulnerability |
|
|
219
|
+
| String interpolation in raw SQL query | `blocker` | Exploitable vulnerability |
|
|
220
|
+
| Leaking stack trace / raw ORM error to API response | `blocker` | Exploitable vulnerability (information disclosure) |
|
|
221
|
+
| `REQUEST`-scoped provider injected into a `Singleton` | `blocker` | Data corruption — one request's state is served to another |
|
|
222
|
+
| Unhandled promise rejection in a controller method | `blocker` | Crash |
|
|
223
|
+
| `NOT NULL` column added without a default to a populated table | `blocker` | Data loss — the migration fails or truncates |
|
|
224
|
+
| N+1 query (relation loaded in a loop) | `major` (minimum) | Named trigger and outcome; degradation, not an outage. Same rating as `review-highload` |
|
|
225
|
+
| Missing transaction on a multi-step atomic mutation | `major` — `blocker` where a partial write corrupts persisted state | The outcome decides |
|
|
226
|
+
| Business logic in a controller | `major` | Layer violation. Same rating as `review-architecture` |
|
|
227
|
+
| Missing pagination on an unbounded list endpoint | `major` — `blocker` where an attacker-reachable request exhausts memory | Degradation vs. crash/DoS |
|
|
194
228
|
|
|
195
229
|
---
|
|
196
230
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-clean-code
|
|
3
|
+
model_tier: standard
|
|
3
4
|
description: |
|
|
4
5
|
Use when: reviewing code against Clean Code principles (Uncle Bob) and SOLID at the
|
|
5
6
|
function/class level — meaningful names, small functions, single level of abstraction,
|
|
@@ -9,7 +10,6 @@ description: |
|
|
|
9
10
|
"review --clean-code", or dispatched by review-orchestrator.
|
|
10
11
|
NOT for: architectural layer violations (review-architecture), naming convention formatting
|
|
11
12
|
(review-style), logic correctness bugs (review-logic), or security (review-security-code).
|
|
12
|
-
version: "1.0.0"
|
|
13
13
|
triggers:
|
|
14
14
|
- "review clean code"
|
|
15
15
|
- "check clean code"
|
|
@@ -21,8 +21,8 @@ metadata:
|
|
|
21
21
|
author: "MrCipherSmith"
|
|
22
22
|
version: "1.0.0"
|
|
23
23
|
category: "review"
|
|
24
|
+
compatible_harnesses: "cursor,codex,zed,opencode,claude"
|
|
24
25
|
license: "MIT"
|
|
25
|
-
compatibility: "cursor,codex,zed,opencode,claude"
|
|
26
26
|
---
|
|
27
27
|
|
|
28
28
|
# Review: Clean Code + SOLID
|
|
@@ -84,9 +84,35 @@ worsens them.
|
|
|
84
84
|
|
|
85
85
|
## Iron Laws
|
|
86
86
|
|
|
87
|
+
### Shared laws (every reviewer)
|
|
88
|
+
|
|
89
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
90
|
+
name the input, call, or condition that reaches the code, you have an
|
|
91
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
92
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
93
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
94
|
+
pattern because it is often wrong elsewhere.
|
|
95
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
96
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
97
|
+
finding hide the other nine problems.
|
|
98
|
+
|
|
99
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
100
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
101
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
102
|
+
boundary is the trigger-and-outcome test.
|
|
103
|
+
|
|
104
|
+
### Clean Code laws
|
|
105
|
+
|
|
87
106
|
1. **Findings without a specific `file:line` from the diff are not valid findings.** Never cite general observations about the codebase.
|
|
88
|
-
2. **
|
|
89
|
-
|
|
107
|
+
2. **A naming issue is `minor`.** It reaches `major` only when the name has
|
|
108
|
+
already produced an observable wrong outcome at a call site you can name — a
|
|
109
|
+
caller misusing the API because of what it is called. "A future reader might
|
|
110
|
+
misread it" is the maintenance cost that makes it `minor`, not a trigger.
|
|
111
|
+
Naming is never a `blocker`. (`review-style` carries the identical rule.)
|
|
112
|
+
3. **DRY violations need at least 3 repetitions before they are worth reporting,
|
|
113
|
+
and they are `minor`.** Two occurrences can be accidental; three is a pattern.
|
|
114
|
+
Duplication is a cost to whoever edits it next, which is `minor` by the
|
|
115
|
+
canonical test — report it once, listing every site, per shared law 3.
|
|
90
116
|
4. **SOLID opinions without a named principle and a concrete violation description are `info` only.** State the principle (e.g., SRP), the two responsibilities, and the impact.
|
|
91
117
|
5. **Do not flag language idioms or framework conventions as Clean Code violations.** If it is the standard way to do something in TypeScript / NestJS / React, it is not a violation.
|
|
92
118
|
|
|
@@ -387,14 +413,25 @@ observation is theatre, not rigour.
|
|
|
387
413
|
```
|
|
388
414
|
```
|
|
389
415
|
|
|
390
|
-
Severity
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
|
395
|
-
|
|
396
|
-
| `
|
|
397
|
-
| `
|
|
416
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
417
|
+
This reviewer keeps no table of its own; what follows is where its recurring
|
|
418
|
+
conditions land under that rubric, not a second rubric.
|
|
419
|
+
|
|
420
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
421
|
+
|---|---|---|
|
|
422
|
+
| Swallowed exception hiding a failed operation | `major` — `blocker` only if the caller then persists or returns wrong data | Same wording as `review-logic`, deliberately. Silent failure is wrong behaviour; corruption is a different shape |
|
|
423
|
+
| LSP violation that produces a wrong result or a crash at a named call site | `major`, or `blocker` on the crash/corruption outcome | The outcome decides, not the principle's name |
|
|
424
|
+
| Constructor performing I/O | `major` | Named trigger (constructing it) and named outcome (the I/O runs); untestable is not one of the four shapes |
|
|
425
|
+
| Function > 40 lines; ≥ 4 parameters without an options object; boolean flag argument; class with two distinct responsibilities; `new ConcreteService()` bypassing DI | `minor` | The code is correct. The cost is to whoever reads or edits it next — that is exactly `minor` |
|
|
426
|
+
| Poor naming; redundant comment; magic number; 20–40 line function; OCP/ISP smell; log-and-rethrow | `minor` | Same |
|
|
427
|
+
| Stylistic opinion; a future issue with no current violation | `info` | Neither trigger nor a named maintenance cost |
|
|
428
|
+
|
|
429
|
+
**Clean Code findings are `minor` by default.** A long function with a named
|
|
430
|
+
responsibility split is a maintenance cost, not observable wrong behaviour, and
|
|
431
|
+
`major` is reserved for findings that name a trigger and an outcome. This
|
|
432
|
+
reviewer previously called a 41-line function `major` and thereby forced
|
|
433
|
+
`REQUEST_CHANGES` on it; that is the exact mis-ranking the canonical rubric
|
|
434
|
+
exists to stop.
|
|
398
435
|
|
|
399
436
|
---
|
|
400
437
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-core-boundaries
|
|
3
|
+
model_tier: deep
|
|
3
4
|
description: |
|
|
4
5
|
Use when reviewing shared core/infrastructure module changes for dependency
|
|
5
6
|
direction, feature-boundary leakage, abstraction stability, composition,
|
|
@@ -45,6 +46,27 @@ If a more specific module reviewer also applies, run both.
|
|
|
45
46
|
|
|
46
47
|
---
|
|
47
48
|
|
|
49
|
+
## Iron Laws
|
|
50
|
+
|
|
51
|
+
### Shared laws (every reviewer)
|
|
52
|
+
|
|
53
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
54
|
+
name the input, call, or condition that reaches the code, you have an
|
|
55
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
56
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
57
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
58
|
+
pattern because it is often wrong elsewhere.
|
|
59
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
60
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
61
|
+
finding hide the other nine problems.
|
|
62
|
+
|
|
63
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
64
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
65
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
66
|
+
boundary is the trigger-and-outcome test.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
48
70
|
## Orchestrated Review Contract
|
|
49
71
|
|
|
50
72
|
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.
|
|
@@ -88,6 +110,16 @@ observation is theatre, not rigour.
|
|
|
88
110
|
- **Fix**: move to domain module, invert dependency, or extract a truly shared abstraction
|
|
89
111
|
```
|
|
90
112
|
|
|
91
|
-
Severity
|
|
92
|
-
|
|
113
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
114
|
+
This reviewer keeps no rubric of its own; what follows is where its recurring
|
|
115
|
+
conditions land under that rubric.
|
|
116
|
+
|
|
117
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| A core API change that breaks a named consumer at runtime | `blocker` | Crash at a named call site |
|
|
120
|
+
| Importing feature code into core; adding feature-specific public API to core; inverted dependency | `major` | Named trigger (the import) and named outcome (the cycle or the leak), but structural — not one of the four shapes |
|
|
121
|
+
| A generic helper whose names or types lean on one feature's language | `minor` | Works today; the cost is to the next module that needs it |
|
|
122
|
+
| A blast-radius concern with no named consumer | `info` | Shared law 1 |
|
|
123
|
+
|
|
124
|
+
"Broad blast radius" is not by itself a `blocker`. Name the consumer that breaks.
|
|
93
125
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-flow-graph
|
|
3
|
+
model_tier: standard
|
|
3
4
|
description: |
|
|
4
5
|
Use when reviewing generic ReactFlow or graph-surface abstraction changes:
|
|
5
6
|
public graph surface, store subclassing, layout lifecycle, internal helper
|
|
@@ -71,6 +72,27 @@ baseline.
|
|
|
71
72
|
|
|
72
73
|
---
|
|
73
74
|
|
|
75
|
+
## Iron Laws
|
|
76
|
+
|
|
77
|
+
### Shared laws (every reviewer)
|
|
78
|
+
|
|
79
|
+
1. **A claim of runtime harm with no reproducible path is `info`.** If you cannot
|
|
80
|
+
name the input, call, or condition that reaches the code, you have an
|
|
81
|
+
observation, not a finding. Report it as `info` and say what would settle it.
|
|
82
|
+
2. **Never flag the theoretical.** The path you describe must exist in the code
|
|
83
|
+
under review. Do not report a safe API because it could be misused, or a
|
|
84
|
+
pattern because it is often wrong elsewhere.
|
|
85
|
+
3. **One finding per class, not one per occurrence.** When the same shape appears
|
|
86
|
+
at several sites, report it once and list every site. Ten findings that are one
|
|
87
|
+
finding hide the other nine problems.
|
|
88
|
+
|
|
89
|
+
Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
90
|
+
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
91
|
+
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
92
|
+
boundary is the trigger-and-outcome test.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
74
96
|
## Orchestrated Review Contract
|
|
75
97
|
|
|
76
98
|
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.
|
|
@@ -114,6 +136,15 @@ observation is theatre, not rigour.
|
|
|
114
136
|
- **Fix**: concrete change aligned with the shared graph surface
|
|
115
137
|
```
|
|
116
138
|
|
|
117
|
-
Severity
|
|
118
|
-
|
|
139
|
+
Severity comes from **Severity (canonical)** in `review-orchestrator/SKILL.md`.
|
|
140
|
+
This reviewer keeps no rubric of its own; what follows is where its recurring
|
|
141
|
+
conditions land under that rubric.
|
|
142
|
+
|
|
143
|
+
| Condition | Severity | Why, under the canonical rubric |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| A graph operation that hangs or exhausts memory at a stated node/edge count | `blocker` | Crash |
|
|
146
|
+
| Breaking the public graph surface; bypassing base selection or layout lifecycle | `major` | Named trigger and outcome; a broken contract is not one of the four shapes |
|
|
147
|
+
| A performance regression on large graphs, with the size that makes it a cost | `major` | Degradation, not an outage — see `review-performance` for the same boundary |
|
|
148
|
+
| Internal helper reaching across a boundary with no observable consequence | `minor` | Correct today; the cost is to the next editor |
|
|
149
|
+
| Surface concern with no named caller | `info` | Shared law 1 |
|
|
119
150
|
|