@mrciphersmith/keryx 0.2.71 → 0.2.72
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 +4296 -2223
- package/package.json +1 -1
- package/src/gdskills/bundled/rules/core/code-review-learned-profile.mdc +81 -0
- package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +1 -1
- package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +8 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +3 -3
- 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 +2 -2
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +2 -2
- 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 +1 -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 +972 -509
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +972 -509
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +943 -513
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +972 -509
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +972 -509
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +38 -28
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/orchestrator-prompt.md +98 -66
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/output-contract.schema.json +27 -5
- package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +1 -1
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +252 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +252 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +243 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +252 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +252 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +10 -10
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +36 -17
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/shared/git-merge-base.md +1 -1
- package/src/gdskills/bundled/rules/core/code-review-b091-profile.mdc +0 -48
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +0 -209
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +0 -209
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +0 -208
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +0 -209
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +0 -209
package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json
CHANGED
|
@@ -4,11 +4,25 @@
|
|
|
4
4
|
"title": "Job Orchestrator Input Contract",
|
|
5
5
|
"description": "Defines all input parameters required to run job-orchestrator. This is the top-level entry point for the AI implementation pipeline.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": ["
|
|
7
|
+
"required": ["intent", "codebase", "automation"],
|
|
8
|
+
"allOf": [
|
|
9
|
+
{
|
|
10
|
+
"if": { "properties": { "intent": { "enum": ["implement", "analyze"] } } },
|
|
11
|
+
"then": {
|
|
12
|
+
"required": ["issue"],
|
|
13
|
+
"description": "implement and analyze start from an issue, so one is required. review and custom have no issue and never did — requiring it unconditionally made two of the four intents unrepresentable."
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
],
|
|
8
17
|
"properties": {
|
|
18
|
+
"intent": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"enum": ["implement", "analyze", "review", "custom"],
|
|
21
|
+
"description": "What the job is for. Selects the plan (SKILL.md 1.1) and decides whether `issue` is required."
|
|
22
|
+
},
|
|
9
23
|
"issue": {
|
|
10
24
|
"type": "object",
|
|
11
|
-
"description": "GitHub issue identification. Provide EITHER url OR repo+number.",
|
|
25
|
+
"description": "GitHub issue identification. Required for the implement and analyze intents. Provide EITHER url OR repo+number.",
|
|
12
26
|
"properties": {
|
|
13
27
|
"url": {
|
|
14
28
|
"type": "string",
|
|
@@ -52,8 +66,7 @@
|
|
|
52
66
|
},
|
|
53
67
|
"base_branch": {
|
|
54
68
|
"type": "string",
|
|
55
|
-
"
|
|
56
|
-
"description": "Base branch to create feature branch from"
|
|
69
|
+
"description": "Base branch to create the feature branch from. NO DEFAULT, deliberately: SKILL.md 0.2 auto-detects the repository's own default branch and asks the operator to confirm it. The value shipped here used to be `develop-2`, a branch from an unrelated project, which a caller that omitted the field would silently have inherited."
|
|
57
70
|
},
|
|
58
71
|
"additional_codebases": {
|
|
59
72
|
"type": "array",
|
|
@@ -86,43 +99,40 @@
|
|
|
86
99
|
"skip_confirmation": {
|
|
87
100
|
"type": "boolean",
|
|
88
101
|
"const": true,
|
|
89
|
-
"description": "Must be true —
|
|
102
|
+
"description": "Must be true — DISPATCHED SUB-AGENTS run without per-dispatch confirmation. It does not govern the Phase 0.4 operator gate ('Proceed?'), which is a question to the human and is controlled by `plan_approval`. The two were read as contradictory only because they shared a name."
|
|
90
103
|
},
|
|
91
104
|
"max_review_iterations": {
|
|
92
105
|
"type": "integer",
|
|
93
106
|
"minimum": 1,
|
|
94
107
|
"maximum": 3,
|
|
95
|
-
"default":
|
|
96
|
-
"description": "Max review → fix iterations"
|
|
108
|
+
"default": 3,
|
|
109
|
+
"description": "Max review → fix iterations. Three: the same bound `task-implementer`, `flow-orchestrator` and SKILL.md 2.7 carry, pinned across all of them by src/gdskills/round-bound.test.ts. The default was 2 here, which made the contract disagree with the skill it validates."
|
|
110
|
+
},
|
|
111
|
+
"plan_approval": {
|
|
112
|
+
"type": "boolean",
|
|
113
|
+
"default": true,
|
|
114
|
+
"description": "Show the execution plan and ask the operator to approve or adjust before Phase 2 (SKILL.md 1.3). This is the automation switch for an operator question; `skip_confirmation` is not."
|
|
97
115
|
},
|
|
98
116
|
"auto_create_pr": {
|
|
99
117
|
"type": "boolean",
|
|
100
118
|
"default": false,
|
|
101
119
|
"description": "Auto-create draft PR without asking user (default: ask)"
|
|
102
120
|
},
|
|
103
|
-
"
|
|
121
|
+
"review_flags": {
|
|
104
122
|
"type": "array",
|
|
105
|
-
"items": {
|
|
106
|
-
|
|
107
|
-
"enum": [
|
|
108
|
-
"code-ai-review",
|
|
109
|
-
"code-boss-review",
|
|
110
|
-
"code-style-review",
|
|
111
|
-
"code-mobx-store-review"
|
|
112
|
-
]
|
|
113
|
-
},
|
|
114
|
-
"default": ["code-ai-review", "code-boss-review", "code-style-review"],
|
|
115
|
-
"description": "Review skills to always run"
|
|
123
|
+
"items": { "type": "string" },
|
|
124
|
+
"description": "Reviewer selection passed straight to `review-orchestrator` (for example [\"--backend\", \"--security\"]). Omit to let it auto-detect from the diff. This replaces the former `reviewers`/`conditional_reviewers` pair, which named individual review skills for a hand-dispatch path SKILL.md 2.6 no longer takes: reviewers are selected by flag and gated by `keryx review stack`, not listed here."
|
|
116
125
|
},
|
|
117
|
-
"
|
|
118
|
-
"type": "
|
|
119
|
-
"
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
"
|
|
126
|
+
"convention_reviewers": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"default": "ask",
|
|
129
|
+
"description": "Optional project-convention reviewers: \"ask\" (prompt the operator), \"all\", \"none\", or a comma-separated list of skill names."
|
|
130
|
+
},
|
|
131
|
+
"verification_mode": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"enum": ["off", "annotate", "filter"],
|
|
134
|
+
"default": "annotate",
|
|
135
|
+
"description": "Passed to `review-orchestrator` and to `keryx review ingest --verification-mode`. `annotate` records verifier verdicts without removing findings."
|
|
126
136
|
},
|
|
127
137
|
"run_final_checks": {
|
|
128
138
|
"type": "boolean",
|
|
@@ -12,28 +12,35 @@
|
|
|
12
12
|
↓
|
|
13
13
|
[Orchestrator] → loads SKILL.md, follows this checklist
|
|
14
14
|
↓
|
|
15
|
-
Phase 0:
|
|
15
|
+
Phase 0: keryx job list --json → resume or start; collect context; confirm
|
|
16
16
|
↓
|
|
17
|
-
Phase 1:
|
|
17
|
+
Phase 1: keryx job init --name <slug> --intent <intent> --project <path>
|
|
18
18
|
↓
|
|
19
|
-
Phase 2: Execute plan
|
|
19
|
+
Phase 2: Execute plan, bracketing every step with keryx job step:
|
|
20
20
|
↓
|
|
21
21
|
├─ [issue-analyzer sub-agent] → JSON analysis result
|
|
22
22
|
├─ git worktree add → feature branch (NEVER git checkout -b)
|
|
23
|
-
├─ FOR EACH wave → [
|
|
24
|
-
├─
|
|
25
|
-
├─
|
|
26
|
-
├─
|
|
27
|
-
|
|
23
|
+
├─ FOR EACH wave → [tests-creator × tasks] then [task-implementer × tasks]
|
|
24
|
+
├─ [code-verifier sub-agent] → quality gate
|
|
25
|
+
├─ keryx review start → [review-orchestrator sub-agent] → keryx review ingest
|
|
26
|
+
├─ IF blocker/major → [task-implementer (fix)] → next managed round (max 3)
|
|
27
|
+
├─ keryx review complete --finding … --disposition … --evidence …
|
|
28
|
+
└─ keryx job document → each step's artifact recorded in the package
|
|
28
29
|
↓
|
|
29
|
-
Phase 3:
|
|
30
|
+
Phase 3: keryx job complete <job-name> → final report
|
|
30
31
|
↓
|
|
31
32
|
(Optional) gh pr create --draft
|
|
32
33
|
```
|
|
33
34
|
|
|
35
|
+
Every sub-agent dispatch uses `subagent_type: "general-purpose"`.
|
|
36
|
+
|
|
34
37
|
## Phase 0: Context Collection (Guard Clause)
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
0. **Check for an unfinished job first:**
|
|
40
|
+
```bash
|
|
41
|
+
keryx job list --json # phase != COMPLETION means unfinished
|
|
42
|
+
keryx job status <name> --json # next_step is where to resume
|
|
43
|
+
```
|
|
37
44
|
|
|
38
45
|
1. **Determine intent** from user request:
|
|
39
46
|
- "Implement issue" → `implement` (full cycle)
|
|
@@ -47,9 +54,9 @@ Before starting, determine intent and collect context:
|
|
|
47
54
|
○ Type the full absolute path to your project
|
|
48
55
|
```
|
|
49
56
|
|
|
50
|
-
3. **Base branch** → ask to confirm
|
|
57
|
+
3. **Base branch** → auto-detect, present, ask to confirm. No hardcoded default.
|
|
51
58
|
|
|
52
|
-
4. **Job name** → auto-generate + confirm
|
|
59
|
+
4. **Job name** → auto-generate + confirm. Must match `^[a-z0-9-]+$`:
|
|
53
60
|
- `issue-<N>--<slug>` for implement
|
|
54
61
|
- `analysis--issue-<N>` for analyze
|
|
55
62
|
- `review--<slug>` for review
|
|
@@ -59,28 +66,37 @@ Before starting, determine intent and collect context:
|
|
|
59
66
|
- `implement`: Create PR? (default: yes)
|
|
60
67
|
- `analyze`: nothing (ask about implementation after analysis)
|
|
61
68
|
|
|
62
|
-
6. **Show summary and ask for confirmation** before starting.
|
|
69
|
+
6. **Show summary and ask for confirmation** before starting. This operator gate is
|
|
70
|
+
not governed by `skip_confirmation`, which covers sub-agent dispatch only.
|
|
63
71
|
|
|
64
|
-
## Phase 1:
|
|
72
|
+
## Phase 1: Create the Job Package
|
|
65
73
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
74
|
+
```bash
|
|
75
|
+
keryx job init --name <job-name> --intent implement|analyze|review|custom --project <project_dir>
|
|
76
|
+
keryx job status <job-name> # confirm the plan, phase and first open step
|
|
77
|
+
```
|
|
69
78
|
|
|
70
|
-
|
|
79
|
+
`keryx job` is the only writer of `state.json`, and it validates every write against
|
|
80
|
+
the registered contract `job-orchestrator-state`. Never hand-write the file.
|
|
71
81
|
|
|
72
82
|
## Phase 2: Execute Plan
|
|
73
83
|
|
|
74
|
-
Execute plan steps
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
Execute plan steps in order. For each step:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
keryx job step <job-name> <step-id> --status in-progress # counts a retry on re-entry
|
|
88
|
+
# … run the step …
|
|
89
|
+
keryx job document <job-name> --type <analysis|implementation-report|review|verification-report> --file <path>
|
|
90
|
+
keryx job status <job-name> # the job index
|
|
91
|
+
keryx job step <job-name> <step-id> --status completed
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
A conditional step whose trigger did not fire is closed too:
|
|
95
|
+
`keryx job step <job-name> <step-id> --status skipped --reason "<why>"`.
|
|
80
96
|
|
|
81
97
|
### Step: ANALYZE
|
|
82
98
|
|
|
83
|
-
Read `skills/issue-analyzer/orchestrator-prompt.md`, fill in parameters:
|
|
99
|
+
Read `skills/gdskills/orchestration/issue-analyzer/orchestrator-prompt.md`, fill in parameters:
|
|
84
100
|
|
|
85
101
|
```
|
|
86
102
|
ISSUE_URL: <url> (or ISSUE_REPO + ISSUE_NUMBER)
|
|
@@ -92,7 +108,7 @@ SEARCH_DEPTH: focused (default)
|
|
|
92
108
|
Launch Task(issue-analyzer). Parse JSON result — extract tasks and dependency_order.
|
|
93
109
|
|
|
94
110
|
For `analyze` intent: show result, ask "Implement? (yes/no)".
|
|
95
|
-
- yes →
|
|
111
|
+
- yes → create a second package: `keryx job init --name <name>-impl --intent implement …`
|
|
96
112
|
- no → Phase 3
|
|
97
113
|
|
|
98
114
|
### Step: PREPARE — Create Feature Branch
|
|
@@ -102,62 +118,78 @@ For `analyze` intent: show result, ask "Implement? (yes/no)".
|
|
|
102
118
|
```bash
|
|
103
119
|
git -C <project_dir> fetch origin <base_branch>
|
|
104
120
|
git -C <project_dir> worktree add ../<branch-slug> -b feature/<branch-slug> origin/<base_branch>
|
|
105
|
-
|
|
121
|
+
# then install with the DETECTED package manager — never hardcode npm
|
|
106
122
|
```
|
|
107
123
|
|
|
108
|
-
All subsequent operations ONLY in worktree directory.
|
|
124
|
+
All subsequent operations ONLY in the worktree directory.
|
|
109
125
|
|
|
110
|
-
### Step: IMPLEMENT —
|
|
126
|
+
### Step: TESTS-CREATOR + IMPLEMENT — Waves
|
|
111
127
|
|
|
112
128
|
```
|
|
113
|
-
WAVES =
|
|
129
|
+
WAVES = dependency_order from ANALYSIS_RESULT (already topologically sorted)
|
|
114
130
|
|
|
115
131
|
FOR wave_index, wave_tasks in enumerate(WAVES):
|
|
116
|
-
1. Dispatch
|
|
117
|
-
|
|
118
|
-
2.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
Context budget rule: orchestrator only accumulates compact wave summaries,
|
|
130
|
-
never raw task-implementer output.
|
|
132
|
+
1. Dispatch one tests-creator per task, in a SINGLE turn (parallel). Wait for all.
|
|
133
|
+
Load skill: skills/gdskills/quality/tests-creator/SKILL.md
|
|
134
|
+
2. Parallel safety check: tasks sharing a target_file run sequentially.
|
|
135
|
+
3. Dispatch one task-implementer per task, in a SINGLE turn (parallel). Wait for all.
|
|
136
|
+
Load skill: skills/gdskills/orchestration/task-implementer/SKILL.md
|
|
137
|
+
4. Read each STATUS line:
|
|
138
|
+
all DONE → next wave
|
|
139
|
+
any DONE_WITH_CONCERNS → record concerns, continue
|
|
140
|
+
any BLOCKED → STOP, read the result file, resolve or ask the user
|
|
141
|
+
|
|
142
|
+
There is no wave-executor agent. Instruct every dispatched agent to write full
|
|
143
|
+
detail to <JOBS_ROOT>/<job-name>/results/<task_id>.json and return only a compact
|
|
144
|
+
summary — context grows with what agents RETURN.
|
|
131
145
|
```
|
|
132
146
|
|
|
133
|
-
|
|
147
|
+
Record with `keryx job document --type implementation-report`.
|
|
134
148
|
|
|
135
|
-
### Step:
|
|
149
|
+
### Step: VERIFY — Quality Gate
|
|
136
150
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
151
|
+
Dispatch `code-verifier` (`skills/gdskills/orchestration/code-verifier/SKILL.md`) with
|
|
152
|
+
`codebase_path`, `base_branch`, `scope: changed`. Record with
|
|
153
|
+
`keryx job document --type verification-report`.
|
|
154
|
+
|
|
155
|
+
### Step: REVIEW — One Managed Round
|
|
140
156
|
|
|
141
|
-
|
|
142
|
-
|
|
157
|
+
```bash
|
|
158
|
+
keryx review budget --spent <usd> --outstanding <subagents in flight> # STOP on non-zero exit
|
|
159
|
+
keryx review start --target branch --ref <feature-branch> --head "$(git rev-parse HEAD)"
|
|
160
|
+
keryx review comments collect --repo <owner/repo> --pr <n> --sha <head-sha> --round <n> --out <file>
|
|
161
|
+
keryx review scope --ref "$BASE_SHA" --json > scope.json
|
|
162
|
+
keryx review blast-radius --ref "$BASE_SHA" --json > blast-radius.json # KEEP BOTH
|
|
163
|
+
keryx review stack --json # which reviewers apply
|
|
164
|
+
keryx review tier --scope <scope> --diff-lines <n> --json # model per dispatch
|
|
165
|
+
# dispatch review-orchestrator (skills/gdskills/review/review-orchestrator/SKILL.md);
|
|
166
|
+
# it runs review-verifier in Wave C and emits the ```json keryx:findings``` block
|
|
167
|
+
keryx review ingest --report <report.md> --ref <feature-branch> --head <sha> \
|
|
168
|
+
--scope scope.json --blast-radius blast-radius.json \
|
|
169
|
+
--verifications <file> --refuted <file> --outstanding <n>
|
|
143
170
|
```
|
|
144
171
|
|
|
145
|
-
|
|
172
|
+
`--blast-radius` is required on any round that dispatched `review-regression`; an
|
|
173
|
+
ingest carrying a scope-B finding without it is refused. Severities are
|
|
174
|
+
`blocker|major|minor|info`. Record with `keryx job document --type review`.
|
|
146
175
|
|
|
147
|
-
### Step: FIX — Review-Fix Loop (max
|
|
176
|
+
### Step: FIX — Review-Fix Loop (max 3 iterations)
|
|
148
177
|
|
|
149
|
-
If
|
|
178
|
+
If `blocker` or `major` findings exist:
|
|
150
179
|
1. Group by file
|
|
151
|
-
2. Launch task-implementer (task_type: "fix") with
|
|
152
|
-
3.
|
|
153
|
-
4.
|
|
154
|
-
|
|
155
|
-
|
|
180
|
+
2. Launch task-implementer (`task_type: "fix"`) with the findings
|
|
181
|
+
3. Run the sanity check — verify commits were made
|
|
182
|
+
4. Run the NEXT managed round (the whole REVIEW sequence above, `is_fix_round: true`)
|
|
183
|
+
5. Disposition every finding of the previous round:
|
|
184
|
+
```bash
|
|
185
|
+
keryx review complete <review-id> --finding F-001 --disposition acted-on --evidence "<commit>"
|
|
186
|
+
```
|
|
187
|
+
6. STUCK CHECK — break on a repeated finding identity or an identical report, even
|
|
188
|
+
with iterations left. `keryx review loop --flow <id>` detects it from the record.
|
|
156
189
|
|
|
190
|
+
After the LAST round only:
|
|
157
191
|
```bash
|
|
158
|
-
|
|
159
|
-
npm run type-check
|
|
160
|
-
npm test
|
|
192
|
+
keryx review comments reply --repo <owner/repo> --pr <n> --outcomes <file> --sha <sha> --final
|
|
161
193
|
```
|
|
162
194
|
|
|
163
195
|
### Step: REPORT — Generate Final Report
|
|
@@ -174,6 +206,6 @@ gh pr create --title "<title>" --body "..." --base <base> --head <head> --draft
|
|
|
174
206
|
|
|
175
207
|
## Phase 3: Completion
|
|
176
208
|
|
|
177
|
-
1.
|
|
178
|
-
2.
|
|
179
|
-
3. Tell user what was accomplished
|
|
209
|
+
1. Close every remaining step: `keryx job step <job-name> <step-id> --status completed|skipped --reason "<why>"`
|
|
210
|
+
2. `keryx job complete <job-name>` — refused while any step is open or failed, and it names them
|
|
211
|
+
3. Tell the user what was accomplished, the package path, and the PR URL (if created)
|
package/src/gdskills/bundled/skills/orchestration/job-orchestrator/output-contract.schema.json
CHANGED
|
@@ -22,15 +22,19 @@
|
|
|
22
22
|
"type": "string",
|
|
23
23
|
"enum": [
|
|
24
24
|
"Summary",
|
|
25
|
+
"Analysis",
|
|
25
26
|
"Tasks",
|
|
26
27
|
"Review Results",
|
|
27
28
|
"Unresolved Issues",
|
|
28
29
|
"Final Checks",
|
|
30
|
+
"Skill Updates",
|
|
31
|
+
"Metrics",
|
|
32
|
+
"Execution Metrics",
|
|
29
33
|
"Changes Summary",
|
|
30
34
|
"PR Proposal"
|
|
31
35
|
]
|
|
32
36
|
},
|
|
33
|
-
"description": "Sections in the report"
|
|
37
|
+
"description": "Sections in the report. The enum matches the template in SKILL.md 2.9 — it was closed at seven values and excluded two sections the skill instructs the orchestrator to emit, so a conforming report was unrepresentable."
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
},
|
|
@@ -47,10 +51,13 @@
|
|
|
47
51
|
"branch_name": { "type": "string" },
|
|
48
52
|
"tasks_completed": { "type": "integer" },
|
|
49
53
|
"tasks_total": { "type": "integer" },
|
|
50
|
-
"
|
|
54
|
+
"review_rounds": {
|
|
55
|
+
"type": "integer",
|
|
56
|
+
"description": "Managed review rounds run — each one has a package under .metaproject/reviews/."
|
|
57
|
+
},
|
|
51
58
|
"final_status": {
|
|
52
59
|
"type": "string",
|
|
53
|
-
"enum": ["READY FOR PR", "HAS WARNINGS", "HAS ISSUES", "FAILED"]
|
|
60
|
+
"enum": ["READY FOR PR", "HAS WARNINGS", "HAS ISSUES", "ANALYSIS ONLY", "FAILED"]
|
|
54
61
|
}
|
|
55
62
|
}
|
|
56
63
|
},
|
|
@@ -69,16 +76,31 @@
|
|
|
69
76
|
},
|
|
70
77
|
"review_results": {
|
|
71
78
|
"type": "array",
|
|
79
|
+
"description": "Per-reviewer counts, in the canonical severity vocabulary of review-finding.schema.json. The old critical/warning/info triple could not be populated from findings the reviewers actually produce.",
|
|
72
80
|
"items": {
|
|
73
81
|
"type": "object",
|
|
74
82
|
"properties": {
|
|
75
83
|
"reviewer": { "type": "string" },
|
|
76
|
-
"
|
|
77
|
-
"
|
|
84
|
+
"review_id": { "type": "string", "description": "The managed review package this round was ingested into." },
|
|
85
|
+
"blocker": { "type": "integer" },
|
|
86
|
+
"major": { "type": "integer" },
|
|
87
|
+
"minor": { "type": "integer" },
|
|
78
88
|
"info": { "type": "integer" }
|
|
79
89
|
}
|
|
80
90
|
}
|
|
81
91
|
},
|
|
92
|
+
"dispositions": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"description": "Terminal disposition counts recorded by `keryx review complete`. `unknown` above zero means findings were closed without anyone writing down what happened to them.",
|
|
95
|
+
"properties": {
|
|
96
|
+
"unknown": { "type": "integer" },
|
|
97
|
+
"acted-on": { "type": "integer" },
|
|
98
|
+
"dismissed-incorrect": { "type": "integer" },
|
|
99
|
+
"dismissed-wont-fix": { "type": "integer" },
|
|
100
|
+
"dismissed-out-of-scope": { "type": "integer" },
|
|
101
|
+
"dismissed-deprioritised": { "type": "integer" }
|
|
102
|
+
}
|
|
103
|
+
},
|
|
82
104
|
"final_checks": {
|
|
83
105
|
"type": "object",
|
|
84
106
|
"properties": {
|
package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json
CHANGED
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"reviewer": {
|
|
138
138
|
"type": "string",
|
|
139
139
|
"description": "Which review skill found this",
|
|
140
|
-
"examples": ["code-ai-review", "code-
|
|
140
|
+
"examples": ["code-ai-review", "code-learned-review", "code-style-review"]
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
},
|
|
@@ -42,7 +42,7 @@ This skill focuses on:
|
|
|
42
42
|
This skill does NOT duplicate:
|
|
43
43
|
- MobX store-specific patterns → covered by code-mobx-store-review
|
|
44
44
|
- Naming/formatting/import organization → covered by code-style-review
|
|
45
|
-
- Architecture opinions and persona-specific insights → covered by code-
|
|
45
|
+
- Architecture opinions and persona-specific insights → covered by code-learned-review
|
|
46
46
|
|
|
47
47
|
## Главное правило: скоуп ревью
|
|
48
48
|
|
|
@@ -180,7 +180,7 @@ This skill covers **general AI code quality review** following `code-review-ai-a
|
|
|
180
180
|
|---------|-----------|-------------|
|
|
181
181
|
| Types, safety, architecture, readability, performance, tests | ✅ YES | — |
|
|
182
182
|
| MobX store internals (actions, computed, reactions, async) | ⚠️ surface-level only | `code-mobx-store-review` for deep store analysis |
|
|
183
|
-
|
|
|
183
|
+
| Review against this project's own learned conventions | ❌ NO | `code-learned-review` |
|
|
184
184
|
| Pure style/naming/pattern audit | ❌ NO | `code-style-review` |
|
|
185
185
|
|
|
186
186
|
---
|