@martinffx/atelier 1.2.1 → 1.3.0
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/CHANGELOG.md +27 -0
- package/README.md +22 -24
- package/agents/architect.md +1 -1
- package/agents/oracle.md +1 -1
- package/dist/atelier.js +12 -14
- package/package.json +1 -1
- package/skills/code-commit/SKILL.md +5 -13
- package/skills/code-pull-request/SKILL.md +36 -0
- package/skills/code-pull-request/references/common.md +76 -0
- package/skills/code-pull-request/references/create-pr.md +122 -0
- package/skills/code-pull-request/references/default-template.md +25 -0
- package/skills/code-pull-request/references/leave-comment.md +53 -0
- package/skills/code-pull-request/references/merge-pr.md +94 -0
- package/skills/code-pull-request/references/read-comments.md +61 -0
- package/skills/code-pull-request/references/respond-to-comment.md +66 -0
- package/skills/code-review/SKILL.md +21 -12
- package/skills/code-review/references/reviewers.md +142 -41
- package/skills/code-review/references/rq.md +48 -32
- package/skills/oracle-debug/SKILL.md +218 -0
- package/skills/{code-debug → oracle-debug}/references/bug-patterns.md +3 -3
- package/skills/oracle-domain-modelling/SKILL.md +84 -0
- package/skills/oracle-grill-me/SKILL.md +20 -0
- package/skills/spec-brainstorm/SKILL.md +91 -71
- package/skills/spec-finish/SKILL.md +20 -14
- package/skills/spec-implement/SKILL.md +3 -2
- package/skills/spec-orchestrator/SKILL.md +4 -15
- package/skills/spec-plan/SKILL.md +1 -1
- package/agents/scout.md +0 -40
- package/skills/code-commit/references/pr-workflow.md +0 -145
- package/skills/code-debug/SKILL.md +0 -199
- package/skills/code-docs/SKILL.md +0 -171
- package/skills/code-docs/references/api-docs.md +0 -116
- package/skills/code-docs/references/changelog.md +0 -64
- package/skills/code-docs/references/readme-structure.md +0 -94
- package/skills/oracle-architect/SKILL.md +0 -327
- package/skills/oracle-architect/references/api-design.md +0 -345
- package/skills/oracle-architect/references/data-modeling.md +0 -318
- package/skills/oracle-architect/references/ddd-patterns.md +0 -348
- package/skills/oracle-architect/references/interface-design.md +0 -203
- package/skills/oracle-challenge/SKILL.md +0 -126
- package/skills/oracle-doubt/SKILL.md +0 -252
- package/skills/oracle-doubt/references/adversarial-prompt.md +0 -47
- package/skills/oracle-grillme/SKILL.md +0 -160
- package/skills/oracle-security/SKILL.md +0 -225
- package/skills/oracle-security/references/security-patterns.md +0 -236
- package/skills/oracle-security/references/threat-modeling-guide.md +0 -137
- package/skills/oracle-testing/SKILL.md +0 -237
- package/skills/oracle-testing/references/anti-patterns.md +0 -618
- package/skills/oracle-testing/references/boundaries.md +0 -579
- package/skills/oracle-testing/references/core-testing.md +0 -691
- package/skills/oracle-testing/references/edge-testing.md +0 -794
- package/skills/oracle-testing/references/stub-driven-tdd.md +0 -322
- package/skills/oracle-thinkdeep/SKILL.md +0 -164
- /package/skills/{code-debug → oracle-debug}/references/language-tools.md +0 -0
- /package/skills/{code-debug → oracle-debug}/references/techniques.md +0 -0
- /package/skills/{oracle-grillme → oracle-domain-modelling}/references/ADR-FORMAT.md +0 -0
- /package/skills/{oracle-grillme → oracle-domain-modelling}/references/CONTEXT-FORMAT.md +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Workflow: Merge PR/MR
|
|
2
|
+
|
|
3
|
+
Merge the current branch's open PR/MR after confirming CI is green.
|
|
4
|
+
|
|
5
|
+
Defaults: **squash merge + delete the source branch**. If CI is pending, abort and
|
|
6
|
+
report — don't block waiting unless the human says otherwise.
|
|
7
|
+
|
|
8
|
+
Start with [common.md](common.md) (platform detection, base branch, preflight).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Step 1: Find or Create the Open PR/MR
|
|
13
|
+
|
|
14
|
+
Run the lookup in [common.md](common.md#find-the-open-prmr-for-the-current-branch).
|
|
15
|
+
|
|
16
|
+
- **Open** → continue to Step 2.
|
|
17
|
+
- **None** → run [create-pr.md](create-pr.md) first, then continue.
|
|
18
|
+
- **Closed/merged** → check for new commits since it was closed
|
|
19
|
+
(`git log --oneline origin/<base>..HEAD`); stop if none.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 2: Check CI Is Green
|
|
24
|
+
|
|
25
|
+
### GitHub
|
|
26
|
+
```bash
|
|
27
|
+
gh pr checks <number> # all checks
|
|
28
|
+
gh pr checks <number> --required # the merge gate
|
|
29
|
+
```
|
|
30
|
+
Exit codes for `--required`: 0 = all required checks pass; non-zero includes the
|
|
31
|
+
pending case (exit 8). Use `gh pr checks <number> --watch` to wait if the human
|
|
32
|
+
asks for it.
|
|
33
|
+
|
|
34
|
+
`--required` only shows required checks. If the full run shows failing **optional**
|
|
35
|
+
checks (lint, coverage, etc.), warn the human before proceeding — don't silently
|
|
36
|
+
ignore them.
|
|
37
|
+
|
|
38
|
+
### GitLab
|
|
39
|
+
```bash
|
|
40
|
+
glab ci status
|
|
41
|
+
# or
|
|
42
|
+
glab pipeline status
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If any required check is **pending**, offer auto-merge instead of a direct merge:
|
|
46
|
+
`gh pr merge --auto` (GitHub) or `glab mr merge --auto-merge` (GitLab) queues the
|
|
47
|
+
merge to run once checks pass. A bare `gh pr merge` fails while required checks
|
|
48
|
+
are pending — "merge anyway" does not work in that state. Note: `glab mr merge`
|
|
49
|
+
enables auto-merge by default while a pipeline is running.
|
|
50
|
+
|
|
51
|
+
If any required check is **failing**, stop and report the status to the human.
|
|
52
|
+
Don't merge on red. If the human says "merge anyway": on GitHub a forced merge
|
|
53
|
+
requires `--admin` (bypasses branch protection, needs admin rights on the repo) —
|
|
54
|
+
state that implication explicitly before using it. On GitLab, merging on red is
|
|
55
|
+
controlled by project settings — ask the human to fix the pipeline or adjust the
|
|
56
|
+
setting.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Step 3: Confirm Before Merging
|
|
61
|
+
|
|
62
|
+
**Show the human:**
|
|
63
|
+
- PR/MR URL and number/iid
|
|
64
|
+
- CI status (green/red)
|
|
65
|
+
- Merge strategy (squash by default)
|
|
66
|
+
- Whether the source branch will be deleted
|
|
67
|
+
|
|
68
|
+
Ask for explicit confirmation before running the merge command.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Step 4: Merge
|
|
73
|
+
|
|
74
|
+
### GitHub
|
|
75
|
+
```bash
|
|
76
|
+
gh pr merge <number> --squash --delete-branch
|
|
77
|
+
```
|
|
78
|
+
Alternatives: `--rebase`, `--merge`, `--auto` (merge automatically once required
|
|
79
|
+
checks pass), or `--admin` (forced merge — see Step 2) per the human's request.
|
|
80
|
+
|
|
81
|
+
### GitLab
|
|
82
|
+
```bash
|
|
83
|
+
glab mr merge <iid> --squash --remove-source-branch
|
|
84
|
+
```
|
|
85
|
+
Alternatives: `--rebase`, or `--auto-merge` (merge once the pipeline succeeds —
|
|
86
|
+
already the default while a pipeline is running) per the human's request.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Step 5: Report
|
|
91
|
+
|
|
92
|
+
Show the human the merge result — the merge commit SHA, the target branch tip, and
|
|
93
|
+
whether the source branch was deleted. Suggest switching back to the base branch
|
|
94
|
+
locally (`git checkout <base> && git pull`) if the source branch was removed. Done.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Workflow: Read Comments
|
|
2
|
+
|
|
3
|
+
List comments on the current branch's open PR/MR.
|
|
4
|
+
|
|
5
|
+
Start with [common.md](common.md) (platform detection, find the open PR/MR).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Step 1: Find the Open PR/MR
|
|
10
|
+
|
|
11
|
+
Run the lookup in [common.md](common.md#find-the-open-prmr-for-the-current-branch).
|
|
12
|
+
If none is open, stop — nothing to read.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Step 2: List Comments
|
|
17
|
+
|
|
18
|
+
### GitHub
|
|
19
|
+
|
|
20
|
+
Top-level comments:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
gh pr view <number> --json comments --jq '.comments[] | {author: .author.login, body: .body, createdAt: .createdAt}'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Inline review comments (file/line threads) — `--json comments` does NOT include
|
|
27
|
+
them, so fetch them separately:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
gh pr view <number> --json reviewThreads,reviews
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Or, for a readable summary of top-level comments:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
gh pr view <number> --comments
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### GitLab
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
glab mr note list <iid>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This covers both top-level notes and review-thread replies — `glab` has no
|
|
46
|
+
separate `mr discussion` command.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Step 3: Present to the Human
|
|
51
|
+
|
|
52
|
+
Show each comment with:
|
|
53
|
+
|
|
54
|
+
- **Author** (handle)
|
|
55
|
+
- **Body** (full text, or first few lines if long)
|
|
56
|
+
- **Created at** (timestamp)
|
|
57
|
+
- **Type** (top-level note vs. inline review comment, if distinguishable)
|
|
58
|
+
- **File/line** (for inline review comments)
|
|
59
|
+
|
|
60
|
+
Newest first. Group inline review comments by file/line, and threads by their
|
|
61
|
+
parent comment. Don't post anything — this is read-only.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Workflow: Respond to a Comment
|
|
2
|
+
|
|
3
|
+
Post a new comment that references an existing comment on the current branch's PR/MR.
|
|
4
|
+
|
|
5
|
+
This workflow uses **simple reference replies** — a new top-level comment that quotes
|
|
6
|
+
the original — rather than platform-native threaded replies. True threaded replies
|
|
7
|
+
require GraphQL/REST calls and are a possible future enhancement.
|
|
8
|
+
|
|
9
|
+
Start with [common.md](common.md) (platform detection, find the open PR/MR).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Step 1: Find the Open PR/MR and Read Comments
|
|
14
|
+
|
|
15
|
+
Run [common.md](common.md) to find the open PR/MR, then
|
|
16
|
+
[read-comments.md](read-comments.md) to list the comments.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Step 2: Pick the Target Comment
|
|
21
|
+
|
|
22
|
+
Ask the human which comment to respond to. Accept any of:
|
|
23
|
+
|
|
24
|
+
- The comment's number/position in the list above
|
|
25
|
+
- The author's handle
|
|
26
|
+
- A snippet of the comment text
|
|
27
|
+
|
|
28
|
+
Confirm the target before composing the reply.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Step 3: Compose the Reference Reply
|
|
33
|
+
|
|
34
|
+
Ask the human for the response body, then compose a top-level comment in this form:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Re: @<author>'s comment — <quoted snippet>
|
|
38
|
+
|
|
39
|
+
<response body>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Quote only the relevant few words of the original — don't reproduce the entire
|
|
43
|
+
comment. Keep the quote accurate and attributed.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Step 4: Confirm and Post
|
|
48
|
+
|
|
49
|
+
**Show the human the composed reply and the target PR/MR. Ask for confirmation
|
|
50
|
+
before running the write command.**
|
|
51
|
+
|
|
52
|
+
Use the same CLI commands as [leave-comment.md](leave-comment.md#step-3-confirm-and-post)
|
|
53
|
+
to post the reply as a new top-level note.
|
|
54
|
+
|
|
55
|
+
### GitHub
|
|
56
|
+
```bash
|
|
57
|
+
gh pr comment <number> --body "<composed reply>"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### GitLab
|
|
61
|
+
```bash
|
|
62
|
+
glab mr note <iid> --message "<composed reply>"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
After posting, show the human the comment URL or the updated PR/MR URL. Done. Do not
|
|
66
|
+
delete or edit the original comment — this skill create/posts only.
|
|
@@ -30,15 +30,25 @@ Uses explicit subagent dispatch patterns from [code-subagents](../code-subagents
|
|
|
30
30
|
|
|
31
31
|
## Subagent Architecture
|
|
32
32
|
|
|
33
|
+
Use these concrete harness subagent types. If an exact match is unavailable, use the most correct available subagent based on the harness-provided descriptions.
|
|
34
|
+
|
|
35
|
+
| `subagent_type` | Purpose |
|
|
36
|
+
|-----------------|---------|
|
|
37
|
+
| `recon` | Triage only: changed-file analysis, context retrieval, reviewer selection |
|
|
38
|
+
| `oracle` | Parallel reviewer personas, evidence-based critique, failure-mode analysis, challenge validation |
|
|
39
|
+
| `architect` | Architecture, design-boundary, data-model, and API-contract review |
|
|
40
|
+
|
|
41
|
+
Reviewer names such as `Security`, `Correctness`, `Maintainability`, and `PerformanceOperator` are prompt personas, not subagent types. Do not use `general`; it is not a harness agent.
|
|
42
|
+
|
|
33
43
|
### rq (Request Review) Subagents
|
|
34
44
|
|
|
35
|
-
| Step |
|
|
36
|
-
|
|
37
|
-
| 1
|
|
38
|
-
| 2
|
|
39
|
-
| 3
|
|
40
|
-
| 4
|
|
41
|
-
| 5
|
|
45
|
+
| Step | Parallel | Purpose |
|
|
46
|
+
|------|----------|---------|
|
|
47
|
+
| 1. Triage | No | Detect context, select reviewers, identify relevant skills to look for |
|
|
48
|
+
| 2. Reviewers | Yes (per reviewer) | Specialty analysis using reviewer personas |
|
|
49
|
+
| 3. Synthesis | No | Deduplicate findings inline |
|
|
50
|
+
| 4. Architect | No | Architecture review |
|
|
51
|
+
| 5. Challenge | No | Validate findings with sequential-thinking |
|
|
42
52
|
|
|
43
53
|
### rs (Respond to Review)
|
|
44
54
|
|
|
@@ -50,19 +60,18 @@ Follows [code-subagents](../code-subagents/SKILL.md) patterns:
|
|
|
50
60
|
- **Parallel dispatch** for independent reviewers
|
|
51
61
|
- **Sequential dispatch** for dependent steps
|
|
52
62
|
- **Fresh subagent per task** — no context pollution
|
|
53
|
-
- **
|
|
63
|
+
- **Relevant skill search pre-step** before each analysis phase
|
|
54
64
|
- **Error handling**: Log failures, continue with partial results
|
|
55
65
|
|
|
56
66
|
## Agent Dispatch
|
|
57
67
|
|
|
58
68
|
| Agent | Used In Step |
|
|
59
69
|
|-------|--------------|
|
|
60
|
-
| `
|
|
70
|
+
| `recon` | Triage only (context retrieval, file analysis) |
|
|
71
|
+
| `oracle` | Reviewers and challenge validation |
|
|
61
72
|
| `architect` | Architect (architecture review) |
|
|
62
|
-
| `oracle` | Challenge (validate findings, sequential-thinking) |
|
|
63
|
-
| `general` | Reviewers, Synthesis |
|
|
64
73
|
|
|
65
|
-
|
|
74
|
+
Synthesis is performed inline by the main agent.
|
|
66
75
|
|
|
67
76
|
## References
|
|
68
77
|
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
All reviewers are dispatched as **parallel subagents** following [code-subagents](../../code-subagents/SKILL.md) patterns.
|
|
6
6
|
|
|
7
|
-
**Uses:** `
|
|
7
|
+
**Uses:** `oracle` subagent - One per reviewer, dispatched concurrently.
|
|
8
|
+
|
|
9
|
+
Reviewer names such as `Security`, `Correctness`, `Maintainability`, and `PerformanceOperator` are personas inside the prompt. They are not subagent types. Do not use `general`; it is not a harness agent.
|
|
8
10
|
|
|
9
11
|
### Task Tool Invocation Template
|
|
10
12
|
|
|
11
13
|
```yaml
|
|
12
14
|
# Dispatch ONE subagent per selected reviewer
|
|
13
|
-
subagent_type:
|
|
15
|
+
subagent_type: oracle
|
|
14
16
|
description: "{ReviewerName} code review"
|
|
15
17
|
prompt: |
|
|
16
18
|
You are a {ReviewerName} analyzing code for {focus_area}.
|
|
@@ -20,11 +22,13 @@ prompt: |
|
|
|
20
22
|
- Framework: {framework}
|
|
21
23
|
- Files changed: {files}
|
|
22
24
|
|
|
23
|
-
**PRE-STEP:
|
|
24
|
-
Before reviewing,
|
|
25
|
+
**PRE-STEP: Look for Relevant Skills**
|
|
26
|
+
Before reviewing, look for relevant language, framework, testing, architecture, security, or tooling skills.
|
|
27
|
+
Load any relevant skills that are available:
|
|
25
28
|
{skills_to_load}
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
If no relevant skill is available or a skill cannot be loaded, continue with this reviewer prompt.
|
|
31
|
+
Failure to find or load a skill is not a review failure.
|
|
28
32
|
|
|
29
33
|
GIT DIFF:
|
|
30
34
|
```diff
|
|
@@ -155,7 +159,7 @@ Output findings in this format:
|
|
|
155
159
|
- **Pre-existing**: Yes/No
|
|
156
160
|
```
|
|
157
161
|
|
|
158
|
-
Loads:
|
|
162
|
+
Loads: Look for relevant language-specific skills; load them if available.
|
|
159
163
|
|
|
160
164
|
---
|
|
161
165
|
|
|
@@ -186,7 +190,7 @@ Output findings in this format:
|
|
|
186
190
|
- **Pre-existing**: Yes/No
|
|
187
191
|
```
|
|
188
192
|
|
|
189
|
-
Loads:
|
|
193
|
+
Loads: Look for relevant testing and language-specific pattern skills; load them if available.
|
|
190
194
|
|
|
191
195
|
---
|
|
192
196
|
|
|
@@ -217,7 +221,102 @@ Output findings in this format:
|
|
|
217
221
|
- **Pre-existing**: Yes/No
|
|
218
222
|
```
|
|
219
223
|
|
|
220
|
-
Loads:
|
|
224
|
+
Loads: Look for relevant architecture and language architecture skills; load them if available.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Language Reviewers
|
|
229
|
+
|
|
230
|
+
### PythonLanguage Reviewer
|
|
231
|
+
|
|
232
|
+
**Prompt Template:**
|
|
233
|
+
```
|
|
234
|
+
You are a Python Language Reviewer analyzing Python code for language-specific issues.
|
|
235
|
+
|
|
236
|
+
Context:
|
|
237
|
+
- Files: {files}
|
|
238
|
+
- Git diff: {git_diff}
|
|
239
|
+
- Loaded skills: {skills}
|
|
240
|
+
|
|
241
|
+
Focus areas:
|
|
242
|
+
- Type hints, generics, protocols, and runtime/type-checker mismatch
|
|
243
|
+
- Async/sync boundary mistakes and blocking calls in async paths
|
|
244
|
+
- Exception handling, resource cleanup, and context manager usage
|
|
245
|
+
- Packaging, imports, dependency boundaries, and module layout
|
|
246
|
+
- pytest coverage, fixtures, parametrization, and testability
|
|
247
|
+
|
|
248
|
+
Output findings in this format:
|
|
249
|
+
- **Location**: file:line
|
|
250
|
+
- **Severity**: Critical/High/Medium/Low
|
|
251
|
+
- **Issue**: What's wrong
|
|
252
|
+
- **Impact**: What breaks or becomes harder to maintain
|
|
253
|
+
- **Suggestion**: How to fix
|
|
254
|
+
- **Pre-existing**: Yes/No
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Loads: Look for relevant Python, framework, testing, architecture, security, or tooling skills; load them if available.
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
### RustLanguage Reviewer
|
|
262
|
+
|
|
263
|
+
**Prompt Template:**
|
|
264
|
+
```
|
|
265
|
+
You are a Rust Language Reviewer analyzing Rust code for language-specific issues.
|
|
266
|
+
|
|
267
|
+
Context:
|
|
268
|
+
- Files: {files}
|
|
269
|
+
- Git diff: {git_diff}
|
|
270
|
+
- Loaded skills: {skills}
|
|
271
|
+
|
|
272
|
+
Focus areas:
|
|
273
|
+
- Ownership, borrowing, lifetimes, and unnecessary cloning
|
|
274
|
+
- Result/Option handling, error context, and panic/unwrap/expect risk
|
|
275
|
+
- Async, Send/Sync, cancellation, blocking calls, and concurrency safety
|
|
276
|
+
- Trait design, API ergonomics, visibility, and module boundaries
|
|
277
|
+
- Tests, property cases, feature flags, and crate/package conventions
|
|
278
|
+
|
|
279
|
+
Output findings in this format:
|
|
280
|
+
- **Location**: file:line
|
|
281
|
+
- **Severity**: Critical/High/Medium/Low
|
|
282
|
+
- **Issue**: What's wrong
|
|
283
|
+
- **Impact**: What breaks or becomes harder to maintain
|
|
284
|
+
- **Suggestion**: How to fix
|
|
285
|
+
- **Pre-existing**: Yes/No
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Loads: Look for relevant Rust, framework, testing, architecture, security, or tooling skills; load them if available.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
### GoLanguage Reviewer
|
|
293
|
+
|
|
294
|
+
**Prompt Template:**
|
|
295
|
+
```
|
|
296
|
+
You are a Go Language Reviewer analyzing Go code for language-specific issues.
|
|
297
|
+
|
|
298
|
+
Context:
|
|
299
|
+
- Files: {files}
|
|
300
|
+
- Git diff: {git_diff}
|
|
301
|
+
- Loaded skills: {skills}
|
|
302
|
+
|
|
303
|
+
Focus areas:
|
|
304
|
+
- Error handling, wrapping, sentinel errors, and ignored errors
|
|
305
|
+
- context.Context propagation, cancellation, deadlines, and request scope
|
|
306
|
+
- Goroutine lifecycle, channel safety, data races, and sync primitives
|
|
307
|
+
- Interfaces, package boundaries, exported API shape, and naming conventions
|
|
308
|
+
- Table tests, test helpers, race-sensitive behavior, and module layout
|
|
309
|
+
|
|
310
|
+
Output findings in this format:
|
|
311
|
+
- **Location**: file:line
|
|
312
|
+
- **Severity**: Critical/High/Medium/Low
|
|
313
|
+
- **Issue**: What's wrong
|
|
314
|
+
- **Impact**: What breaks or becomes harder to maintain
|
|
315
|
+
- **Suggestion**: How to fix
|
|
316
|
+
- **Pre-existing**: Yes/No
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Loads: Look for relevant Go, framework, testing, architecture, security, or tooling skills; load them if available.
|
|
221
320
|
|
|
222
321
|
---
|
|
223
322
|
|
|
@@ -251,7 +350,7 @@ Output findings in this format:
|
|
|
251
350
|
- **Pre-existing**: Yes/No
|
|
252
351
|
```
|
|
253
352
|
|
|
254
|
-
Loads:
|
|
353
|
+
Loads: Look for relevant language-specific lint/style skills; load them if available.
|
|
255
354
|
|
|
256
355
|
---
|
|
257
356
|
|
|
@@ -524,19 +623,19 @@ Output findings in this format:
|
|
|
524
623
|
|
|
525
624
|
## Skill Loading Guidelines
|
|
526
625
|
|
|
527
|
-
Each reviewer
|
|
626
|
+
Each reviewer must look for relevant skills before reviewing. Load relevant skills if available; otherwise continue with the reviewer prompt. Failure to find or load a skill is not a review failure.
|
|
528
627
|
|
|
529
|
-
| Reviewer Type | Skills to
|
|
530
|
-
|
|
531
|
-
| Correctness | Language-specific
|
|
532
|
-
| Maintainability | Testing skills |
|
|
533
|
-
| Architecture |
|
|
628
|
+
| Reviewer Type | Skills to Look For |
|
|
629
|
+
|---------------|--------------------|
|
|
630
|
+
| Correctness | Language-specific and testing skills |
|
|
631
|
+
| Maintainability | Testing, tooling, and language-specific pattern skills |
|
|
632
|
+
| Architecture | Architecture and language architecture skills |
|
|
633
|
+
| Language | Language, framework, testing, architecture, security, and tooling skills |
|
|
534
634
|
| Pedant | Language-specific lint/style skills |
|
|
535
|
-
|
|
|
536
|
-
|
|
|
537
|
-
|
|
|
538
|
-
|
|
|
539
|
-
| Hybrid | Combine constituent reviewers' skills |
|
|
635
|
+
| Security | Security, framework, and language-specific skills |
|
|
636
|
+
| Performance | Performance, framework, and language-specific skills |
|
|
637
|
+
| Mindset-based personas | Relevant skills if available; otherwise use reviewer prompt |
|
|
638
|
+
| Hybrid | Skills relevant to each constituent reviewer |
|
|
540
639
|
|
|
541
640
|
---
|
|
542
641
|
|
|
@@ -553,11 +652,11 @@ Given triage output:
|
|
|
553
652
|
|
|
554
653
|
### Dispatch Reviewer Subagents (Parallel)
|
|
555
654
|
|
|
556
|
-
Each subagent
|
|
655
|
+
Each subagent looks for its own relevant skills before reviewing and loads the available ones:
|
|
557
656
|
|
|
558
657
|
**Security Reviewer:**
|
|
559
658
|
```yaml
|
|
560
|
-
subagent_type:
|
|
659
|
+
subagent_type: oracle
|
|
561
660
|
description: "Security review of PR"
|
|
562
661
|
prompt: |
|
|
563
662
|
You are a Security Reviewer analyzing code for security vulnerabilities.
|
|
@@ -572,13 +671,13 @@ prompt: |
|
|
|
572
671
|
{paste diff here}
|
|
573
672
|
```
|
|
574
673
|
|
|
575
|
-
YOUR FIRST TASK -
|
|
576
|
-
As a Security Reviewer,
|
|
577
|
-
|
|
674
|
+
YOUR FIRST TASK - LOOK FOR RELEVANT SKILLS:
|
|
675
|
+
As a Security Reviewer, look for relevant language, framework, testing, architecture, security, or tooling skills before reviewing.
|
|
676
|
+
Load relevant skills if available, such as `typescript-testing`.
|
|
677
|
+
If no relevant skill is available or a skill cannot be loaded, continue with this reviewer prompt.
|
|
678
|
+
Failure to find or load a skill is not a review failure.
|
|
578
679
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
Focus areas after loading skills:
|
|
680
|
+
Focus areas:
|
|
582
681
|
- Authentication and authorization flaws
|
|
583
682
|
- Injection vulnerabilities (SQL, command, XSS)
|
|
584
683
|
- Secrets in code (API keys, passwords, tokens)
|
|
@@ -603,7 +702,7 @@ prompt: |
|
|
|
603
702
|
|
|
604
703
|
**Correctness Reviewer:**
|
|
605
704
|
```yaml
|
|
606
|
-
subagent_type:
|
|
705
|
+
subagent_type: oracle
|
|
607
706
|
description: "Correctness review of PR"
|
|
608
707
|
prompt: |
|
|
609
708
|
You are a Correctness Reviewer analyzing code for logic errors.
|
|
@@ -618,13 +717,13 @@ prompt: |
|
|
|
618
717
|
{paste diff here}
|
|
619
718
|
```
|
|
620
719
|
|
|
621
|
-
YOUR FIRST TASK -
|
|
622
|
-
As a Correctness Reviewer,
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
720
|
+
YOUR FIRST TASK - LOOK FOR RELEVANT SKILLS:
|
|
721
|
+
As a Correctness Reviewer, look for relevant language, framework, testing, architecture, security, or tooling skills before reviewing.
|
|
722
|
+
Load relevant skills if available, such as `typescript-testing`.
|
|
723
|
+
If no relevant skill is available or a skill cannot be loaded, continue with this reviewer prompt.
|
|
724
|
+
Failure to find or load a skill is not a review failure.
|
|
626
725
|
|
|
627
|
-
Focus areas
|
|
726
|
+
Focus areas:
|
|
628
727
|
- Logic errors and edge cases
|
|
629
728
|
- Error handling completeness
|
|
630
729
|
- Type soundness
|
|
@@ -639,7 +738,7 @@ prompt: |
|
|
|
639
738
|
|
|
640
739
|
**PerformanceOperator Reviewer:**
|
|
641
740
|
```yaml
|
|
642
|
-
subagent_type:
|
|
741
|
+
subagent_type: oracle
|
|
643
742
|
description: "Performance review of PR"
|
|
644
743
|
prompt: |
|
|
645
744
|
You are a Performance Operator - performance with production reality.
|
|
@@ -654,11 +753,13 @@ prompt: |
|
|
|
654
753
|
{paste diff here}
|
|
655
754
|
```
|
|
656
755
|
|
|
657
|
-
YOUR FIRST TASK -
|
|
658
|
-
As a PerformanceOperator Reviewer,
|
|
659
|
-
|
|
756
|
+
YOUR FIRST TASK - LOOK FOR RELEVANT SKILLS:
|
|
757
|
+
As a PerformanceOperator Reviewer, look for relevant language, framework, testing, architecture, security, or tooling skills before reviewing.
|
|
758
|
+
Load relevant skills if available, such as `typescript-testing`.
|
|
759
|
+
If no relevant skill is available or a skill cannot be loaded, continue with this reviewer prompt.
|
|
760
|
+
Failure to find or load a skill is not a review failure.
|
|
660
761
|
|
|
661
|
-
Focus areas
|
|
762
|
+
Focus areas:
|
|
662
763
|
- Performance issues that matter in prod
|
|
663
764
|
- N+1 queries at scale
|
|
664
765
|
- Memory leaks over time
|
|
@@ -706,6 +807,6 @@ if not all_findings:
|
|
|
706
807
|
|
|
707
808
|
1. **Parallel dispatch** — All reviewers run simultaneously
|
|
708
809
|
2. **Fresh subagent per reviewer** — No context pollution between reviewers
|
|
709
|
-
3. **
|
|
810
|
+
3. **Concrete harness agent** — Use `oracle` for reviewer personas; do not use reviewer names or `general` as `subagent_type`
|
|
710
811
|
4. **Error isolation** — One reviewer failing doesn't block others
|
|
711
812
|
5. **Structured output** — JSON format for easy aggregation
|