Skip to content

fix(pi): normalize skill names and avoid subagent tool conflicts#288

Open
dragosdm wants to merge 1 commit intoEveryInc:mainfrom
dragosdm:fix/pi-skill-name-normalization
Open

fix(pi): normalize skill names and avoid subagent tool conflicts#288
dragosdm wants to merge 1 commit intoEveryInc:mainfrom
dragosdm:fix/pi-skill-name-normalization

Conversation

@dragosdm
Copy link

Summary

Fix Pi compatibility for Compound Engineering by:

  1. normalizing Pi skill names during install and sync
  2. avoiding tool conflicts with pi-subagents by using a dedicated CE tool name

What changed

Pi skill-name normalization

  • normalize Pi skill names to lowercase hyphenated form
  • rewrite copied SKILL.md frontmatter so name: matches the normalized target directory
  • keep Pi install parity with the Compound Engineering plugin source
  • keep Pi sync parity with Claude home input while avoiding invalid Pi skill names

Examples:

  • ce:plan -> ce-plan
  • generate_command -> generate-command
  • resolve_parallel -> resolve-parallel

Pi subagent conflict avoidance

  • rename the CE Pi compat tool from subagent to ce_subagent
  • rewrite Pi-installed CE content so Task-style delegation uses ce_subagent
  • keep generic subagent available for pi-subagents
  • update Pi compatibility notes accordingly

This allows CE Pi installs to coexist with pi-subagents in the same runtime without tool-name conflicts.

Implementation notes

  • Pi-only sync behavior now lives in a dedicated Pi path instead of leaking into shared sync helpers
  • Pi prompt normalization was aligned with Pi skill/body rewrite behavior
  • Pi sync now cleanly replaces existing symlink targets when materialization is needed

Validation

Automated

Ran the full test suite locally

Result:

  • 329 pass
  • 0 fail

Manual smoke tests

Verified locally that:

  • install ./plugins/compound-engineering --to pi produces no invalid Pi skill names
  • CE workflow skills are installed with Pi-safe names
  • CE-installed Pi content references ce_subagent
  • ce_subagent works at runtime
  • subagent from pi-subagents still works at runtime
  • both tools can coexist in the same Pi session

Why this matters

Before this change, Pi installs/syncs could produce invalid skill names such as:

  • ce:plan
  • generate_command

and CE’s Pi compatibility extension conflicted with pi-subagents because both registered subagent.

After this change:

  • Pi output is valid
  • CE install/sync parity is preserved
  • CE and pi-subagents can coexist cleanly

@dragosdm dragosdm force-pushed the fix/pi-skill-name-normalization branch from 993150a to 5570e1f Compare March 17, 2026 11:29
@tmchow
Copy link
Collaborator

tmchow commented Mar 17, 2026

@kieranklaassen this is interesting suggestion because it also addresses cross platform compat with directory and skill names issues with colons not working with windows for example if we ever want folders to match skill names directly.

Using a hyphen is likely a better way to go so we don't overload the usage of what : means. E..g Claude Code already uses a colon to scope skills within a given plugin but we are using it a bit hacky in skill names themselves.

So wondering if we should just take the tax to rename the skills within the plugin entirely instead of using this pi converter

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.

2 participants