validate-recipe

validate-recipe is a skill for Claude Code from guimatheus92/pr-review. It costs 35 tokens per session (2,329 once invoked), scanned C, original, MIT.

A documented set of build, test, and run commands for the pr-review project. It covers a TypeScript command-line program, including its bundled output and offline checks.

In plain words
What is it for?
Use it to build the project, run all or individual tests, exercise the bundled CLI, and perform offline end-to-end checks without creating a real pull request.
Why use it?
It provides repeatable validation steps so an agent can check whether the project builds, tests pass, and the command-line program runs correctly.

Skill for Claude Code

Written for Claude Code: installed under .claude/. Also seen: mentions Claude Code; mentions Codex.

Part of the pr-review plugin — 3 skills, 1 command shipped together

Good fit Use it to build the project, run all or individual tests, exercise the bundled CLI, and perform offline end-to-end checks without creating a real pull request.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/guimatheus92/pr-review/validate-recipe
Install

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.

Any agent
npx skills add guimatheus92/pr-review --skill validate-recipe
Clone the repo
git clone --depth 1 https://github.com/guimatheus92/pr-review

Made for: Claude Code.

Or install pr-review, the plugin that ships this one along with the rest of its 3 skills, 1 command.

Wrote 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.

agentmods badge for validate-recipe

README.md
[![agentmods](https://agentmods.dev/badge/skills/guimatheus92/pr-review/validate-recipe/github.svg)](https://agentmods.dev/skills/guimatheus92/pr-review/validate-recipe)
Your own site
<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.

agentmods 80×15 button for validate-recipe

Your own site · 80×15
<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>
Per session 35 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,329 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 2d ago against content hash e8604ce681ed, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

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`).
.claude/skills/validate-recipe/SKILL.md · 49 lines

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 build then npm 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-only for 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 .cmd doing node "%~dp0stub.mjs" %*; the stub reads --add-dir from argv to find the run dir, parses dispatch-plan.json, and writes attempt-<n>.json under each reviewer.attemptsDir (plus reviewer.capabilityPath for 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 with git show origin/main:dist/cli.cjs > <tmp>/cli-main.cjs for 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.yaml containing skill_packs: [], run node dist/cli.cjs review <url> --context-only — must exit 2 (zero passes on a code PR) while still rendering the ## Stack section.
  • Live smokes (gated on credentials — gh/az): --context-only against 1 real GitHub PR and 1 real ADO PR — must exit 0, ## Stack plausible for the diff, ## Passes non-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-cache must exit 1 with github listed 3000 of 9782 changed files — file list truncated … run git fetch origin master refs/pull/24767/head there and retry and 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 same gather command from the clone — PASS when stderr says completed 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 in tests/gather-cache.test.ts.
  • Cache-marker smoke: after a cached gather of a real PR, delete changedFilesComplete from the entry under ~/.pr-review/cache/<provider>/<scope>/<n>/, run gather <url> again — stderr must say cache entry predates the file-list completeness check — refetching, the entry is rewritten with the marker, and a third run is a cache hit.
  • pr-review-gather.json after a GitHub gather with --no-cache: metadata.changedFileCount equals changedFiles.length, changedFilesComplete is true, and there is no fullDiff key (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 a fullDiff, 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 with USERPROFILE=<tmp-home> HOME=<tmp-home> (Node's homedir() follows USERPROFILE on Windows) and a .pr-review/config.yaml written 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.

Read the full file on GitHub · 49 lines

Changes

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.

  1. 2d ago Changed · +7 lines e8604ce681ed
  2. 4d ago Changed · +6 lines scan A → C 1a088a0abff7
  3. 9d ago First seen · 36 lines · 35 tokens per session scan A f092bc448b3d

Subscribe to this mod's changes

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.

Related

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.

ZaxbyHub/opencode-swarm · 29 tokens

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".

jeremylongshore/tons-of-skills-marketplace · 76 tokens

voiden

Create and edit Voiden .void files for API testing. Covers the .void file format and all enabled extension block types.

VoidenHQ/voiden · 28 tokens

atmos-validation

Validate Atmos projects, components, arbitrary JSON Schema inputs, EditorConfig, and GitHub Actions; use affected-file selection and native CI annotations.

cloudposse/atmos · 31 tokens

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…

code-yeongyu/lazycodex · 125 tokens

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.

jeremylongshore/tons-of-skills-marketplace · 75 tokens