write-experiment-code

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

Produce the experiment code in an AIRAS experiment repository — against the execution contract stated here and the airas-eval input schema, with the environment fixed by lockfile and Dockerfile. Use to write, fix, or regenerate experiment code, whether authored directly or via an external code-generation tool.

Skill for Claude CodeCodex

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/airas-org/airas/write-experiment-code
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, Codex.

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.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.svg" alt="Measured on agentmods" height="20"></a>
Per session 64 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,502 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin unknown 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.00064 $0.01502
Opus 5 $0.00032 $0.00751
Sonnet 5 $0.00013 $0.00300
Haiku 4.5 $0.00006 $0.00150

Measured today against content hash 91e0e4272f5b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, 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 today.

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 · 119 lines

How it starts

The opening of the file, as written. The whole thing — 119 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 its research context committed 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.

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.

  1. The execution contract. The experiment repository ships empty source files; this is what they must become. Run ids and output metric paths must match .research/record.json exactly — verification rejects results directories no declared run accounts for, and a claim whose metric the code never emits can never be realized. Library docs via get_library_docs.

    Edit or create ONLY these files (.github/ is managed by AIRAS, and everything must run on a Linux runner):

    Path Role
    Dockerfile Reproducible environment (Python 3.11 + uv)
    config/config.yaml Shared Hydra defaults
    config/run/*.yaml One run config per (method, model, dataset)
    src/main.py Orchestrator for a single run_id (Hydra entrypoint)
    src/preprocess.py Dataset loading / preprocessing
    src/train.py / src/inference.py Single-run executor
    src/model.py Model definition, if a custom one is needed
    src/evaluate.py Independent aggregation script
    pyproject.toml Dependencies only

    The CLI shape is fixedrun_experiment.yml and the external executors call exactly this, so it cannot change:

    uv run python -u -m src.main run={run_id} results_dir=.research/results mode={sanity|pilot|full}
    uv run python -u -m src.evaluate results_dir=.research/results run_ids='["run-1","run-2"]'
    

    Run ids are {method_type}-{model}-{dataset}, dropping whichever of model/dataset does not apply; method_type is proposed or comparative-{index}.

    All three modes must work, on the same dataset and model — only the scale changes: sanity cheap enough to run locally on CPU (1 epoch, 1–2 batches, or 5–10 inference samples), pilot 20–30% of full (≥3 epochs, ≥50 samples) for a go/no-go, full the real thing. sanity and pilot log to {project}-sanity / {project}-pilot so they never pollute the full runs.

    sanity prints SANITY_VALIDATION: PASS with a SANITY_VALIDATION_SUMMARY: {...} line, or SANITY_VALIDATION: FAIL reason=<short_reason>; pilot prints the PILOT_VALIDATION equivalents. Checks, adapted to the task: ≥5 steps with final loss ≤ initial, or ≥5 non-identical outputs; every metric finite; FAIL reason=missing_metrics when they are absent. This is your own gate before dispatching anything expensive — nothing downstream parses it for you.

  2. Write the three files verification reads. Per run, under {results_dir}/{run_id}/:

    File Written by Why it is required
    eval_inputs/<task>.json src/main.py the raw predictions; what the metrics can be re-derived from
    evaluation/<task>.json make evaluate airas-eval's verdict, its versions and skipped
    metrics.json src/evaluate.py copied from the airas-eval report; the file the record is checked against

    Do not write out the resolved configuration. The record takes the parameters a run executed with from the platform's record of the dispatch, never from a file the run wrote: code reporting its own settings can report anything, so agreeing with it would prove only that the code was willing to claim it.

    All three go under .research/results/: that is the only tree the executor collects back, so anything written beside the Hydra logs or in a scratch directory never reaches the repository, and the check that would have used it silently passes on an empty value.

Read the full file on GitHub · 119 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. today 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 (32 stars, last pushed today), licensed MIT. It adds 64 tokens to every session and 1,502 once invoked, about $0.0003 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-09-04.

Related

Other skills, from other repositories

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

citation-audit

Zero-context verification that every bibliographic entry in the paper is real, correctly attributed, and used in a context the cited paper actually supports — catching hallucinated authors, wrong years, fabricated venues, version mismatches, and wrong-context citations. Use when user says "审查引用", "check citations"…

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

idea-creator

Generate and rank research ideas given a broad direction. Use when user says "找idea", "brainstorm ideas", "generate research ideas", "what can we work on", or wants to explore a research area for publishable directions.

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

idea-discovery

Workflow 1: Full idea discovery pipeline to go from a broad research direction to validated, pilot-tested ideas. Use when user says "找idea全流程", "idea discovery pipeline", "从零开始找方向", or wants the complete idea exploration workflow.

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

paper-illustration

Generate publication-quality AI illustrations for academic papers using Gemini image generation. Creates architecture diagrams, method illustrations with Claude-supervised iterative refinement loop. Use when user says "生成图表", "画架构图", "AI绘图", "paper illustration", "generate diagram", or needs visual figures for papers.

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

paper-talk

End-to-end conference talk pipeline: paper → slide outline → Beamer + PPTX → per-page polish → assurance checks (claim / citation / anonymity) → final export and report. Default-good for academic conference talks (NeurIPS / ICML / ICLR / VALSE / 投稿 talks). Trigger phrases: "做 talk", "做 PPT 全流程", "talk pipeline"…

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