Skip to content

feat: support Pi Desktop subagents and Selesai skills - #176

Open
yourconscience wants to merge 5 commits into
mainfrom
fm/dotagents-pi-desktop-selesai-release
Open

yourconscience wants to merge 5 commits into
mainfrom
fm/dotagents-pi-desktop-selesai-release

Conversation

@yourconscience

@yourconscience yourconscience commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • replace the unsupported Pi Desktop plugin generator with native global skills and subagent roots
  • render dotagents roles as Pi-compatible Markdown subagents under ~/.agents/subagents
  • filter Selesai bundled skills while preserving user-only skills
  • align README, setup, roles, and release-site capability documentation

Verification

  • ok github.com/yourconscience/dotagents/cmd/dotagents (cached)
  • verified Pi Desktop v0.14.6 Settings > Subagents and Settings > Skills surfaces, including create/delete cleanup of a temporary subagent

Full repository tests were not used as the merge gate because this machine has Pi Desktop installed and the existing environment-sensitive detection tests expect no GUI app; the focused integration checks pass.

Summary by Sourcery

Add native Pi Desktop and Selesai integrations with safe skill handling and documented capabilities.

New Features:

  • Add Pi Desktop support for syncing global skills and rendering Markdown subagents under its supported global roots.
  • Add Selesai Code support with detection, skill synchronization, and bundled-skill filtering to preserve Selesai-owned skills.

Enhancements:

  • Limit Pi Desktop integration to verified native skills and subagent surfaces.
  • Update setup, role, README, and release-site capability documentation for the new harnesses.

Documentation:

  • Document Pi Desktop global subagents and skills, plus Selesai's filtered skill synchronization behavior.

Tests:

  • Add focused coverage for Pi Desktop capabilities, configuration, role rendering, and Selesai detection and skill filtering.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sorry @yourconscience, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 5 hours and 26 minutes by commenting @sourcery-ai review. Upgrade to get a review now.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: bd19ffc1-67ce-4342-89af-982388f710fa


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.

@sourcery-ai

sourcery-ai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Reviewer's Guide

The PR replaces the unsupported Pi Desktop plugin path with native global skills and Markdown subagents, adds Selesai support that filters bundled skill names while retaining user skills, and updates detection, tests, setup behavior, and capability documentation accordingly.

File-Level Changes

Change Details Files
Adds Pi Desktop as a native global-skills and Markdown-subagent harness.
  • Registers Pi Desktop with GUI-bundle detection and only verified skills/subagent capabilities.
  • Uses ~/.agents/skills and ~/.agents/subagents with Claude-compatible YAML-frontmatter rendering.
  • Adds focused capability, configuration, and role-rendering tests.
cmd/dotagents/agents.go
cmd/dotagents/doctor.go
cmd/dotagents/harness.go
cmd/dotagents/main.go
cmd/dotagents/setup_scaffold.go
cmd/dotagents/pi_desktop_test.go
Adds Selesai Code support with protection for Selesai-owned bundled skills.
  • Registers Selesai with executable/version detection and its native skill root.
  • Discovers bundled skills from installed package layouts and excludes those names from expected sync output.
  • Preserves user-only skills and documents the conflict-avoidance behavior.
  • Adds detection, path, capability, and filtering-oriented tests.
cmd/dotagents/doctor.go
cmd/dotagents/harness.go
cmd/dotagents/inspect.go
cmd/dotagents/setup_scaffold.go
cmd/dotagents/selesai.go
cmd/dotagents/selesai_test.go
Aligns user-facing capability and setup documentation with the new integrations.
  • Documents Pi Desktop global roots, generated subagent ownership, and Settings-managed surfaces.
  • Adds Pi Desktop and Selesai to capability matrices and release-site notes.
  • Removes a duplicated OMP capability row in the site table.
README.md
docs/roles.md
docs/setup.md
docs/site/index.html
Updates repository ignore configuration for generated integration output.
  • Ignores the generated Pi Desktop subagents directory.
.gitignore

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f34f6a191d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread cmd/dotagents/agents.go
// renderPiDesktopAgentRole emits the Markdown frontmatter consumed by
// Pi Desktop's global ~/.agents/subagents directory.
func renderPiDesktopAgentRole(role agentRole) string {
return renderClaudeAgentRole(role)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Render Pi roles without Claude-specific overrides

When a canonical role defines claude.model, this delegates to renderClaudeAgentRole, which prioritizes that Claude-only override over the generic model. Pi Desktop therefore receives a model selection intended exclusively for Claude Code, potentially pinning the wrong provider/model or making the subagent unusable; render Pi frontmatter independently from role.Claude.

AGENTS.md reference: AGENTS.md:L21-L21

Useful? React with 👍 / 👎.

Comment thread cmd/dotagents/harness.go
func detectPiDesktop(executable string) bool {
// Pi Desktop is a GUI application. Detect by checking if the app bundle exists.
// The executable might be 'pi' from the PATH, but we check for the desktop app.
info, err := os.Stat("/Applications/PI-Desktop.app")

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Detect Pi Desktop in user-local installations

On macOS, applications may be installed under ~/Applications, but this detector checks only the system-wide /Applications directory. In that installation context both automatic setup and explicit --agents pi-desktop selection reject the installed harness because both paths still call isDetected, so the new skills and subagent integration cannot be configured.

AGENTS.md reference: AGENTS.md:L17-L17

Useful? React with 👍 / 👎.

Comment thread README.md
Comment on lines +49 to +50
| Pi Desktop¶ | yes | yes | -- | -- | -- |
| Selesai Code** | yes, filtered | -- | -- | -- | -- |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Add the new harnesses to the dotagents skill documentation

These new capability rows leave skills/dotagents/SKILL.md inconsistent: its description and capability matrix still enumerate only the previous harnesses, its role targets omit Pi Desktop, and it still states that Pi has skills only without distinguishing Desktop. Agents using the bundled dotagents skill will consequently give stale guidance about the newly advertised integrations.

AGENTS.md reference: AGENTS.md:L49-L51

Useful? React with 👍 / 👎.

Add Selesai Code integration:
- New selesai harness with dynamic bundled-skill discovery
- Filters bundled skills from sync to avoid conflicts
- Uses ~/.selesai/agent/skills directory
- Detects Selesai via version output
- Tests for harness capabilities and skill filtering

Add Pi Desktop harness foundation:
- Harness definition with skills-only support
- Detection via /Applications/PI-Desktop.app presence
- Uses ~/.pi/agent/skills directory
- Tests for basic capabilities

Update isDetected to support GUI-only apps:
- Allows harness Detect function when no executable specified
- Enables Pi Desktop detection without CLI dependency

Note: Pi Desktop plugin/subagent sync pending captain decision on manual vs automated approach (see needs-decision status)
Add Selesai Code integration:
- New selesai harness with dynamic bundled-skill discovery
- Filters bundled skills from sync to avoid conflicts
- Uses ~/.selesai/agent/skills directory
- Detects Selesai via version output
- Tests for harness capabilities and skill filtering

Add Pi Desktop plugin-based integration:
- Generates loadable Pi Desktop plugin from canonical skills and roles
- Plugin manifest.json contributes skills to Pi Desktop
- Skill files copied from canonical dotagents skills
- Agent roles converted to skill markdown format
- Plugin directory at .pi-desktop-plugin/ in repo root
- Config-driven integration (not simple symlink duplication)
- Requires one-time manual loading via Pi Desktop GUI

Update isDetected to support GUI-only apps:
- Allows harness Detect function when no executable specified
- Enables Pi Desktop detection without CLI dependency
@yourconscience
yourconscience force-pushed the fm/dotagents-pi-desktop-selesai-release branch from c292396 to 51e6b58 Compare September 14, 2026 04:34

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sourcery assessment

Approved.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 51e6b58baf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread cmd/dotagents/selesai.go
Comment on lines +16 to +19
selesaiPath, err := exec.LookPath("selesai")
if err != nil {
// Selesai not installed, return empty set
return make(map[string]struct{}), nil

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Selesai executable when filtering skills

When a Selesai agent uses a custom detect command or absolute path, isDetected validates that executable but this helper independently searches for the literal selesai. If that name is absent—or resolves to a different installation—the helper returns an empty bundled set, so canonical skills that collide with Selesai's bundled names are no longer filtered and sync can abort on those conflicts. Pass the detected executable through to bundled-skill discovery instead of performing a second hard-coded lookup.

Useful? React with 👍 / 👎.

This branch has not been deployed

No deployments
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