@mrciphersmith/keryx 0.2.97 → 0.2.99
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 +4583 -2702
- package/dist/core.js +40 -2
- package/package.json +1 -1
- package/src/gdskills/bundled/rules/core/api-contracts.mdc +1 -0
- package/src/gdskills/bundled/rules/core/cli-interface-design.mdc +237 -0
- package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +1 -0
- package/src/gdskills/bundled/rules/core/database-patterns.mdc +1 -0
- package/src/gdskills/bundled/rules/core/definition-of-done.mdc +116 -0
- package/src/gdskills/bundled/rules/core/documentation-management.mdc +33 -38
- package/src/gdskills/bundled/rules/core/error-handling.mdc +1 -11
- package/src/gdskills/bundled/rules/core/execution-metrics.md +1 -2
- package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +1 -0
- package/src/gdskills/bundled/rules/core/git-concurrency.mdc +101 -0
- package/src/gdskills/bundled/rules/core/implementation-plans.mdc +23 -11
- package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +1 -0
- package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +1 -0
- package/src/gdskills/bundled/rules/core/playwright-testing.mdc +1 -0
- package/src/gdskills/bundled/rules/core/requirements-management.mdc +15 -11
- package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +29 -14
- package/src/gdskills/bundled/rules/core/shared-definitions.mdc +1 -1
- package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +9 -5
- package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +156 -23
- package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +1 -0
- package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +9 -2
- package/src/gdskills/bundled/skills/core/reviewer-skill-creator/SKILL.md +42 -5
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +67 -74
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +24 -8
- package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +44 -31
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +4 -4
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +20 -6
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +67 -9
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +6 -6
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +45 -5
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +88 -32
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +52 -41
- package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +32 -1
- package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +17 -0
- package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +29 -4
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +17 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +17 -0
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +17 -0
- package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +32 -2
- package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +14 -2
- package/src/gdskills/bundled/skills/planning/interview/SKILL.md +30 -8
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +33 -7
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +16 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +16 -0
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +17 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +17 -0
- package/src/gdskills/bundled/skills/planning/planner/SKILL.md +17 -0
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +27 -10
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +16 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +16 -0
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +16 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +16 -0
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +16 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +4 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +4 -0
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +4 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +4 -0
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +31 -4
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +27 -3
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +29 -4
- package/src/gdskills/bundled/skills/quality/api-truth/SKILL.md +226 -0
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +25 -5
- package/src/gdskills/bundled/skills/quality/commit/SKILL.md +26 -5
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +25 -4
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +26 -5
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +27 -4
- package/src/gdskills/bundled/skills/quality/deprecation-path/SKILL.md +268 -0
- package/src/gdskills/bundled/skills/quality/fresh-eyes/SKILL.md +190 -0
- package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +30 -9
- package/src/gdskills/bundled/skills/quality/pr/SKILL.md +25 -5
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +27 -4
- package/src/gdskills/bundled/skills/quality/push/SKILL.md +25 -4
- package/src/gdskills/bundled/skills/quality/root-cause/SKILL.md +204 -0
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +25 -4
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +31 -5
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +32 -11
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +42 -7
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +43 -3
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +46 -4
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +46 -6
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +5 -5
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +5 -6
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +6 -6
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +37 -3
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +38 -4
- package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +4 -6
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +37 -3
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +5 -7
- package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +24 -3
- package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +5 -5
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +49 -64
- package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +1 -2
- package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +1 -5
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +53 -9
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +11 -11
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +9 -8
- package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +33 -2
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +6 -4
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +5 -5
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +41 -3
- package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +2 -2
- package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +0 -49
- package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +0 -48
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +0 -353
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +0 -353
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +0 -353
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +0 -353
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +0 -655
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +0 -434
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +0 -434
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +0 -434
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +0 -434
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +0 -163
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +0 -163
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +0 -373
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +0 -374
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +0 -2190
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +0 -2190
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +0 -2190
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +0 -2190
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +0 -659
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +0 -659
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +0 -659
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +0 -659
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +0 -90
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +0 -90
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +0 -187
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +0 -187
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +0 -105
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +0 -105
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +0 -193
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +0 -193
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +0 -193
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +0 -193
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +0 -87
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +0 -87
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +0 -100
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +0 -100
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +0 -84
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +0 -84
- package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +0 -66
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +0 -66
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +0 -66
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +0 -66
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +0 -81
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +0 -81
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +0 -70
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +0 -70
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +0 -83
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +0 -83
- package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +0 -75
- package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +0 -75
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +0 -378
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +0 -378
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +0 -378
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +0 -378
- package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +0 -52
- package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +0 -52
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +0 -108
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +0 -108
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +0 -75
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +0 -75
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +0 -339
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +0 -339
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +0 -339
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +0 -339
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +0 -203
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +0 -203
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +0 -203
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +0 -203
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +0 -243
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +0 -243
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +0 -243
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +0 -243
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +0 -259
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +0 -259
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +0 -259
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +0 -259
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +0 -168
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +0 -168
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +0 -168
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +0 -168
|
@@ -9,12 +9,12 @@ description: |
|
|
|
9
9
|
NOT for: security vulnerabilities, performance profiling, style/naming preferences,
|
|
10
10
|
or architectural pattern concerns — those belong in their respective specialized reviewers.
|
|
11
11
|
triggers:
|
|
12
|
-
- "review
|
|
12
|
+
- "logic review"
|
|
13
|
+
- "bug review"
|
|
14
|
+
- "correctness"
|
|
13
15
|
- "check correctness"
|
|
14
16
|
- "are there any bugs"
|
|
15
17
|
- "check this for bugs"
|
|
16
|
-
- "logic review"
|
|
17
|
-
- "dispatched by review-orchestrator"
|
|
18
18
|
metadata:
|
|
19
19
|
author: "MrCipherSmith"
|
|
20
20
|
version: "1.0.0"
|
|
@@ -64,7 +64,7 @@ Logic Review Progress:
|
|
|
64
64
|
|
|
65
65
|
## Scope Detection
|
|
66
66
|
|
|
67
|
-
See shared script:
|
|
67
|
+
See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
|
|
68
68
|
|
|
69
69
|
Run the script to determine `BASE_SHA`, then collect the diff:
|
|
70
70
|
|
|
@@ -200,7 +200,7 @@ earlier review round, because there the finding is recorded as closed and is not
|
|
|
200
200
|
|
|
201
201
|
## Orchestrated Review Contract
|
|
202
202
|
|
|
203
|
-
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with
|
|
203
|
+
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `.metaproject/skills/gdskills/review/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.
|
|
204
204
|
|
|
205
205
|
---
|
|
206
206
|
|
|
@@ -1,36 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-orchestrator
|
|
3
|
-
description:
|
|
4
|
-
Use when: a code review is requested and the user does not explicitly name a specialized reviewer.
|
|
5
|
-
Handles "review", "code review", "review PR", "review --frontend", "review --backend",
|
|
6
|
-
"review --architecture", "review --security", "review --performance", "review --style",
|
|
7
|
-
"review --verify", "review --project-conventions", "review --legacy-profiles", "review --all". Routes to specialized reviewers in parallel and
|
|
8
|
-
consolidates findings into one unified report.
|
|
9
|
-
NOT for: running a single specialized reviewer — invoke it directly by name instead.
|
|
3
|
+
description: 'Use when: a code review is requested and the user does not name a specialized reviewer — "review", "code review", "review this PR", "review --all". Dispatches the relevant specialized reviewers in parallel and consolidates their findings into one unified report, and owns the fan-out flags "--all", "--project-conventions" and "--legacy-profiles". NOT for: running a single specialized reviewer — invoke it directly by name instead, which is also how a flag that names one domain reaches its reviewer.'
|
|
10
4
|
triggers:
|
|
11
5
|
- "review"
|
|
12
|
-
- "
|
|
6
|
+
- "ревью"
|
|
7
|
+
- "review code"
|
|
8
|
+
- "full review"
|
|
9
|
+
- "review changes"
|
|
13
10
|
- "review PR"
|
|
14
|
-
- "review --frontend"
|
|
15
|
-
- "review --backend"
|
|
16
|
-
- "review --architecture"
|
|
17
|
-
- "review --security"
|
|
18
|
-
- "review --performance"
|
|
19
|
-
- "review --style"
|
|
20
|
-
- "review --verify"
|
|
21
11
|
- "review --all"
|
|
22
|
-
- "review --clean-code"
|
|
23
|
-
- "review --highload"
|
|
24
12
|
- "review --project-conventions"
|
|
25
|
-
- "review --frontend-conventions"
|
|
26
|
-
- "review --testing-practices"
|
|
27
|
-
- "review --core-boundaries"
|
|
28
|
-
- "review --flow-graph"
|
|
29
13
|
- "review --legacy-profiles"
|
|
30
|
-
- "review --code-ai"
|
|
31
|
-
- "review --learned"
|
|
32
|
-
- "review --code-style"
|
|
33
|
-
- "review --mobx-store"
|
|
34
14
|
metadata:
|
|
35
15
|
author: "MrCipherSmith"
|
|
36
16
|
version: "1.9.0"
|
|
@@ -87,10 +67,11 @@ code — and it is the step that was documented as running for a whole release
|
|
|
87
67
|
while nothing called it.
|
|
88
68
|
|
|
89
69
|
The command names no model. It ranks whatever your provider reports at runtime
|
|
90
|
-
and places the tiers relative to your own model; when
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
model
|
|
70
|
+
and places the tiers relative to your own model; when ranking fails it still
|
|
71
|
+
names the session's own provider and model as a fallback. Only when the session
|
|
72
|
+
itself has no provider/model to name does it print `inherit: true` and exit 0,
|
|
73
|
+
which means the dispatch runs on the session model. That is a correct answer,
|
|
74
|
+
not a failure — never "fix" it by writing a model id into a dispatch.
|
|
94
75
|
|
|
95
76
|
---
|
|
96
77
|
|
|
@@ -160,7 +141,7 @@ which of its inputs were recovered and which were never written down.
|
|
|
160
141
|
| `context_doc` | string | no | Path to job context document (e.g., `.metaproject/jobs/<job>/ai/context.md`). |
|
|
161
142
|
| `context_mode` | string | no | `none`, `light`, or `full`. Default: `light` for PR review, `none` for small path reviews. `full` may call `context-collector` before dispatch. |
|
|
162
143
|
| `token_budget` | object | no | Optional budget controls: `{total, per_reviewer, diff_max_chars, file_max_chars}`. |
|
|
163
|
-
| `model_strategy` | string | no | `
|
|
144
|
+
| `model_strategy` | string | no | `ask` or `adaptive`. Default: `adaptive`; the model per dispatch is computed by `keryx review tier`, never chosen by hand (see Step 6). |
|
|
164
145
|
| `managed_review` | object | no | Optional managed review mode: `{mode, target, target_ref, flow_id, reviewers}` where mode is `lightweight`, `attach-review`, `review-flow`, or `ingest`. |
|
|
165
146
|
| `verification_mode` | string | no | `off`, `annotate`, or `filter`. Default `annotate` — verdicts are recorded and nothing is removed. See Wave C. |
|
|
166
147
|
| `pr_comments` | object | no | `{enabled, max_replies_total, max_sentences_per_reply}`. Defaults: enabled when a PR exists, `30`, `2`. Collect every round, reply once at the end. See External PR comments. |
|
|
@@ -454,7 +435,7 @@ not ask for our reasoning and is reading between other tasks.
|
|
|
454
435
|
|
|
455
436
|
## Review Context Pack
|
|
456
437
|
|
|
457
|
-
Before routing reviewers, build a compact `review_context` object. This is the shared source of truth for all sub-agents and must follow
|
|
438
|
+
Before routing reviewers, build a compact `review_context` object. This is the shared source of truth for all sub-agents and must follow `.metaproject/skills/gdskills/review/review-orchestrator/review-context.schema.json`.
|
|
458
439
|
|
|
459
440
|
Required content:
|
|
460
441
|
- Request: raw user request, flags, review mode, explicit paths or commit range.
|
|
@@ -646,27 +627,31 @@ Default budget guidance:
|
|
|
646
627
|
| small | <= 5 files and <= 300 changed lines | `light` | full relevant diff to selected reviewers |
|
|
647
628
|
| medium | <= 20 files or <= 2,000 changed lines | `light` | per-domain filtered diff |
|
|
648
629
|
| large | > 20 files or > 2,000 changed lines | ask `full` | staged waves by domain |
|
|
649
|
-
| high-risk | auth/API/core/security/data migrations | ask `full` |
|
|
630
|
+
| high-risk | auth/API/core/security/data migrations | ask `full` | staged waves, verifier included |
|
|
650
631
|
|
|
651
632
|
---
|
|
652
633
|
|
|
653
634
|
## Model Strategy
|
|
654
635
|
|
|
655
|
-
|
|
636
|
+
The model for each dispatch is computed, not chosen — see Step 6. Before every
|
|
637
|
+
reviewer dispatch, run `keryx review tier` with the signals you hold and paste
|
|
638
|
+
the `model` block it prints into that dispatch. Do not assign a model class by
|
|
639
|
+
reading a table or by hand; that mechanical step is exactly what the command
|
|
640
|
+
replaced (see Step 6 above and `job-orchestrator` Step 5, which pins the same
|
|
641
|
+
rule: `model_strategy: "current"` is gone).
|
|
656
642
|
|
|
657
|
-
|
|
643
|
+
`model_strategy` now governs only how the *computed* model is surfaced, not
|
|
644
|
+
whether it is computed:
|
|
658
645
|
|
|
659
|
-
|
|
|
660
|
-
|
|
661
|
-
|
|
|
662
|
-
|
|
|
663
|
-
| complex | strongest available coding/reasoning model | `review-logic`, `review-architecture`, `review-security-code`, `review-highload`, strict synthesis |
|
|
646
|
+
| `model_strategy` | Behavior |
|
|
647
|
+
|---|---|
|
|
648
|
+
| `ask` | Present the `keryx review tier` model plan once before dispatch. |
|
|
649
|
+
| `adaptive` (default) | Dispatch on the computed model directly; record the chosen model per reviewer in the final report metadata. |
|
|
664
650
|
|
|
665
651
|
Rules:
|
|
666
|
-
-
|
|
667
|
-
-
|
|
668
|
-
- With `model_strategy:
|
|
669
|
-
- If model assignment is unsupported, record `model_strategy: current-session`.
|
|
652
|
+
- Never write a model id into a dispatch by hand — paste the `model` block `keryx review tier` printed.
|
|
653
|
+
- When the session has no provider/model to name it prints `inherit: true` and exits 0; that means the dispatch runs on the session model. Record that as `model_assignment: unsupported`, not as a failure.
|
|
654
|
+
- With `model_strategy: ask`, present the model plan once before dispatch, then proceed with the computed model.
|
|
670
655
|
|
|
671
656
|
---
|
|
672
657
|
|
|
@@ -782,7 +767,7 @@ Before anything else, determine whether the request is **diff mode** or **path m
|
|
|
782
767
|
|
|
783
768
|
### Diff Mode
|
|
784
769
|
|
|
785
|
-
See shared script:
|
|
770
|
+
See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
|
|
786
771
|
|
|
787
772
|
Run the script to determine `BASE_SHA`, then let the pre-filter build the scope:
|
|
788
773
|
|
|
@@ -1158,10 +1143,10 @@ Skipped reviewers:
|
|
|
1158
1143
|
| `--verify` | `review-verifier`, AFTER all others; checks the consolidated findings by running something. Delete-only. |
|
|
1159
1144
|
| (auto) | detected from diff file extensions — see Auto-detection table |
|
|
1160
1145
|
|
|
1161
|
-
Multiple flags may be combined
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1146
|
+
Multiple flags may be combined: `review --backend --security` dispatches `review-logic` + `review-backend` + `review-architecture` + `review-security-code`; `review --frontend --frontend-conventions` dispatches the generic frontend set plus the local frontend conventions reviewer.
|
|
1147
|
+
|
|
1148
|
+
This table applies once this skill is running; reaching it is a separate question. The router strips `--`, so `review --style` is the same phrase as `review-style`'s own `style review` trigger and goes straight there — the same destination this table names, and likewise for `--architecture`, `--security` and `--performance`. Only `--all`, `--project-conventions` and `--legacy-profiles` name this orchestrator, which is why they are its triggers.
|
|
1149
|
+
`--frontend` and `--backend` are the exception: this table fans each out to three reviewers, but a bare `review --frontend` reaches `review-frontend` alone, because `review frontend` and `frontend review` are one phrase to the router and that phrase is the specialist's — two skills may not share a trigger token set (`src/gdskills/catalog-single-source.test.ts`). Ask by name, or use `review --all`, when you want the three-reviewer fan-out; `docs/skills/rejected-skill-changes.md` records the alternatives that were measured and rejected.
|
|
1165
1150
|
|
|
1166
1151
|
---
|
|
1167
1152
|
|
|
@@ -1312,7 +1297,7 @@ Runtime rules:
|
|
|
1312
1297
|
|
|
1313
1298
|
Do not use vague fallback messages such as "running through available agent types" without naming which reviewers used fallback and why.
|
|
1314
1299
|
|
|
1315
|
-
Pass each sub-reviewer a payload matching
|
|
1300
|
+
Pass each sub-reviewer a payload matching `.metaproject/skills/gdskills/review/review-orchestrator/reviewer-input.schema.json`:
|
|
1316
1301
|
|
|
1317
1302
|
```yaml
|
|
1318
1303
|
review_context: <bounded context pack>
|
|
@@ -1320,7 +1305,7 @@ reviewer: <skill-name>
|
|
|
1320
1305
|
scope_mode: diff | path
|
|
1321
1306
|
context_doc: <path or empty>
|
|
1322
1307
|
issue_url: <url or empty>
|
|
1323
|
-
|
|
1308
|
+
model: <the `model` block `keryx review tier` printed for this dispatch — paste verbatim>
|
|
1324
1309
|
budget:
|
|
1325
1310
|
max_prompt_tokens: <number or null>
|
|
1326
1311
|
max_findings: <number>
|
|
@@ -1335,7 +1320,7 @@ target_path: <resolved path or file list>
|
|
|
1335
1320
|
file_contents: <bounded file contents relevant to this reviewer>
|
|
1336
1321
|
```
|
|
1337
1322
|
|
|
1338
|
-
Each reviewer must return a `REVIEW_RESULT` object matching
|
|
1323
|
+
Each reviewer must return a `REVIEW_RESULT` object matching `.metaproject/skills/gdskills/review/review-orchestrator/reviewer-finding.schema.json`, followed by a concise markdown summary. The orchestrator must reject or normalize free-form reports before consolidation.
|
|
1339
1324
|
|
|
1340
1325
|
**Important for path mode:** instruct each reviewer to check the **entire file**, not just changes. The scope report should say "Path: `<TARGET_PATH>`" instead of a branch/merge-base.
|
|
1341
1326
|
|
|
@@ -1560,15 +1545,15 @@ Severity ordering for sort: `blocker` > `major` > `minor` > `info`.
|
|
|
1560
1545
|
|
|
1561
1546
|
### Model Metadata Rules
|
|
1562
1547
|
|
|
1563
|
-
`
|
|
1548
|
+
`unsupported` is a model-assignment outcome recorded when `keryx review tier` has no session provider/model to name (it prints `inherit: true`), not a model name. Never render it as `model: unsupported` or as the PR comment `Model` value.
|
|
1564
1549
|
|
|
1565
1550
|
When writing review report metadata or a PR comment:
|
|
1566
1551
|
1. Read `review_context.token_policy.model_plan`.
|
|
1567
|
-
2. Set `Model strategy` from `model_plan.strategy
|
|
1552
|
+
2. Set `Model strategy` from `model_plan.strategy` (`ask` or `adaptive`).
|
|
1568
1553
|
3. Set `Current model` from the first available value: `model_plan.current_model`, detected tool output, current runtime model shown by the platform, or `unknown`.
|
|
1569
|
-
4.
|
|
1570
|
-
5. If model assignment is unsupported
|
|
1571
|
-
6. If the actual model is unknown, write `unknown`; do not substitute `
|
|
1554
|
+
4. Record the model actually assigned per reviewer — the `tier` and (`provider`+`model` or `inherit`) from the `model` block `keryx review tier` printed for that dispatch — rather than a fixed set of classes; include `complex_model`, `normal_model`, and `simple_model` too when `model_plan` reports them.
|
|
1555
|
+
5. If model assignment is unsupported (the dispatch's `model` block carried `inherit: true`), write `Model assignment: unsupported` and still write `Current model: <actual model or unknown>`.
|
|
1556
|
+
6. If the actual model is unknown, write `unknown`; do not substitute `unsupported` or `inherit`.
|
|
1572
1557
|
|
|
1573
1558
|
---
|
|
1574
1559
|
|
|
@@ -1599,9 +1584,9 @@ STATUS: DONE | DONE_WITH_CONCERNS
|
|
|
1599
1584
|
- Reviewers dispatched: <comma-separated list>
|
|
1600
1585
|
- Changed files: <count>
|
|
1601
1586
|
- Context mode: `<none | light | full>`
|
|
1602
|
-
- Model strategy: `<
|
|
1587
|
+
- Model strategy: `<ask | adaptive>`
|
|
1603
1588
|
- Current model: `<actual current model id/name, or unknown>`
|
|
1604
|
-
- Model assignment: `<
|
|
1589
|
+
- Model assignment: `<per-reviewer tier/model from each dispatch's \`model\` block | unsupported>`
|
|
1605
1590
|
- Token budget: `<used/limit if known; omissions count>`
|
|
1606
1591
|
|
|
1607
1592
|
## Stats
|
|
@@ -1752,9 +1737,9 @@ here is the failure this rule names.
|
|
|
1752
1737
|
| Field | Value |
|
|
1753
1738
|
|---|---|
|
|
1754
1739
|
| Orchestrator | `review-orchestrator` |
|
|
1755
|
-
| Model | `<actual current model id/name, or unknown; never
|
|
1756
|
-
| Model strategy | `<
|
|
1757
|
-
| Model assignment | `<
|
|
1740
|
+
| Model | `<actual current model id/name, or unknown; never inherit or unsupported>` |
|
|
1741
|
+
| Model strategy | `<ask | adaptive>` |
|
|
1742
|
+
| Model assignment | `<per-reviewer tier/model from each dispatch's \`model\` block | unsupported>` |
|
|
1758
1743
|
| Agents run | `<reviewers actually dispatched, including fallback runtimes when used>` |
|
|
1759
1744
|
| Available reviewers | `<all reviewers considered by the orchestrator for this repository/runtime, grouped briefly as generic/convention/project/legacy when useful>` |
|
|
1760
1745
|
| Skipped reviewers | `<reviewers not dispatched with short reasons, e.g. no matching files, optional group not selected, unavailable native agent, PR number missing>` |
|
|
@@ -1794,9 +1779,9 @@ review_run_id: <stable id, e.g. pr-5462-2026-06-13T10-22-00Z>
|
|
|
1794
1779
|
orchestrator: review-orchestrator
|
|
1795
1780
|
verdict: <APPROVE | APPROVE_WITH_SUGGESTIONS | REQUEST_CHANGES>
|
|
1796
1781
|
context_mode: <none | light | full>
|
|
1797
|
-
model_strategy: <
|
|
1782
|
+
model_strategy: <ask | adaptive>
|
|
1798
1783
|
current_model: <actual current model id/name, or unknown>
|
|
1799
|
-
model_assignment: <
|
|
1784
|
+
model_assignment: <per-reviewer tier/model from each dispatch's `model` block | unsupported>
|
|
1800
1785
|
agents:
|
|
1801
1786
|
- <reviewer>
|
|
1802
1787
|
scope:
|
|
@@ -1873,7 +1858,7 @@ Formatting rules for PR comments and AI artifacts:
|
|
|
1873
1858
|
- `Skipped reviewers` must include short reasons from `review_context.routing.reasons`, `review_context.review_plan.skipped`, and dispatch/runtime compatibility checks.
|
|
1874
1859
|
- If the list is long, keep `Agents run` complete and summarize `Available reviewers` / `Skipped reviewers` by group with counts plus notable names; put full details in the AI artifact when one is generated.
|
|
1875
1860
|
- When `comment-and-ai-artifact` is selected, the PR comment meta section must include both `AI artifact` and `AI artifact description`; do not rely on the link alone.
|
|
1876
|
-
- In the metadata table, `Model` must be the actual model id/name. Put `
|
|
1861
|
+
- In the metadata table, `Model` must be the actual model id/name. Put `unsupported`, `adaptive`, or `ask` under `Model strategy` / `Model assignment`, not under `Model`.
|
|
1877
1862
|
- If posting via CLI, write the body to a temp file and use `gh pr comment <pr-number> --body-file <file>`; never inline a large heredoc into shell history.
|
|
1878
1863
|
|
|
1879
1864
|
---
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"review_context",
|
|
8
8
|
"reviewer",
|
|
9
9
|
"scope_mode",
|
|
10
|
-
"
|
|
10
|
+
"model",
|
|
11
11
|
"budget"
|
|
12
12
|
],
|
|
13
13
|
"properties": {
|
|
@@ -36,14 +36,58 @@
|
|
|
36
36
|
"null"
|
|
37
37
|
]
|
|
38
38
|
},
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
39
|
+
"model": {
|
|
40
|
+
"description": "The `model` block `keryx review tier` printed for this dispatch (Step 6) — pasted verbatim, never composed by hand. `tier` is the mechanical vocabulary the command emits (`light`/`standard`/`deep`), never a model name. `provider`/`model` are present when the command resolved a concrete model; `inherit: true` replaces them when it could not, meaning the dispatch runs on the caller's own model. Field naming matches `model` in `contracts/subagent-dispatch.schema.json` and the object `keryx review tier --json` prints under its own `model` key.",
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"required": [
|
|
44
|
+
"tier",
|
|
45
|
+
"tier_reasons",
|
|
46
|
+
"tier_resolution",
|
|
47
|
+
"model_discovery"
|
|
48
|
+
],
|
|
49
|
+
"properties": {
|
|
50
|
+
"tier": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"enum": [
|
|
53
|
+
"light",
|
|
54
|
+
"standard",
|
|
55
|
+
"deep"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"tier_reasons": {
|
|
59
|
+
"type": "array",
|
|
60
|
+
"items": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"minLength": 1
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"provider": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1
|
|
68
|
+
},
|
|
69
|
+
"model": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"minLength": 1
|
|
72
|
+
},
|
|
73
|
+
"inherit": {
|
|
74
|
+
"type": "boolean",
|
|
75
|
+
"description": "Run this dispatch on the caller's own model. Present in place of `provider`/`model`, never alongside them, when `keryx review tier` could not resolve a concrete model."
|
|
76
|
+
},
|
|
77
|
+
"tier_resolution": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"enum": [
|
|
80
|
+
"discovered",
|
|
81
|
+
"session-ranked",
|
|
82
|
+
"session-fallback"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"model_discovery": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"description": "What `keryx review tier` discovered and how it ranked it, as printed. Not re-validated field by field here — that contract lives in `contracts/subagent-dispatch.schema.json`.",
|
|
88
|
+
"additionalProperties": true
|
|
89
|
+
}
|
|
90
|
+
}
|
|
47
91
|
},
|
|
48
92
|
"budget": {
|
|
49
93
|
"type": "object",
|
|
@@ -3,12 +3,12 @@ name: review-performance
|
|
|
3
3
|
model_tier: standard
|
|
4
4
|
description: "Use when a performance review is requested, checking for N+1 queries, unnecessary re-renders, memory leaks, missing indexes, large bundle imports, and synchronous blocking in changed code. NOT for security, logic correctness, style, or architecture."
|
|
5
5
|
triggers:
|
|
6
|
-
- "review performance"
|
|
7
6
|
- "performance review"
|
|
7
|
+
- "perf check"
|
|
8
|
+
- "slow"
|
|
8
9
|
- "check for perf issues"
|
|
9
10
|
- "perf review"
|
|
10
11
|
- "check N+1"
|
|
11
|
-
- dispatched by review-orchestrator
|
|
12
12
|
metadata:
|
|
13
13
|
author: "MrCipherSmith"
|
|
14
14
|
version: "1.0.0"
|
|
@@ -62,7 +62,7 @@ This skill focuses on **measurable or high-likelihood bottlenecks** only. Premat
|
|
|
62
62
|
|
|
63
63
|
## Scope Detection
|
|
64
64
|
|
|
65
|
-
See shared script:
|
|
65
|
+
See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
|
|
66
66
|
|
|
67
67
|
Run the script from that file to determine `MERGE_BASE` (`BASE_SHA`) and `SCOPE` before proceeding.
|
|
68
68
|
|
|
@@ -235,6 +235,12 @@ boundary is the trigger-and-outcome test.
|
|
|
235
235
|
frequency *is* the trigger shared law 1 asks for.
|
|
236
236
|
2. **Do not flag patterns outside the diff.** Review only changed code. Legacy
|
|
237
237
|
issues outside the diff are `info` at most, with a note to track separately.
|
|
238
|
+
3. **An optimisation with no before/after is an unmeasured claim, and a neutral
|
|
239
|
+
one is a finding.** Ask what was measured and on what workload. No pair at all
|
|
240
|
+
is `minor` — unjustified, not wrong. A neutral pair is `major`, and the fix it
|
|
241
|
+
suggests is a revert: what counts as neutral under noise, and what the attempt
|
|
242
|
+
owes the journal, are `perf-check`'s Rules, not restated here. Writing that
|
|
243
|
+
entry is the author's job, not yours; a revert with no entry is its own `minor`.
|
|
238
244
|
|
|
239
245
|
---
|
|
240
246
|
|
|
@@ -340,11 +346,9 @@ Stop and re-read these rules if you are thinking:
|
|
|
340
346
|
| Rationalization | Why it's wrong |
|
|
341
347
|
|---|---|
|
|
342
348
|
| "This loop iterates over user data, so N+1 is obviously a problem" | State the expected N and query cost; "user data" is not self-evidently large |
|
|
343
|
-
| "I'll flag this as major because it looks slow" | Looking slow is not a hot path; cite the execution context |
|
|
344
349
|
| "Missing useMemo here is a performance issue" | useMemo has overhead; only flag when the computation is measurably expensive or the component re-renders at high frequency |
|
|
345
|
-
| "I'll add a minor finding for every lodash default import" | Correct — but only flag if the library is large and the import is demonstrably not tree-shaken |
|
|
346
350
|
| "The dataset could grow large, so I'll call it a blocker" | "Could grow" = minor or info; known to be large = major or blocker |
|
|
347
|
-
| "
|
|
351
|
+
| "The optimisation measures neutral, but it does no harm — no reason to hold the diff" | The complexity it bought with no measured gain *is* the harm, and it passes review precisely because nothing in it is wrong. Neutral is `revert`, per performance law 3 |
|
|
348
352
|
|
|
349
353
|
---
|
|
350
354
|
|
|
@@ -365,10 +369,6 @@ If provided and the file exists, read the context document before starting the r
|
|
|
365
369
|
|
|
366
370
|
If the file does not exist or is not provided, proceed normally — context is optional and non-blocking.
|
|
367
371
|
|
|
368
|
-
|
|
369
372
|
## Orchestrated Review Contract
|
|
370
373
|
|
|
371
|
-
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
374
|
+
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `.metaproject/skills/gdskills/review/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.
|
|
@@ -9,13 +9,14 @@ description: |
|
|
|
9
9
|
NOT for: reviewing code directly — this skill reads human or bot PR feedback and
|
|
10
10
|
makes it actionable. To review code, use the domain review skills.
|
|
11
11
|
triggers:
|
|
12
|
-
- "analyze PR comments"
|
|
13
12
|
- "review PR feedback"
|
|
13
|
+
- "analyze PR comments"
|
|
14
|
+
- "review comments"
|
|
15
|
+
- "fix PR comments"
|
|
14
16
|
- "what did reviewers say"
|
|
15
17
|
- "parse PR #N"
|
|
16
18
|
- "explain PR comments"
|
|
17
19
|
- "PR feedback"
|
|
18
|
-
- "fix PR comments"
|
|
19
20
|
- "review-pr-feedback --fix"
|
|
20
21
|
metadata:
|
|
21
22
|
author: "MrCipherSmith"
|
|
@@ -80,8 +81,8 @@ review-pr-feedback Progress:
|
|
|
80
81
|
| `comment_ids` | string[] | no | Restrict the run to these collected comment ids. Every excluded comment is listed with that reason. |
|
|
81
82
|
| `max_fix_rounds` | integer | no | Sent in the Step 9 dispatch as an `attempt budget:` constraint. It only ever LOWERS the bound `flow-orchestrator` owns; omit it to take that skill's own. |
|
|
82
83
|
|
|
83
|
-
Schemas:
|
|
84
|
-
|
|
84
|
+
Schemas: `.metaproject/skills/gdskills/review/review-pr-feedback/input-contract.schema.json` and
|
|
85
|
+
`.metaproject/skills/gdskills/review/review-pr-feedback/output-contract.schema.json`. Nothing refuses a
|
|
85
86
|
dispatch that ignores them — no production code loads either file — so they are a
|
|
86
87
|
contract between agents, and this skill validating its own output against the
|
|
87
88
|
output schema is what makes them worth writing.
|
|
@@ -297,7 +298,7 @@ For each comment, classify intent before explaining:
|
|
|
297
298
|
|
|
298
299
|
This maps the **intent of an incoming human comment**, which is not a code
|
|
299
300
|
condition. It is not a second severity rubric: the levels themselves are defined
|
|
300
|
-
once, in
|
|
301
|
+
once, in `.metaproject/skills/gdskills/review/review-orchestrator/SKILL.md` → **Severity (canonical)**,
|
|
301
302
|
and a mapped value is a starting point that the canonical test overrides whenever
|
|
302
303
|
the comment names a concrete trigger and outcome.
|
|
303
304
|
|
|
@@ -504,7 +505,7 @@ implementation loop of its own, and a second one would diverge from the one that
|
|
|
504
505
|
is tested.
|
|
505
506
|
|
|
506
507
|
Dispatch payload, conforming to
|
|
507
|
-
|
|
508
|
+
`.metaproject/skills/gdskills/orchestration/flow-orchestrator/input-contract.schema.json` — a registered
|
|
508
509
|
contract, so `keryx skills contracts validate <file> --schema flow-orchestrator-input`
|
|
509
510
|
refuses a malformed one. Validate before dispatching.
|
|
510
511
|
|
|
@@ -539,13 +540,13 @@ criterion rather than by an author's assertion.
|
|
|
539
540
|
### The loop, and its bound
|
|
540
541
|
|
|
541
542
|
The review→fix→review loop belongs to `flow-orchestrator`, and so does its exit
|
|
542
|
-
threshold:
|
|
543
|
+
threshold: `.metaproject/skills/gdskills/orchestration/flow-orchestrator/SKILL.md` → **PR review/fix
|
|
543
544
|
loop** defines it once, beside the bound. Do not restate the level here — the
|
|
544
545
|
bound was centralised and the threshold was left copied four ways in the same
|
|
545
546
|
edit, which is how one of them ends up stale while every guard stays green.
|
|
546
547
|
|
|
547
548
|
The bound is defined once, in
|
|
548
|
-
|
|
549
|
+
`.metaproject/skills/gdskills/orchestration/flow-orchestrator/SKILL.md` → **PR review/fix loop**, along
|
|
549
550
|
with the evidence behind it and the `keryx review loop` repetition check that
|
|
550
551
|
runs before any attempt is spent. Do not restate the number here: two copies of a
|
|
551
552
|
bound are two things to edit when the evidence changes, and the copy nobody edits
|
|
@@ -10,8 +10,7 @@ description: |
|
|
|
10
10
|
triggers:
|
|
11
11
|
- "review regression"
|
|
12
12
|
- "does this change break anything"
|
|
13
|
-
- "blast radius
|
|
14
|
-
- "dispatched by review-orchestrator"
|
|
13
|
+
- "blast radius"
|
|
15
14
|
metadata:
|
|
16
15
|
author: "MrCipherSmith"
|
|
17
16
|
version: "1.0.0"
|
|
@@ -183,3 +182,35 @@ Severity levels are defined once, in `review-orchestrator/SKILL.md` →
|
|
|
183
182
|
**Severity (canonical)**. This reviewer does not restate them: `blocker` is the
|
|
184
183
|
four merge-blocking shapes named there and nothing else, and the `major`/`minor`
|
|
185
184
|
boundary is the trigger-and-outcome test.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Red Flags
|
|
189
|
+
|
|
190
|
+
| Rationalization | Why it is wrong |
|
|
191
|
+
|----------------|-----------------|
|
|
192
|
+
| "This code in the blast radius is badly written, so I will say so." | Scope B asks one question, and it is not that one. The screen rejects it as `outside-set` or as `non-regression-severity`, and the round is spent on a finding nobody reads. |
|
|
193
|
+
| "The caller might break." | Might is not a regression. Name the argument that is no longer passed, the type that narrowed, the branch that went away — or file nothing. Below `major` the screen rejects it by construction. |
|
|
194
|
+
| "I will anchor the finding at the changed line, since that is the cause." | Scope A already reviewed that line. Anchor where the damage lands: the caller a human has to open is the one that breaks. |
|
|
195
|
+
| "The blast radius came back empty, so the change breaks nothing." | An empty radius for a non-code change is recorded as unresolved, not clean. Say the radius could not answer the question — silence that reads as "nothing found" is the failure this lane was built to stop. |
|
|
196
|
+
| "It is a `major` about a dependent and the anchor names the file, so the link to the change is obvious." | `no-link-to-change` is a substring match over your prose, and only a `blocker` is exempt from it. Name the changed file, module or symbol in the finding text or it is dropped before it reaches `findings.json`. |
|
|
197
|
+
| "The set was capped, but I covered the important ones." | The cap is recorded. If files were dropped, say so in the summary; a report that implies a complete sweep over a truncated set is a false claim about coverage. |
|
|
198
|
+
| "The change is only reached through a spawned process / a string-keyed lookup, so the graph must have missed it — I will report it anyway." | Report it, and say the graph could not see the edge. What you must not do is present a runtime path as if the computed set produced it. |
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Verification
|
|
203
|
+
|
|
204
|
+
Report done only once all of these hold:
|
|
205
|
+
|
|
206
|
+
- Every finding is anchored inside the computed set or the changed set, at the
|
|
207
|
+
code that **breaks** rather than the code that changed.
|
|
208
|
+
- Every finding is `major` or above, and every `major` names the changed file,
|
|
209
|
+
module or symbol whose behaviour moved — the anchor alone does not carry it.
|
|
210
|
+
- Every finding carries `class_scope` whose `sites` are the callers that break and
|
|
211
|
+
whose `enumeration_method` is the walk over the blast-radius set that produced
|
|
212
|
+
them.
|
|
213
|
+
- The summary states whether the cap dropped files, and whether the radius could
|
|
214
|
+
answer the question at all for the shape of this change.
|
|
215
|
+
- Nothing that is merely an observation about pre-existing code is filed here; it
|
|
216
|
+
is either raised under scope A or not at all.
|
|
@@ -3,12 +3,14 @@ name: review-security-code
|
|
|
3
3
|
model_tier: standard
|
|
4
4
|
description: "Use when a code-level security review is requested, checking for injection vulnerabilities, auth gaps, insecure cryptography, secrets, and OWASP Top 10 patterns in changed code. NOT for infrastructure, deployment, or dependency audits."
|
|
5
5
|
triggers:
|
|
6
|
-
- "review security"
|
|
7
6
|
- "security review"
|
|
7
|
+
- "проверь безопасность"
|
|
8
|
+
- "безопасность кода"
|
|
9
|
+
- "secure code"
|
|
10
|
+
- "vulnerability"
|
|
8
11
|
- "check for vulnerabilities"
|
|
9
12
|
- "security check"
|
|
10
13
|
- "OWASP review"
|
|
11
|
-
- dispatched by review-orchestrator
|
|
12
14
|
metadata:
|
|
13
15
|
author: "MrCipherSmith"
|
|
14
16
|
version: "1.0.0"
|
|
@@ -61,7 +63,7 @@ This skill covers **code-level security only**. It does NOT audit npm/bun depend
|
|
|
61
63
|
|
|
62
64
|
## Scope Detection
|
|
63
65
|
|
|
64
|
-
See shared script:
|
|
66
|
+
See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
|
|
65
67
|
|
|
66
68
|
Run the script from that file to determine `MERGE_BASE` (`BASE_SHA`) and `SCOPE` before proceeding.
|
|
67
69
|
|
|
@@ -373,7 +375,7 @@ If the file does not exist or is not provided, proceed normally — context is o
|
|
|
373
375
|
|
|
374
376
|
## Orchestrated Review Contract
|
|
375
377
|
|
|
376
|
-
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with
|
|
378
|
+
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `.metaproject/skills/gdskills/review/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.
|
|
377
379
|
|
|
378
380
|
---
|
|
379
381
|
|
|
@@ -8,11 +8,11 @@ description: |
|
|
|
8
8
|
NOT for: logic bugs, architectural violations, security vulnerabilities, performance
|
|
9
9
|
anti-patterns, or any finding that could cause a functional regression.
|
|
10
10
|
triggers:
|
|
11
|
-
- "review style"
|
|
12
11
|
- "style review"
|
|
12
|
+
- "readability"
|
|
13
|
+
- "clean up"
|
|
13
14
|
- "check naming"
|
|
14
15
|
- "check readability"
|
|
15
|
-
- "review --style"
|
|
16
16
|
metadata:
|
|
17
17
|
author: "MrCipherSmith"
|
|
18
18
|
version: "1.0.0"
|
|
@@ -34,7 +34,7 @@ Never touches logic correctness, architecture, security, or performance.
|
|
|
34
34
|
```
|
|
35
35
|
review-style Progress:
|
|
36
36
|
- [ ] Step 1: Read Job Context (if CONTEXT_PATH provided)
|
|
37
|
-
- [ ] Step 2: Determine git scope (merge-base) — see skills/shared/git-merge-base.md
|
|
37
|
+
- [ ] Step 2: Determine git scope (merge-base) — see .metaproject/skills/gdskills/shared/git-merge-base.md
|
|
38
38
|
- [ ] Step 3: Collect diff and changed file list
|
|
39
39
|
- [ ] Step 4: Naming conventions check
|
|
40
40
|
- [ ] Step 5: Dead code and imports check
|
|
@@ -60,7 +60,7 @@ review-style Progress:
|
|
|
60
60
|
|
|
61
61
|
## Scope Detection
|
|
62
62
|
|
|
63
|
-
See shared script:
|
|
63
|
+
See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
|
|
64
64
|
|
|
65
65
|
Run that script to determine `BASE_SHA` before collecting the diff.
|
|
66
66
|
|
|
@@ -228,7 +228,7 @@ boundary is the trigger-and-outcome test.
|
|
|
228
228
|
|
|
229
229
|
## Orchestrated Review Contract
|
|
230
230
|
|
|
231
|
-
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with
|
|
231
|
+
When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `.metaproject/skills/gdskills/review/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.
|
|
232
232
|
|
|
233
233
|
---
|
|
234
234
|
|