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 airas-org/airas --skill write-experiment-codegit clone --depth 1 https://github.com/airas-org/airasWrote 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/airas-org/airas/write-experiment-code)<a href="https://agentmods.dev/skills/airas-org/airas/write-experiment-code"><img src="https://agentmods.dev/badge/skills/airas-org/airas/write-experiment-code/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/airas-org/airas/write-experiment-code"><img src="https://agentmods.dev/badge/skills/airas-org/airas/write-experiment-code.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00081 | $0.01175 |
| Opus 5.5 | $0.00032 | $0.00470 |
| Sonnet 5.5 | $0.00016 | $0.00235 |
| Haiku 4.5 | $0.00008 | $0.00118 |
Grade A, and why
write-experiment-code 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 12d 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 — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Write the experiment code
Needs a clone with the agreed design committed as
.research/design.json (the preregister_record arguments: run ids,
params, metrics) and the execution platform settled — the platform's reference
under _shared/references/ states the architecture and environment
constraints the code must satisfy, so read it before writing. The
record may not exist yet: preregister-paper freezes it on top of this
code.
However the code is produced — authored here or by an external code-generation tool — the contract below is what the repository holds it to; swapping the producer changes nothing else.
This contract is for experiment runs (a claim with verifier.kind = seyval). A claim proved in Lean is written under lean/ instead, to the
contract in _shared/references/lean.md; both kinds start through the same
make run and can live in one repository.
- Read the contract:
get_prompts(step="experiment_code")returns it; the runs it binds you to are in.research/design.json(in.research/record.jsononce frozen) and the eval plan is.research/evaluation.json— the files you may touch, the fixed CLI shape, the three modes and their validation lines, the three files verification reads, how the outputs feed airas-eval, and how the environment is pinned. Run ids and metric paths come from the record; a claim whose metric the code never emits can never be realized. Library docs viaget_library_docs. - Declare the eval plan first:
.research/evaluation.jsonwith the task types the design calls for;make schemaandmake list-tasksread it and say what the prediction files must contain. - Write the code and fix the environment: the files the contract
names,
pyproject.tomlpinned,uv.lockcommitted, a Dockerfile that builds from the lock alone for the platform reference's target. With an upstream implementation, write only what the design's method map assigns to you: the glue to the upstream entry points and the steps the upstream cannot carry. Never re-implement a step it provides, and never modify it (airas #1098). - Prove it runs before handing it over:
mode=sanitylocally until it printsSANITY_VALIDATION: PASS, thenmake validate-inputs RUN_ID=<sanity run id>to check the prediction files against the eval contract without scoring. Commit and push. - One sanity run on the platform (
run-experiments, steps 2–3; a sanity run needs no declaration in the record). A local run proves nothing about the target architecture or the model the run will talk to. Read what the run read and called: every value it took and every upstream function it reached must be covered by the design'sparams, and a model server started outside the platform must be committed and referenced from the run yaml.observed.jsonin the run's outputs holds, per function, everysrc/function and directly called upstream function with the values its arguments took, the files opened, the hosts reached and the child processes. Fix the code or the design and repeat until the sanity run touches nothing undeclared. Name the settings so the gate can compare them: a run yaml key is themodule.Class.method.argof the function that consumes the value — the upstream's, or asrc/function's for an own knob (seed, workers, timeouts, thresholds) — and the value reaches that argument unchanged. So: put the consuming function in an importedsrc/module, not the entry module (its functions are recorded as__main__.*); convert inside the function, not before it (passseedto amake_rng(seed)that callsdefault_rng; pass the rawsim_timeoutand compute the deadline inside); never declare a value derived per call (seed + i, a remaining budget) or one that varies within a run; keep values JSON-like (scalars, strings, small lists, floats written as floats); when two arguments take the same value write both keys with a YAML anchor; run child processes as imported modules (python -m src.worker), not as scripts. Then put the upstream / own-code boundary in the hypothesis'snotesin numbers: the upstream calls and loaded files fromobserved.json, thesrc/lines that implement method steps, and the deviations the map listed.
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.
- 12d ago Changed · +14 lines 4ac74682ada0
- 18d ago Changed · +7 lines 7e69f6a81cf1
- 21d ago Changed · +18 lines · +17 tokens per session 46ece210cc9a
- 1mo ago Changed · -85 lines 20a2b94069b0
- 1mo ago Changed · +10 lines a26b3bbc63c4
- 1mo ago First seen · 119 lines · 64 tokens per session scan A 91e0e4272f5b
write-experiment-code is a skill published in the GitHub repository airas-org/airas (38 stars, last pushed 10d ago), licensed MIT. It adds 81 tokens to every session and 1,175 once invoked, about $0.0003 per session on Opus 5.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-09-04.
Other skills, from other repositories
experiment-audit
A review step that checks whether an experiment's reported results are supported by real data and a sufficiently broad test.
research-proof
Turn vague research ideas, math-heavy claims, AI-lab style agent loops, benchmark claims, causal claims, prototype-readiness claims, design research, prompt-injection-sensitive evidence reviews, and medical-research style questions into falsifiable proof programs with fixed Claim/Verifier/Current…
train-pose
Train/evaluate WiFi pose models honestly — camera-supervised (MediaPipe + CSI) and camera-free (WiFlow), always checked against the mean-pose baseline before any PCK is quoted.
proof-checker
A mathematical proof review and repair workflow for LaTeX documents. It checks whether a proof has valid reasoning, addresses identified gaps, reviews the fixes, and produces an audit report.
paper-illustration
A workflow for generating academic illustrations, such as architecture diagrams and method visuals, with image generation and repeated review. Claude plans and checks the figure during the process.
citation-crosscheck
Double-blind bibliographic cross-check: one agent extracts each cited entry verbatim from the local .bib, a second independently re-fetches the same paper's record from the web while blind to the .bib, and a third extractor emits a mechanical field-by-field delta to catch dropped/re-ordered authors, wrong years, wrong…