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 agentmods add skills/airas-org/airas/write-experiment-codenpx 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.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00064 | $0.01502 |
| Opus 5 | $0.00032 | $0.00751 |
| Sonnet 5 | $0.00013 | $0.00300 |
| Haiku 4.5 | $0.00006 | $0.00150 |
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.
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.
-
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.jsonexactly — verification rejects results directories no declared run accounts for, and a claim whose metric the code never emits can never be realized. Library docs viaget_library_docs.Edit or create ONLY these files (
.github/is managed by AIRAS, and everything must run on a Linux runner):Path Role DockerfileReproducible environment (Python 3.11 + uv) config/config.yamlShared Hydra defaults config/run/*.yamlOne run config per (method, model, dataset) src/main.pyOrchestrator for a single run_id(Hydra entrypoint)src/preprocess.pyDataset loading / preprocessing src/train.py/src/inference.pySingle-run executor src/model.pyModel definition, if a custom one is needed src/evaluate.pyIndependent aggregation script pyproject.tomlDependencies only The CLI shape is fixed —
run_experiment.ymland 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_typeisproposedorcomparative-{index}.All three modes must work, on the same dataset and model — only the scale changes:
sanitycheap enough to run locally on CPU (1 epoch, 1–2 batches, or 5–10 inference samples),pilot20–30% of full (≥3 epochs, ≥50 samples) for a go/no-go,fullthe real thing.sanityandpilotlog to{project}-sanity/{project}-pilotso they never pollute the full runs.sanityprintsSANITY_VALIDATION: PASSwith aSANITY_VALIDATION_SUMMARY: {...}line, orSANITY_VALIDATION: FAIL reason=<short_reason>;pilotprints thePILOT_VALIDATIONequivalents. Checks, adapted to the task: ≥5 steps with final loss ≤ initial, or ≥5 non-identical outputs; every metric finite;FAIL reason=missing_metricswhen they are absent. This is your own gate before dispatching anything expensive — nothing downstream parses it for you. -
Write the three files verification reads. Per run, under
{results_dir}/{run_id}/:File Written by Why it is required eval_inputs/<task>.jsonsrc/main.pythe raw predictions; what the metrics can be re-derived from evaluation/<task>.jsonmake evaluateairas-eval's verdict, its versions and skippedmetrics.jsonsrc/evaluate.pycopied 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.
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.
- today 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 (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.
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…
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"…
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.
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.
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.
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"…