You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a proactive warning when force-pushing a branch that is >5 commits
behind its base. Also extends the review-open-prs skill report with a
new "Stale Branches (Drift Risk)" section that flags PRs likely failing
CI because the base moved (e.g., file renames in merged PRs).
Motivating incident: 2026-05-20 — DOJ-4134 atomic migration moved
src/components/agent/ChatWidget.tsx. PRs #2105, #2107, #1713 in dojo-os
each spent ~10 min diagnosing the same ENOENT failure that a 30-second
rebase resolved. This package surfaces the pattern proactively.
- hooks/pre-bash-stale-push.sh (new, warn-only)
- hooks/pre-bash.sh (wire new hook before rule loop, after kill-switch)
- skills/review-open-prs/SKILL.md (new section + Action 2a rebase batch)
- hooks/test-hooks.sh (6 new hermetic tests; 216/216 pass, was 210/210)
- package.json + plugin.json + marketplace.json + README + CHANGELOG
bumped 1.15.0 → 1.16.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
"description": "The disciplined dev lifecycle — implement issues, review PRs, sync releases, test E2E, manage sessions, and stash secrets via OS-native prompts. One plugin to make no mistakes.",
6
6
"owner": {
7
7
"name": "Luis Andres Pena Castillo",
@@ -11,7 +11,7 @@
11
11
{
12
12
"name": "make-no-mistakes",
13
13
"description": "Dev lifecycle orchestrator: disciplined Linear issue execution with worktree isolation, PR review with Greptile gating, team release sync, E2E test generation and execution, test suite previewer, security pentesting, MoSCoW + RICE prioritization, cross-platform secret stash via OS-native GUI prompts (zenity / kdialog / osascript / Get-Credential), and session management. 18 commands, 6 auto-activating skills, 2 specialized agents.",
Copy file name to clipboardExpand all lines: .claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "make-no-mistakes",
3
-
"version": "1.17.0",
3
+
"version": "1.18.0",
4
4
"description": "The disciplined dev lifecycle — implement issues, review PRs, sync releases, test E2E, manage sessions, stash secrets, and enforce manifest-driven tool-call hooks. One plugin to make no mistakes.",
Copy file name to clipboardExpand all lines: package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "@lapc506/make-no-mistakes",
3
-
"version": "1.17.0",
3
+
"version": "1.18.0",
4
4
"description": "The disciplined dev lifecycle — implement issues, review PRs, sync releases, test E2E, manage sessions, stash secrets, and enforce manifest-driven tool-call hooks (no SSH+DB, no manual prod, no minified build, no secret leaks, Slack format). OpenCode + Claude Code plugin.",
Copy file name to clipboardExpand all lines: skills/review-open-prs/SKILL.md
+51-1Lines changed: 51 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -198,8 +198,36 @@ PR #number — Title
198
198
URL
199
199
```
200
200
201
+
### My PRs — Stale Branches (Drift Risk)
202
+
PRs where the branch is >5 commits behind base AND has ANY failing CI check. These are likely failing because the base moved (e.g., a test file was moved/renamed in a merged PR but this branch still has the old path). Recommend a preventive rebase BEFORE more CI cycles burn.
203
+
204
+
**Investigate this section BEFORE the "CI Failures" section below** — stale-with-CI-fail is a likely false positive that can be resolved with a 30-second rebase. Pulling apart real test bugs from drift-induced failures is much faster when you've already ruled out drift.
205
+
206
+
For each candidate PR, collect the behind-by count using the GitHub Compare API (one call per PR; do this inside the per-PR loop in Step 5):
207
+
208
+
```bash
209
+
# Inside the per-PR loop in Step 5 — after fetching CI status:
If you can pattern-match the failing test path against files renamed in recent commits to `{base}` (e.g., `gh api repos/$ORG/<repo>/compare/${head_sha}...origin/${base_branch}` and grep `.files[].previous_filename`), call that out as "Likely cause: file renamed in merged PR #X".
228
+
201
229
### My PRs — CI Failures
202
-
PRs with any check conclusion=FAILURE:
230
+
PRs with any check conclusion=FAILURE that are NOT already listed under "Stale Branches" above:
203
231
```
204
232
PR #number — Title
205
233
Failed checks: list of failed check names
@@ -281,6 +309,28 @@ Rules:
281
309
- If unsure who to CC, ask the user
282
310
- Do NOT use unicode bullet points (no `•`, `◦`, `▪`) — use `-` at all levels
283
311
312
+
### Action 2a: Rebase stale branches (drift risk)
313
+
314
+
List every PR from "Stale Branches (Drift Risk)". These should be addressed BEFORE Action 3 (CI Failures) because the rebase often resolves the failures for free:
315
+
316
+
```
317
+
The following PRs are >5 commits behind base AND have failing CI. The failures
318
+
are likely caused by the base moving (e.g., a test file was renamed in a merged
319
+
PR). A rebase will likely make them go green:
320
+
321
+
repo#number — Title — {N} commits behind {base}
322
+
...
323
+
324
+
Shall I rebase them against the base branch? (yes/no/pick)
325
+
```
326
+
327
+
If the user says "yes", for each stale PR:
328
+
1. Check out the branch locally or in a worktree
329
+
2.`git fetch origin <base>`
330
+
3.`git rebase origin/<base>` (auto-resolve trivial conflicts; flag manual ones)
331
+
4.`git push --force-with-lease` (with user confirmation)
332
+
5. Re-poll CI after a few minutes — if it's now green, the failure was drift; if it's still red, escalate to Action 3.
333
+
284
334
### Action 2: Fix merge conflicts / rebase
285
335
286
336
List every PR from "Merge Conflicts / Needs Rebase":
0 commit comments