Authoring Skills
friday-platform/friday-studio
Authors new agent skills that follow the Anthropic + agentskills.io specification.
Build and audit deterministic verification gates — a check that blocks a pipeline and can be shown to go red.
$ npx skills add oaustegard/claude-skills --skill gating -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oaustegard/claude-skills gating --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/gating .claude/skills/gating && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "gating" agent skill from https://github.com/oaustegard/claude-skills/tree/main/gating into .claude/skills/gating/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gating", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oaustegard/claude-skills/tree/main/gatingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oaustegard/claude-skills --skill gating -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oaustegard/claude-skills gating --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/gating .agents/skills/gating && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gating" agent skill from https://github.com/oaustegard/claude-skills/tree/main/gating into .agents/skills/gating/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gating", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill gating -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oaustegard/claude-skills gating --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/gating .cursor/skills/gating && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gating" agent skill from https://github.com/oaustegard/claude-skills/tree/main/gating into .cursor/skills/gating/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gating", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oaustegard/claude-skills.git --path gating--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oaustegard/claude-skills --skill gating -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oaustegard/claude-skills gating --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/gating .gemini/skills/gating && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gating" agent skill from https://github.com/oaustegard/claude-skills/tree/main/gating into .gemini/skills/gating/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gating", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oaustegard/claude-skills gatingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oaustegard/claude-skills --skill gating -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/gating .github/skills/gating && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gating" agent skill from https://github.com/oaustegard/claude-skills/tree/main/gating into .github/skills/gating/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gating", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill gating -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oaustegard/claude-skills gating --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/gating .opencode/skills/gating && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gating" agent skill from https://github.com/oaustegard/claude-skills/tree/main/gating into .opencode/skills/gating/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gating", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gatingBuild and audit deterministic verification gates — a check that blocks a pipeline and can be shown to go red.
Gating is an agent skill from oaustegard/claude-skills. Build and audit deterministic verification gates — a check that blocks a pipeline and can be shown to go red. Use when writing a calibration gate, CI check, validation script or pre-publication check for a numeric or empirical result; when a plausible-but-wrong value would survive review; when asking whether an existing test, linter rule or check could actually fail; and when a suite passes first try, passes suspiciously often, or was written by whatever produced the thing it checks. Triggers on "can this check…
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `CHANGELOG.md`, `README.md` and `references/anchors.md`).
It sits in Business, Finance & HR, covering Performance reviews and Linting and formatting. The repository describes itself as: My collection of Claude skills. The licence is MIT.
Read from SKILL.md and the folder at commit 6fc82b8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Gating loads about 3.1k tokens when it runs, and up to ~6.8k if it reads all its reference files. Until then it costs about 163 tokens; SKILL.md has 1,846 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from oaustegard/claude-skills at commit 6fc82b8, republished under its MIT licence (© oaustegard). 1,846 words, ~3,144 tokens.
.claude/skills/gating/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.A gate is a check that blocks. Its only job is to go red when it should.
The characteristic failure is not a wrong check — a wrong check gets noticed. It is a check that cannot fail, which reports PASS forever and is indistinguishable from a working one from the outside. That is what makes this different from ordinary testing: the object under suspicion is the check.
Scope is ONE check and whether it can be made to fail.
| Situation | Use |
|---|---|
| Sequence several steps with branches and retries | flowing |
| Run the repo's existing suite | run it |
| Decide what to test at all | this skill has no opinion; that is design |
A gate is a thing that goes red. If nothing here can go red, there is no gate to audit.
Every gate owes these. A gate missing any of them is not yet a gate.
1. An anchor outside your own code. Something the check compares against
that your implementation did not produce: a published constant, a closed-form
answer, a conservation law, a degenerate case with a known result, an
independent implementation. A check that compares this run to the last run only
ever tells you the code still does what it did. See references/anchors.md.
2. A known-bad it demonstrably rejects. Break the subject the way it would plausibly break, run the gate, confirm red. Until you have done this you have not shown the gate works — you have shown it runs. This is the obligation people skip, because a passing gate feels like evidence.
Two things about known-bads that are easy to get wrong:
mutate.py needs a
fast gate variant and it is tempting to validate everything there.known_bad(..., covers=(...))); the harness prints the
checks no known-bad reaches. An audited gate had a single known-bad covering
1 of 8 checks — and the check its whole result rested on accepted the same
bad case.3. A written statement of what it cannot catch. Coverage holes are invisible from inside a green run: the gate is silent about the thing it does not look at, in exactly the same tone it uses for the thing it looked at and approved. The author has to assert the hole; nothing else will.
scripts/gate.py enforces obligations 2 and 3 mechanically — it returns exit
code 2 (INCONCLUSIVE, not PASS) when a gate registers no known-bad or no
coverage limit.
Work in this order. The first step is the one that determines whether the rest is worth anything.
Name the wrong conclusion, not the component. Not "check the quantizer is correct" but "prevent shipping scalar wins at high bit rates when that would really be an optimizer artifact." A gate aimed at a conclusion knows what counts as a near-miss; a gate aimed at a component just exercises the code.
Find an anchor. references/anchors.md lists the kinds, in rough order of
strength, with the questions that find each one.
Prefer brackets to point checks. Assert a value lies strictly between two things it cannot legitimately pass: better than a baseline, worse than a theoretical bound. A one-sided check passes for a result that collapsed as readily as for one that is right — which is how an implementation that silently does nothing gets certified.
Derive the tolerance from measured noise. Run the thing several times, see how much it moves, put the threshold outside that. A tolerance picked for comfort tends to land wider than the defect you are trying to catch, and then it swallows it.
Then check it is not too tight to mean anything. The opposite failure is real and less obvious: a margin can be statistically impeccable and practically empty. A paired estimator — scoring both arms on one shared sample so the common fluctuation cancels — is the right way to measure a difference, and its standard error shrinks as the two arms converge. So "beats the baseline by 3 se" degenerates: a codebook perturbed by N(0, 1e-3) gained +0.0001 dB against a 3-se margin of 1.2e-06 and was accepted, while real ones gained 0.35–1.41 dB. The check certified the effect is real, not the effect is worth having. Those are different assertions and need different thresholds — and the second one has to come from an anchor (there, a published lattice codebook), never from the estimator, which knows nothing about what magnitude would matter.
Build the known-bad and confirm red. Then run scripts/mutate.py for the
failures you did not think of.
Wire it to a non-zero exit and run it before the thing it gates, not after. A gate that runs after the results are written is a report.
Given tests, a linter config, a CI job, or a gate someone already wrote, the
question is not "do these pass" but "can these fail". Full procedure in
references/auditing.md; the fast version:
scripts/mutate.py against the code the suite covers. Every survivor is
a behaviour nothing checks.# harness: refuses to report PASS without a known-bad and a coverage limit
python3 scripts/gate.py # importable; see the module docstring
# mutation pass: which single-token changes does the gate NOT notice?
python3 scripts/mutate.py --target src/codec.py -- python3 calibrate.py
python3 scripts/mutate.py --target grids.py --max 40 -- pytest -qmutate.py requires the gate to pass on unmutated code first and refuses to
run otherwise, because survivor counts against an already-red gate mean
nothing. It restores the file even on interrupt, and uses tokenize so string
literals and comments are never corrupted. It is the zero-dependency pass that
works against any gate command; once it stops finding survivors, mutmut or
cosmic-ray go deeper on Python test suites specifically.
Each of these has shipped a wrong result somewhere. They are ordered by how convincingly they impersonate a working gate.
| Anti-pattern | Why it survives review |
|---|---|
| Slack wider than the defect | A tolerance chosen for comfort. The gate passes the real thing and the broken thing, and reports PASS for both. Derive the threshold from noise, then confirm the known-bad falls outside it. |
| An oracle with a coverage hole | Published anchors end somewhere. If the defect is past the end of the table, the check is structurally incapable of catching it and looks fine. State the range the anchor covers. |
| An assertion whose truth doesn't depend on the subject | "The output has at least N distinct colours" is equally true of an unchanged frame. Prefer differential checks: the state must change when it should, and a toggle applied twice must return to the byte-identical original. |
| Confirming the check ran, not that it can fail | "Invoke it and confirm the step appears in the output" catches a check that was never wired up. It says nothing about a check that is wired up and toothless. |
| Comparing against your own previous output | Regenerated goldens ratify drift. If the golden came from the code under test, it is a changelog, not an oracle. |
| A cache keyed on the problem rather than the method | cache[(m, K)] cannot notice that the code producing the value changed. Version-stamp the artifact and delete on mismatch instead of trusting. |
| A self-matching predicate | until ! pgrep -f trainer never exits, because the watching shell's own argv contains trainer. Worse, a malformed variant exits immediately and reports the job finished while it runs. Wait on a PID. |
| A margin that is significant but not meaningful | A threshold derived purely from estimator noise certifies that an effect is real, not that it is worth having — and a paired estimator's noise shrinks as the arms converge, so the margin can approach zero. Pair every noise-derived floor with a magnitude an anchor says would matter. |
| A strict bracket at an attainable optimum | A theoretical bound is often reachable, and reaching it is the best possible outcome. A strict edge then goes red on a perfect result and blocks real work. Ask of each edge whether the subject can legitimately sit exactly there. |
| A gate written by whatever produced the artifact | Shared assumptions produce shared blind spots, and the convention both inherited is the one neither questions. Anchors are the defence, because an anchor is the one input the producer did not choose. |
This skill is for results and pipelines where the failure mode is a plausible wrong number that would survive a careful read.
| Use | When the risk is |
|---|---|
gating (this) | A number or empirical result is about to be published or acted on, and a wrong-but-reasonable value would pass unnoticed. Output: a gate that blocks. |
challenging | An artifact would draw a specific objection from a skeptical reader — prose, analysis, a recommendation, a diff. LLM judgement against a persona. Output: findings and a SHIP/REVISE/RETHINK verdict. |
verifying-claims | Documentation says something about code that is no longer true. Output: prose-vs-code disagreements. |
| A test suite / TDD | Code you wrote does not behave as specified. Output: red tests. |
challenging asks would a careful reader object? gating asks can this
check go red? They are complements and they miss different things: an
adversarial reviewer will not recompute your constants, and a gate will not
notice that your framing is wrong.
A gate checks correctness, and cannot check comparability. If two arms of a comparison are each individually correct but not comparably implemented, no anchor and no mutant will see it: nothing is broken, so nothing goes red. A published ablation reported one transform 11–24× slower than another and carried a caveat saying the number was implementation-bound; both arms passed every correctness check, and the real finding — one arm was a tuned BLAS call and the other an interpreted loop — was found by a human reviewer months of gate-work later. Related: performance claims have no anchor in this framework at all. There is no published constant for how fast your code should be. Wall-clock belongs to benchmarking discipline (matched implementation effort, min-of-trials, stated hardware), not to gating.
One caution about pairing them. A same-model reviewer is an independent context, not an independent reviewer — it shares your priors, so the convention you did not question is the one it will not question either. Where that matters, an anchor beats a reviewer, because an anchor is not negotiable.
references/anchors.md — kinds of oracle, strongest first, and how to find
one when nothing published exists.references/auditing.md — the full "can this fail?" pass over an existing
suite, including how to read a mutation report.© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in gating of oaustegard/claude-skills.
Open the folder on GitHubat commit 6fc82b8
Gating next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Gating this skilloaustegard/claude-skills | 150 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Authoring Skillsfriday-platform/friday-studio | 104 | — | ~2.4k | Automated safety check: Pass | Custom licence | |
| AI Indexmizchi/skills | 356 | — | ~3.6k | Automated safety check: Pass | None | |
| Jev Lint Repomizchi/jev-lint | 119 | — | ~942 | Automated safety check: Pass | MIT | |
| System Onemagnus919/agent-skills | 113 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Nextjs React ExpertDokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI | 507 | — | ~1.7k | Automated safety check: Pass | Custom licence |
friday-platform/friday-studio
Authors new agent skills that follow the Anthropic + agentskills.io specification.
mizchi/skills
Method and tooling for measuring how AI-generated a piece of prose reads, in Japanese or English.
mizchi/jev-lint
A skill your agent uses when changing jev-lint ITSELF — editing src/, shipped rule suites under rules/<language/<id/, or recorded runs in docs/data/.
magnus919/agent-skills
Design, integrate, evaluate, self-host, and troubleshoot typed System One decision models including TypeSafe Jev, Convai Innovations Laya, CLM, and experimental Strands Decider.
Dokhacgiakhoa/Agent-Skills-4-Vibe-Coding-CLI
React and Next.js performance optimization from Vercel Engineering.
nicepkg/auto-company
Analytical thinking patterns for comprehensive evaluation, code audits, security analysis, and performance reviews.
oaustegard/claude-skills
Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.
oaustegard/claude-skills
Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.
oaustegard/claude-skills
Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.
oaustegard/claude-skills
Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.
oaustegard/claude-skills
Zero-shot univariate time series forecasting using the Reverso foundation model (NumPy/Numba CPU-only inference).
oaustegard/claude-skills
Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.
Categories
Build and audit deterministic verification gates — a check that blocks a pipeline and can be shown to go red. Gating is an agent skill from oaustegard/claude-skills. Build and audit deterministic verification gates — a check that blocks a pipeline and can be shown to go red.
Gating fits situations like: writing a calibration gate; validation script; pre-publication check for a numeric; empirical result.
Run `npx skills add oaustegard/claude-skills --skill gating -a claude-code`. Or copy the skill folder (gating in oaustegard/claude-skills) into .claude/skills/gating in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oaustegard/claude-skills --skill gating -a codex`. Or copy the skill folder (gating in oaustegard/claude-skills) into .agents/skills/gating in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill gating -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gating, .gemini/skills/gating, .github/skills/gating and .opencode/skills/gating in your project.
Going by SKILL.md and its folder, Gating needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Gating is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Gating: Authoring Skills (friday-platform/friday-studio, 104 stars), AI Index (mizchi/skills, 356 stars), Jev Lint Repo (mizchi/jev-lint, 119 stars) and System One (magnus919/agent-skills, 113 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 69 skills in this directory. The repository was last updated on October 8, 2026.
Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.