certify-local

certify-local is a skill for Claude Code, Codex from lukasrepublic/agentic-foundry. It costs 145 tokens per session (1,750 once invoked), scanned A, original, MIT.

A release-certification workflow that deploys one software release locally and runs its existing end-to-end tests against that instance.

In plain words
What is it for?
Use it after all release components are merged to run the tagged journey suite and collect the test runner's output.
Why use it?
It produces machine-generated evidence from one consistent deployment before operator acceptance and staging checks.

Skill for Claude CodeCodex

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the foundry plugin — 80 skills, 8 agents, 8 hooks, 1 MCP server shipped together

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.

agentmods
npx agentmods add skills/lukasrepublic/agentic-foundry/certify-local
Any agent
npx skills add lukasrepublic/agentic-foundry --skill certify-local
Clone the repo
git clone --depth 1 https://github.com/lukasrepublic/agentic-foundry

Made for: Claude Code, Codex.

Or install foundry, the plugin that ships this one along with the rest of its 80 skills, 8 agents, 8 hooks, 1 MCP server.

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 certify-local

README.md
[![agentmods](https://agentmods.dev/badge/skills/lukasrepublic/agentic-foundry/certify-local.svg)](https://agentmods.dev/skills/lukasrepublic/agentic-foundry/certify-local)
Your own site
<a href="https://agentmods.dev/skills/lukasrepublic/agentic-foundry/certify-local"><img src="https://agentmods.dev/badge/skills/lukasrepublic/agentic-foundry/certify-local.svg" alt="Measured on agentmods" height="20"></a>
Per session 145 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,750 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00145 $0.01750
Opus 5 $0.00072 $0.00875
Sonnet 5 $0.00029 $0.00350
Haiku 4.5 $0.00015 $0.00175

Measured 4d ago against content hash 6f3e8d775ccd, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

certify-local 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 4d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (certify_local.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

skills/certify-local/SKILL.md · 97 lines

How it starts

The opening of the file, as written. The whole thing — 97 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/foundry:certify-local <release>

The release train's first certification step (CONSTITUTION.md §V factory mode: spec → plan → build → integrate → certify locally → operator acceptance → staging). One deploy, one real run of every atom's already-merged E2E journeys, the runner's own output as the evidence — no new evidence format, no re-judged verdict.

When to trigger

  • "certify <release> locally", "/foundry:certify-local <release>", after a release's atoms are all merged and before recording operator acceptance (/foundry:release accept, see skills/release/SKILL.md's tail).
  • NEVER as a substitute for the operator's own test pass — this is the machine-derived evidence that pass exists to consult, not the sign-off itself (see the Anti-patterns section below).

Procedure

python3 "${CLAUDE_PLUGIN_ROOT}/skills/certify-local/certify_local.py" <release-id> \
  [--project-dir <dir>] [--plugin-root <dir>] [--boot-wait <seconds>] [--timeout <seconds>] [--json]
  1. Resolve the release manifest (scripts/foundry_release.py's load_release — the SAME loader /foundry:release drives). An unknown/malformed <release-id> is a hard error, no emission.
  2. Collect every atom's journeys[] tags (context/feat-spec-template.md's Journeys section — the AC-tagged E2E-suite source) and union them into ONE --grep regex. REFUSE ("no journey suite") if no atom in the release declares any tag — nothing to certify.
  3. Resolve the release's target repo — EVERY atom's target_repo, resolved through the SAME _resolve_repo multi-repo pin every other release primitive uses, then asserted to AGREE (compared by resolved directory, not the raw config string). REFUSE, naming the split, if atoms resolve to differing repos — a release deploys as ONE unit, certify-local cannot boot more than one. Then look for a playwright.config.* at that repo's root. REFUSE ("no journey suite") if none exists — journeys are declared but there is no Playwright suite to run them.
  4. Resolve the boot recipe — project declaration first, the stack profile as fallback (feat-foundry-boot-recipe-precedence, AC-BRP-1..7). The release's resolved venue's repos.<key>.boot_command in .claude/foundry-project.json wins whenever it is a non-empty string — the active stack profile is not consulted at all. Otherwise, resolves the active stack profile's app_exercise_binding.boot — via the SAME resolution scripts/foundry-verify.py uses (foundry-stack-profile.py's read_lock/resolve_lock, imported read-only, never redefined). A malformed/unreadable manifest degrades to the profile path (never raises) but is reported on its own line, distinct from "declared nothing" (AC-BRP-4/5). REFUSE ("no boot recipe") if NEITHER source yields a recipe — naming declaring boot_command as the always-actionable remedy, and "activate a different stack profile" only when a .foundry/stack-profile.lock already exists (AC-BRP-3).
  5. Deploy ONCE. Launch the boot command as a single background process, cwd = the target repo root. This is the SAME make dev-analog every stack profile already declares — no new deploy mechanism.
  6. Run the FULL tagged journey suite — plain npx playwright test --grep <pattern> --reporter=json against that one running instance. The JSON reporter is Playwright's OWN evidence format; nothing here re-implements or re-formats it.
  7. Tear the boot process down (SIGTERM, SIGKILL after a grace period) regardless of the suite's outcome.
  8. Report per-atom pass/fail — a GROUPING VIEW over Playwright's own per-test ok verdicts: for each atom's declared tags, every test whose TITLE contains that tag (the classic title-tag --grep convention — no separate tag API) contributes its own outcome; a tag with zero matching titles is a named miss (declared coverage that was never written), not silently dropped. The runner's raw stdout/stderr/JSON report is the evidence attached alongside the per-atom table — never a custom score, never a re-judged pass.

Read the full file on GitHub · 97 lines

Files

What ships with it

1 file 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.

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. 4d ago First seen · 97 lines · 145 tokens per session scan A 6f3e8d775ccd

Subscribe to this mod's changes

certify-local is a skill published in the GitHub repository lukasrepublic/agentic-foundry (1 stars, last pushed 2d ago), licensed MIT. It adds 145 tokens to every session and 1,750 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-08-31.

Related

Other skills, from other repositories

test-native-extension

Validate a third-party control repo across four automated layers plus one printed manual recipe. Layer 1 asserts native-source structure (Android getName() and iOS +moduleName to manifest nativeModule; @ReactMethod / RCTEXPORTMETHOD to methods; no @ReactModule) plus load/init readiness (ReactPackage public no-arg…

microsoft/power-platform-skills · 211 tokens

test-site

Tests a deployed, activated Power Pages site at runtime using browser-based navigation, page crawling, and API request verification via Playwright. Use when the user wants to test, verify, or smoke-test their deployed site.

microsoft/power-platform-skills · 46 tokens

qa

Browser-based QA verification. Launches a real browser, navigates the app, clicks buttons, fills forms, and tests user flows. Works as a standalone skill or as a phase end condition in campaigns. Requires Playwright (optional dependency, graceful skip if not installed).

SethGammon/Citadel · 56 tokens

live-preview

Mid-build visual verification loop. Takes screenshots of components during construction, not just after. Catches visual regressions and invisible features before they compound. Requires Playwright or similar screenshot tool.

SethGammon/Citadel · 40 tokens

check-and-test

Run lint checks (ruff for Python, Biome for TS/JS), type checks (pyright for Python, tsc for TS/JS), and the standard pytest tiers (unit + e2e + tests skipped during pre-commit). Investigates failures to determine if they are application bugs or test issues, and fixes application bugs rather than weakening tests. Does…

ReflexioAI/claude-smart · 97 tokens

feature-verify

Feature verification (READ-ONLY, P0-P5). Use when: verifying feature behavior after deployment, validating API responses, diagnosing production issues, post-deploy smoke test. Not for: modifying data (use feature-dev), code review (use codex-review-fast), writing tests (use codex-test-gen), security audit (use…

sd0xdev/sd0x-harness · 75 tokens