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 skills add guimatheus92/pr-review --skill validate-recipegit clone --depth 1 https://github.com/guimatheus92/pr-reviewWrote 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/guimatheus92/pr-review/validate-recipe)<a href="https://agentmods.dev/skills/guimatheus92/pr-review/validate-recipe"><img src="https://agentmods.dev/badge/skills/guimatheus92/pr-review/validate-recipe/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/guimatheus92/pr-review/validate-recipe"><img src="https://agentmods.dev/badge/skills/guimatheus92/pr-review/validate-recipe.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00035 | $0.02329 |
| Opus 5 | $0.00017 | $0.01164 |
| Sonnet 5 | $0.00007 | $0.00466 |
| Haiku 4.5 | $0.00003 | $0.00233 |
Grade C, and why
validate-recipe scanned grade C with 2 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
- Render: Playwright MCP on `https://github.com/<owner>/<repo>/blob/<branch>/README.md` (add `#<anchor>` to land on a section). It blocks `file:` URLs — serve local previews with a one-line node http server. Screenshots Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- Badges: `curl -s https://img.shields.io/<path> | grep -o '<title>[^<]*</title>'` — the title is the rendered text (`CI: passing`, `release: v0.10.0`). How it starts
The opening of the file, as written. The whole thing — 49 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Validation recipe — pr-review
Stack
TypeScript CLI (Node >= 20), esbuild single-file bundle at dist/cli.cjs; tests via node:test + tsx.
Tier 1 — static
npm run build# tsc typecheck + esbuild bundle; no separate lint script exists
Tier 2 — tests
- Full suite:
npm run test# scripts/test.mjs → node --test --import tsx, recursive over tests/**/*.test.ts - One file:
node --test --import tsx tests/<file>.test.ts
Tier 3 — runtime
- The surface is the bundled CLI:
node dist/cli.cjs <command>(rebuild first). - Offline full-pipeline dogfood (no PR, no network beyond packs):
npm run buildthennpm run dogfood -- --base origin/main— converts the branch diff into a synthetic gather and drives the real bundle with--from-gather --dry-run. Add--context-onlyfor routing only. Refuses a stale bundle, so build first. URL-based companions are off here by design. - Full pipeline with no LLM — a stub runtime.
--copilot <path>overrides the binary and pins the copilot runtime, so a stub does the whole real run:node dist/cli.cjs review <url> --from-gather <gather.json> --dry-run --no-codex --no-companions --copilot <stub.cmd>. On win32 the stub is a.cmddoingnode "%~dp0stub.mjs" %*; the stub reads--add-dirfrom argv to find the run dir, parsesdispatch-plan.json, and writesattempt-<n>.jsonunder eachreviewer.attemptsDir(plusreviewer.capabilityPathfor installed-plugin passes). Batches arrive as separate invocations — count them in a file under the run dir, since the CLI numbers attempts itself. Withhold one reviewer's attempt file to force the automatic-recovery batch. The child's stderr is captured, not passed through, so assert on run artifacts rather than on the stub's own output. This is the only way to exercise dispatch, recovery and the audit paths offline; pair it withgit show origin/main:dist/cli.cjs > <tmp>/cli-main.cjsfor a same-scenario before/after. - Side-effect-free smokes:
node dist/cli.cjs cache clear --pr <url>(proves URL parse end to end), a bad URL with--detach(must fail foreground, exit 2, no new dir under ~/.pr-review/runs),node dist/cli.cjs packs sync/packs list/doctor(packs clone + freshness + Linguist cache, no PR needed). - Offline pass-selection smoke: in a temp repo with
.pr-review.yamlcontainingskill_packs: [], runnode dist/cli.cjs review <url> --context-only— must exit 2 (zero passes on a code PR) while still rendering the## Stacksection. - Live smokes (gated on credentials — gh/az):
--context-onlyagainst 1 real GitHub PR and 1 real ADO PR — must exit 0,## Stackplausible for the diff,## Passesnon-empty with the expected glob hits. - File-list completeness smoke (gh only, read-only, ~30 API calls): from a directory that is NOT a checkout,
node dist/cli.cjs gather https://github.com/OpenAPITools/openapi-generator/pull/24767 --no-cachemust exit 1 withgithub listed 3000 of 9782 changed files — file list truncated … run git fetch origin master refs/pull/24767/head there and retryand leave nothing under~/.pr-review/cache/github/OpenAPITools__openapi-generator/. - Completion-path live proof (not run here — needs a clone of a >3000-file PR): clone
OpenAPITools/openapi-generator,git fetch origin master refs/pull/24767/head, then the samegathercommand from the clone — PASS when stderr sayscompleted 6782 file(s) from git at <root>and the JSON holds 9782 entries. Until someone runs it, the completion path's live evidence is the temp-git-repo tests intests/gather-cache.test.ts. - Cache-marker smoke: after a cached gather of a real PR, delete
changedFilesCompletefrom the entry under~/.pr-review/cache/<provider>/<scope>/<n>/, rungather <url>again — stderr must saycache entry predates the file-list completeness check — refetching, the entry is rewritten with the marker, and a third run is acache hit. pr-review-gather.jsonafter a GitHub gather with--no-cache:metadata.changedFileCountequalschangedFiles.length,changedFilesCompleteistrue, and there is nofullDiffkey (retired in #26). Only on a fresh gather — a cache hit returns the stored payload verbatim, so an entry written by <= 0.11 still yields afullDiff, which is expected and harmless.- Real (dispatching) reviews need provider auth AND a runtime on PATH — treat as not locally verifiable unless both exist. Run them from a COPY of the bundle (
cp dist/cli.cjs $TEMP/cli-x.cjs) so a later rebuild cannot abort the run. - Config-dependent CLI smokes without touching the real
~/.pr-review: run the bundle withUSERPROFILE=<tmp-home> HOME=<tmp-home>(Node'shomedir()follows USERPROFILE on Windows) and a.pr-review/config.yamlwritten under it;env -u GITHUB_TOKEN -u GH_TOKEN …makes the auth outcome deterministic. Before/after against the pre-change bundle:git show origin/main:dist/cli.cjs > <tmp>/cli-main.cjs— the committed bundle is fresh by CI contract, so no worktree build is needed.
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 Changed · +7 lines e8604ce681ed
- 4d ago Changed · +6 lines scan A → C 1a088a0abff7
- 9d ago First seen · 36 lines · 35 tokens per session scan A f092bc448b3d
validate-recipe is a skill published in the GitHub repository guimatheus92/pr-review (2 stars, last pushed 2d ago), licensed MIT. It adds 35 tokens to every session and 2,329 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
include-test-files-that-assert-on-behavior-being-changed-in-decl
When delegating a task affected by this skill, include.
deploy
Use when ready to ship — runs pre-push gates (lint, typecheck, build, tests, security sweep), commits, releases, and pushes. Standalone, never auto-invoked. Push always requires explicit confirmation. Trigger with /hyperflow:deploy, "ship it", "ready to push", "release", "cut a release", "deploy".
voiden
Create and edit Voiden .void files for API testing. Covers the .void file format and all enabled extension block types.
atmos-validation
Validate Atmos projects, components, arbitrary JSON Schema inputs, EditorConfig, and GitHub Actions; use affected-file selection and native CI annotations.
review-work
Post-implementation review orchestrator. Launches 5 parallel background sub-agents: Oracle (goal/constraint verification), Oracle (code quality), Oracle (security), unspecified-high (hands-on QA execution), unspecified-high (context mining from GitHub/git/Slack/Notion). All must pass for review to pass. MUST USE…
hyperflow-deploy
Hyperflow ship phase. Use when the user is ready to release — verbs like ship, push, release, deploy, "cut a release", "ready to push". Runs pre-push gates (lint + typecheck + build + tests + security sweep), then asks before pushing. Never --no-verify, never force-push to main.