Arbor — Autonomous Optimization via Hypothesis Tree Refinement
Runs a long-horizon experiment loop that improves a scorable artifact through a persistent hypothesis tree, with a held-out test gate to block overfitting.
What it does
This skill implements Hypothesis Tree Refinement (HTR) from the Arbor paper. Instead of keeping research state in conversation history, it stores it in a persistent hypothesis tree: each node binds a falsifiable hypothesis, the distilled insight it produced, and a pointer to the artifact version realizing it. Claude acts as the long-lived coordinator; short-lived executor subagents test one hypothesis each in isolated git worktrees and report back dev_score, result, insight, and branch_ref.
Each cycle runs six steps — Observe, Ideate, Select, Dispatch, Backpropagate, Decide — driven by scripts/tree.py (init, observe, add-node, set-evidence, propagate, prune, merge). The defining safeguard is the merge gate: a candidate becomes the new best only if it improves on E_test, an evaluator the search never optimized against. Insight propagation turns leaf-level observations into direction-level constraints and global priors, which the paper's ablations identify as the main source of gains.
Who it's for
- ML researchers tuning training recipes, optimizers, or architectures
- Engineers raising pass rates on agent loops, search harnesses, or tool-use scaffolds
- MLE-bench / Kaggle-style "improve the submission" competitors
- Anyone optimizing prompts or data pipelines who worries about a dev/test gap
Skip it for one-shot fixes or open-ended ideation with no evaluator.
Examples
- Search harness accuracy:
tree.py initwith dev/test eval commands, then a depth-1 direction ("verification, not retrieval, is the bottleneck") with three depth-2 interventions dispatched in parallel worktrees. - Kaggle submission tuning: run feature-engineering and ensembling directions as sibling nodes, pruning falsified branches with a recorded reason so later ideation avoids the same dead ends.
- Prompt pipeline optimization: a candidate that wins on dev but fails the test gate is rejected and logged as evidence that the direction is exploiting the dev signal rather than generalizing.
· · · Install guide · · ·
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the skills/arbor folder from the GitHub repo K-Dense-AI/scientific-agent-skills into my ~/.claude/skills/arbor/. When it's done, tell me in one line what this skill can do.
Install with a command instead
git clone https://github.com/K-Dense-AI/scientific-agent-skills.git && mkdir -p ~/.claude/skills && cp -r scientific-agent-skills/skills/arbor ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Open a terminal and clone the repo:
git clone https://github.com/K-Dense-AI/scientific-agent-skills.git - Create the skills folder if needed:
mkdir -p ~/.claude/skills - Copy just this skill:
cp -r scientific-agent-skills/skills/arbor ~/.claude/skills/ - Verify
scripts/tree.pyand thereferences/folder came along. - Make sure Python 3 and git are installed — git worktrees are required for experiment isolation.
- Confirm the project you want to improve is a git repo and currently runs.
- Prepare two separate evaluator commands: a fast dev evaluator and a held-out test evaluator (different split or seeds).
- Restart Claude Code and ask something like "run repeated experiments to raise this harness's eval score without overfitting the dev set."