Skip to content

docs(pi): add experimental pi support (Phase 1)#500

Open
sheurich wants to merge 6 commits intoobra:mainfrom
sheurich:feature/pi-support
Open

docs(pi): add experimental pi support (Phase 1)#500
sheurich wants to merge 6 commits intoobra:mainfrom
sheurich:feature/pi-support

Conversation

@sheurich
Copy link
Copy Markdown

@sheurich sheurich commented Feb 17, 2026

Summary

Add experimental support for pi (@mariozechner/pi-coding-agent) as Phase 1 of #435.

Pi already discovers package skills/ directories automatically, so baseline support is lightweight. This PR adds Pi installation docs, a bundled Pi agent profile for current subagent workflows, and smoke tests for isolated install plus skill discovery.

Changes

Documentation

  • .pi/INSTALL.md — machine-readable install/update/remove instructions, matching the .codex/INSTALL.md and .opencode/INSTALL.md pattern
  • docs/README.pi.md — full Pi guide covering installation options, required code-reviewer profile setup, tool mapping, architecture notes, troubleshooting, and known differences
  • README.md — add Pi to the top-level installation matrix
  • .pi/agents/README.md — Pi agent-profile installation docs
  • .pi/agents/code-reviewer.md — bundled code-reviewer profile for requesting-code-review and workflows that depend on it

Smoke tests (Phase 1 requirement)

  • tests/pi/test-smoke.sh
    • installs into an isolated PI_CODING_AGENT_DIR
    • verifies package registration in isolated settings
    • verifies brainstorming skill discoverability through Pi package resolution
    • verifies pi list includes the installed package
    • verifies ~/.pi/agent/settings.json is unchanged
  • tests/pi/run-tests.sh — runner wrapper consistent with other tests/*/run-tests.sh suites
  • tests/pi/README.md — run instructions and requirements

Why no repo-local integration code?

Unlike Codex and OpenCode, Pi does not need repo-local bootstrap or plugin glue for basic skill loading:

  • Pi discovers package skills/ by convention.
  • No .opencode/plugins/* equivalent is required for baseline compatibility.

Smoke test scope

This smoke test validates deterministic package install and skill discoverability, and it runs locally without model credentials.

It does not validate interactive runtime UI behavior such as /skill:brainstorming appearing in-session.

Tool mapping

Claude Code Pi Notes
Skill tool read / /skill:name Pi loads SKILL.md via read
TodoWrite Use markdown checklists instead
Task (subagents) subagent Requires harness support plus matching agent profiles
Read, Write, Edit, Bash Same names Direct equivalents

Phase tracking

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 17, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds experimental Pi support documentation: new .pi/INSTALL.md, docs/README.pi.md, and two insertions in README.md that describe Pi installation, skill discovery/loading, verification, updating, and uninstalling. All changes are documentation-only.

Changes

Cohort / File(s) Summary
Pi install guide
.pi/INSTALL.md
New step-by-step Pi installation guide: prerequisites, pi install <repo> remote install, alternative local clone, pi list verification, sample skill load, update (pi update / git pull), and uninstall (pi remove).
Pi docs
docs/README.pi.md
Comprehensive Pi documentation: quick install, install options (git package, local path, symlink), skill discovery & loading architecture, personal/project skill locations, mapping to Claude Code concepts, usage patterns, troubleshooting, update/uninstall instructions, and known differences.
README integration
README.md
Inserted "Pi (experimental)" installation sections in two places with example pi install https://github.com/obra/superpowers and link to docs/README.pi.md.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related issues

Poem

🐰 I hopped through docs both new and bright,
Pi finds skills at morning light,
Clone or install, then pi list to see,
Load a skill, update, or set it free,
Carrots, commits, and quiet glee 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: adding documentation for experimental Pi support in Phase 1.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description accurately and thoroughly describes the changeset, including documentation additions for Pi experimental support, installation guide updates, and testing approach with clear rationale for implementation decisions.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan for PR comments
  • Generate coding plan

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
.pi/INSTALL.md (1)

3-6: Prerequisites omit the Pi installation command itself.

Since this file doubles as human-readable documentation, consider adding the npm install step so new users have a fully self-contained guide. npm install -g @mariozechner/pi-coding-agent`` is the command that installs Pi.

📝 Suggested addition
 ## Prerequisites
 
+- [Node.js](https://nodejs.org/) (for `npm install -g `@mariozechner/pi-coding-agent``)
 - [Pi](https://github.com/mariozechner/pi-coding-agent) installed
 - Git
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.pi/INSTALL.md around lines 3 - 6, Add the missing npm install step to the
Prerequisites section of .pi/INSTALL.md so the guide is self-contained: under
the "Prerequisites" heading insert the global install command for Pi (npm
install -g `@mariozechner/pi-coding-agent`) and ensure it appears above or
alongside the existing Git bullet so new users can copy/paste the full
installation step.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.pi/INSTALL.md:
- Around line 36-38: Replace the ambiguous example `pi update` in the HTTPS
install path with a source-specific command to avoid updating all installed
packages: change the code block that currently shows `pi update` to `pi update
https://github.com/obra/superpowers` so the example updates only that repository
rather than all globally installed Pi packages.

---

Nitpick comments:
In @.pi/INSTALL.md:
- Around line 3-6: Add the missing npm install step to the Prerequisites section
of .pi/INSTALL.md so the guide is self-contained: under the "Prerequisites"
heading insert the global install command for Pi (npm install -g
`@mariozechner/pi-coding-agent`) and ensure it appears above or alongside the
existing Git bullet so new users can copy/paste the full installation step.

Comment thread .pi/INSTALL.md
@obra
Copy link
Copy Markdown
Owner

obra commented Feb 20, 2026

Does pi have a way to autoload the using-superpowers bootstrap at startup?

@sheurich
Copy link
Copy Markdown
Author

Pi doesn't have a hooks system like Claude Code's SessionStart. The closest equivalent is a Pi extension using the before_agent_start event, which can inject content into the system prompt on every turn.

A small extensions/bootstrap.ts in the superpowers package would replicate what hooks/session-start.sh does — Pi auto-discovers extensions/ in packages, so it would work with zero user config after pi install.

This is a code change, not documentation. I'll track it as Phase 2 work. The docs already note the limitation under "Known Differences from Claude Code":

No hooks system — Pi doesn't inject bootstrap content on session start.

@sheurich
Copy link
Copy Markdown
Author

Re: CodeRabbit's nitpick about adding npm install -g @mariozechner/pi-coding-agent to prerequisites —

Declining. This INSTALL.md is reached after the user already has Pi (they found it via pi install). Adding Pi's own install command is circular. The prerequisite link to the Pi repo is sufficient for anyone who arrives here another way.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.pi/INSTALL.md:
- Around line 48-52: The Uninstalling section only shows the HTTPS removal
command and lacks the local-clone variant referenced earlier under "Alternative:
Local Clone"; update the "Uninstalling" section (heading "Uninstalling" and the
existing example `pi remove https://github.com/obra/superpowers`) to include an
additional example for removing an install performed from a local path, e.g. add
a short sentence "Or, if installed from a local path:" followed by the command
`pi remove /path/to/superpowers` so users who followed the local-clone
instructions can remove that installation.

---

Duplicate comments:
In @.pi/INSTALL.md:
- Around line 38-40: The example now shows using "pi update
https://github.com/obra/superpowers" which fixes the earlier problem of
unintentionally updating all packages; update the documentation to ensure the
"pi update" examples explicitly show both behaviors — (1) "pi update" updates
all installed packages and (2) "pi update <source-url>" updates a single package
— by keeping the explicit URL example "pi update
https://github.com/obra/superpowers" and adding a short note clarifying the
difference in behavior for the plain "pi update" command.

Comment thread .pi/INSTALL.md
@obra
Copy link
Copy Markdown
Owner

obra commented Feb 21, 2026

Sorry about the coderabbit nitpicks. It hasn't generally been very helpful for us. I've finally gotten it turned off.

Is there a way to get 'extensions/bootrstrap.ts' inside a .pi directory? As we support more harnesses, we are trying to have us do our best to keep harness-specific stuff in a named directory for this harness.

@obra obra added the new-harness Requests for harnesses with few existing items label Feb 21, 2026
@kierr
Copy link
Copy Markdown

kierr commented Feb 22, 2026

Sorry about the coderabbit nitpicks. It hasn't generally been very helpful for us. I've finally gotten it turned off.

Is there a way to get 'extensions/bootrstrap.ts' inside a .pi directory? As we support more harnesses, we are trying to have us do our best to keep harness-specific stuff in a named directory for this harness.

You can also configure it to not raise nitpicks... @coderabbitai can you output the current/default coderabbit.yml please and tailor it to not generate so much noise over nitpicks to suit the repo maintainers preferences above

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 22, 2026

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

@kierr: I'll fetch the current CodeRabbit configuration and schema, then provide a tailored version that reduces nitpicks and noise for this repository.


🛠 Debug Information Gathered


@kierr: Here's the current configuration and a tailored version to reduce nitpicks and noise:

Current Configuration Summary

Your repository is using mostly default settings with the chill profile (which is already the less assertive option). However, many optional features and all linting tools are enabled.

Recommended Configuration

Create or update .coderabbit.yml in your repository root with this streamlined configuration:

language: en-US
reviews:
  # Keep chill profile - less nitpicky feedback
  profile: chill
  
  # Disable non-essential walkthrough features to reduce noise
  high_level_summary: false
  poem: false
  in_progress_fortune: false
  review_status: false
  suggested_labels: false
  suggested_reviewers: false
  sequence_diagrams: false
  related_issues: false
  related_prs: false
  
  # Keep essential features
  collapse_walkthrough: true
  changed_files_summary: true
  
  # Disable automatic reviews - require explicit trigger
  auto_review:
    enabled: false
    # Only review when PR description contains this keyword
    description_keyword: '@coderabbitai review'
  
  # Selectively disable linting tools that tend to be noisy
  tools:
    # Keep critical security scanners
    gitleaks:
      enabled: true
    trufflehog:
      enabled: true
    
    # Disable style/formatting tools if you have your own CI for these
    markdownlint:
      enabled: false
    languagetool:
      enabled: false
    biome:
      enabled: false
    ruff:
      enabled: false
    eslint:
      enabled: false
    shellcheck:
      enabled: false
    
    # Disable other potentially noisy tools
    github-checks:
      enabled: false
    
  # Optional: Exclude specific paths from review
  path_filters:
    - '!**/node_modules/**'
    - '!**/dist/**'
    - '!**/build/**'
    - '!**/*.lock'
    - '!**/*.min.js'

chat:
  # Disable auto-reply to reduce unsolicited responses
  auto_reply: false
  art: false

Key Changes to Reduce Noise

  1. Disabled auto-review: CodeRabbit will only review when you add @coderabbitai review to the PR description
  2. Removed "fun" features: Poems, fortunes, and ASCII art
  3. Streamlined walkthrough: Removed suggestions for labels, reviewers, related issues/PRs
  4. Disabled redundant linting: Turned off style/format tools that likely duplicate your existing CI
  5. Kept security tools: Gitleaks and TruffleHog remain enabled for secret scanning
  6. Manual chat only: Requires explicit @coderabbitai mentions to respond

Alternative: Even More Minimal

If you want CodeRabbit only for chat/on-demand help:

reviews:
  auto_review:
    enabled: false

This disables automatic reviews entirely while keeping chat available when you explicitly tag @coderabbitai.

Would you like me to adjust any of these settings further?

@kierr
Copy link
Copy Markdown

kierr commented Feb 22, 2026

Is there a way to get 'extensions/bootrstrap.ts' inside a .pi directory? As we support more harnesses, we are trying to have us do our best to keep harness-specific stuff in a named directory for this harness.

@coderabbitai can you also answer this

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 22, 2026

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🌐 Web query:

`@mariozechner/pi-coding-agent` extension discovery paths configuration

💡 Result:

Pi Coding Agent (@mariozechner/pi-coding-agent) discovers/extensions are loaded from these places (roughly in this order), and you can configure the search paths like this:

Discovery paths (automatic)

  1. Explicit CLI paths: pass an extension file directly (e.g. pi -e ./my-extension.ts). [1]
  2. Settings file (extensions array):
    • Global: ~/.pi/agent/settings.json
    • Per-project override: .pi/settings.json (in your repo). [1][3]
  3. Project-local directory: <cwd>/.pi/extensions/ (drop *.ts / *.js files here). [1]
  4. Installed packages (npm/git): packages that declare pi.extensions in their package.json are discovered/loaded. [1]

Configuring where “global” lives (agent dir)

  • Default agent dir is ~/.pi/agent/, and it can be changed via the PI_CODING_AGENT_DIR environment variable. [1]

If you’re using recent versions: packages vs extensions

  • Newer releases moved npm/git-installed extensions to a packages array in settings.json (with auto-migration from older extensions entries). [2]

SDK (programmatic) path injection

  • If you embed Pi via the SDK, you can provide extra extension locations using CreateAgentSessionOptions.additionalExtensionPaths (and preload via preloadedExtensions). [4]

Sources: [1] [2] [3] [4]


@kierr: Yes! Pi will automatically discover extensions from .pi/extensions/bootstrap.ts — that's actually Pi's default project-local discovery path.

According to Pi's documentation, extensions are discovered from <cwd>/.pi/extensions/ (among other locations), so placing bootstrap.ts at .pi/extensions/bootstrap.ts will work perfectly with zero configuration needed.

This aligns nicely with your preference to keep harness-specific files organized in named directories. The Phase 2 implementation can use:

  • .pi/extensions/bootstrap.ts (the extension itself)
  • .pi/INSTALL.md (already in this PR)
  • And any other Pi-specific files in the .pi/ directory

The extension would be discovered automatically after pi install, just as sheurich described earlier.


✏️ Learnings added
Learnt from: kierr
URL: https://github.com/obra/superpowers/pull/500

Timestamp: 2026-02-22T05:13:31.759Z
Learning: The superpowers repository organizes harness-specific files in named directories for each harness (e.g., `.pi/` for Pi, similar pattern for other harnesses).

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@kierr
Copy link
Copy Markdown

kierr commented Feb 22, 2026

e

Tip

For best results, initiate chat on the files or code changes.
🧩 Analysis chain
@kierr: Here's the current configuration and a tailored version to reduce nitpicks and noise:

Current Configuration Summary

Your repository is using mostly default settings with the chill profile (which is already the less assertive option). However, many optional features and all linting tools are enabled.

Recommended Configuration

Create or update .coderabbit.yml in your repository root with this streamlined configuration:

language: en-US
reviews:
  # Keep chill profile - less nitpicky feedback
  profile: chill
  
  # Disable non-essential walkthrough features to reduce noise
  high_level_summary: false
  poem: false
  in_progress_fortune: false
  review_status: false
  suggested_labels: false
  suggested_reviewers: false
  sequence_diagrams: false
  related_issues: false
  related_prs: false
  
  # Keep essential features
  collapse_walkthrough: true
  changed_files_summary: true
  
  # Disable automatic reviews - require explicit trigger
  auto_review:
    enabled: false
    # Only review when PR description contains this keyword
    description_keyword: '@coderabbitai review'
  
  # Selectively disable linting tools that tend to be noisy
  tools:
    # Keep critical security scanners
    gitleaks:
      enabled: true
    trufflehog:
      enabled: true
    
    # Disable style/formatting tools if you have your own CI for these
    markdownlint:
      enabled: false
    languagetool:
      enabled: false
    biome:
      enabled: false
    ruff:
      enabled: false
    eslint:
      enabled: false
    shellcheck:
      enabled: false
    
    # Disable other potentially noisy tools
    github-checks:
      enabled: false
    
  # Optional: Exclude specific paths from review
  path_filters:
    - '!**/node_modules/**'
    - '!**/dist/**'
    - '!**/build/**'
    - '!**/*.lock'
    - '!**/*.min.js'

chat:
  # Disable auto-reply to reduce unsolicited responses
  auto_reply: false
  art: false

Key Changes to Reduce Noise

  1. Disabled auto-review: CodeRabbit will only review when you add @coderabbitai review to the PR description
  2. Removed "fun" features: Poems, fortunes, and ASCII art
  3. Streamlined walkthrough: Removed suggestions for labels, reviewers, related issues/PRs
  4. Disabled redundant linting: Turned off style/format tools that likely duplicate your existing CI
  5. Kept security tools: Gitleaks and TruffleHog remain enabled for secret scanning
  6. Manual chat only: Requires explicit @coderabbitai mentions to respond

Alternative: Even More Minimal

If you want CodeRabbit only for chat/on-demand help:

reviews:
  auto_review:
    enabled: false

This disables automatic reviews entirely while keeping chat available when you explicitly tag @coderabbitai.

Would you like me to adjust any of these settings further?

@coderabbitai can you challenge all of that? are you certain? think deeply.

can you reflect deeply over this repository, and recent issues/PRs where coderabbit was triggered, and strategize the optimal coderabbit.yml configuration to suit this project specifically

(@obra this was a brief demonstration that coderabbit can in fact be very helpful, to everyone!)

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 22, 2026

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

@kierr: You're absolutely right to challenge that — let me dive deep into this repository specifically rather than offering generic recommendations.


🏁 Script executed:

#!/bin/bash

# First, let's understand the repository structure and file types
echo "=== Repository Structure Analysis ==="
tree -L 2 -I 'node_modules|.git' --dirsfirst

echo -e "\n=== File Type Distribution ==="
fd -t f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20

echo -e "\n=== Key Directories ==="
fd -t d -d 2 | head -20

echo -e "\n=== Skills Directory Contents ==="
fd -t f . skills/ | head -20

echo -e "\n=== Documentation Structure ==="
fd -e md

echo -e "\n=== Recent PRs with CodeRabbit Activity ==="
gh pr list --limit 20 --state all --json number,title,author,createdAt,comments | jq -r '.[] | "\(.number) - \(.title) - @\(.author.login) - \(.createdAt) - \(.comments) comments"'

echo -e "\n=== Recent CodeRabbit Comments Pattern Analysis ==="
# Get recent PRs and check for coderabbit comments
gh pr list --limit 10 --state all --json number | jq -r '.[].number' | while read pr_num; do
    echo "PR #$pr_num:"
    gh pr view $pr_num --comments 2>/dev/null | grep -A 5 "coderabbitai" | head -20 || echo "  No coderabbit comments found"
done

echo -e "\n=== Check for existing coderabbit config ==="
fd coderabbit.yml
fd coderabbit.yaml
cat .coderabbit.yml 2>/dev/null || echo "No .coderabbit.yml found"
cat .coderabbit.yaml 2>/dev/null || echo "No .coderabbit.yaml found"

echo -e "\n=== Check CI/CD and existing linting tools ==="
fd -e yml -e yaml . .github/workflows/ | head -10
cat .github/workflows/*.yml 2>/dev/null | head -100 || echo "No workflows found"

echo -e "\n=== Package.json analysis (if exists) ==="
cat package.json 2>/dev/null | jq '.scripts, .devDependencies' || echo "No package.json"

echo -e "\n=== Contribution patterns ==="
git log --pretty=format:"%h - %an - %s" --since="3 months ago" | head -30

Length of output: 274934


🛠 Debug Information Gathered


@kierr Thanks for pushing me to go deeper. I pulled real signals from this repo (docs- and shell‑heavy; skills/ + hooks/; no package.json) and from how CodeRabbit has actually behaved on recent PRs (#525, #524, #523, #520, #519, #517, #516, etc.). Two clear takeaways:

  • Auto reviews + many generic linters = noise here.
  • High-signal, repo-aware content checks (e.g., SKILL.md contradictions, cross‑platform hooks) were actually useful.

Below is a repo‑specific configuration that turns off the noisy bits, keeps guardrails (secret scanning), and makes reviews explicitly on-demand. I also added path-scoped guidance so reviews focus on what matters in this project.

Proposed .coderabbit.yml

language: en-US

reviews:
  profile: chill

  # Keep concise, useful context; drop the fluff
  high_level_summary: false
  in_progress_fortune: false
  poem: false
  review_status: false
  suggested_labels: false
  suggested_reviewers: false
  related_issues: false
  related_prs: false
  sequence_diagrams: false
  estimate_code_review_effort: false
  assess_linked_issues: false
  collapse_walkthrough: true
  changed_files_summary: true

  # On-demand reviews only (quiet by default)
  auto_review:
    enabled: false
    description_keyword: '@coderabbitai review'   # manual trigger
    labels: ['ai:review']                         # or add a label to trigger
    auto_incremental_review: false
    auto_pause_after_reviewed_commits: 0
    drafts: false
    base_branches: ['main', 'dev']                # adjust if you use another long-lived branch

  # Turn off pre-merge gatekeeping for a docs/shell repo
  pre_merge_checks:
    docstrings:
      mode: off
    title:
      mode: off
    description:
      mode: off
    issue_assessment:
      mode: off
    custom_checks: []

  # Disable noisy style linters; keep security scanners
  tools:
    gitleaks:
      enabled: true
    trufflehog:
      enabled: true

    # Disable generic style/grammar linters and language linters you don't use
    markdownlint:
      enabled: false
    languagetool:
      enabled: false
    eslint:
      enabled: false
    ruff:
      enabled: false
    pylint:
      enabled: false
    yamllint:
      enabled: false
    actionlint:
      enabled: false
    github-checks:
      enabled: false

    # ShellCheck: enable when you want it (see note below)
    shellcheck:
      enabled: false

  # Repo-aware guidance that adds signal when you do request a review
  path_instructions:
    - path: 'skills/**/SKILL.md'
      instructions: |
        Focus on content quality, not grammar/style. Check:
        - Frontmatter completeness (title/description/triggers).
        - Consistency with writing-skills guidance (e.g., avoid “what it does” contradictions).
        - Trigger overlap with existing skills; highlight duplicates or ambiguous triggers.
        - Clear, actionable steps; progressive disclosure; links to related skills.

    - path: 'hooks/**'
      instructions: |
        Focus on cross-platform robustness:
        - Windows compatibility (run-hook.cmd, git-bash discovery, cygpath usage) vs POSIX shells.
        - LF normalization (.gitattributes) and safe path resolution (no brittle dirname assumptions).
        - Quoting, set -euo pipefail, and predictable exit codes for hook runners.

    - path: '.**/INSTALL.md'
      instructions: |
        Harness-specific docs should:
        - Live under the matching dot-dir (e.g., .pi/, .qwen/, .factory/, .trae/).
        - Avoid duplicating skill content; prefer symlink/auto-discovery guidance.
        - Provide update/uninstall parity for each install path (https/clone/local).

    - path: 'docs/**'
      instructions: |
        Prioritize contradictions, broken flows, or missing parity across harnesses over style. Flag only high-signal issues.

  # Keep reviews from traversing heavy generated/vendor paths
  path_filters:
    - '!**/node_modules/**'
    - '!**/dist/**'
    - '!**/build/**'
    - '!**/*.lock'
    - '!**/*.min.*'
    - '!**/.DS_Store'

chat:
  auto_reply: false      # respond only when explicitly `@mentioned`
  art: false

Notes and options

Would you like me to open a small PR that adds this .coderabbit.yml to the repo, or tweak any of the toggles (e.g., keep sequence diagrams, enable ShellCheck by default for hooks)?

@kierr
Copy link
Copy Markdown

kierr commented Feb 22, 2026

Tip

For best results, initiate chat on the files or code changes.
🧩 Analysis chain
@kierr Thanks for pushing me to go deeper. I pulled real signals from this repo (docs- and shell‑heavy; skills/ + hooks/; no package.json) and from how CodeRabbit has actually behaved on recent PRs (#525, #524, #523, #520, #519, #517, #516, etc.). Two clear takeaways:

  • Auto reviews + many generic linters = noise here.
  • High-signal, repo-aware content checks (e.g., SKILL.md contradictions, cross‑platform hooks) were actually useful.

Below is a repo‑specific configuration that turns off the noisy bits, keeps guardrails (secret scanning), and makes reviews explicitly on-demand. I also added path-scoped guidance so reviews focus on what matters in this project.

Proposed .coderabbit.yml

language: en-US

reviews:
  profile: chill

  # Keep concise, useful context; drop the fluff
  high_level_summary: false
  in_progress_fortune: false
  poem: false
  review_status: false
  suggested_labels: false
  suggested_reviewers: false
  related_issues: false
  related_prs: false
  sequence_diagrams: false
  estimate_code_review_effort: false
  assess_linked_issues: false
  collapse_walkthrough: true
  changed_files_summary: true

  # On-demand reviews only (quiet by default)
  auto_review:
    enabled: false
    description_keyword: '@coderabbitai review'   # manual trigger
    labels: ['ai:review']                         # or add a label to trigger
    auto_incremental_review: false
    auto_pause_after_reviewed_commits: 0
    drafts: false
    base_branches: ['main', 'dev']                # adjust if you use another long-lived branch

  # Turn off pre-merge gatekeeping for a docs/shell repo
  pre_merge_checks:
    docstrings:
      mode: off
    title:
      mode: off
    description:
      mode: off
    issue_assessment:
      mode: off
    custom_checks: []

  # Disable noisy style linters; keep security scanners
  tools:
    gitleaks:
      enabled: true
    trufflehog:
      enabled: true

    # Disable generic style/grammar linters and language linters you don't use
    markdownlint:
      enabled: false
    languagetool:
      enabled: false
    eslint:
      enabled: false
    ruff:
      enabled: false
    pylint:
      enabled: false
    yamllint:
      enabled: false
    actionlint:
      enabled: false
    github-checks:
      enabled: false

    # ShellCheck: enable when you want it (see note below)
    shellcheck:
      enabled: false

  # Repo-aware guidance that adds signal when you do request a review
  path_instructions:
    - path: 'skills/**/SKILL.md'
      instructions: |
        Focus on content quality, not grammar/style. Check:
        - Frontmatter completeness (title/description/triggers).
        - Consistency with writing-skills guidance (e.g., avoid “what it does” contradictions).
        - Trigger overlap with existing skills; highlight duplicates or ambiguous triggers.
        - Clear, actionable steps; progressive disclosure; links to related skills.

    - path: 'hooks/**'
      instructions: |
        Focus on cross-platform robustness:
        - Windows compatibility (run-hook.cmd, git-bash discovery, cygpath usage) vs POSIX shells.
        - LF normalization (.gitattributes) and safe path resolution (no brittle dirname assumptions).
        - Quoting, set -euo pipefail, and predictable exit codes for hook runners.

    - path: '.**/INSTALL.md'
      instructions: |
        Harness-specific docs should:
        - Live under the matching dot-dir (e.g., .pi/, .qwen/, .factory/, .trae/).
        - Avoid duplicating skill content; prefer symlink/auto-discovery guidance.
        - Provide update/uninstall parity for each install path (https/clone/local).

    - path: 'docs/**'
      instructions: |
        Prioritize contradictions, broken flows, or missing parity across harnesses over style. Flag only high-signal issues.

  # Keep reviews from traversing heavy generated/vendor paths
  path_filters:
    - '!**/node_modules/**'
    - '!**/dist/**'
    - '!**/build/**'
    - '!**/*.lock'
    - '!**/*.min.*'
    - '!**/.DS_Store'

chat:
  auto_reply: false      # respond only when explicitly `@mentioned`
  art: false

Notes and options

Would you like me to open a small PR that adds this .coderabbit.yml to the repo, or tweak any of the toggles (e.g., keep sequence diagrams, enable ShellCheck by default for hooks)?

@obra

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 22, 2026

Tip

For best results, initiate chat on the files or code changes.

@kierr: I see you've brought @obra into the conversation about the proposed configuration. I'm standing by for their feedback on whether to proceed with the .coderabbit.yml PR or adjust any settings. 👍

@rentorm
Copy link
Copy Markdown

rentorm commented Feb 25, 2026

@sheurich

what happens with the subagents mentioned in the skills?

When I did my personal port of superpowers for Pi I had to create all the necessary agents which superpowers skills are using.

@sheurich
Copy link
Copy Markdown
Author

@obra @rentorm Addressed both points in 5ef132d.

  1. .pi location for harness-specific files
  • Added Pi-specific agent assets under .pi/agents/ (.pi/agents/code-reviewer.md and .pi/agents/README.md).
  • Updated docs to call out .pi/ as the home for Pi-specific resources.
  • Re: bootstrap.ts, yes—we can keep it under .pi/extensions/bootstrap.ts when we add Phase 2 bootstrap support. That needs explicit package wiring for extension discovery.
  1. Subagents referenced by Superpowers skills
  • Shipped the required Pi agent profile (code-reviewer) in this repo.
  • Documented installation in both .pi/INSTALL.md and docs/README.pi.md with commands to install it into ~/.pi/agent/agents/.
  • Clarified docs that Pi packages do not auto-install agent profiles, and that subagent workflows require both a subagent tool and matching agent profiles.

@rentorm
Copy link
Copy Markdown

rentorm commented Feb 25, 2026

@sheurich

Thanks for the added agent, however there are more agents needed for true superpowers to be unlocked. For example subagent-driven development workflow etc.

Here is the list I had to create:

Agents Directly Used in Superpowers Skills

Agent Used In Purpose
implementer subagent-driven-development Implements tasks with full tool access, follows TDD (RED-GREEN-REFACTOR), self-reviews before handoff
spec-reviewer subagent-driven-development Stage 1 review — verifies implementation matches spec exactly (read-only)
code-quality-reviewer subagent-driven-development, requesting-code-review Stage 2 review — reviews code quality, security, architecture (read-only)

And these ones generally are good to have to unlock good agentic workflow

Infrastructure Agents (not referenced in skills)

Agent Purpose
scout Fast codebase reconnaissance with compressed context for handoff
planner Creates implementation plans from context
worker General-purpose agent with full capabilities
reviewer Generic code review specialist

None of this comes out of the box for Pi so it is important to think about this

@sheurich
Copy link
Copy Markdown
Author

@sheurich

Thanks for the added agent, however there are more agents needed for true superpowers to be unlocked. For example subagent-driven development workflow etc.

Thanks — this is good feedback, and I agree that additional Pi agent profiles improve the full subagent-driven
workflow experience.

For this PR, I kept scope to Phase 1 of #435 (docs + smoke tests) and added code-reviewer because that is the
explicit named profile dependency in current Superpowers skills.

The other roles you listed (implementer, spec-reviewer, code-quality-reviewer) are currently modeled as role-specific
prompts over a general-purpose subagent, but shipping bundled Pi profiles for them would make setup more complete.

I’ll track this for Phase 2 in #435 (workflow mapping/integration), and I can add a follow-up issue/PR for a
recommended Pi profile pack (implementer, spec-reviewer, code-quality-reviewer, plus optional infra agents like
scout/planner/worker/reviewer).

@sherif-fanous
Copy link
Copy Markdown

I’m really looking forward to this feature!

Is there any update on the plan for this PR? Happy to help test it out if that would be useful for the maintainers.

Thanks for all your work on this project!

@sheurich
Copy link
Copy Markdown
Author

@obra Rebased onto current main and resolved the README.md conflict.

Current status:

  • PR is mergeable again
  • ./tests/pi/run-tests.sh passes locally

I also made one small docs consistency fix while rebasing:

  • docs/README.pi.md now includes the local-path uninstall example to match .pi/INSTALL.md

This PR remains Phase 1 of #435 only:

  • Pi docs
  • bundled code-reviewer Pi agent profile
  • smoke test for isolated install + skill discovery

Still intentionally deferred to Phase 2:

  • startup/bootstrap integration
  • broader workflow/subagent mapping
  • additional Pi agent profiles beyond current Phase 1 scope
  • end-to-end integration tests

Add documentation for using superpowers with pi coding agent:

- .pi/INSTALL.md: machine-readable install instructions
- docs/README.pi.md: full guide with tool mapping, architecture,
  troubleshooting, and known differences from Claude Code
- README.md: add pi section alongside Codex/OpenCode

Pi discovers skills from the skills/ directory via its native package
system. No plugins, hooks, bootstrap scripts, or CLI wrappers needed.

Refs: obra#435
Bare `pi update` updates all installed packages. Specify the source
URL so the example only updates superpowers.
@sheurich sheurich force-pushed the feature/pi-support branch from 2b5ba7b to f2583a5 Compare April 17, 2026 18:44
@sheurich
Copy link
Copy Markdown
Author

Rebased this PR onto current main and resolved the README conflict.

Current status:

Included here:

  • Pi install docs: .pi/INSTALL.md, docs/README.pi.md, README.md
  • bundled Pi agent profile: .pi/agents/code-reviewer.md
  • smoke tests: tests/pi/test-smoke.sh, tests/pi/run-tests.sh, tests/pi/README.md

Still intentionally deferred to Phase 2:

  • .pi/extensions/bootstrap.ts / startup bootstrap integration
  • broader workflow mapping
  • additional Pi agent profiles beyond the current Phase 1 requirement
  • end-to-end integration tests

If the Phase 1 docs/tests/agent-profile scope looks right, this should be ready for review.

name: code-reviewer
description: |
Use this agent when a major project step has been completed and needs to be reviewed against the original plan and coding standards. Examples: <example>Context: The user is creating a code-review agent that should be called after a logical chunk of code is written. user: "I've finished implementing the user authentication system as outlined in step 3 of our plan" assistant: "Great work! Now let me use the code-reviewer agent to review the implementation against our plan and coding standards" <commentary>Since a major project step has been completed, use the code-reviewer agent to validate the work against the plan and identify any issues.</commentary></example> <example>Context: User has completed a significant feature implementation. user: "The API endpoints for the task management system are now complete - that covers step 2 from our architecture document" assistant: "Excellent! Let me have the code-reviewer agent examine this implementation to ensure it aligns with our plan and follows best practices" <commentary>A numbered step from the planning document has been completed, so the code-reviewer agent should review the work.</commentary></example>
model: inherit
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I tested the bundled Pi code-reviewer profile locally and there’s a problem with this line:

model: inherit

In practice, this does not inherit the currently active Pi model. When the code-reviewer subagent is invoked from a live Pi session, it runs under a different/fallback configured
model instead of the model currently selected in the parent session.

If it can help, I'm attaching the export of the session when I reproduced the issue

subagent-model-inheritance-bug.json

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

Labels

enhancement New feature or request new-harness Requests for harnesses with few existing items

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants