write-experiment-code

write-experiment-code is a skill for Claude Code from airas-org/airas. It costs 81 tokens per session (1,175 once invoked), scanned A, original, MIT.

A workflow for writing reproducible experiment code in an AIRAS research repository. It defines the required files, environment, run names, and result formats that the execution checks expect.

In plain words
What is it for?
Use it to create or repair the Docker environment, configuration files, Python runner, and other code needed to execute declared experiments.
Why use it?
It reduces failures caused by mismatched run identifiers, missing metrics, or environments that cannot reproduce the experiment.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the airas plugin — 9 skills, 3 hooks, 1 MCP server shipped together

Good fit Use it to create or repair the Docker environment, configuration files, Python runner, and other code needed to execute declared experiments.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/airas-org/airas/write-experiment-code
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 airas-org/airas --skill write-experiment-code
Clone the repo
git clone --depth 1 https://github.com/airas-org/airas

Made for: Claude Code.

Or install airas, the plugin that ships this one along with the rest of its 9 skills, 3 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 write-experiment-code

README.md
[![agentmods](https://agentmods.dev/badge/skills/airas-org/airas/write-experiment-code/github.svg)](https://agentmods.dev/skills/airas-org/airas/write-experiment-code)
Your own site
<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.

agentmods 80×15 button for write-experiment-code

Your own site · 80×15
<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>
Per session 81 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,175 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
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.00081 $0.01175
Opus 5.5 $0.00032 $0.00470
Sonnet 5.5 $0.00016 $0.00235
Haiku 4.5 $0.00008 $0.00118

Measured 12d ago against content hash 4ac74682ada0, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

plugins/airas/skills/write-experiment-code/SKILL.md · 83 lines

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.

  1. Read the contract: get_prompts(step="experiment_code") returns it; the runs it binds you to are in .research/design.json (in .research/record.json once 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 via get_library_docs.
  2. Declare the eval plan first: .research/evaluation.json with the task types the design calls for; make schema and make list-tasks read it and say what the prediction files must contain.
  3. Write the code and fix the environment: the files the contract names, pyproject.toml pinned, uv.lock committed, 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).
  4. Prove it runs before handing it over: mode=sanity locally until it prints SANITY_VALIDATION: PASS, then make validate-inputs RUN_ID=<sanity run id> to check the prediction files against the eval contract without scoring. Commit and push.
  5. 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's params, and a model server started outside the platform must be committed and referenced from the run yaml. observed.json in the run's outputs holds, per function, every src/ 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 the module.Class.method.arg of the function that consumes the value — the upstream's, or a src/ function's for an own knob (seed, workers, timeouts, thresholds) — and the value reaches that argument unchanged. So: put the consuming function in an imported src/ module, not the entry module (its functions are recorded as __main__.*); convert inside the function, not before it (pass seed to a make_rng(seed) that calls default_rng; pass the raw sim_timeout and 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's notes in numbers: the upstream calls and loaded files from observed.json, the src/ lines that implement method steps, and the deviations the map listed.

Read the full file on GitHub · 83 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. 12d ago Changed · +14 lines 4ac74682ada0
  2. 18d ago Changed · +7 lines 7e69f6a81cf1
  3. 21d ago Changed · +18 lines · +17 tokens per session 46ece210cc9a
  4. 1mo ago Changed · -85 lines 20a2b94069b0
  5. 1mo ago Changed · +10 lines a26b3bbc63c4
  6. 1mo ago First seen · 119 lines · 64 tokens per session scan A 91e0e4272f5b

Subscribe to this mod's changes

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.

Related

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.

wanshuiyin/Auto-claude-code-research-in-sleep · 70 tokens

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…

tonyblu331/research-proof · 101 tokens

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.

ruvnet/RuView · 44 tokens

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.

wanshuiyin/Auto-claude-code-research-in-sleep · 87 tokens

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.

wanshuiyin/Auto-claude-code-research-in-sleep · 67 tokens

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…

wanshuiyin/Auto-claude-code-research-in-sleep · 160 tokens