Arbor agent tools
Deterministic helper layer for emulating Arbor tools in Codex or Claude Code when native TreeView, TreeAddNode, TreeSetMeta, RunExecutor, GitMergeBranch, or report tooling is unavailable. Use for local state management, eval score capture, executor prompt generation, merge checks, and skill forward tests.From its SKILL.md
npx -y skills add RUC-NLPIR/Arbor --skill arbor-agent-toolsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.6 KB, as published. Nobody here has run it
Arbor Agent Tools
Use this skill when the host does not provide native Arbor tools. The bundled script stores state in the same style as open-source Arbor:
<cwd>/.arbor/sessions/<run_name>/.coordinator/idea_tree.json
<cwd>/.arbor/sessions/<run_name>/.coordinator/idea_tree.md
Script
scripts/arbor_state.py is stdlib-only.
Common commands:
TOOLS="<skill-dir>/arbor-agent-tools/scripts/arbor_state.py"
python "$TOOLS" init --cwd <project> --run-name <run> --task "<contract>"
python "$TOOLS" view --cwd <project> --run-name <run> --format constraints
python "$TOOLS" meta --cwd <project> --run-name <run> --set baseline_score=42 --set trunk_score=42
python "$TOOLS" meta --cwd <project> --run-name <run> --set "eval_cmd=cd {cwd} && bash eval.sh"
python "$TOOLS" add --cwd <project> --run-name <run> --parent-id ROOT --hypothesis "<four-line hypothesis>"
python "$TOOLS" update --cwd <project> --run-name <run> --node-id 1 --status done --score 45 --insight "..."
python "$TOOLS" worktree --cwd <project> --run-name <run> --node-id 1 --trunk <trunk_branch>
python "$TOOLS" prompt-executor --cwd <project> --run-name <run> --node-id 1 --workdir <worktree>
python "$TOOLS" prompt-executor --cwd <project> --run-name <run> --node-id 1 --smoke
python "$TOOLS" eval --cwd <project> --run-name <run> --split dev --exec-cwd <worktree> --cmd "bash {cwd}/eval.sh" --set-meta trunk
python "$TOOLS" record --cwd <project> --run-name <run> --node-id 1 --score 45 --insight "..." --result "..."
python "$TOOLS" parse-log --log <project>/run.log --metric val_bpb
python "$TOOLS" report --cwd <project> --run-name <run>
python "$TOOLS" check --cwd <project> --run-name <run> --require-report --require-experiment --require-executor-prompt
Read references/tool-mapping.md when deciding which script command maps to a
native Arbor tool.
State Rules
- Keep scores absolute.
- Keep eval commands templated with
{cwd}and{node_id}. - Do not run B_test during executor iteration.
- Use
recordfor executor outcomes so artifacts and tree updates stay in one place. - Use
checkbefore trusting a hand-edited tree. Add artifact flags such as--require-report,--require-experiment,--require-executor-prompt,--require-events,--require-run-stats, or--strict-artifactswhen validating a completed run. - Serialize tree-mutating commands for the same run. Do not parallelize
init,meta,add,update,prune,propagate,eval,record,worktree, ormerge.
Forward Testing
For a smoke test, copy the target project to a disposable directory outside the Arbor repository, initialize a short run, record metadata, add one idea, generate an executor prompt, and run only cheap commands. Do not run full long training unless explicitly requested.
Smoke-specific rules:
- Use
prompt-executor --smoke. - If a real eval command invokes training, data prep, downloads, GPU work, or a minute-scale benchmark, do not execute it; store a cached-score parser, harmless echo, or mocked score instead.
- Parse existing logs with
parse-log; it normalizes carriage-return progress logs before extracting metrics. Avoid fullcat, rawrg, rawgrep, ortailoutput; cap diagnostic log snippets at 20 lines. - Finish with
checkandreportso the smoke produces a realREPORT.md.