@fro.bot/systematic 2.0.1 → 2.0.3
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/agents/design/figma-design-sync.md +1 -1
- package/agents/document-review/coherence-reviewer.md +40 -0
- package/agents/document-review/design-lens-reviewer.md +46 -0
- package/agents/document-review/feasibility-reviewer.md +42 -0
- package/agents/document-review/product-lens-reviewer.md +50 -0
- package/agents/document-review/scope-guardian-reviewer.md +54 -0
- package/agents/document-review/security-lens-reviewer.md +38 -0
- package/agents/research/best-practices-researcher.md +2 -1
- package/agents/research/git-history-analyzer.md +1 -1
- package/agents/research/repo-research-analyst.md +164 -9
- package/agents/review/api-contract-reviewer.md +49 -0
- package/agents/review/correctness-reviewer.md +49 -0
- package/agents/review/data-migrations-reviewer.md +53 -0
- package/agents/review/maintainability-reviewer.md +49 -0
- package/agents/review/pattern-recognition-specialist.md +2 -1
- package/agents/review/performance-reviewer.md +51 -0
- package/agents/review/reliability-reviewer.md +49 -0
- package/agents/review/schema-drift-detector.md +12 -10
- package/agents/review/security-reviewer.md +51 -0
- package/agents/review/testing-reviewer.md +48 -0
- package/agents/workflow/pr-comment-resolver.md +1 -1
- package/agents/workflow/spec-flow-analyzer.md +60 -89
- package/dist/index.js +3 -3
- package/package.json +1 -1
- package/skills/agent-browser/SKILL.md +69 -48
- package/skills/ce-brainstorm/SKILL.md +2 -1
- package/skills/ce-compound/SKILL.md +26 -1
- package/skills/ce-compound-refresh/SKILL.md +11 -1
- package/skills/ce-ideate/SKILL.md +2 -1
- package/skills/ce-plan/SKILL.md +424 -414
- package/skills/ce-review/SKILL.md +12 -13
- package/skills/ce-review-beta/SKILL.md +506 -0
- package/skills/ce-review-beta/references/diff-scope.md +31 -0
- package/skills/ce-review-beta/references/findings-schema.json +128 -0
- package/skills/ce-review-beta/references/persona-catalog.md +50 -0
- package/skills/ce-review-beta/references/review-output-template.md +115 -0
- package/skills/ce-review-beta/references/subagent-template.md +56 -0
- package/skills/ce-work/SKILL.md +14 -6
- package/skills/ce-work-beta/SKILL.md +14 -8
- package/skills/claude-permissions-optimizer/SKILL.md +15 -14
- package/skills/deepen-plan/SKILL.md +348 -483
- package/skills/document-review/SKILL.md +160 -52
- package/skills/feature-video/SKILL.md +209 -178
- package/skills/file-todos/SKILL.md +72 -94
- package/skills/frontend-design/SKILL.md +243 -27
- package/skills/git-worktree/SKILL.md +37 -28
- package/skills/lfg/SKILL.md +7 -7
- package/skills/reproduce-bug/SKILL.md +154 -60
- package/skills/resolve-pr-parallel/SKILL.md +19 -12
- package/skills/resolve-todo-parallel/SKILL.md +9 -6
- package/skills/setup/SKILL.md +33 -56
- package/skills/slfg/SKILL.md +5 -5
- package/skills/test-browser/SKILL.md +69 -145
- package/skills/test-xcode/SKILL.md +61 -183
- package/skills/triage/SKILL.md +10 -10
- package/skills/ce-plan-beta/SKILL.md +0 -571
- package/skills/deepen-plan-beta/SKILL.md +0 -323
|
@@ -16,6 +16,7 @@ This skill provides a unified interface for managing Git worktrees across your d
|
|
|
16
16
|
- **Interactive confirmations** at each step
|
|
17
17
|
- **Automatic .gitignore management** for worktree directory
|
|
18
18
|
- **Automatic .env file copying** from main repo to new worktrees
|
|
19
|
+
- **Automatic dev tool trusting** for mise and direnv configs with review-safe guardrails
|
|
19
20
|
|
|
20
21
|
## CRITICAL: Always Use the Manager Script
|
|
21
22
|
|
|
@@ -23,12 +24,15 @@ This skill provides a unified interface for managing Git worktrees across your d
|
|
|
23
24
|
|
|
24
25
|
The script handles critical setup that raw git commands don't:
|
|
25
26
|
1. Copies `.env`, `.env.local`, `.env.test`, etc. from main repo
|
|
26
|
-
2.
|
|
27
|
-
|
|
27
|
+
2. Trusts dev tool configs with branch-aware safety rules:
|
|
28
|
+
- mise: auto-trust only when unchanged from a trusted baseline branch
|
|
29
|
+
- direnv: auto-allow only for trusted base branches; review worktrees stay manual
|
|
30
|
+
3. Ensures `.worktrees` is in `.gitignore`
|
|
31
|
+
4. Creates consistent directory structure
|
|
28
32
|
|
|
29
33
|
```bash
|
|
30
34
|
# ✅ CORRECT - Always use the script
|
|
31
|
-
bash scripts/worktree-manager.sh create feature-name
|
|
35
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-name
|
|
32
36
|
|
|
33
37
|
# ❌ WRONG - Never do this directly
|
|
34
38
|
git worktree add .worktrees/feature-name -b feature-name main
|
|
@@ -38,8 +42,8 @@ git worktree add .worktrees/feature-name -b feature-name main
|
|
|
38
42
|
|
|
39
43
|
Use this skill in these scenarios:
|
|
40
44
|
|
|
41
|
-
1. **Code Review (`/
|
|
42
|
-
2. **Feature Work (`/
|
|
45
|
+
1. **Code Review (`/ce:review`)**: If NOT already on the target branch (PR branch or requested branch), offer worktree for isolated review
|
|
46
|
+
2. **Feature Work (`/ce:work`)**: Always ask if user wants parallel worktree or live branch work
|
|
43
47
|
3. **Parallel Development**: When working on multiple features simultaneously
|
|
44
48
|
4. **Cleanup**: After completing work in a worktree
|
|
45
49
|
|
|
@@ -47,7 +51,7 @@ Use this skill in these scenarios:
|
|
|
47
51
|
|
|
48
52
|
### In OpenCode Workflows
|
|
49
53
|
|
|
50
|
-
The skill is automatically called from `/
|
|
54
|
+
The skill is automatically called from `/ce:review` and `/ce:work` commands:
|
|
51
55
|
|
|
52
56
|
```
|
|
53
57
|
# For review: offers worktree if not on PR branch
|
|
@@ -60,19 +64,19 @@ You can also invoke the skill directly from bash:
|
|
|
60
64
|
|
|
61
65
|
```bash
|
|
62
66
|
# Create a new worktree (copies .env files automatically)
|
|
63
|
-
bash scripts/worktree-manager.sh create feature-login
|
|
67
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
|
|
64
68
|
|
|
65
69
|
# List all worktrees
|
|
66
|
-
bash scripts/worktree-manager.sh list
|
|
70
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
|
|
67
71
|
|
|
68
72
|
# Switch to a worktree
|
|
69
|
-
bash scripts/worktree-manager.sh switch feature-login
|
|
73
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
|
|
70
74
|
|
|
71
75
|
# Copy .env files to an existing worktree (if they weren't copied)
|
|
72
|
-
bash scripts/worktree-manager.sh copy-env feature-login
|
|
76
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-login
|
|
73
77
|
|
|
74
78
|
# Clean up completed worktrees
|
|
75
|
-
bash scripts/worktree-manager.sh cleanup
|
|
79
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
|
|
76
80
|
```
|
|
77
81
|
|
|
78
82
|
## Commands
|
|
@@ -87,7 +91,7 @@ Creates a new worktree with the given branch name.
|
|
|
87
91
|
|
|
88
92
|
**Example:**
|
|
89
93
|
```bash
|
|
90
|
-
bash scripts/worktree-manager.sh create feature-login
|
|
94
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
|
|
91
95
|
```
|
|
92
96
|
|
|
93
97
|
**What happens:**
|
|
@@ -95,7 +99,11 @@ bash scripts/worktree-manager.sh create feature-login
|
|
|
95
99
|
2. Updates the base branch from remote
|
|
96
100
|
3. Creates new worktree and branch
|
|
97
101
|
4. **Copies all .env files from main repo** (.env, .env.local, .env.test, etc.)
|
|
98
|
-
5.
|
|
102
|
+
5. **Trusts dev tool configs** with branch-aware safety rules:
|
|
103
|
+
- trusted bases (`main`, `develop`, `dev`, `trunk`, `staging`, `release/*`) compare against themselves
|
|
104
|
+
- other branches compare against the default branch
|
|
105
|
+
- direnv auto-allow is skipped on non-trusted bases because `.envrc` can source unchecked files
|
|
106
|
+
6. Shows path for cd-ing to the worktree
|
|
99
107
|
|
|
100
108
|
### `list` or `ls`
|
|
101
109
|
|
|
@@ -103,7 +111,7 @@ Lists all available worktrees with their branches and current status.
|
|
|
103
111
|
|
|
104
112
|
**Example:**
|
|
105
113
|
```bash
|
|
106
|
-
bash scripts/worktree-manager.sh list
|
|
114
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
|
|
107
115
|
```
|
|
108
116
|
|
|
109
117
|
**Output shows:**
|
|
@@ -118,7 +126,7 @@ Switches to an existing worktree and cd's into it.
|
|
|
118
126
|
|
|
119
127
|
**Example:**
|
|
120
128
|
```bash
|
|
121
|
-
bash scripts/worktree-manager.sh switch feature-login
|
|
129
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
|
|
122
130
|
```
|
|
123
131
|
|
|
124
132
|
**Optional:**
|
|
@@ -130,7 +138,7 @@ Interactively cleans up inactive worktrees with confirmation.
|
|
|
130
138
|
|
|
131
139
|
**Example:**
|
|
132
140
|
```bash
|
|
133
|
-
bash scripts/worktree-manager.sh cleanup
|
|
141
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
|
|
134
142
|
```
|
|
135
143
|
|
|
136
144
|
**What happens:**
|
|
@@ -149,34 +157,34 @@ bash scripts/worktree-manager.sh cleanup
|
|
|
149
157
|
|
|
150
158
|
# You respond: yes
|
|
151
159
|
# Script runs (copies .env files automatically):
|
|
152
|
-
bash scripts/worktree-manager.sh create pr-123-feature-name
|
|
160
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create pr-123-feature-name
|
|
153
161
|
|
|
154
162
|
# You're now in isolated worktree for review with all env vars
|
|
155
163
|
cd .worktrees/pr-123-feature-name
|
|
156
164
|
|
|
157
165
|
# After review, return to main:
|
|
158
166
|
cd ../..
|
|
159
|
-
bash scripts/worktree-manager.sh cleanup
|
|
167
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
|
|
160
168
|
```
|
|
161
169
|
|
|
162
170
|
### Parallel Feature Development
|
|
163
171
|
|
|
164
172
|
```bash
|
|
165
173
|
# For first feature (copies .env files):
|
|
166
|
-
bash scripts/worktree-manager.sh create feature-login
|
|
174
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
|
|
167
175
|
|
|
168
176
|
# Later, start second feature (also copies .env files):
|
|
169
|
-
bash scripts/worktree-manager.sh create feature-notifications
|
|
177
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-notifications
|
|
170
178
|
|
|
171
179
|
# List what you have:
|
|
172
|
-
bash scripts/worktree-manager.sh list
|
|
180
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
|
|
173
181
|
|
|
174
182
|
# Switch between them as needed:
|
|
175
|
-
bash scripts/worktree-manager.sh switch feature-login
|
|
183
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
|
|
176
184
|
|
|
177
185
|
# Return to main and cleanup when done:
|
|
178
186
|
cd .
|
|
179
|
-
bash scripts/worktree-manager.sh cleanup
|
|
187
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
|
|
180
188
|
```
|
|
181
189
|
|
|
182
190
|
## Key Design Principles
|
|
@@ -204,7 +212,7 @@ bash scripts/worktree-manager.sh cleanup
|
|
|
204
212
|
|
|
205
213
|
## Integration with Workflows
|
|
206
214
|
|
|
207
|
-
### `/
|
|
215
|
+
### `/ce:review`
|
|
208
216
|
|
|
209
217
|
Instead of always creating a worktree:
|
|
210
218
|
|
|
@@ -217,7 +225,7 @@ Instead of always creating a worktree:
|
|
|
217
225
|
- no → proceed with PR diff on current branch
|
|
218
226
|
```
|
|
219
227
|
|
|
220
|
-
### `/
|
|
228
|
+
### `/ce:work`
|
|
221
229
|
|
|
222
230
|
Always offer choice:
|
|
223
231
|
|
|
@@ -242,7 +250,7 @@ Switch out of the worktree first (to main repo), then cleanup:
|
|
|
242
250
|
|
|
243
251
|
```bash
|
|
244
252
|
cd $(git rev-parse --show-toplevel)
|
|
245
|
-
bash scripts/worktree-manager.sh cleanup
|
|
253
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
|
|
246
254
|
```
|
|
247
255
|
|
|
248
256
|
### Lost in a worktree?
|
|
@@ -250,7 +258,7 @@ bash scripts/worktree-manager.sh cleanup
|
|
|
250
258
|
See where you are:
|
|
251
259
|
|
|
252
260
|
```bash
|
|
253
|
-
bash scripts/worktree-manager.sh list
|
|
261
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
|
|
254
262
|
```
|
|
255
263
|
|
|
256
264
|
### .env files missing in worktree?
|
|
@@ -258,7 +266,7 @@ bash scripts/worktree-manager.sh list
|
|
|
258
266
|
If a worktree was created without .env files (e.g., via raw `git worktree add`), copy them:
|
|
259
267
|
|
|
260
268
|
```bash
|
|
261
|
-
bash scripts/worktree-manager.sh copy-env feature-name
|
|
269
|
+
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-name
|
|
262
270
|
```
|
|
263
271
|
|
|
264
272
|
Navigate back to main:
|
|
@@ -300,3 +308,4 @@ cd $(git rev-parse --show-toplevel)
|
|
|
300
308
|
- No repository duplication
|
|
301
309
|
- Shared git objects for efficiency
|
|
302
310
|
- Much faster than cloning or stashing/switching
|
|
311
|
+
|
package/skills/lfg/SKILL.md
CHANGED
|
@@ -7,11 +7,11 @@ disable-model-invocation: true
|
|
|
7
7
|
|
|
8
8
|
CRITICAL: You MUST execute every step below IN ORDER. Do NOT skip any required step. Do NOT jump ahead to coding or implementation. The plan phase (step 2, and step 3 when warranted) MUST be completed and verified BEFORE any work begins. Violating this order produces bad output.
|
|
9
9
|
|
|
10
|
-
1. **Optional:** If the `ralph-
|
|
10
|
+
1. **Optional:** If the `ralph-loop` skill is available, run `/ralph-loop:ralph-loop "finish all slash commands" --completion-promise "DONE"`. If not available or it fails, skip and continue to step 2 immediately.
|
|
11
11
|
|
|
12
|
-
2. `/
|
|
12
|
+
2. `/ce:plan $ARGUMENTS`
|
|
13
13
|
|
|
14
|
-
GATE: STOP. Verify that the `ce:plan` workflow produced a plan file in `docs/plans/`. If no plan file was created, run `/
|
|
14
|
+
GATE: STOP. Verify that the `ce:plan` workflow produced a plan file in `docs/plans/`. If no plan file was created, run `/ce:plan $ARGUMENTS` again. Do NOT proceed to step 3 until a written plan exists.
|
|
15
15
|
|
|
16
16
|
3. **Conditionally** run `/systematic:deepen-plan`
|
|
17
17
|
|
|
@@ -19,13 +19,13 @@ CRITICAL: You MUST execute every step below IN ORDER. Do NOT skip any required s
|
|
|
19
19
|
|
|
20
20
|
GATE: STOP. If you ran the `deepen-plan` workflow, confirm the plan was deepened or explicitly judged sufficiently grounded. If you skipped it, briefly note why and proceed to step 4.
|
|
21
21
|
|
|
22
|
-
4. `/
|
|
22
|
+
4. `/ce:work`
|
|
23
23
|
|
|
24
24
|
GATE: STOP. Verify that implementation work was performed - files were created or modified beyond the plan. Do NOT proceed to step 5 if no code changes were made.
|
|
25
25
|
|
|
26
|
-
5. `/
|
|
26
|
+
5. `/ce:review`
|
|
27
27
|
|
|
28
|
-
6. `/systematic:
|
|
28
|
+
6. `/systematic:resolve-todo-parallel`
|
|
29
29
|
|
|
30
30
|
7. `/systematic:test-browser`
|
|
31
31
|
|
|
@@ -33,5 +33,5 @@ CRITICAL: You MUST execute every step below IN ORDER. Do NOT skip any required s
|
|
|
33
33
|
|
|
34
34
|
9. Output `<promise>DONE</promise>` when video is in PR
|
|
35
35
|
|
|
36
|
-
Start with step 2 now (or step 1 if ralph-
|
|
36
|
+
Start with step 2 now (or step 1 if ralph-loop is available). Remember: plan FIRST, then work. Never skip the plan.
|
|
37
37
|
|
|
@@ -1,101 +1,195 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reproduce-bug
|
|
3
|
-
description:
|
|
4
|
-
argument-hint: '[GitHub issue number]'
|
|
5
|
-
disable-model-invocation: true
|
|
3
|
+
description: Systematically reproduce and investigate a bug from a GitHub issue. Use when the user provides a GitHub issue number or URL for a bug they want reproduced or investigated.
|
|
4
|
+
argument-hint: '[GitHub issue number or URL]'
|
|
6
5
|
---
|
|
7
6
|
|
|
8
|
-
# Reproduce Bug
|
|
7
|
+
# Reproduce Bug
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
A framework-agnostic, hypothesis-driven workflow for reproducing and investigating bugs from issue reports. Works across any language, framework, or project type.
|
|
11
10
|
|
|
12
|
-
## Phase 1:
|
|
11
|
+
## Phase 1: Understand the Issue
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
Fetch and analyze the bug report to extract structured information before touching the codebase.
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
2. task appsignal-log-investigator(issue_description)
|
|
15
|
+
### Fetch the issue
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
If no issue number or URL was provided as an argument, ask the user for one before proceeding (using the platform's question tool -- e.g., `question` in OpenCode, `request_user_input` in Codex, `ask_user` in Gemini -- or present a prompt and wait for a reply).
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
```bash
|
|
20
|
+
gh issue view $ARGUMENTS --json title,body,comments,labels,assignees
|
|
21
|
+
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
If the argument is a URL rather than a number, extract the issue number or pass the URL directly to `gh`.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
### Extract key details
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
Read the issue and comments, then identify:
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
- **Reported symptoms** -- what the user observed (error message, wrong output, visual glitch, crash)
|
|
30
|
+
- **Expected behavior** -- what should have happened instead
|
|
31
|
+
- **Reproduction steps** -- any steps the reporter provided
|
|
32
|
+
- **Environment clues** -- browser, OS, version, user role, data conditions
|
|
33
|
+
- **Frequency** -- always reproducible, intermittent, or one-time
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
mcp__plugin_compound-engineering_pw__browser_navigate({ url: "http://localhost:3000" })
|
|
33
|
-
mcp__plugin_compound-engineering_pw__browser_snapshot({})
|
|
34
|
-
```
|
|
35
|
+
If the issue lacks reproduction steps or is ambiguous, note what is missing -- this shapes the investigation strategy.
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
## Phase 2: Hypothesize
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
Before running anything, form theories about the root cause. This focuses the investigation and prevents aimless exploration.
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
### Search for relevant code
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
Use the native content-search tool (e.g., Grep in OpenCode) to find code paths related to the reported symptoms. Search for:
|
|
44
|
+
|
|
45
|
+
- Error messages or strings mentioned in the issue
|
|
46
|
+
- Feature names, route paths, or UI labels described in the report
|
|
47
|
+
- Related model/service/controller names
|
|
48
|
+
|
|
49
|
+
### Form hypotheses
|
|
50
|
+
|
|
51
|
+
Based on the issue details and code search results, write down 2-3 plausible hypotheses. Each should identify:
|
|
52
|
+
|
|
53
|
+
- **What** might be wrong (e.g., "race condition in session refresh", "nil check missing on optional field")
|
|
54
|
+
- **Where** in the codebase (specific files and line ranges)
|
|
55
|
+
- **Why** it would produce the reported symptoms
|
|
56
|
+
|
|
57
|
+
Rank hypotheses by likelihood. Start investigating the most likely one first.
|
|
58
|
+
|
|
59
|
+
## Phase 3: Reproduce
|
|
46
60
|
|
|
47
|
-
|
|
61
|
+
Attempt to trigger the bug. The reproduction strategy depends on the bug type.
|
|
48
62
|
|
|
49
|
-
|
|
63
|
+
### Route A: Test-based reproduction (backend, logic, data bugs)
|
|
50
64
|
|
|
65
|
+
Write or find an existing test that exercises the suspected code path:
|
|
66
|
+
|
|
67
|
+
1. Search for existing test files covering the affected code using the native file-search tool (e.g., Glob in OpenCode)
|
|
68
|
+
2. Run existing tests to see if any already fail
|
|
69
|
+
3. If no test covers the scenario, write a minimal failing test that demonstrates the reported behavior
|
|
70
|
+
4. A failing test that matches the reported symptoms confirms the bug
|
|
71
|
+
|
|
72
|
+
### Route B: Browser-based reproduction (UI, visual, interaction bugs)
|
|
73
|
+
|
|
74
|
+
Use the `agent-browser` CLI for browser automation. Do not use any alternative browser MCP integration or built-in browser-control tool. See the `agent-browser` skill for setup and detailed CLI usage.
|
|
75
|
+
|
|
76
|
+
#### Verify server is running
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
agent-browser open http://localhost:${PORT:-3000}
|
|
80
|
+
agent-browser snapshot -i
|
|
51
81
|
```
|
|
52
|
-
|
|
82
|
+
|
|
83
|
+
If the server is not running, ask the user to start their development server and provide the correct port.
|
|
84
|
+
|
|
85
|
+
To detect the correct port, check project instruction files (`AGENTS.md`, `AGENTS.md`) for port references, then `package.json` dev scripts, then `.env` files, falling back to `3000`.
|
|
86
|
+
|
|
87
|
+
#### Follow reproduction steps
|
|
88
|
+
|
|
89
|
+
Navigate to the affected area and execute the steps from the issue:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
agent-browser open "http://localhost:${PORT}/[affected_route]"
|
|
93
|
+
agent-browser snapshot -i
|
|
53
94
|
```
|
|
54
95
|
|
|
55
|
-
|
|
96
|
+
Use `agent-browser` commands to interact with the page:
|
|
97
|
+
- `agent-browser click @ref` -- click elements
|
|
98
|
+
- `agent-browser fill @ref "text"` -- fill form fields
|
|
99
|
+
- `agent-browser snapshot -i` -- capture current state
|
|
100
|
+
- `agent-browser screenshot bug-evidence.png` -- save visual evidence
|
|
56
101
|
|
|
57
|
-
|
|
102
|
+
#### Capture the bug state
|
|
58
103
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- `browser_snapshot` to see the current state
|
|
64
|
-
- `browser_take_screenshot` to capture evidence
|
|
104
|
+
When the bug is reproduced:
|
|
105
|
+
1. Take a screenshot of the error state
|
|
106
|
+
2. Check for console errors: look at browser output and any visible error messages
|
|
107
|
+
3. Record the exact sequence of steps that triggered it
|
|
65
108
|
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
mcp__plugin_compound-engineering_pw__browser_console_messages({ level: "error" })
|
|
69
|
-
```
|
|
109
|
+
### Route C: Manual / environment-specific reproduction
|
|
70
110
|
|
|
71
|
-
|
|
111
|
+
For bugs that require specific data conditions, user roles, external service state, or cannot be automated:
|
|
72
112
|
|
|
73
|
-
|
|
113
|
+
1. Document what conditions are needed
|
|
114
|
+
2. Ask the user (using the platform's question tool -- e.g., `question` in OpenCode, `request_user_input` in Codex, `ask_user` in Gemini -- or present options and wait for a reply) whether they can set up the required conditions
|
|
115
|
+
3. Guide them through manual reproduction steps if needed
|
|
74
116
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
117
|
+
### If reproduction fails
|
|
118
|
+
|
|
119
|
+
If the bug cannot be reproduced after trying the most likely hypotheses:
|
|
120
|
+
|
|
121
|
+
1. Revisit the remaining hypotheses
|
|
122
|
+
2. Check if the bug is environment-specific (version, OS, browser, data-dependent)
|
|
123
|
+
3. Search the codebase for recent changes to the affected area: `git log --oneline -20 -- [affected_files]`
|
|
124
|
+
4. Document what was tried and what conditions might be missing
|
|
125
|
+
|
|
126
|
+
## Phase 4: Investigate
|
|
127
|
+
|
|
128
|
+
Dig deeper into the root cause using whatever observability the project offers.
|
|
129
|
+
|
|
130
|
+
### Check logs and traces
|
|
131
|
+
|
|
132
|
+
Search for errors, warnings, or unexpected behavior around the time of reproduction. What to check depends on the bug and what the project has available:
|
|
133
|
+
|
|
134
|
+
- **Application logs** -- search local log output (dev server stdout, log files) for error patterns, stack traces, or warnings using the native content-search tool
|
|
135
|
+
- **Error tracking** -- check for related exceptions in the project's error tracker (Sentry, AppSignal, Bugsnag, Datadog, etc.)
|
|
136
|
+
- **Browser console** -- for UI bugs, check developer console output for JavaScript errors, failed network requests, or CORS issues
|
|
137
|
+
- **Database state** -- if the bug involves data, inspect relevant records for unexpected values, missing associations, or constraint violations
|
|
138
|
+
- **Request/response cycle** -- check server logs for the specific request: status codes, params, timing, middleware behavior
|
|
139
|
+
|
|
140
|
+
### Trace the code path
|
|
141
|
+
|
|
142
|
+
Starting from the entry point identified in Phase 2, trace the execution path:
|
|
143
|
+
|
|
144
|
+
1. Read the relevant source files using the native file-read tool
|
|
145
|
+
2. Identify where the behavior diverges from expectations
|
|
146
|
+
3. Check edge cases: nil/null values, empty collections, boundary conditions, race conditions
|
|
147
|
+
4. Look for recent changes that may have introduced the bug: `git log --oneline -10 -- [file]`
|
|
148
|
+
|
|
149
|
+
## Phase 5: Document Findings
|
|
150
|
+
|
|
151
|
+
Summarize everything discovered during the investigation.
|
|
152
|
+
|
|
153
|
+
### Compile the report
|
|
154
|
+
|
|
155
|
+
Organize findings into:
|
|
156
|
+
|
|
157
|
+
1. **Root cause** -- what is actually wrong and where (with file paths and line numbers, e.g., `app/services/example_service.rb:42`)
|
|
158
|
+
2. **Reproduction steps** -- verified steps to trigger the bug (mark as confirmed or unconfirmed)
|
|
159
|
+
3. **Evidence** -- screenshots, test output, log excerpts, console errors
|
|
160
|
+
4. **Suggested fix** -- if a fix is apparent, describe it with the specific code changes needed
|
|
161
|
+
5. **Open questions** -- anything still unclear or needing further investigation
|
|
162
|
+
|
|
163
|
+
### Present to user before any external action
|
|
164
|
+
|
|
165
|
+
Present the full report to the user. Do not post comments to the GitHub issue or take any external action without explicit confirmation.
|
|
166
|
+
|
|
167
|
+
Ask the user (using the platform's question tool, or present options and wait):
|
|
78
168
|
|
|
79
169
|
```
|
|
80
|
-
|
|
170
|
+
Investigation complete. How to proceed?
|
|
171
|
+
|
|
172
|
+
1. Post findings to the issue as a comment
|
|
173
|
+
2. Start working on a fix
|
|
174
|
+
3. Just review the findings (no external action)
|
|
81
175
|
```
|
|
82
176
|
|
|
83
|
-
|
|
177
|
+
If the user chooses to post to the issue:
|
|
84
178
|
|
|
85
|
-
|
|
179
|
+
```bash
|
|
180
|
+
gh issue comment $ARGUMENTS --body "$(cat <<'EOF'
|
|
181
|
+
## Bug Investigation
|
|
86
182
|
|
|
87
|
-
|
|
88
|
-
- [ ] Include screenshots showing the bug reproduction
|
|
89
|
-
- [ ] List console errors if any
|
|
90
|
-
- [ ] Document the exact reproduction steps
|
|
183
|
+
**Root Cause:** [summary]
|
|
91
184
|
|
|
92
|
-
|
|
185
|
+
**Reproduction Steps (verified):**
|
|
186
|
+
1. [step]
|
|
187
|
+
2. [step]
|
|
93
188
|
|
|
94
|
-
|
|
189
|
+
**Relevant Code:** [file:line references]
|
|
95
190
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
5. **Suggested Fix** - If you have one
|
|
191
|
+
**Suggested Fix:** [description if applicable]
|
|
192
|
+
EOF
|
|
193
|
+
)"
|
|
194
|
+
```
|
|
101
195
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: resolve-pr-parallel
|
|
3
3
|
description: Resolve all PR comments using parallel processing. Use when addressing PR review feedback, resolving review threads, or batch-fixing PR comments.
|
|
4
|
-
argument-hint:
|
|
4
|
+
argument-hint: '[optional: PR number or current PR]'
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
allowed-tools: Bash(gh *), Bash(git *), Read
|
|
7
7
|
---
|
|
@@ -12,7 +12,7 @@ Resolve all unresolved PR review comments by spawning parallel agents for each t
|
|
|
12
12
|
|
|
13
13
|
## Context Detection
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Detect git context from the current working directory:
|
|
16
16
|
- Current branch and associated PR
|
|
17
17
|
- All PR comments and review threads
|
|
18
18
|
- Works with any PR by specifying the number
|
|
@@ -21,7 +21,7 @@ OpenCode automatically detects git context:
|
|
|
21
21
|
|
|
22
22
|
### 1. Analyze
|
|
23
23
|
|
|
24
|
-
Fetch unresolved review threads using the GraphQL script:
|
|
24
|
+
Fetch unresolved review threads using the GraphQL script at [scripts/get-pr-comments](scripts/get-pr-comments):
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
bash scripts/get-pr-comments PR_NUMBER
|
|
@@ -37,7 +37,7 @@ gh api repos/{owner}/{repo}/pulls/PR_NUMBER/comments
|
|
|
37
37
|
|
|
38
38
|
### 2. Plan
|
|
39
39
|
|
|
40
|
-
Create a
|
|
40
|
+
Create a task list of all unresolved items grouped by type (e.g., `todowrite` in OpenCode, `update_plan` in Codex):
|
|
41
41
|
- Code changes requested
|
|
42
42
|
- Questions to answer
|
|
43
43
|
- Style/convention fixes
|
|
@@ -45,20 +45,24 @@ Create a todowrite list of all unresolved items grouped by type:
|
|
|
45
45
|
|
|
46
46
|
### 3. Implement (PARALLEL)
|
|
47
47
|
|
|
48
|
-
Spawn a `pr-comment-resolver` agent for each unresolved item
|
|
48
|
+
Spawn a `systematic:workflow:pr-comment-resolver` agent for each unresolved item.
|
|
49
49
|
|
|
50
|
-
If there are 3 comments, spawn 3 agents
|
|
50
|
+
If there are 3 comments, spawn 3 agents — one per comment. Prefer running all agents in parallel; if the platform does not support parallel dispatch, run them sequentially.
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
Keep parent-context pressure bounded:
|
|
53
|
+
- If there are 1-4 unresolved items, direct parallel returns are fine
|
|
54
|
+
- If there are 5+ unresolved items, launch in batches of at most 4 agents at a time
|
|
55
|
+
- Require each resolver agent to return a short status summary to the parent: comment/thread handled, files changed, tests run or skipped, any blocker that still needs human attention, and for question-only threads the substantive reply text so the parent can post or verify it
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
If the PR is large enough that even batched short returns are likely to get noisy, use a per-run scratch directory such as `.context/systematic/resolve-pr-parallel/<run-id>/`:
|
|
58
|
+
- Have each resolver write a compact artifact for its thread there
|
|
59
|
+
- Return only a completion summary to the parent
|
|
60
|
+
- Re-read only the artifacts that are needed to resolve threads, answer reviewer questions, or summarize the batch
|
|
57
61
|
|
|
58
62
|
### 4. Commit & Resolve
|
|
59
63
|
|
|
60
64
|
- Commit changes with a clear message referencing the PR feedback
|
|
61
|
-
- Resolve each thread programmatically:
|
|
65
|
+
- Resolve each thread programmatically using [scripts/resolve-pr-thread](scripts/resolve-pr-thread):
|
|
62
66
|
|
|
63
67
|
```bash
|
|
64
68
|
bash scripts/resolve-pr-thread THREAD_ID
|
|
@@ -76,6 +80,8 @@ bash scripts/get-pr-comments PR_NUMBER
|
|
|
76
80
|
|
|
77
81
|
Should return an empty array `[]`. If threads remain, repeat from step 1.
|
|
78
82
|
|
|
83
|
+
If a scratch directory was used and the user did not ask to inspect it, clean it up after verification succeeds.
|
|
84
|
+
|
|
79
85
|
## Scripts
|
|
80
86
|
|
|
81
87
|
- [scripts/get-pr-comments](scripts/get-pr-comments) - GraphQL query for unresolved review threads
|
|
@@ -87,3 +93,4 @@ Should return an empty array `[]`. If threads remain, repeat from step 1.
|
|
|
87
93
|
- Changes committed and pushed
|
|
88
94
|
- Threads resolved via GraphQL (marked as resolved on GitHub)
|
|
89
95
|
- Empty result from get-pr-comments on verify
|
|
96
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: resolve-todo-parallel
|
|
3
|
-
description:
|
|
3
|
+
description: Resolve all pending CLI todos using parallel processing, compound on lessons learned, then clean up completed todos.
|
|
4
4
|
argument-hint: '[optional: specific todo ID or pattern]'
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,9 +10,11 @@ Resolve all TODO comments using parallel processing, document lessons learned, t
|
|
|
10
10
|
|
|
11
11
|
### 1. Analyze
|
|
12
12
|
|
|
13
|
-
Get all unresolved TODOs from
|
|
13
|
+
Get all unresolved TODOs from `.context/systematic/todos/*.md` and legacy `todos/*.md`
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Residual actionable work may come from `ce:review-beta mode:autonomous` after its in-skill `safe_auto` pass. Treat those todos as normal unresolved work items; the review skill has already decided they should not be auto-fixed inline.
|
|
16
|
+
|
|
17
|
+
If any todo recommends deleting, removing, or gitignoring files in `docs/brainstorms/`, `docs/plans/`, or `docs/solutions/`, skip it and mark it as `wont_fix`. These are systematic pipeline artifacts that are intentional and permanent.
|
|
16
18
|
|
|
17
19
|
### 2. Plan
|
|
18
20
|
|
|
@@ -20,7 +22,7 @@ Create a task list of all unresolved items grouped by type (e.g., `todowrite` in
|
|
|
20
22
|
|
|
21
23
|
### 3. Implement (PARALLEL)
|
|
22
24
|
|
|
23
|
-
Spawn a `pr-comment-resolver` agent for each unresolved item.
|
|
25
|
+
Spawn a `systematic:workflow:pr-comment-resolver` agent for each unresolved item.
|
|
24
26
|
|
|
25
27
|
If there are 3 items, spawn 3 agents — one per item. Prefer running all agents in parallel; if the platform does not support parallel dispatch, run them sequentially respecting the dependency order from step 2.
|
|
26
28
|
|
|
@@ -52,9 +54,9 @@ GATE: STOP. Verify that the compound skill produced a solution document in `docs
|
|
|
52
54
|
|
|
53
55
|
### 6. Clean Up Completed Todos
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
Search both `.context/systematic/todos/` and legacy `todos/` for files with `done`, `resolved`, or `complete` status, then delete them to keep the todo list clean and actionable.
|
|
56
58
|
|
|
57
|
-
If a scratch directory was
|
|
59
|
+
If a per-run scratch directory was created at `.context/systematic/resolve-todo-parallel/<run-id>/`, and the user did not ask to inspect it, delete that specific `<run-id>/` directory after todo cleanup succeeds. Do not delete any other `.context/` subdirectories.
|
|
58
60
|
|
|
59
61
|
After cleanup, output a summary:
|
|
60
62
|
|
|
@@ -63,3 +65,4 @@ Todos resolved: [count]
|
|
|
63
65
|
Lessons documented: [path to solution doc, or "skipped"]
|
|
64
66
|
Todos cleaned up: [count deleted]
|
|
65
67
|
```
|
|
68
|
+
|