{"_id":"@dibin946/pi-skill-toggle","name":"@dibin946/pi-skill-toggle","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@dibin946/pi-skill-toggle","version":"1.0.2","description":"Enable/disable skills from loading into pi context at startup","main":"index.ts","type":"module","keywords":["pi-package"],"author":{"name":"Will Hampson"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dibin666/pi-skill-toggle.git"},"bugs":{"url":"https://github.com/dibin666/pi-skill-toggle/issues"},"homepage":"https://github.com/dibin666/pi-skill-toggle#readme","peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"engines":{"node":">=22.19.0"},"pi":{"extensions":["./index.ts"]},"gitHead":"0486f308bef0a8fd14fbea5201a73bc5b4533488","_id":"@dibin946/pi-skill-toggle@1.0.2","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-K/TPmfg5220InpFXm40A9IjjMVDj+ZNPX1ibFWzL/Z4QU50Ks+PGRlk5+bAwrK3C1y9qvmYzBGT08PQR9nLJYQ==","shasum":"6bee05188897c696e50b61a3766fee47546bb281","tarball":"https://registry.npmjs.org/@dibin946/pi-skill-toggle/-/pi-skill-toggle-1.0.2.tgz","fileCount":4,"unpackedSize":42657,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID7V8JUJ1i0L63PPsxe6aBh6BgBqtlibrVcvE6EglF8FAiEAw7ZC6dR2nJW2U0J7odabn9tpbKi2y6M9JpfY270NT+A="}]},"_npmUser":{"name":"dibin946","email":"ddddd2468hjk@gmail.com"},"directories":{},"maintainers":[{"name":"dibin946","email":"ddddd2468hjk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-skill-toggle_1.0.2_1786815426923_0.09862603067680786"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-15T17:37:06.749Z","1.0.2":"2026-08-15T17:37:07.043Z","modified":"2026-08-15T17:37:07.275Z"},"maintainers":[{"name":"dibin946","email":"ddddd2468hjk@gmail.com"}],"description":"Enable/disable skills from loading into pi context at startup","homepage":"https://github.com/dibin666/pi-skill-toggle#readme","keywords":["pi-package"],"repository":{"type":"git","url":"git+https://github.com/dibin666/pi-skill-toggle.git"},"author":{"name":"Will Hampson"},"bugs":{"url":"https://github.com/dibin666/pi-skill-toggle/issues"},"license":"MIT","readme":"# Pi Skill Toggle\n\nI have a confession to make. I'm a skill hoarder. We moved from MCP servers polluting our context to now the irresistible urge to gather and hoard skills that then do the same once you gather enough of them. The problem is I'm afraid to remove them and forget that they exist or where to find them in my system, and it's a pain to re-enable them when needed for a specific use case. So I created this project inspired by [Pi Skill Palette](https://github.com/nicobailon/pi-skill-palette) that lets me enable and disable all the 'SKILLs' I have without them disappearing from my visual memory, but still maintaining control over what gets pumped into my context.\n\nFull credit to [nicobailon](https://github.com/nicobailon) for pi-skill-palette which was the foundation of this. I just pointed my clanker at that project and basically said \"make that project but have it toggle skills instead.\"\n\n## Install\n\n```bash\npi install npm:@dibin946/pi-skill-toggle\n```\n\nOr from git:\n\n```bash\npi install git:github.com/dibin666/pi-skill-toggle\n```\n\nRestart pi to load the extension. For a local checkout, run:\n\n```bash\npi -e ./index.ts\n```\n\nThe current implementation targets Pi's `@earendil-works` API (Pi 0.84+).\n\n## Usage\n\n```text\n/skills-toggle\n```\n\n`/skills` is also available as a short alias.\n\nThis opens an interactive overlay where you can:\n- **Navigate** with ↑/↓ arrows\n- **Filter** by typing\n- **Enter/Space** - Toggle between enabled ↔ hidden\n- **d** - Toggle full disable (enabled ↔ disabled)\n- **Ctrl+S** - Save changes\n- **Esc** - Cancel\n\n## How It Works\n\nThe extension asks Pi's own `DefaultPackageManager` to resolve the complete skill catalog, including global/project settings, `.agents/skills`, local paths, packages, and currently loaded extension skills. It writes through Pi's `SettingsManager`, so global and project settings stay separate and writes use Pi's settings locking.\n\nFor ordinary local skills, disabled entries use Pi's built-in `-path` resource filter. For example:\n\n```json\n{\n  \"skills\": [\n    \"-skills/brainstorming\",\n    \"-skills/cloud-compute\"\n  ]\n}\n```\n\nPackage skills are filtered in the package's `skills` selection when necessary. Missing packages are never installed just by opening the toggle UI.\n\nDisabled skills:\n- Won't appear in the system prompt\n- Won't load their frontmatter into context\n- Are still visible in the toggle UI\n\n## Disable Modes\n\n### Hidden (Default Toggle)\nUse **hidden** when you still want to call the skill manually via `/skill:name` but don't want day-to-day context pollution. The model won't auto-invoke it, keeping your system prompt lean, but you retain access when needed.\n\n**Examples:** Specialized debugging skills, infrequently-used cloud tools, niche domain skills you call explicitly.\n\nHidden mode sets `disable-model-invocation: true` in the skill's SKILL.md frontmatter.\n\n### Fully Disabled\nUse **fully disabled** when you want to clean up your slash command menu so less-used skills don't overwhelm your UI/UX. The skill won't appear anywhere—not in the system prompt, not in `/skill:` completions.\n\n**Examples:** Deprecated skills, skills from packages you rarely use, duplicates you'll never need.\n\nDisabled mode adds `-path` entries to settings.json (pi's built-in mechanism).\n\n## Visual Indicators\n\n| Icon | Meaning |\n|------|---------|\n| ● (green) | Enabled - skill active in context |\n| ◐ (yellow) | Hidden - manual only via `/skill:name` |\n| ○ (red) | Disabled - completely off |\n| * (yellow) | Pending change (not yet saved) |\n| ² | Skill has multiple sources (duplicates) |\n\n## Theming\n\nCreate `theme.json` in the extension directory to customize colors. Copy `theme.example.json` as a starting point:\n\n```json\n{\n  \"border\": \"2\",\n  \"title\": \"2\",\n  \"enabled\": \"32\",\n  \"hidden\": \"33\",\n  \"disabled\": \"31\",\n  \"selected\": \"36\",\n  \"selectedText\": \"36\",\n  \"searchIcon\": \"2\",\n  \"placeholder\": \"2;3\",\n  \"description\": \"2\",\n  \"hint\": \"2\",\n  \"changed\": \"33\",\n  \"duplicate\": \"35\"\n}\n```\n\nValues are ANSI SGR codes (e.g., `\"36\"` for cyan, `\"2;3\"` for dim+italic).\n\n## Skill locations\n\nThe extension uses Pi's current resource resolver rather than a hard-coded list. It follows the same precedence and filtering as Pi itself, including:\n\n- global and project `.pi/skills/`\n- global and ancestor `.agents/skills/`\n- skills configured in settings or Pi packages\n- skills contributed by loaded extensions\n\nThis keeps the toggle list aligned with the Pi version in use.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-2916236686a6afcffc41ae44693a6583"}