release: v1.8.0 — superpowers integration + wacli --follow protection#153
release: v1.8.0 — superpowers integration + wacli --follow protection#153auroracapital merged 1 commit intomainfrom
Conversation
Added: - Superpowers integration across /ops:ops-merge, /ops:ops-orchestrate, /ops:ops-triage at well-defined checkpoints (verification-before- completion, finishing-a-development-branch, dispatching-parallel-agents, systematic-debugging). - /ops:setup Step 2b.5 installs the superpowers plugin so the new checkpoints actually fire (mirrors the existing GSD install step). Fixed: - bin/ops-autofix wacli-health no longer kills the legitimate `wacli sync --follow` daemon. Adds a real >2 min age check (parsing ps etime), skips --follow by command match, logs cmd + age when killing, and logs skips with a reason.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
📝 WalkthroughWalkthroughThis release (v1.8.0) integrates superpowers-based guardrails throughout the ops plugin by adding checkpoint-driven superpower invocations in merge gating, parallel orchestration, and triage workflows. It introduces a new setup step for optional superpowers plugin installation via marketplace CLI with git clone fallback. It also fixes lock-holder remediation in ops-autofix to preserve long-running Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.
Reviewed by Cursor Bugbot for commit 1acfe0b. Configure here.
| kill "$LOCK_PID" 2>/dev/null; sleep 2 | ||
| kill -0 "$LOCK_PID" 2>/dev/null && kill -9 "$LOCK_PID" 2>/dev/null | ||
| LOCK_CMD=$(ps -p "$LOCK_PID" -o command= 2>/dev/null || echo "") | ||
| LOCK_ETIME=$(ps -p "$LOCK_PID" -o etime= 2>/dev/null | tr -d ' ') |
There was a problem hiding this comment.
Missing error fallback causes script abort under pipefail
High Severity
The LOCK_ETIME assignment lacks an || echo "" fallback, unlike the adjacent LOCK_CMD line. The script runs under set -euo pipefail, so if ps fails (e.g., the process dies between the kill -0 check on line 201 and this ps call), pipefail propagates the non-zero exit through the tr pipeline, and set -e aborts the entire autofix script. This kills the whole /ops:ops-doctor run on a benign race condition.
Reviewed by Cursor Bugbot for commit 1acfe0b. Configure here.
| kill "$LOCK_PID" 2>/dev/null; sleep 2 | ||
| kill -0 "$LOCK_PID" 2>/dev/null && kill -9 "$LOCK_PID" 2>/dev/null | ||
| LOCK_CMD=$(ps -p "$LOCK_PID" -o command= 2>/dev/null || echo "") | ||
| LOCK_ETIME=$(ps -p "$LOCK_PID" -o etime= 2>/dev/null | tr -d ' ') |
There was a problem hiding this comment.
🔴 Missing || echo "" on LOCK_ETIME causes script abort under set -eo pipefail
The LOCK_ETIME assignment at line 203 lacks error handling, unlike the LOCK_CMD line directly above it (line 202 has || echo ""). The script runs with set -euo pipefail (claude-ops/bin/ops-autofix:5). If the lock-holder process dies between the kill -0 check (line 201) and the ps -o etime= call (line 203), ps exits non-zero, pipefail propagates that exit code through the pipe to tr, and set -e aborts the entire script. This kills all remaining autofix tasks (channel-health continuation, slack-mcp, vercel-mcp) silently.
| LOCK_ETIME=$(ps -p "$LOCK_PID" -o etime= 2>/dev/null | tr -d ' ') | |
| LOCK_ETIME=$(ps -p "$LOCK_PID" -o etime= 2>/dev/null | tr -d ' ' || echo "") |
Was this helpful? React with 👍 or 👎 to provide feedback.
|
|
||
| ```bash | ||
| claude plugin marketplace add obra/superpowers-marketplace 2>/dev/null && \ | ||
| claude plugin install superpowers@superpowers-marketplace 2>/dev/null |
There was a problem hiding this comment.
🔴 Superpowers marketplace ID missing obra- org prefix — install will fail
The claude plugin install command uses superpowers@superpowers-marketplace but the established naming convention is <plugin>@<org>-<repo> (slash → dash). The GSD install (claude-ops/skills/setup/SKILL.md:322) uses gsd@gsd-build-get-shit-done for marketplace gsd-build/get-shit-done, and claude-ops itself (claude-ops/README.md:140) uses ops@lifecycle-innovations-limited-claude-ops. Following this pattern, obra/superpowers-marketplace should yield superpowers@obra-superpowers-marketplace. The same error appears in the fallback directory at line 373 (superpowers-marketplace instead of obra-superpowers-marketplace), so both the primary install path and the git-clone fallback will fail to register the plugin correctly.
| claude plugin install superpowers@superpowers-marketplace 2>/dev/null | |
| claude plugin install superpowers@obra-superpowers-marketplace 2>/dev/null |
Was this helpful? React with 👍 or 👎 to provide feedback.
| Fallback if `claude` CLI is not on PATH: | ||
|
|
||
| ```bash | ||
| SP_MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/superpowers-marketplace" |
There was a problem hiding this comment.
🔴 Superpowers fallback clone directory missing obra- org prefix
The fallback git clone directory at line 373 uses superpowers-marketplace but should be obra-superpowers-marketplace to match the marketplace ID convention used by claude plugin install. Compare with the GSD fallback at claude-ops/skills/setup/SKILL.md:329 which correctly uses gsd-build-get-shit-done. The mismatched directory means even the fallback path won't make the plugin discoverable to claude plugin install.
| SP_MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/superpowers-marketplace" | |
| SP_MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/obra-superpowers-marketplace" |
Was this helpful? React with 👍 or 👎 to provide feedback.


Summary
Bump to v1.8.0. Two changes:
Added — Superpowers integration
Three ops skills now invoke
superpowers:*skills at well-defined checkpoints:/ops:ops-merge→superpowers:verification-before-completion+superpowers:finishing-a-development-branchbefore each final merge decision (after the fixer reports green). Forces evidence-based merging and a structured cleanup choice./ops:ops-orchestrate→superpowers:dispatching-parallel-agentswhen launching 2+ parallel teammates per wave. Enforces file-ownership boundaries and task-independence checks./ops:ops-triage→superpowers:systematic-debuggingduring root-cause investigation. Makes fix agents target the real defect, not the symptom./ops:setupStep 2b.5 now installssuperpowers(mirrors the existing GSD install step). Skipping is fine — without superpowers, those checkpoints become no-ops.Fixed —
bin/ops-autofixkilled the persistentwacli sync --followdaemonThe
wacli-healthauto-fix unconditionally killed any process holding the wacli store lock, despite a comment promising a>2 minage check that was never implemented.wacli sync --followlegitimately holds the lock for its entire lifetime to stream live messages, so every/ops:ops-doctorinvocation cold-restarted the keepalive and broke message reception.wacli sync --follow.ps etimeformatsSS,MM:SS,HH:MM:SS,DD-HH:MM:SS.--follow) instead of silently passing through.Test plan
tests/run-all.sh— 9 suites, all passtests/test-no-secrets.sh— 11 passed, 0 failedbash -n bin/ops-autofix— syntax OK--followrunning: correctly skipped with "lock held by persistent --follow daemon"Closes the autofix PR (#fix/autofix-wacli-follow-protection — folded into this release).
Note
Medium Risk
Touches operational automation:
bin/ops-autofixprocess-kill logic is changed and could impact WhatsApp recovery behavior ifpsparsing or lock detection differs across environments; the rest is documentation/setup flow changes.Overview
Bumps the plugin version to
1.8.0and documents a new release inCHANGELOG.md.Adds Superpowers guardrail checkpoints to
/ops:ops-merge,/ops:ops-orchestrate, and/ops:ops-triage, and extends/ops:setupwith an optional Step 2b.5 to detect/install thesuperpowersplugin (with aclaudeCLI path and a git-clone fallback).Fixes
bin/ops-autofixWhatsAppwacli-healthrepair logic to avoid killing the legitimatewacli sync --followlock holder and to only kill other lock holders when their process age exceeds 2 minutes, with improved skip/kill logging for traceability.Reviewed by Cursor Bugbot for commit 1acfe0b. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit
Release 1.8.0
New Features
Bug Fixes