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/psd401/psd-claude-plugins/setupnpx skills add psd401/psd-claude-plugins --skill setupgit clone --depth 1 https://github.com/psd401/psd-claude-pluginsWhat 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.00051 | $0.01589 |
| Opus 5 | $0.00026 | $0.00794 |
| Sonnet 5 | $0.00010 | $0.00318 |
| Haiku 4.5 | $0.00005 | $0.00159 |
Grade A, and why
setup 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 2d ago.
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 — 162 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Project Setup — verification gate & reviewers
Create .psd/verify.json, the single per-project config that powers the Definition-of-Done gate (used by /lfg, the runtime-verifier agent, and the Stop hook) and the watch-until-clean loop. Without this file the gate and Stop hook are inert, so the plugin never disrupts a repo that hasn't opted in.
See docs/patterns/definition-of-done.md for the full schema.
Arguments: $ARGUMENTS
Phase 1: show / reset
CONFIG=".psd/verify.json"
case "$ARGUMENTS" in
show)
[ -f "$CONFIG" ] && { echo "=== $CONFIG ==="; cat "$CONFIG"; } || echo "No $CONFIG — gate inert (run /setup to create)."
exit 0 ;;
reset)
rm -f "$CONFIG"; echo "Removed $CONFIG. Gate is now inert for this repo."; exit 0 ;;
esac
[ -f "$CONFIG" ] && { echo "=== existing $CONFIG ==="; cat "$CONFIG"; echo; }
Phase 2: Auto-detect commands
Detect the project's real commands before asking — propose, don't interrogate.
echo "=== detecting project commands ==="
if [ -f package.json ]; then
for s in build lint typecheck test; do
jq -e ".scripts.\"$s\"" package.json >/dev/null 2>&1 && echo " $s → npm run $s"
done
jq -e '.devDependencies["@playwright/test"] // .dependencies["@playwright/test"]' package.json >/dev/null 2>&1 && echo " e2e → npx playwright test"
fi
[ -f pyproject.toml ] || [ -f pytest.ini ] && echo " test → pytest ; lint → ruff check ."
[ -f Cargo.toml ] && echo " test → cargo test ; lint → cargo clippy -- -D warnings"
[ -f go.mod ] && echo " test → go test ./... ; lint → go vet ./..."
Lint must be zero-warning — propose the warnings-as-errors form (eslint --max-warnings 0, ruff check, clippy -- -D warnings).
Phase 3: Auto-detect the AI reviewers
The watch-until-clean loop must know which reviewer logins to wait for. Detect them from recent PRs:
echo "=== recent PR reviewers (bots + humans) ==="
DEF=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || echo main)
for pr in $(gh pr list --state all --limit 10 --json number --jq '.[].number' 2>/dev/null); do
gh api "repos/{owner}/{repo}/pulls/$pr/reviews" --jq '.[].user.login' 2>/dev/null
done | sort -u
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.
- 2d ago First seen · 162 lines · 51 tokens per session scan A 233031380375
setup is a skill published in the GitHub repository psd401/psd-claude-plugins (2 stars, last pushed 9d ago), licensed MIT. It adds 51 tokens to every session and 1,589 once invoked, about $0.0003 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-08-31.
Other skills, from other repositories
use-agent-browser-for-airi
Test AIRI display-model imports with agent-browser across stage-tamagotchi Electron, stage-web, and stage-pocket mobile web layouts. Use when uploading and verifying contributor-supplied Live2D ZIP, VRM, or MMD ZIP/PMX/PMD files through AIRI's model selector, including onboarding bypass, format-specific import…
test-conversion
Workflow for converting unit tests to browser tests for Project Bedrock. Invoke this when the user wants to remove complex Browser dependencies from tests.
agui-dotnet-cross-language-tests
Author cross-language interop tests that verify the AG-UI .NET SDK is wire-compatible with the TypeScript SDK — a Vitest TS client driving a C# CrossLanguage.TestServer over HTTP, both directions, including protobuf byte-parity against @ag-ui/proto. USE FOR: adding or modifying cross-language interop coverage…
cli-e2e-testcase-writer
Use when adding or updating Go CLI E2E coverage for one tests/clie2e/{domain} domain of the compiled lark-cli, especially when the work requires live --help or schema exploration, scenario-based clie2e.RunCmd workflows, and per-domain coverage.md maintenance.
harness-test-writer
Add regression test cases to the Bifrost provider harness (the Postman collection run via make run-provider-harness-test) based on a merged PR or a GitHub issue. Fetches the PR/issue, traces the affected wire path in the codebase, checks existing harness coverage, designs cases following harness conventions, inserts…
launch
Launch Code OSS (VS Code from sources) into an isolated throwaway profile with unique debug ports so you can drive it with @playwright/cli AND attach a Node debugger via dap-cli in the same session. Use when working on VS Code itself and you want to interact with the running workbench, automate chat or UI flows, test…