pi-claude-plugins
Pi extension that exposes Claude marketplace plugin skills from ~/.claude/plugins/marketplaces into the current pi session.
Package details
Install pi-claude-plugins from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-claude-plugins- Package
pi-claude-plugins- Version
0.1.4- Published
- Apr 7, 2026
- Downloads
- 530/mo · 34/wk
- Author
- rossz
- License
- MIT
- Types
- extension
- Size
- 13.6 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"extensions/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-claude-plugins
A pi extension that imports enabled Claude marketplace plugin skills and commands into the current pi session.
It bridges Claude's plugin marketplace layout into pi by exposing:
- skills as pi skills
- command markdown files as pi prompt templates / slash commands
The extension only loads plugins that are currently enabled in Claude after checking both:
~/.claude/plugins/installed_plugins.json~/.claude/settings.json
What gets loaded
Skills
The extension loads skill files from these locations:
~/.claude/plugins/marketplaces/*/skills/*/SKILL.md~/.claude/plugins/marketplaces/*/plugins/*/skills/*/SKILL.md
These are returned to pi as skillPaths through the resources_discover hook.
Command markdown files
The extension also loads command markdown files from these locations:
~/.claude/plugins/marketplaces/*/commands/*.md~/.claude/plugins/marketplaces/*/plugins/*/commands/*.md
These are returned to pi as promptPaths, so they show up like pi prompt templates / slash commands.
Install
pi install npm:pi-claude-plugin
Remove
pi remove npm:pi-claude-plugin
How plugin enablement works
The extension does not load every plugin found on disk. It first reads:
~/.claude/plugins/installed_plugins.json~/.claude/settings.json
A plugin is loaded only if:
- it exists in
installed_plugins.json - it matches the current scope (
useror current project) - it is not explicitly disabled in
settings.json
If ~/.claude/settings.json contains:
{
"enabledPlugins": {
"playwright-cli@playwright-cli": false
}
}
then that plugin is ignored completely, even if it is installed.
Plugin key format
Claude's installed plugins file uses keys like:
planning-with-files@planning-with-filesfrontend-design@claude-plugins-officialplaywright-cli@playwright-cli
This extension maps marketplace paths to those keys as follows.
Top-level marketplace skills
For:
~/.claude/plugins/marketplaces/<marketplace>/skills/<plugin>/SKILL.md
it checks whether this plugin key is enabled:
<plugin>@<marketplace>
Nested plugin skills
For:
~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/skills/<skill>/SKILL.md
it checks whether this plugin key is enabled:
<plugin>@<marketplace>
Top-level marketplace commands
For:
~/.claude/plugins/marketplaces/<marketplace>/commands/*.md
it checks whether this marketplace-level plugin key is enabled:
<marketplace>@<marketplace>
This matches layouts like:
~/.claude/plugins/marketplaces/planning-with-files/commands/*.md
Nested plugin commands
For:
~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/commands/*.md
it checks whether this plugin key is enabled:
<plugin>@<marketplace>
Scope rules
installed_plugins.json can contain both user-scoped and project-scoped plugin installs.
This extension respects that:
- user scope → always loaded
- project scope → only loaded when the current pi working directory is inside that
projectPath
So if a Claude plugin is enabled only for one project, this extension will only expose it in pi when you are inside that same project tree.
Ignored paths
The extension intentionally ignores:
- hidden files and directories (
.-prefixed) node_modules/build/dist/out/- symlinked directories/files
This avoids duplicate, generated, or unrelated content being imported.
Runtime behavior
On startup and on /reload, the extension:
- reads
~/.claude/plugins/installed_plugins.json - reads
~/.claude/settings.json - determines which Claude plugins are enabled for the current pi cwd
- scans the supported skill and command locations
- filters out anything not enabled or explicitly disabled
- returns the remaining files to pi via
resources_discover
The extension also prints and notifies a summary like:
- number of loaded skill files
- number of loaded command markdown files
Why some Claude resources may still not appear
Even when a file exists on disk, it will not be loaded if:
- the plugin is not present / enabled in
installed_plugins.json - the plugin is explicitly disabled in
~/.claude/settings.json - the plugin is project-scoped for a different project
- the file is outside the supported path patterns
- the file is inside a hidden/ignored directory
Skill collisions and validation warnings
This extension forwards Claude plugin resources into pi, but pi still applies its own resource rules.
That means:
- pi skill names must still be unique within the session
- pi may skip colliding skills if multiple files declare the same
name:in frontmatter - pi may emit warnings if a skill's
namedoes not match its parent directory
These warnings come from pi's skill loader, not from this extension itself.
Limitations
- This extension does not execute Claude plugin hooks or plugin runtime logic
- It only imports filesystem resources that map cleanly into pi:
- skills (
SKILL.md) - command markdown files (
*.mdincommands/)
- skills (
- It does not import arbitrary plugin code, agents, hooks, or non-markdown command formats
- It does not import or bridge Claude plugin MCP integrations / MCP servers
When to reload
Run /reload in pi after:
- enabling or disabling Claude plugins
- changing
~/.claude/plugins/installed_plugins.json - changing
~/.claude/settings.json - installing/removing marketplace plugins
- adding/removing skills or command markdown files in the marketplace directories
Files
- Extension entry point:
extensions/index.ts - Package manifest:
package.json
License
MIT