{"id":47301524,"url":"https://github.com/ogrodev/supipowers","last_synced_at":"2026-05-17T21:01:14.235Z","repository":{"id":343619971,"uuid":"1167209383","full_name":"ogrodev/supipowers","owner":"ogrodev","description":"Agentic workflows for oh-my-pi. Plan features, orchestrate sub-agents, run quality gates, and ship releases — all from slash commands.","archived":false,"fork":false,"pushed_at":"2026-03-30T05:25:05.000Z","size":976,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-03T03:38:45.389Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ogrodev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-26T03:45:18.000Z","updated_at":"2026-03-30T05:25:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ogrodev/supipowers","commit_stats":null,"previous_names":["ogrodev/supipowers"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/ogrodev/supipowers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogrodev%2Fsupipowers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogrodev%2Fsupipowers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogrodev%2Fsupipowers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogrodev%2Fsupipowers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ogrodev","download_url":"https://codeload.github.com/ogrodev/supipowers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ogrodev%2Fsupipowers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31411694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T19:29:44.979Z","status":"ssl_error","status_checked_at":"2026-04-04T19:29:11.535Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-17T03:17:48.831Z","updated_at":"2026-05-17T21:01:14.226Z","avatar_url":"https://github.com/ogrodev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1584\" height=\"672\" alt=\"supipowers\" src=\"https://github.com/user-attachments/assets/ec0f3658-54d7-4471-91ba-39297191f055\" /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![npm version](https://img.shields.io/npm/v/supipowers.svg)](https://www.npmjs.com/package/supipowers)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n**Workflow extension for OMP coding agents.**\n\nPlan, execute, review, test, and ship — without leaving your agent session.\n\n\u003c/div\u003e\n\n---\n\nSupipowers adds agentic workflow commands on top of [Oh My Pi](https://github.com/can1357/oh-my-pi). It steers the active AI session using OMP's native extension API — no subprocess, no context switching.\n\n## Installation\n\nRun the interactive installer:\n\n```bash\nbunx supipowers\n```\n\nThe installer detects Pi (`~/.pi`) and OMP (`~/.omp`) — when both are present it offers a multiselect to install to one or both. It registers the extension, removes legacy external context-mode MCP registrations from `agent/mcp.json` and cleans up the old `settings/mcp.json` if present, and can install missing optional tooling such as LSP servers and Playwright CLI.\n\n\u003e [!TIP]\n\u003e Run `/supi:update` at any time to upgrade to the latest version, or `/supi:doctor` to check your setup.\n\n### Requirements\n\n| Dependency                                            | What it's for                                                         |\n| ----------------------------------------------------- | --------------------------------------------------------------------- |\n| [Oh My Pi (OMP)](https://github.com/can1357/oh-my-pi) | The coding agent that supipowers extends                              |\n| [Bun](https://bun.sh)                                 | Runtime — required for installation and the built-in SQLite FTS index |\n| [Git](https://git-scm.com)                            | Used by the installer and git-based workflows                         |\n\n### Optional dependencies\n\nThe installer scans for these and offers to install missing tooling where it can. Everything works without them, but each one unlocks additional capabilities.\n\n| Dependency                            | What it enables                                                       |\n| ------------------------------------- | --------------------------------------------------------------------- |\n| `typescript-language-server`          | TypeScript/JS diagnostics and references in review gates              |\n| `pyright`                             | Python type checking                                                  |\n| `rust-analyzer`                       | Rust language server                                                  |\n| `gopls`                               | Go language server                                                    |\n| `@playwright/cli`                     | Browser exploration and E2E test execution via `/supi:qa`             |\n\n\u003e [!NOTE]\n\u003e LSP servers are language-specific — install only the ones that match your project's stack.\n\u003e Context protection is built into supipowers. No external `context-mode` or `supi-context-mode` dependency is required.\n\u003e The design is inspired by [context-mode](https://github.com/mksglu/context-mode).\n\n## Commands\n\n| Command                  | What it does                                                  |\n| ------------------------ | ------------------------------------------------------------- |\n| `/supi`                  | Interactive menu with commands and project status             |\n| `/supi:plan`             | Collaborative planning with structured task breakdown         |\n| `/supi:ui-design`        | Design Director pipeline — gather UI context, decompose target into components, build mockups in browser companion, validate, save to `.omp/supipowers/ui-design/` |\n| `/supi:review`           | AI code review with validated findings docs and fix/document/discuss actions |\n| `/supi:checks`           | Run deterministic quality gates                               |\n| `/supi:qa`               | E2E testing pipeline with Playwright                          |\n| `/supi:fix-pr`           | Assess and fix PR review comments                             |\n| `/supi:release`          | Version bump, release notes, publish                          |\n| `/supi:commit`           | AI-powered commit with conventional message generation        |\n| `/supi:model`            | Configure model assignments per action (plan, review, qa…)    |\n| `/supi:context`          | Show current context window usage and system prompt breakdown |\n| `/supi:optimize-context` | Analyze loaded prompt/context usage and suggest reductions    |\n| `/supi:config`           | Interactive settings TUI                                      |\n| `/supi:status`           | Show project plans and configuration summary                  |\n| `/supi:doctor`           | Diagnose extension health and missing dependencies            |\n| `/supi:generate`        | Documentation drift checks via `docs` (default); use `--target \u003cpackage\u003e` to scope |\n| `/supi:update`           | Update supipowers to the latest version                       |\n| `/supi:agents`           | Manage review agents                                          |\n| `/supi:ultraplan`        | Multi-stage authoring pipeline (intake → scout → discover → research → synthesize → review → approve) |\n| `/supi:harness`          | Harness engineering pipeline and anti-slop guardrails         |\n| `/supi:memory`           | Manage native MemPalace memory integration (`status`, `setup`) |\n| `/runbook`              | Show registered OMP rules, TTSR conditions, and slash commands without an LLM turn |\n| `/supi:clear`            | Clear metrics, cache, session knowledge, and memory           |\n\nMost commands steer the AI session. These are TUI-only — they open native dialogs without triggering the AI: `/supi`, `/supi:config`, `/supi:status`, `/supi:review`, `/supi:update`, `/supi:doctor`, `/supi:model`, `/supi:context`, `/supi:optimize-context`, `/supi:commit`, `/supi:release`, `/supi:checks`, `/supi:agents`, `/supi:ultraplan`, `/supi:harness`, `/supi:memory`, `/supi:clear`, `/runbook`.\n\n## How it works\n\n**Planning.** `/supi:plan` steers the AI through planning phases (Explore → Clarify → Brainstorm → Design \u0026 Save → Review Loop → User Gate → Plan), saves the result to `.omp/supipowers/plans/`, and presents an approval UI. On approval, tasks execute in the same session.\n\n**Quality gates.** `/supi:checks` runs deterministic quality gates. Six gates are available: `lsp-diagnostics`, `lint`, `typecheck`, `format`, `test-suite`, and `build`. Each gate can be enabled independently via `/supi:config` or the shared repository config at `.omp/supipowers/config.json`. In monorepos, `/supi:checks` defaults to `All`, which runs the root target plus every workspace target sequentially; use `--target \u003cpackage\u003e` to narrow the run or `--target all` to request the batch mode explicitly. Gates report issues with severity levels.\n\n**Documentation drift.** `/supi:generate docs` checks tracked documentation for drift from the current codebase. `docs` is the default subcommand, and `--target \u003cpackage\u003e` scopes discovery and checking to a workspace/package target; the root target covers repository-level docs.\n\n**AI code review.** `/supi:review` runs a programmatic AI review pipeline with configurable depth (quick, deep, or multi-agent). It uses headless agent sessions with structured JSON validation, always validates findings before user action, writes the current validated findings to a session `findings.md` document, and then presents three next-step choices: `Fix now`, `Document only`, or `Discuss before fixing`.\n\n**Review agents.** Multi-agent review loads agents from two scopes: global and project.\n\n- Global defaults and global custom agents live under `~/.omp/supipowers/review-agents/`.\n- Project configuration lives under `.omp/supipowers/review-agents/config.yml`.\n- Default built-in agent markdown files are installed globally, not per-project.\n- Project custom agent markdown files can still live under `.omp/supipowers/review-agents/`.\n- Merge precedence is project over global: if the project config mentions an agent name, it shadows the global agent with the same name.\n- A project entry with `enabled: false` suppresses the global agent with that same name instead of falling back to the global copy.\n\nUse `/supi:agents` to inspect the merged set that will actually run.\n\n**PR fixing.** `/supi:fix-pr` fetches PR review comments, critically assesses each one, checks for ripple effects, then fixes or rejects with evidence. Known bot reviewers in the selected comment snapshot are auto-detected to configure re-review triggering; bot-authored comments are not filtered out solely because they are bots.\n\n**Context protection.** Supipowers always enables built-in context protection through native `ctx_*` tools and routing hooks. Search/find and web-fetch style operations are redirected to sandboxed execution or indexed storage, and oversized tool results are compressed before they reach the conversation.\n\n**Model assignment.** Each action can be assigned a different model and thinking level. `/supi:model` opens a TUI picker backed by OMP's model registry.\n\n## Feature comparison with `obra/superpowers`\n\n\u003e [!NOTE]\n\u003e Based on the current `supipowers` repo and the documented features in [`obra/superpowers`](https://github.com/obra/superpowers). ✅ = part of the current documented product surface. ❌ = not part of the current documented product surface.\n\n| What is being compared                | supipowers | obra/superpowers |\n| ------------------------------------- | ---------- | ---------------- |\n| OMP-native slash commands             | ✅         | ❌               |\n| Automatic skill activation            | ❌         | ✅               |\n| Plan approval UI                      | ✅         | ❌               |\n| Parallel agent execution workflow     | ✅         | ✅               |\n| Code review workflow                  | ✅         | ✅               |\n| TDD / debugging / verification skills | ✅         | ✅               |\n| Browser QA / Playwright workflow      | ✅         | ❌               |\n| PR review comment fixing workflow     | ✅         | ❌               |\n| Release automation                    | ✅         | ❌               |\n| Commit workflow                       | ✅         | ❌               |\n| Context-window optimizations          | ✅         | ❌               |\n| Git worktree workflow                 | ❌         | ✅               |\n\n## Quality gates\n\n`/supi:checks` runs deterministic quality gates. Each gate is independently configurable in `quality.gates` via `/supi:config` or the shared config JSON files:\n\n| Gate               | What it checks                  | Config type                    |\n| ------------------ | ------------------------------- | ------------------------------ |\n| `lsp-diagnostics`  | Language server diagnostics     | `enabled`                      |\n| `lint`             | Linter (e.g. `eslint`, `biome`) | `enabled: true` + `runs[]`     |\n| `typecheck`        | Type checker (e.g. `tsc`)       | `enabled: true` + `runs[]`     |\n| `format`           | Formatter check                 | `enabled: true` + `runs[]`     |\n| `test-suite`       | Test runner                     | `enabled: true` + `runs[]`     |\n| `build`            | Build verification              | `enabled: true` + `runs[]`     |\n\nGates default to disabled. Enable them globally in `~/.omp/supipowers/config.json` or per-repository in `.omp/supipowers/config.json`. In monorepos, the repository config is shared by the root target and every workspace, and `/supi:checks` defaults to `All` (root target + every workspace target).\n\nEnabled command gates require `runs: [{ command, target }]`. `target.scope` must be one of `all-targets`, `root`, `all-workspaces`, or `workspace`; `workspace` selectors also require `relativeDir`.\n\n```json\n{\n  \"quality\": {\n    \"gates\": {\n      \"typecheck\": {\n        \"enabled\": true,\n        \"runs\": [\n          {\n            \"command\": \"bun run typecheck\",\n            \"target\": { \"scope\": \"all-targets\" }\n          }\n        ]\n      },\n      \"test-suite\": {\n        \"enabled\": true,\n        \"runs\": [\n          {\n            \"command\": \"bun test\",\n            \"target\": { \"scope\": \"root\" }\n          },\n          {\n            \"command\": \"bun --cwd packages/api test\",\n            \"target\": { \"scope\": \"workspace\", \"relativeDir\": \"packages/api\" }\n          }\n        ]\n      }\n    }\n  }\n}\n```\n\n## Configuration\n\n```\n/supi:config\n```\n\nOpens an interactive settings screen. Toggles flip instantly, selects open a picker, text fields open an input dialog.\n\nConfiguration uses built-in defaults plus two user-managed override layers:\n\n1. Built-in defaults\n2. `~/.omp/supipowers/config.json` — global overrides\n3. `.omp/supipowers/config.json` — repository overrides\n\n`/supi:config` exposes only `Global` and `Repository`. In monorepos, the repository config is shared across every workspace; there are no per-workspace Supipowers config files for general settings.\n\nMemPalace hook timeouts are configured under `mempalace.timeouts`. Keep `hookMs` at or above `6000` when `mempalace.hooks.autoSearchOnPrompt` is enabled; MemPalace search can now pause before retrying a transient index lookup. The built-in default is `10000`.\n\n## Release channels\n\nThree built-in channels are available: `github` (GitHub Release via `gh` CLI), `gitlab` (GitLab Release via `glab` CLI), and `gitea` (Gitea Release via `tea` CLI). Channels are selected per-project in `release.channels`.\n\n`/supi:release` auto-detects publishable release targets at runtime. In single-package repos it keeps the classic root-package flow. In Bun, npm, pnpm, and Yarn workspaces it discovers publishable packages from workspace metadata, auto-selects the only publishable target when there is one, and otherwise opens a picker that lists all publishable packages with changed packages first. Target choice is runtime-only and is not persisted to config.\n\nRelease notes are scoped to the selected target's publishable paths. When that target declares a `files` whitelist in its `package.json`, only commits touching those paths are included. Otherwise the changelog falls back to the target package directory plus its `package.json`. Root releases keep the configured `release.tagFormat`; workspace releases use `\u003cpackage-name\u003e@\u003cversion\u003e` tags to avoid collisions across packages.\n\n`/supi:release` accepts three optional flags:\n\n| Flag | Effect |\n| ----------- | ------ |\n| `--target \u003cpackage\u003e` | Skip the target picker and release the named package directly |\n| `--raw` | Skip AI polish of release notes; use raw conventional-commit output |\n| `--dry-run` | Run the full release flow without publishing |\n\nCustom channels can be defined in `release.customChannels`:\n\n```json\n{\n  \"release\": {\n    \"customChannels\": {\n      \"my-channel\": {\n        \"label\": \"My Channel\",\n        \"publishCommand\": \"./scripts/publish.sh $tag\",\n        \"detectCommand\": \"which my-tool\"\n      }\n    }\n  }\n}\n```\n\n| Field            | Required | Description                                                    |\n| ---------------- | -------- | -------------------------------------------------------------- |\n| `label`          | yes      | Display name shown in the release picker                       |\n| `publishCommand` | yes      | Shell command run to publish; `$tag`, `$version`, `$changelog`, `$targetName`, `$targetId`, `$targetPath`, `$manifestPath`, and `$packageManager` are passed as environment variables |\n| `detectCommand`  | no       | Shell command to detect availability; exit 0 = available. If omitted, the channel is assumed available |\n\n## Skills\n\nSupipowers ships runtime-loaded prompt skills that are also available to the agent during regular sessions:\n\n| Skill                   | Used by                 |\n| ----------------------- | ----------------------- |\n| `planning`              | `/supi:plan`            |\n| `ui-design`             | `/supi:ui-design`       |\n| `code-review`           | Manual prompting / reusable review guidance |\n| `qa-strategy`           | `/supi:qa`              |\n| `fix-pr`                | `/supi:fix-pr`          |\n| `debugging`             | Agent sessions          |\n| `tdd`                   | Agent sessions          |\n| `verification`          | Agent sessions          |\n| `receiving-code-review` | Agent sessions          |\n| `release`               | `/supi:release`         |\n| `context-mode`          | Context window guidance |\n| `ultraplan-intake`      | `/supi:ultraplan plan` intake stage |\n| `ultraplan-scout`       | `/supi:ultraplan plan` scout stage |\n| `ultraplan-discover`    | `/supi:ultraplan discover` |\n| `ultraplan-research`    | `/supi:ultraplan research` |\n| `ultraplan-synthesize`  | `/supi:ultraplan synthesize` |\n| `ultraplan-review`      | `/supi:ultraplan review` orchestration |\n| `ultraplan-review-structure` | `/supi:ultraplan review` structure checker |\n| `ultraplan-review-scope` | `/supi:ultraplan review` scope checker |\n| `ultraplan-review-tdd`  | `/supi:ultraplan review` TDD checker |\n| `creating-supi-agents`  | Agent creation guidance  |\n| `harness`               | `/supi:harness`         |\n\n## Containerized deployments\n\nSupipowers runs unchanged inside containerized OMP installs (robomp slots, the swarm extension, CI runners). When the slot must stay credential-free, run a sidecar `omp auth-gateway` outside the container and pin the per-provider transport in `~/.omp/agent/models.yml`:\n\n```yaml\nproviders:\n  anthropic:\n    transport: pi-native\n    baseUrl: http://llm-gateway.internal:4000\n    apiKey: \u003cgateway-bearer\u003e\n```\n\nThe slot keeps resolving pricing, capabilities, and thinking config locally from its bundled `models.json`; only the streaming dispatch is redirected through the gateway, which holds the real provider tokens. Multi-host credential sync uses the matching `omp auth-broker` subcommand. Requires OMP ≥ 15.1.3.\n\n## Development\n\n```bash\nbun install          # install dependencies\nbun test             # run tests\nbun run typecheck    # type-check without emitting\nbun run build        # emit to dist/\n```\n\nTests live in `tests/`, mirroring `src/` one-to-one. The test runner is Bun's built-in `bun:test`.\n\nPeer dependencies (`@oh-my-pi/pi-coding-agent`, `@oh-my-pi/pi-ai`, `@oh-my-pi/pi-tui`) are provided by the OMP host at runtime; matching devDependencies are installed for type-checking during development.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogrodev%2Fsupipowers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fogrodev%2Fsupipowers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogrodev%2Fsupipowers/lists"}