Skip to content

release: v1.8.0 — superpowers integration + wacli --follow protection#153

Merged
auroracapital merged 1 commit intomainfrom
release/bump-1.8.0
Apr 26, 2026
Merged

release: v1.8.0 — superpowers integration + wacli --follow protection#153
auroracapital merged 1 commit intomainfrom
release/bump-1.8.0

Conversation

@auroracapital
Copy link
Copy Markdown
Collaborator

@auroracapital auroracapital commented Apr 26, 2026

Summary

Bump to v1.8.0. Two changes:

Added — Superpowers integration

Three ops skills now invoke superpowers:* skills at well-defined checkpoints:

  • /ops:ops-mergesuperpowers:verification-before-completion + superpowers:finishing-a-development-branch before each final merge decision (after the fixer reports green). Forces evidence-based merging and a structured cleanup choice.
  • /ops:ops-orchestratesuperpowers:dispatching-parallel-agents when launching 2+ parallel teammates per wave. Enforces file-ownership boundaries and task-independence checks.
  • /ops:ops-triagesuperpowers:systematic-debugging during root-cause investigation. Makes fix agents target the real defect, not the symptom.

/ops:setup Step 2b.5 now installs superpowers (mirrors the existing GSD install step). Skipping is fine — without superpowers, those checkpoints become no-ops.

Fixed — bin/ops-autofix killed the persistent wacli sync --follow daemon

The wacli-health auto-fix unconditionally killed any process holding the wacli store lock, despite a comment promising a >2 min age check that was never implemented. wacli sync --follow legitimately holds the lock for its entire lifetime to stream live messages, so every /ops:ops-doctor invocation cold-restarted the keepalive and broke message reception.

  • Skips kill outright when the lock holder's command matches wacli sync --follow.
  • Implements the >2 min age check the comment promised, parsing ps etime formats SS, MM:SS, HH:MM:SS, DD-HH:MM:SS.
  • Logs cmd + age when killing for traceability, and logs skips with a reason (young vs --follow) instead of silently passing through.

Test plan

  • tests/run-all.sh — 9 suites, all pass
  • tests/test-no-secrets.sh — 11 passed, 0 failed
  • bash -n bin/ops-autofix — syntax OK
  • Live dry-run with --follow running: correctly skipped with "lock held by persistent --follow daemon"
  • Live dry-run with young backfill holding lock: correctly skipped with "is young (8s) — not stale"

Closes the autofix PR (#fix/autofix-wacli-follow-protection — folded into this release).


Open in Devin Review

Note

Medium Risk
Touches operational automation: bin/ops-autofix process-kill logic is changed and could impact WhatsApp recovery behavior if ps parsing or lock detection differs across environments; the rest is documentation/setup flow changes.

Overview
Bumps the plugin version to 1.8.0 and documents a new release in CHANGELOG.md.

Adds Superpowers guardrail checkpoints to /ops:ops-merge, /ops:ops-orchestrate, and /ops:ops-triage, and extends /ops:setup with an optional Step 2b.5 to detect/install the superpowers plugin (with a claude CLI path and a git-clone fallback).

Fixes bin/ops-autofix WhatsApp wacli-health repair logic to avoid killing the legitimate wacli sync --follow lock 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

    • Added Superpowers guardrails to merge, orchestrate, and triage workflows for enhanced operational safety checkpoints.
    • Added Superpowers plugin installation option to the setup wizard.
  • Bug Fixes

    • Improved lock remediation with smarter process detection—no longer terminates certain persistent processes; uses age-based criteria for termination decisions.

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.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 26, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8d5ae093-70b8-4f3c-b523-2e1937815c7f

📥 Commits

Reviewing files that changed from the base of the PR and between c2f7fa9 and 1acfe0b.

📒 Files selected for processing (7)
  • claude-ops/.claude-plugin/plugin.json
  • claude-ops/CHANGELOG.md
  • claude-ops/bin/ops-autofix
  • claude-ops/skills/ops-merge/SKILL.md
  • claude-ops/skills/ops-orchestrate/SKILL.md
  • claude-ops/skills/ops-triage/SKILL.md
  • claude-ops/skills/setup/SKILL.md

📝 Walkthrough

Walkthrough

This 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 wacli sync --follow processes and introduce stale process detection using ps etime parsing with a 2-minute threshold.

Changes

Cohort / File(s) Summary
Release & Documentation
claude-ops/.claude-plugin/plugin.json, claude-ops/CHANGELOG.md
Version bump to 1.8.0 with changelog documenting superpowers integration, setup step for plugin installation, and ops-autofix lock-holder staling improvements.
Lock-Holder Remediation
claude-ops/bin/ops-autofix
Enhanced channel-lock fix to skip terminating wacli sync --follow processes, parse ps etime output in multiple formats, and only kill lock-holders exceeding 120 seconds age; adds detailed logging for both actions and skip decisions.
Guardrail Checkpoints
claude-ops/skills/ops-merge/SKILL.md, claude-ops/skills/ops-orchestrate/SKILL.md, claude-ops/skills/ops-triage/SKILL.md
Adds explicit superpowers integration steps requiring checkpoint-driven invocations of verification, parallel-dispatch, and systematic-debugging superpowers at key workflow decision points.
Companion Plugin Setup
claude-ops/skills/setup/SKILL.md
New installation wizard step for superpowers plugin with marketplace CLI installation, git clone fallback, skip option, and state persistence in preferences.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • PR #44: Modifies bin/ops-autofix with lock-holder and stale process detection logic (direct code-level continuation).
  • PR #142: Updates plugin.json version field for release management (same release versioning pattern).
  • PR #32: Modifies plugin.json and setup/SKILL.md for companion-plugin installation workflow (overlapping file changes).

Poem

🐰 Superpowers bloom in every skill today,
Merge gates verify, orchestrators sway,
Stale locks surrender to the age-aware way,
Setup guides the dance with CLI and clone's display,
Version 1.8.0 hops into play! 🌟

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/bump-1.8.0

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@auroracapital auroracapital merged commit 2c9191b into main Apr 26, 2026
6 of 7 checks passed
@auroracapital auroracapital deleted the release/bump-1.8.0 branch April 26, 2026 04:07
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

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 ' ')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1acfe0b. Configure here.

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

View 4 additional findings in Devin Review.

Open in Devin Review

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 ' ')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 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.

Suggested change
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 "")
Open in Devin Review

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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 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.

Suggested change
claude plugin install superpowers@superpowers-marketplace 2>/dev/null
claude plugin install superpowers@obra-superpowers-marketplace 2>/dev/null
Open in Devin Review

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"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 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.

Suggested change
SP_MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/superpowers-marketplace"
SP_MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/obra-superpowers-marketplace"
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant