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/richfrem/agent-plugins-skills/fix-plugin-pathsnpx skills add richfrem/agent-plugins-skills --skill fix-plugin-pathsgit clone --depth 1 https://github.com/richfrem/agent-plugins-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/richfrem/agent-plugins-skills/fix-plugin-paths)<a href="https://agentmods.dev/skills/richfrem/agent-plugins-skills/fix-plugin-paths"><img src="https://agentmods.dev/badge/skills/richfrem/agent-plugins-skills/fix-plugin-paths.svg" alt="Measured on agentmods" height="20"></a>What 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.00133 | $0.01886 |
| Opus 5 | $0.00067 | $0.00943 |
| Sonnet 5 | $0.00027 | $0.00377 |
| Haiku 4.5 | $0.00013 | $0.00189 |
Grade A, and why
fix-plugin-paths scanned grade A with 0 findings 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 191 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Identity: Plugin Path Portability Enforcer
You audit, fix, and continuously improve plugin path portability in skill and agent files.
You ensure they work correctly when installed via npx skills add, the plugin installer, or uvx.
The core rule: When a skill is installed, only its own directory exists:
.agents/skills/<skill-name>/
SKILL.md
scripts/
./assets/
references/
No plugins/ folder. No CLAUDE_PLUGIN_ROOT. No source repo structure.
This applies equally to Python scripts called by skills — a script must not use
PROJECT_ROOT / "plugins/other-plugin/..." at runtime. Cross-plugin script references
must use .agents/skills/<skill>/scripts/<script> or a self-contained copy.
The full ruleset is in references/fix-plugin-paths.prompt.md.
Phase 0: Intake
If the user specifies a file or directory, confirm and proceed. Otherwise ask one question:
Scope: <single file | plugin directory | full repository>
Mode: A) Single audit — fix one file now
B) Repository audit — generate task tracker, fix all flagged files
C) In-session evolve — continuously score SKILL.md after each edit
Auto-detect the scope if inferable from context. If mode is clear from the request, skip the question.
Phase 1: Audit a File
For each target file, check which rules from references/fix-plugin-paths.prompt.md apply using the auditor script:
python ./scripts/audit_plugin_paths.py <directory-or-file>
The auditor runs two passes:
- Standard pass (whitelist-aware) — flags
plugins/<name>and/Users/references in.mdand.pyfiles. False positives can be suppressed viascripts/plugin_paths_whitelist.json. - CRITICAL pass (non-whitelistable) — flags Python runtime
Path()constructions in.pyfiles wherePROJECT_ROOT,ROOT,SCRIPT_DIR, orPath(__file__)is used to build a path intoplugins/<name>. These cannot be whitelisted and must always be fixed.
For CRITICAL violations the correct fix is always one of:
- Replace with a relative
scripts/<script>.pypath (self-contained, portable) - Replace with
.agents/skills/<skill-name>/scripts/<script>.py(cross-skill installed reference) - Invoke via
uvx/subprocesscalling the GitHub-native installer (for installer bootstrapping)
What ships with it
14 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- evals/.lock.hashes 594 B
- evals/evals.json 1.3 KB
- evals/results.tsv 956 B
- evals/traces/iter_001_KEEP_score0.82.json 8.3 KB
- evals/traces/iter_002_KEEP_score0.82.json 5.2 KB
- evals/traces/iter_003_KEEP_score0.82.json 7.8 KB
- evals/traces/iter_004_KEEP_score0.82.json 5.3 KB
- evals/traces/iter_005_KEEP_score0.82.json 5.4 KB
- references/acceptance-criteria.md 42 B
- references/fix-plugin-paths.prompt.md 46 B
- references/program.md 30 B
- scripts/audit_plugin_paths.py 38 B runs code
- scripts/plugin_paths_whitelist.json 44 B
- scripts/portability-audit-report.md 44 B
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 · 191 lines · 133 tokens per session scan A 285ac9090311
fix-plugin-paths is a skill published in the GitHub repository richfrem/agent-plugins-skills (6 stars, last pushed yesterday), licensed MIT. It adds 133 tokens to every session and 1,886 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
kapso-whatsapp
How to interact with Kapso WhatsApp from the swarm — read inbound webhook payloads (text AND media), fetch message history, send free-form messages within the 24h session window (and template messages outside it), mark-as-read, show the typing indicator, send reactions, download media, verify webhook signatures, and…
composio
Use Composio from Agent Swarm through the agent-swarm x composio CLI route, the swarmx MCP tool, or a registered ctx.api.composio script connection. Trigger when a task needs connected third-party app tools such as Gmail, Google Calendar, Google Docs, Google Drive, GitHub, Slack, Notion, or HubSpot through Tool Router…
attio-interaction
Generic Attio CRM REST API v2 recipes for querying records, upserting companies/people/deals, writing notes/tasks/comments, managing lists, and handling webhooks.
swarm-scripts
Bulk, repeat, fan-out, or data-heavy work: write and run swarm scripts (inline script-run, named script-upsert, durable launch-script-run). Covers the script-vs-tool rubric, the authoring contract (args first, ctx second), the seed catalog, connections and secrets, dbquery, and exposing a script as an API.
user-management
How to manage the user registry — creating users for new Slack/GitHub/GitLab/Linear identities, managing aliases, resolving users across platforms. Use when a new human interacts with the swarm or when user identity needs updating.
scheduled-task-resilience
Guardrails for polling, scheduled jobs, and long-running external operations. Use whenever a task waits on CI, builds, deploys, browser jobs, or another asynchronous API so work survives heartbeat checks without duplicate delivery.