Compare commits

..

1 Commits

Author SHA1 Message Date
Jesse Vincent bac79da8f1 docs: add Qwen Code install instructions to README
Rebased from PR #2108 onto the reworked README. Differences from the PR:
the Hermes TOC entry and Quickstart-line changes are obsolete (the v6.3.0
README rework already added the former and removed the latter), and the
Hermes post-compaction caveat stays: .hermes-plugin injects the bootstrap
only on is_first_turn, so the caveat is still accurate.

Install/update commands and the acceptance transcript are from PR #2108
(@arittr, tested interactively on Qwen Code).

Co-authored-by: Drew Ritter <arittr@users.noreply.github.com>
2026-08-12 23:35:41 +00:00
3 changed files with 17 additions and 29 deletions
+17
View File
@@ -20,6 +20,7 @@ Superpowers is a complete software development methodology for your coding agent
- [Kimi Code](#kimi-code)
- [OpenCode](#opencode)
- [Pi](#pi)
- [Qwen Code](#qwen-code)
- [Hermes Agent](#hermes-agent)
- [The Basic Workflow](#the-basic-workflow)
- [Community](#community)
@@ -246,6 +247,22 @@ pi -e /path/to/superpowers
The Pi package loads the Superpowers skills and a small extension that injects the `using-superpowers` bootstrap at session startup and again after compaction. Pi has native skills, so no compatibility `Skill` tool is required. Subagent and task-list tools remain optional Pi companion packages.
### Qwen Code
Qwen Code installs plugins from Claude Code marketplaces directly.
- Install the plugin from this repository, and pick `superpowers` when prompted:
```bash
qwen extensions install obra/superpowers
```
- Update later:
```bash
qwen extensions update superpowers
```
### Hermes Agent
Install Superpowers as a Hermes plugin from this repository:
@@ -22,11 +22,6 @@ head=$3
git rev-parse --verify --quiet "$base" >/dev/null || { echo "bad BASE: $base" >&2; exit 2; }
git rev-parse --verify --quiet "$head" >/dev/null || { echo "bad HEAD: $head" >&2; exit 2; }
# Range guards (exit 3): a wrong-branch HEAD yields a range that is empty or
# not rooted at BASE; either would silently produce a bogus review package.
git merge-base --is-ancestor "$base" "$head" || { echo "HEAD is not a descendant of BASE: ${base}..${head}" >&2; exit 3; }
[ "$(git rev-list --count "${base}..${head}")" -gt 0 ] || { echo "empty commit range: ${base}..${head}" >&2; exit 3; }
if [ $# -eq 4 ]; then
out=$4
else
-24
View File
@@ -165,30 +165,6 @@ PLAN
echo " got: $rp_explicit"
fi
# --- range guards: BASE must be an ancestor of HEAD, range must be non-empty ---
local divergent
divergent="$(cd "$repo" && git "${git_id[@]}" commit-tree 'HEAD~1^{tree}' -p 'HEAD~1' -m divergent)"
rc=0
local guard_err
guard_err="$(cd "$repo" && "$SDD_SCRIPTS/review-package" plan-a.md "$divergent" HEAD 2>&1 >/dev/null)" || rc=$?
if [[ "$rc" -eq 3 && "$guard_err" == *"not a descendant"* ]]; then
pass "review-package rejects a BASE that is not an ancestor of HEAD with exit 3"
else
fail "review-package rejects a BASE that is not an ancestor of HEAD with exit 3"
echo " exit: $rc"
echo " stderr: $guard_err"
fi
rc=0
guard_err="$(cd "$repo" && "$SDD_SCRIPTS/review-package" plan-a.md HEAD HEAD 2>&1 >/dev/null)" || rc=$?
if [[ "$rc" -eq 3 && "$guard_err" == *"empty commit range"* ]]; then
pass "review-package rejects an empty BASE..HEAD range with exit 3"
else
fail "review-package rejects an empty BASE..HEAD range with exit 3"
echo " exit: $rc"
echo " stderr: $guard_err"
fi
# --- Worktree isolation: a linked worktree resolves its own workspace ---
local wt="$TEST_ROOT/wt"
( cd "$repo" && git worktree add -q "$wt" -b wt-feature )