Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/ghostwright/phantom/list-pluginsnpx skills add ghostwright/phantom --skill list-pluginsgit clone --depth 1 https://github.com/ghostwright/phantomWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00021 | $0.00542 |
| Opus 5 | $0.00010 | $0.00271 |
| Sonnet 5 | $0.00004 | $0.00108 |
| Haiku 4.5 | $0.00002 | $0.00054 |
Grade B, and why
list-plugins scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
Use Read on `/home/phantom/.claude/settings.json`. Parse it as JSON. What it actually says
List plugins
Goal
Tell the operator which plugins are currently active for this agent, with their marketplace ids and a short description, in under 100 words.
Steps
1. Read settings.json
Use Read on /home/phantom/.claude/settings.json. Parse it as JSON.
If the file does not exist, return: "No settings.json yet. The dashboard plugins tab is at /ui/dashboard/#/plugins."
If the file exists but has no enabledPlugins field, return: "No plugins enabled yet. Browse the marketplace at /ui/dashboard/#/plugins."
Success criteria: you have either a parsed enabledPlugins map or a clear empty-state message ready.
2. Filter active entries
For each key: value in enabledPlugins, treat the entry as active when value is true, a non-empty array, or a non-empty object. Treat false and missing entries as inactive.
Success criteria: you have a list of plugin@marketplace keys for active plugins only.
3. Render the list
Format the response like this:
You have N plugins enabled:
- linear at claude-plugins-official - Linear issue tracking
- notion at claude-plugins-official - Notion workspace
- slack at claude-plugins-official - Slack workspace messages
- claude-md-management at claude-plugins-official - CLAUDE.md maintenance
Manage plugins at /ui/dashboard/#/plugins.
For each row, the descriptor after the dash is a short fallback string based on the plugin name. If you do not recognize a plugin id, use just the marketplace id as the descriptor.
Success criteria: the response shows the real current keys, the descriptors are honest (no fabricated descriptions for unknown plugins), and the dashboard URL is included.
Rules
- Never fabricate a plugin that is not in settings.json.
- Never use em dashes in the response. Regular hyphens are fine.
- Always include the dashboard URL.
- Keep the response under 100 words.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 58 lines · 21 tokens per session scan B 1328db0d2ebc
list-plugins is a skill published in the GitHub repository ghostwright/phantom (1,463 stars, last pushed 2mo ago), licensed Apache-2.0. It adds 21 tokens to every session and 542 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
good-first-issue-batch
File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor. Activate for prompts like "file some good first issues", "open a batch of GFIs", "publish backlog issues to GitHub", "find contributor-ready work", or after an…
seeds-issue-audit
Audit and triage open Seeds (sd) issues — find which can be closed, auto-close high-confidence completed ones, and report borderline cases. Activate for prompts like "audit open issues", "which seeds issues can be closed", "clean up the issue tracker", "triage the seeds backlog".
os-eco-dep-sync
Bump warren onto the latest published @os-eco/ versions across package.json + bun.lock and the Dockerfile CLI pins, then run the gates and open a PR. Use when checking if warren is on the newest burrow/plot/canopy/seeds/mulch/sapling.
release
Prepare, cut, and verify a warren release — tracker audits, version bump, CHANGELOG curation, ROADMAP update, push, then watch the pipeline through to published artifacts.
warren-dogfood-pipeline
Full prioritize → dispatch → shepherd → track pipeline against the live warren instance. Audits the seeds backlog around a focus theme, dispatches the surviving issues to warren agents one at a time, babysits the resulting PRs to merge (update-branch, conflict-repair runs, auto-merge), and closes the loop in the…
writing-skills
Use when a task reveals a recurring, multi-step capability worth saving for future sessions — writing a new Norma skill, or improving an existing self-authored one, via skillwrite.