agentic-experiments
Hypothesis-first experiment tracking for agent-driven ML research, wired into Claude Code.
Install / Use
claude mcp add KadenMc -- npx -y github:KadenMc/agentic-experimentsIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Education & ResearchSupported Platforms
Our assessment of agentic-experiments
agentic-experiments scores 80/100 on our quality scale, 406th of 445 Education & Research skills we index.
Its MCP Server is 23 KB long, well organised into 25 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated yesterday, so agentic-experiments is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 87/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
agentic-experiments compared with similar skills
All 4 of these similar skills score higher than agentic-experiments; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| agentic-experiments (this skill)by KadenMc | 80 | 3 | 1d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 100.5k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.0k | today | CLAUDE.md |
| last30days-skillby mvanhorn | 100 | 64.9k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.5k | today | CLAUDE.md |
Frequently asked questions
- How do I install agentic-experiments?
- Run
claude mcp add KadenMc -- npx -y github:KadenMc/agentic-experiments. The install tabs above show the steps for each supported agent. - Which AI agents does agentic-experiments work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is agentic-experiments safe to use?
- It is MIT-licensed and scores 87/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is agentic-experiments still maintained?
- The repository was last updated yesterday, so agentic-experiments is actively maintained.
Skill content
View source on GitHubagentic-experiments (import name aexp) is an opinionated research harness for ML experimentation done with an AI agent — typically Claude Code. It forces a Hypothesis → Experiment → Finding chain on every run, ties that chain to git commits, and validates citation integrity at every turn.
What this looks like in practice
- Your agent optionally captures forward-looking research directions as threads (
T###) — concerns broader than a single hypothesis, with their own lifecycle (PROPOSED → EXPLORING → PROMOTED | CLOSED) — and promotes them into hypotheses when concrete claims emerge (aexp new-hypothesis --thread T###) - It proposes a hypothesis and writes it to
kb/research/hypotheses/H001-*.md— session-start hooks refuse work that skips this step; the H/E/F template enforces a## Caveats+ dual-mode## Test Plan(pre-registered vs. exploratory) so authors can't fabricate retroactive thresholds - It designs an experiment that explicitly cites the hypothesis; a pre-write hook blocks orphaned experiments. Experiment frontmatter can declare named
conditions:blocks —--sp condition=fullresolves to the full config at queue-time and is frozen into signac, so later edits toconditions.fullcan't retroactively change what ran (drift-proof provenance) - It creates signac-backed runs via the MCP tool
new_run(or in-process viaaexp.tracked_runfor managed wandb integration) — each run records its git commit, experiment ID, hypothesis ID, and resolved sp on the job document - For batches, it uses the queue layer:
aexp queue add --sweep "condition=full|cls,seed=0..3"registers the Cartesian product as pending jobs;aexp queue materialize --runner slurmemits a runner script that executes wherever the user's compute lives;aexp queue runiterates the pending jobs in-batch-script. Designed for agent-on-laptop, training-on-cluster workflows - A W&B run (optional) is bound via three first-class modes:
tracked_run(managed),prepare_tracker+ctx.bind(run)(BYOwandb.init), orbind_tracker(CLI/adapter). Group slug is deterministic from(hypothesis, experiment, condition) - When it writes a finding, the
supporting_runsarray must cite real jobs —aexp validateflags dangling references; templates enforce a## Caveatssection distinct from## Remaining Debt - Delete an experiment by accident? Every run pointing at it is flagged
run.broken_experiment_link; missing required template headers raisemissing_template_headeron the next validation pass
Principles
- Hypothesis-first, not metric-first — you can't start a run without a live hypothesis; you can't ship a finding without cited runs
- Git is the source of truth — every run carries its commit SHA; the knowledge base lives in git; nothing load-bearing is ephemeral
- Integrate, don't reinvent — signac for run state, W&B for observability, and a bundled research harness for the H→E→F artifact model, templates, and methodology skills.
aexpis the glue and the discipline - Portable by default — the MCP server runs via
uvxfrom PyPI;.mcp.jsonis identical on every machine and committable to git
The Problem
Agents are great at running experiments. Left unattended, they are also great at running a lot of experiments with no shared thread — ablation sprawl, metric-chasing, findings with no clear question behind them, and a W&B workspace full of orphan runs nobody can reconstruct a month later.
The missing layer is not another tracker. It's a grammar — a structure the agent has to operate within, enforced deterministically by hooks rather than by reminder text in the prompt. Hypothesis before experiment. Experiment before run. Finding cites runs. Runs tied to commits.
aexp provides that grammar. Your agent proposes, designs, runs, and concludes; the harness makes sure the chain stays intact and the paper trail is reproducible.
How It Works
aexp stacks three concerns — research grammar, run state, and observability — glued together with a typed Python API and three agent-facing surfaces.
| Layer | What lives here |
|---|---|
| Research grammar | kb/ artifact graph — Hypothesis → Experiment → Finding plus Literature / Challenge Review / Strategic Review. Claude Code hooks enforce the H→E→F chain at write time. Research-methodology skills (experiment-rigor, exploratory-sota-research, research-devil-advocate, build-maintainable-software) install into .claude/skills/ |
| Local run state (signac) | .runs/.signac/ plus one .runs/workspace/<job_id>/ directory per run. job.sp carries identity params; job.doc carries the artifact link, tracker IDs, status, and summary metrics |
| Observability (W&B, optional [wandb] extra) | Remote runs grouped by a deterministic slug derived from (hypothesis_id, experiment_id, condition). Offline-by-default on HPC — aexp sync-offline walks the run store and syncs every pending run in one call from a login node |
Three surfaces, one canonical API
Every operation exists in three places, all thin wrappers over the same Python functions in aexp.*:
| Surface | Triggered by | Best for |
|---|---|---|
| MCP tools (new_run, list_runs, validate, …) | The agent during a turn | Structured queries, programmatic chaining, typed JSON returns |
| Slash commands (/aexp-new-hypothesis, /aexp-new-run, /aexp-finding-from-batch, …) | User typing /aexp-… | Guided multi-step workflows |
| CLI (aexp new-run ...) | Human at a terminal | Scripts, CI, PowerShell sessions |
The hooks are a fourth surface — invisible to the user, they inject kb/ACTIVE.md at session start, block HEF-chain violations, validate KB writes, and run structural validation at turn end.
Why This Is Different
Most ML experiment infrastructure records what happened. aexp polices what's allowed to happen.
- Unlike generic trackers (W&B, MLflow, Aim) — they log the numbers beautifully, but they don't care whether those numbers answer a question.
aexprefuses runs that don't name their hypothesis and experiment. - Unlike notebook-driven research — no commit ties, no structural validation, no citation integrity when you share the notebook three months later.
- Unlike DIY harnesses — this ships with working MCP integration, hook-enforced chain discipline, and a validation pass that catches broken references before they rot.
The design bet: agents already know how to run experiments. What they need is a runtime that makes rigorous research the path of least resistance.
Features
Research grammar
| | |
|---|---|
| H→E→F artifact graph | Every run descends from an Experiment, which descends from a Hypothesis. Findings cite runs with strong references (either specific job IDs or batch selectors). |
| Hook-enforced discipline | SessionStart, PreToolUse, PostToolUse, and Stop hooks inject active context, block chain violations, and validate KB integrity at turn end. Hooks ship inside the installed package and upgrade via pip install -U. |
| Research methodology skills | SKILL.md files install into .claude/skills/ — experiment rigor, exploratory SOTA research, devil's advocate review, and build-maintainable-software. Trigger with $experiment-rigor etc. |
Run state + observability
| | |
|---|---|
| signac-backed runs | Identity-hashed workspaces; idempotent creation keyed on state point; status and summary metrics in job.doc. Re-run at a new commit produces a distinct persistent workspace, both preserved. |
| W&B binding | aexp.tracked_run(job, project=...) for managed wandb runs; aexp.prepare_tracker(job, ...) if your code already calls wandb.init and you just want the disciplined payload + signac binding. Group slug is deterministic; offline-first; co-locates with its signac workspace. |
| HPC-friendly sync | aexp sync-offline walks the run store and runs wandb sync on every offline run — one command from a login node, no shell gymnastics. |
| Tracker ABC | TrackerAdapter is a small ABC used by the legacy bind_tracker(job, adapter, ...) path — kept for NoopAdapter and backend-agnostic code. See docs/tracker-adapters.md for which surface to pick. |
| Queue + runner materialization | aexp queue add / materialize registers pending runs on one machine and emits a runner script (shell / slurm / manual) for another. Drift-proof provenance via named conditions: blocks in the experiment frontmatter — --sp condition=full resolves to the full config at queue-time so later edits to conditions.full can't retroactively change what ran. See docs/queue.md. |
Agent surfaces
| | |
|---|---|
| MCP server | FastMCP covering artifact creation (H/E/F/T), run lifecycle, batch queries, queue management (incl. queue_stop for live-job interruption), tracker binding, and validation. Runs via uvx --from agentic-experiments[mcp] aexp-mcp-server — no absolute paths, no per-machine config, .mcp.json committable to git. |
| Slash commands | Artifact creation: /aexp-new-hypothesis, /aexp-new-experiment, /aexp-new-run. Threads (forward-looking research concerns broader than a hypothesis): /aexp-new-thread, /aexp-list-threads, /aexp-show-thread, /aexp-close-thread. Finding creation (pick by what the finding cites): /aexp-finding-from-run, /aexp-finding-from-batch, /aexp-finding-placeholder. Read / inspect: /aexp-show-run, /aexp-show-batch, /aexp-list-runs, /aexp-status, /aexp-validate. Queue: /aexp-queue-add, /aexp-queue-list, /aexp-queue-materialize, /aexp-queue-stop. Notebook lifecycle (when --with-jupyter is configured): /aexp-jupyter-iterate (test loop), /aexp-promote-nb (promote working cells into a tracked-run script). Sandbox scaffolding: /aexp-new-sandbox (create an exploratory notebook subdir under notebooks/_sandbox/). |
| CLI | Verbs covering install, artifact creation (H/E/F/T + thread lifecycle), run lifecycle, batch queries, tracker binding, validation, offline sync, optional jupyter-setup, the queue subcommand group (add/list/remove/stop/clear/materialize/run) + run-queued, and sandbox scaffolding (new-sandbox). See aexp --help for the full list. Python API is a one-line from aexp import .... |
| Typed JSON contracts | Pydantic models (RunLink, BatchSelector, Issue, …) back the schema; MCP
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
100.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
77.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
last30days-skill
64.9kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
CowAgent
47.5kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
