superpowers-mcp 6.0.2 → 6.2.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/README.ja.md +218 -0
- package/README.ko.md +218 -0
- package/README.md +26 -3
- package/README.zh-TW.md +27 -4
- package/out/server.js +15 -15
- package/package.json +5 -1
- package/skills/brainstorming/SKILL.md +1 -9
- package/skills/brainstorming/scripts/server.cjs +3 -2
- package/skills/brainstorming/visual-companion.md +7 -0
- package/skills/dispatching-parallel-agents/SKILL.md +0 -18
- package/skills/executing-plans/SKILL.md +6 -12
- package/skills/finishing-a-development-branch/SKILL.md +74 -114
- package/skills/receiving-code-review/SKILL.md +0 -8
- package/skills/requesting-code-review/SKILL.md +6 -14
- package/skills/subagent-driven-development/SKILL.md +314 -228
- package/skills/subagent-driven-development/implementer-prompt.md +6 -3
- package/skills/subagent-driven-development/re-review-prompt.md +106 -0
- package/skills/subagent-driven-development/scripts/review-package +11 -9
- package/skills/subagent-driven-development/scripts/review-package.ps1 +17 -10
- package/skills/subagent-driven-development/scripts/sdd-workspace +26 -8
- package/skills/subagent-driven-development/scripts/sdd-workspace.ps1 +29 -4
- package/skills/subagent-driven-development/scripts/task-brief +4 -3
- package/skills/subagent-driven-development/scripts/task-brief.ps1 +5 -4
- package/skills/subagent-driven-development/task-reviewer-prompt.md +3 -5
- package/skills/systematic-debugging/SKILL.md +1 -14
- package/skills/systematic-debugging/find-polluter.ps1 +20 -4
- package/skills/systematic-debugging/find-polluter.sh +12 -3
- package/skills/test-driven-development/SKILL.md +10 -61
- package/skills/test-driven-development/writing-good-tests.md +198 -0
- package/skills/using-git-worktrees/SKILL.md +9 -44
- package/skills/using-superpowers/references/antigravity-tools.md +1 -1
- package/skills/using-superpowers/references/codex-tools.md +1 -1
- package/skills/using-superpowers/references/gemini-tools.md +44 -32
- package/skills/verification-before-completion/SKILL.md +0 -19
- package/skills/writing-plans/SKILL.md +0 -6
- package/skills/writing-skills/SKILL.md +1 -11
- package/skills/test-driven-development/testing-anti-patterns.md +0 -299
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "superpowers-mcp",
|
|
3
3
|
"displayName": "Superpowers MCP",
|
|
4
4
|
"description": "Superpowers skills library (TDD, debugging, collaboration workflows) as an MCP server for VSCode and Antigravity",
|
|
5
|
-
"version": "6.0
|
|
5
|
+
"version": "6.2.0",
|
|
6
6
|
"publisher": "superpowers",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"repository": {
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"out/server.js",
|
|
30
30
|
"skills"
|
|
31
31
|
],
|
|
32
|
+
"overrides": {
|
|
33
|
+
"@hono/node-server": ">=2.0.5",
|
|
34
|
+
"fast-uri": ">=3.1.4"
|
|
35
|
+
},
|
|
32
36
|
"scripts": {
|
|
33
37
|
"build": "node esbuild.js --production",
|
|
34
38
|
"watch": "node esbuild.js --watch",
|
|
@@ -77,6 +77,7 @@ digraph brainstorming {
|
|
|
77
77
|
- Propose 2-3 different approaches with trade-offs
|
|
78
78
|
- Present options conversationally with your recommendation and reasoning
|
|
79
79
|
- Lead with your recommended option and explain why
|
|
80
|
+
- YAGNI ruthlessly - remove unnecessary features from every approach and design
|
|
80
81
|
|
|
81
82
|
**Presenting the design:**
|
|
82
83
|
|
|
@@ -130,15 +131,6 @@ Wait for the user's response. If they request changes, make them and re-run the
|
|
|
130
131
|
- Invoke the writing-plans skill to create a detailed implementation plan
|
|
131
132
|
- Do NOT invoke any other skill. writing-plans is the next step.
|
|
132
133
|
|
|
133
|
-
## Key Principles
|
|
134
|
-
|
|
135
|
-
- **One question at a time** - Don't overwhelm with multiple questions
|
|
136
|
-
- **Multiple choice preferred** - Easier to answer than open-ended when possible
|
|
137
|
-
- **YAGNI ruthlessly** - Remove unnecessary features from all designs
|
|
138
|
-
- **Explore alternatives** - Always propose 2-3 approaches before settling
|
|
139
|
-
- **Incremental validation** - Present design, get approval before moving on
|
|
140
|
-
- **Be flexible** - Go back and clarify when something doesn't make sense
|
|
141
|
-
|
|
142
134
|
## Visual Companion
|
|
143
135
|
|
|
144
136
|
A browser-based companion for showing mockups, diagrams, and visual options during brainstorming. Available as a tool — not a mode. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
|
|
@@ -535,9 +535,10 @@ function maybeOpenBrowser() {
|
|
|
535
535
|
if (clients.size > 0) return; // the user already opened it
|
|
536
536
|
const url = companionUrl(); // must carry the key or the gate 403s it
|
|
537
537
|
const cp = require('child_process');
|
|
538
|
-
// Operator-provided launcher: run
|
|
538
|
+
// Operator-provided launcher: run via execFile (no shell) so a malicious env var
|
|
539
|
+
// cannot inject commands through shell metacharacters.
|
|
539
540
|
if (process.env.BRAINSTORM_OPEN_CMD) {
|
|
540
|
-
try { cp.
|
|
541
|
+
try { cp.execFile(process.env.BRAINSTORM_OPEN_CMD, [url], () => {}); } catch (e) { /* best effort */ }
|
|
541
542
|
return;
|
|
542
543
|
}
|
|
543
544
|
// Platform launchers: pass the URL as an argv element via execFile (no shell),
|
|
@@ -79,6 +79,13 @@ For native PowerShell, use `scripts/start-server.ps1` with the same flags. It wr
|
|
|
79
79
|
scripts/start-server.sh --project-dir /path/to/project --open
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
+
**Gemini CLI:**
|
|
83
|
+
```bash
|
|
84
|
+
# Use --foreground and set is_background: true on your shell tool call
|
|
85
|
+
# so the process survives across turns
|
|
86
|
+
scripts/start-server.sh --project-dir /path/to/project --open --foreground
|
|
87
|
+
```
|
|
88
|
+
|
|
82
89
|
**Copilot CLI:**
|
|
83
90
|
```bash
|
|
84
91
|
# Use --foreground and start the server via the bash tool with mode: "async"
|
|
@@ -158,15 +158,6 @@ Agent 3 → Fix tool-approval-race-conditions.test.ts
|
|
|
158
158
|
|
|
159
159
|
**Integration:** All fixes independent, no conflicts, full suite green
|
|
160
160
|
|
|
161
|
-
**Time saved:** 3 problems solved in parallel vs sequentially
|
|
162
|
-
|
|
163
|
-
## Key Benefits
|
|
164
|
-
|
|
165
|
-
1. **Parallelization** - Multiple investigations happen simultaneously
|
|
166
|
-
2. **Focus** - Each agent has narrow scope, less context to track
|
|
167
|
-
3. **Independence** - Agents don't interfere with each other
|
|
168
|
-
4. **Speed** - 3 problems solved in time of 1
|
|
169
|
-
|
|
170
161
|
## Verification
|
|
171
162
|
|
|
172
163
|
After agents return:
|
|
@@ -174,12 +165,3 @@ After agents return:
|
|
|
174
165
|
2. **Check for conflicts** - Did agents edit same code?
|
|
175
166
|
3. **Run full suite** - Verify all fixes work together
|
|
176
167
|
4. **Spot check** - Agents can make systematic errors
|
|
177
|
-
|
|
178
|
-
## Real-World Impact
|
|
179
|
-
|
|
180
|
-
From debugging session (2025-10-03):
|
|
181
|
-
- 6 failures across 3 files
|
|
182
|
-
- 3 agents dispatched in parallel
|
|
183
|
-
- All investigations completed concurrently
|
|
184
|
-
- All fixes integrated successfully
|
|
185
|
-
- Zero conflicts between agent changes
|
|
@@ -11,15 +11,16 @@ Load plan, review critically, execute all tasks, report when complete.
|
|
|
11
11
|
|
|
12
12
|
**Announce at start:** "I'm using the executing-plans skill to implement this plan."
|
|
13
13
|
|
|
14
|
-
**Note:** Tell your human partner that Superpowers works much better with access to subagents
|
|
14
|
+
**Note:** Tell your human partner that Superpowers works much better with access to subagents (Claude Code, Codex CLI, Codex App, Copilot CLI, and Gemini CLI all qualify; see the per-platform tool refs in `../using-superpowers/references/`). If subagents are available, use superpowers:subagent-driven-development instead of this skill.
|
|
15
15
|
|
|
16
16
|
## The Process
|
|
17
17
|
|
|
18
18
|
### Step 1: Load and Review Plan
|
|
19
|
-
1.
|
|
20
|
-
2.
|
|
21
|
-
3.
|
|
22
|
-
4. If
|
|
19
|
+
1. Ensure an isolated workspace: use superpowers:using-git-worktrees to create one or verify the existing one
|
|
20
|
+
2. Read plan file
|
|
21
|
+
3. Review critically - identify any questions or concerns about the plan
|
|
22
|
+
4. If concerns: Raise them with your human partner before starting
|
|
23
|
+
5. If no concerns: Create todos for the plan items and proceed
|
|
23
24
|
|
|
24
25
|
### Step 2: Execute Tasks
|
|
25
26
|
|
|
@@ -61,10 +62,3 @@ After all tasks complete and verified:
|
|
|
61
62
|
- Reference skills when plan says to
|
|
62
63
|
- Stop when blocked, don't guess
|
|
63
64
|
- Never start implementation on main/master branch without explicit user consent
|
|
64
|
-
|
|
65
|
-
## Integration
|
|
66
|
-
|
|
67
|
-
**Required workflow skills:**
|
|
68
|
-
- **superpowers:using-git-worktrees** - Ensures isolated workspace (creates one or verifies existing)
|
|
69
|
-
- **superpowers:writing-plans** - Creates the plan this skill executes
|
|
70
|
-
- **superpowers:finishing-a-development-branch** - Complete development after all tasks
|
|
@@ -1,71 +1,58 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: finishing-a-development-branch
|
|
3
|
-
description: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work
|
|
3
|
+
description: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Finishing a Development Branch
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Guide completion of development work by presenting clear options and handling chosen workflow.
|
|
11
|
-
|
|
12
10
|
**Core principle:** Verify tests → Detect environment → Present options → Execute choice → Clean up.
|
|
13
11
|
|
|
14
12
|
**Announce at start:** "I'm using the finishing-a-development-branch skill to complete this work."
|
|
15
13
|
|
|
16
|
-
##
|
|
17
|
-
|
|
18
|
-
### Step 1: Verify Tests
|
|
14
|
+
## Step 1: Verify Tests
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
Run the project's full test suite (`npm test` / `cargo test` / `pytest` / `go test ./...`).
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
# Run project's test suite
|
|
24
|
-
npm test / cargo test / pytest / go test ./...
|
|
25
|
-
```
|
|
18
|
+
**If tests fail**, report the failures and stop — the menu comes after a green suite:
|
|
26
19
|
|
|
27
|
-
**If tests fail:**
|
|
28
20
|
```
|
|
29
21
|
Tests failing (<N> failures). Must fix before completing:
|
|
30
22
|
|
|
31
23
|
[Show failures]
|
|
32
|
-
|
|
33
|
-
Cannot proceed with merge/PR until tests pass.
|
|
34
24
|
```
|
|
35
25
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
**If tests pass:** Continue to Step 2.
|
|
26
|
+
**If tests pass:** continue to Step 2.
|
|
39
27
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
**Determine workspace state before presenting options:**
|
|
28
|
+
## Step 2: Detect Environment
|
|
43
29
|
|
|
44
30
|
```bash
|
|
45
31
|
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
|
46
32
|
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
|
33
|
+
# Capture now, while still inside the workspace — Step 5 changes directory
|
|
34
|
+
# before cleanup (Step 6) needs this value
|
|
35
|
+
WORKTREE_PATH=$(git rev-parse --show-toplevel)
|
|
47
36
|
```
|
|
48
37
|
|
|
49
38
|
This determines which menu to show and how cleanup works:
|
|
50
39
|
|
|
51
40
|
| State | Menu | Cleanup |
|
|
52
41
|
|-------|------|---------|
|
|
53
|
-
| `GIT_DIR == GIT_COMMON` (normal repo) | Standard
|
|
54
|
-
| `GIT_DIR != GIT_COMMON`, named branch | Standard
|
|
55
|
-
| `GIT_DIR != GIT_COMMON`, detached HEAD | Reduced
|
|
56
|
-
|
|
57
|
-
### Step 3: Determine Base Branch
|
|
42
|
+
| `GIT_DIR == GIT_COMMON` (normal repo) | Standard 3 options | No worktree to clean up |
|
|
43
|
+
| `GIT_DIR != GIT_COMMON`, named branch | Standard 3 options | Provenance-based (see Step 6) |
|
|
44
|
+
| `GIT_DIR != GIT_COMMON`, detached HEAD | Reduced 2 options (no merge) | Externally managed — leave in place |
|
|
58
45
|
|
|
59
|
-
|
|
60
|
-
# Try common base branches
|
|
61
|
-
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
|
|
62
|
-
```
|
|
46
|
+
## Step 3: Determine Base Branch
|
|
63
47
|
|
|
64
|
-
|
|
48
|
+
The base branch is whatever this work forked from — usually named in the
|
|
49
|
+
plan, the conversation, or the branch's upstream. If it is not already
|
|
50
|
+
known, ask: "This branch split from <your best guess> - is that correct?"
|
|
51
|
+
Confirm before merging: merging into the wrong base is expensive to undo.
|
|
65
52
|
|
|
66
|
-
|
|
53
|
+
## Step 4: Present Options
|
|
67
54
|
|
|
68
|
-
**Normal repo and named-branch worktree — present exactly these
|
|
55
|
+
**Normal repo and named-branch worktree — present exactly these 3 options:**
|
|
69
56
|
|
|
70
57
|
```
|
|
71
58
|
Implementation complete. What would you like to do?
|
|
@@ -73,28 +60,30 @@ Implementation complete. What would you like to do?
|
|
|
73
60
|
1. Merge back to <base-branch> locally
|
|
74
61
|
2. Push and create a Pull Request
|
|
75
62
|
3. Keep the branch as-is (I'll handle it later)
|
|
76
|
-
4. Discard this work
|
|
77
63
|
|
|
78
64
|
Which option?
|
|
79
65
|
```
|
|
80
66
|
|
|
81
|
-
**Detached HEAD — present exactly these
|
|
67
|
+
**Detached HEAD — present exactly these 2 options:**
|
|
82
68
|
|
|
83
69
|
```
|
|
84
70
|
Implementation complete. You're on a detached HEAD (externally managed workspace).
|
|
85
71
|
|
|
86
72
|
1. Push as new branch and create a Pull Request
|
|
87
73
|
2. Keep as-is (I'll handle it later)
|
|
88
|
-
3. Discard this work
|
|
89
74
|
|
|
90
75
|
Which option?
|
|
91
76
|
```
|
|
92
77
|
|
|
93
|
-
|
|
78
|
+
Present the menu exactly as written — concise, with every option coming
|
|
79
|
+
from the list above. Discarding the work happens only in response to your
|
|
80
|
+
human partner explicitly asking for it (see "If your human partner asks to
|
|
81
|
+
discard the work" below). Wait for their answer; the integration decision
|
|
82
|
+
is theirs.
|
|
94
83
|
|
|
95
|
-
|
|
84
|
+
## Step 5: Execute Choice
|
|
96
85
|
|
|
97
|
-
|
|
86
|
+
### Option 1: Merge Locally
|
|
98
87
|
|
|
99
88
|
```bash
|
|
100
89
|
# Get main repo root for CWD safety
|
|
@@ -108,34 +97,43 @@ git merge <feature-branch>
|
|
|
108
97
|
|
|
109
98
|
# Verify tests on merged result
|
|
110
99
|
<test command>
|
|
111
|
-
|
|
112
|
-
# Only after merge succeeds: cleanup worktree (Step 6), then delete branch
|
|
113
100
|
```
|
|
114
101
|
|
|
115
|
-
|
|
102
|
+
If tests fail on the merged result: stop, leave the worktree and branch in
|
|
103
|
+
place, and investigate — nothing has been pushed, so the merge is local
|
|
104
|
+
and recoverable.
|
|
105
|
+
|
|
106
|
+
Once the merged result is green: clean up the worktree (Step 6), then
|
|
107
|
+
delete the branch:
|
|
116
108
|
|
|
117
109
|
```bash
|
|
118
110
|
git branch -d <feature-branch>
|
|
119
111
|
```
|
|
120
112
|
|
|
121
|
-
|
|
113
|
+
### Option 2: Push and Create PR
|
|
122
114
|
|
|
123
115
|
```bash
|
|
124
|
-
# Push branch
|
|
125
116
|
git push -u origin <feature-branch>
|
|
117
|
+
# From a detached HEAD, name the new branch on the remote:
|
|
118
|
+
# git push origin HEAD:refs/heads/<new-branch>
|
|
126
119
|
```
|
|
127
120
|
|
|
128
|
-
|
|
121
|
+
Then create the pull/merge request against <base-branch> with the forge's
|
|
122
|
+
tooling — its CLI if one is available, or the creation URL most forges
|
|
123
|
+
print when you push — following the repo's PR template and conventions if
|
|
124
|
+
present, and report the URL to your human partner.
|
|
125
|
+
|
|
126
|
+
Keep the worktree — your human partner iterates on PR feedback there.
|
|
129
127
|
|
|
130
|
-
|
|
128
|
+
### Option 3: Keep As-Is
|
|
131
129
|
|
|
132
130
|
Report: "Keeping branch <name>. Worktree preserved at <path>."
|
|
133
131
|
|
|
134
|
-
|
|
132
|
+
### If your human partner asks to discard the work
|
|
135
133
|
|
|
136
|
-
|
|
134
|
+
This path exists only as a response to an explicit request to throw the
|
|
135
|
+
work away. Confirm first:
|
|
137
136
|
|
|
138
|
-
**Confirm first:**
|
|
139
137
|
```
|
|
140
138
|
This will permanently delete:
|
|
141
139
|
- Branch <name>
|
|
@@ -145,41 +143,39 @@ This will permanently delete:
|
|
|
145
143
|
Type 'discard' to confirm.
|
|
146
144
|
```
|
|
147
145
|
|
|
148
|
-
Wait for exact confirmation.
|
|
146
|
+
Wait for that exact confirmation. When it arrives:
|
|
149
147
|
|
|
150
|
-
If confirmed:
|
|
151
148
|
```bash
|
|
152
149
|
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
|
|
153
150
|
cd "$MAIN_ROOT"
|
|
154
151
|
```
|
|
155
152
|
|
|
156
|
-
Then
|
|
153
|
+
Then clean up the worktree (Step 6) and force-delete the branch:
|
|
154
|
+
|
|
157
155
|
```bash
|
|
158
156
|
git branch -D <feature-branch>
|
|
159
157
|
```
|
|
160
158
|
|
|
161
|
-
|
|
159
|
+
## Step 6: Cleanup Workspace
|
|
162
160
|
|
|
163
|
-
**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
WORKTREE_PATH=$(git rev-parse --show-toplevel)
|
|
169
|
-
```
|
|
161
|
+
**Runs for Option 1 and confirmed discards.** Options 2 and 3 always
|
|
162
|
+
preserve the worktree. Both callers have already changed directory to the
|
|
163
|
+
main repo root — worktree removal must run from outside the worktree —
|
|
164
|
+
and use the `GIT_DIR`/`GIT_COMMON`/`WORKTREE_PATH` values captured in
|
|
165
|
+
Step 2, from before that directory change.
|
|
170
166
|
|
|
171
167
|
**If `GIT_DIR == GIT_COMMON`:** Normal repo, no worktree to clean up. Done.
|
|
172
168
|
|
|
173
|
-
**If
|
|
169
|
+
**If `WORKTREE_PATH` is under `.worktrees/` or `worktrees/`:** Superpowers
|
|
170
|
+
created this worktree — we own cleanup:
|
|
174
171
|
|
|
175
172
|
```bash
|
|
176
|
-
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
|
|
177
|
-
cd "$MAIN_ROOT"
|
|
178
173
|
git worktree remove "$WORKTREE_PATH"
|
|
179
174
|
git worktree prune # Self-healing: clean up any stale registrations
|
|
180
175
|
```
|
|
181
176
|
|
|
182
|
-
**Otherwise:** The host environment
|
|
177
|
+
**Otherwise:** The host environment owns this workspace — leave it in
|
|
178
|
+
place. If your platform provides a workspace-exit tool, use it.
|
|
183
179
|
|
|
184
180
|
## Quick Reference
|
|
185
181
|
|
|
@@ -188,54 +184,18 @@ git worktree prune # Self-healing: clean up any stale registrations
|
|
|
188
184
|
| 1. Merge locally | yes | - | - | yes |
|
|
189
185
|
| 2. Create PR | - | yes | yes | - |
|
|
190
186
|
| 3. Keep as-is | - | - | yes | - |
|
|
191
|
-
|
|
|
192
|
-
|
|
193
|
-
## Common
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
|
|
207
|
-
**Deleting branch before removing worktree**
|
|
208
|
-
- **Problem:** `git branch -d` fails because worktree still references the branch
|
|
209
|
-
- **Fix:** Merge first, remove worktree, then delete branch
|
|
210
|
-
|
|
211
|
-
**Running git worktree remove from inside the worktree**
|
|
212
|
-
- **Problem:** Command fails silently when CWD is inside the worktree being removed
|
|
213
|
-
- **Fix:** Always `cd` to main repo root before `git worktree remove`
|
|
214
|
-
|
|
215
|
-
**Cleaning up harness-owned worktrees**
|
|
216
|
-
- **Problem:** Removing a worktree the harness created causes phantom state
|
|
217
|
-
- **Fix:** Only clean up worktrees under `.worktrees/` or `worktrees/`
|
|
218
|
-
|
|
219
|
-
**No confirmation for discard**
|
|
220
|
-
- **Problem:** Accidentally delete work
|
|
221
|
-
- **Fix:** Require typed "discard" confirmation
|
|
222
|
-
|
|
223
|
-
## Red Flags
|
|
224
|
-
|
|
225
|
-
**Never:**
|
|
226
|
-
- Proceed with failing tests
|
|
227
|
-
- Merge without verifying tests on result
|
|
228
|
-
- Delete work without confirmation
|
|
229
|
-
- Force-push without explicit request
|
|
230
|
-
- Remove a worktree before confirming merge success
|
|
231
|
-
- Clean up worktrees you didn't create (provenance check)
|
|
232
|
-
- Run `git worktree remove` from inside the worktree
|
|
233
|
-
|
|
234
|
-
**Always:**
|
|
235
|
-
- Verify tests before offering options
|
|
236
|
-
- Detect environment before presenting menu
|
|
237
|
-
- Present exactly 4 options (or 3 for detached HEAD)
|
|
238
|
-
- Get typed confirmation for Option 4
|
|
239
|
-
- Clean up worktree for Options 1 & 4 only
|
|
240
|
-
- `cd` to main repo root before worktree removal
|
|
241
|
-
- Run `git worktree prune` after removal
|
|
187
|
+
| Discard (explicit request only) | - | - | - | yes (force) |
|
|
188
|
+
|
|
189
|
+
## Common Rationalizations
|
|
190
|
+
|
|
191
|
+
| Excuse | Reality |
|
|
192
|
+
|--------|---------|
|
|
193
|
+
| "Tests passed earlier this session" | Run the suite on the tree you are about to integrate. A green run only proves the tree it ran on. |
|
|
194
|
+
| "They obviously want it merged" | Integration is your human partner's decision. Present the menu and wait. |
|
|
195
|
+
| "They seem done with this feature — I'll offer to discard it" | The menu is complete as written. Discard happens only when your human partner asks for it in so many words. |
|
|
196
|
+
| "'Yeah, get rid of it' counts as confirmation" | Only the typed word `discard` authorizes deletion. |
|
|
197
|
+
| "The PR is up, so the worktree is clutter now" | PR feedback gets fixed in that worktree. It stays until the work lands. |
|
|
198
|
+
| "This other worktree looks stale — I'll clean it too" | Clean up only worktrees under `.worktrees/` or `worktrees/`. Everything else belongs to the host. |
|
|
199
|
+
| "The merged-result failure is probably flaky" | A failing merged result stops everything. Branch and worktree stay put while you investigate. |
|
|
200
|
+
| "The base branch is obviously main" | Confirm the fork point or ask. Merging into the wrong base is expensive to undo. |
|
|
201
|
+
| "The push was rejected — force-push will fix it" | A rejected push means the remote moved. Investigate; force-push only on your human partner's explicit request. |
|
|
@@ -203,11 +203,3 @@ You understand 1,2,3,6. Unclear on 4,5.
|
|
|
203
203
|
## GitHub Thread Replies
|
|
204
204
|
|
|
205
205
|
When replying to inline review comments on GitHub, reply in the comment thread (`gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies`), not as a top-level PR comment.
|
|
206
|
-
|
|
207
|
-
## The Bottom Line
|
|
208
|
-
|
|
209
|
-
**External feedback = suggestions to evaluate, not orders to follow.**
|
|
210
|
-
|
|
211
|
-
Verify. Question. Then implement.
|
|
212
|
-
|
|
213
|
-
No performative agreement. Technical rigor always.
|
|
@@ -5,7 +5,7 @@ description: Use when completing tasks, implementing major features, or before m
|
|
|
5
5
|
|
|
6
6
|
# Requesting Code Review
|
|
7
7
|
|
|
8
|
-
Dispatch a code reviewer subagent to catch issues before they cascade. The reviewer gets precisely crafted context for evaluation — never your session's history.
|
|
8
|
+
Dispatch a code reviewer subagent to catch issues before they cascade. The reviewer gets precisely crafted context for evaluation — never your session's history.
|
|
9
9
|
|
|
10
10
|
**Core principle:** Review early, review often.
|
|
11
11
|
|
|
@@ -72,20 +72,12 @@ You: [Fix progress indicators]
|
|
|
72
72
|
[Continue to Task 3]
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
##
|
|
75
|
+
## Common Rationalizations
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
**Executing Plans:**
|
|
83
|
-
- Review after each task or at natural checkpoints
|
|
84
|
-
- Get feedback, apply, continue
|
|
85
|
-
|
|
86
|
-
**Ad-Hoc Development:**
|
|
87
|
-
- Review before merge
|
|
88
|
-
- Review when stuck
|
|
77
|
+
| Excuse | Reality |
|
|
78
|
+
|--------|---------|
|
|
79
|
+
| "I'll just review the diff myself instead of dispatching a reviewer" | You're the coordinator — reviewing the diff inline burns the context window you need to keep driving the work. Dispatch a reviewer subagent: the diff and the evaluation live in its context, and only the findings come back to you. |
|
|
80
|
+
| "The reviewer needs my whole session history to understand the change" | Hand it precisely crafted context, never your session's history. That keeps the reviewer on the work product, not your thought process. |
|
|
89
81
|
|
|
90
82
|
## Red Flags
|
|
91
83
|
|