Code for "Skill-MAS: Evolving Meta-Skill for Automatic Multi-Agent Systems"
Python
56
15 commits
updated Oct 9, 2026
Skill-MAS evolves a single meta-agent skill file (SKILL.md) that instructs an LLM to design and orchestrate a Multi-Agent System (MAS) in three stages:
| Stage | Name | Output |
|---|---|---|
| 1 | Task Decomposition | Sub-task graph & constraints |
| 2 | Agent Engineering | Sub-agent roles, tools, prompts |
| 3 | Workflow Orchestration | Executable MAS Python code |
Trajectories from each evolution round drive contrastive reflection and skill rewriting; the best skill snapshot is selected across rounds.
Three ways to use this repo
| Path | When to use |
|---|---|
| π§© Codex / Claude Code skill | Import evolved orchestration strategies into your everyday agent workflow |
| π Demo Inference | One question + existing skill β build & run MAS immediately |
| π Evolution | Multi-round skill optimization on benchmark validation sets |
Skill_MAS/
βββ assert/ # README figures (background.png, Method.png)
βββ core/ # CLI entry, evolution pipeline, resume, task selection
βββ evolution/ # Rollout, contrastive reflection, skill optimizer, bench adapters
βββ skill_mas/ # 3-stage MAS builder, async LLM client, model_config.json
βββ template/ # Generated MAS code templates and SubAgent runtime
βββ utils/ # Paths, cost tracking, logging, redaction
βββ init_skill/ # Initial (pre-evolution) SKILL.md
βββ optimized_skill/ # Pre-evolved skills per benchmark (ready to test)
βββ skills/skill-mas/ # Portable agent skill + four adapted task profiles
βββ scripts/ # Skill installer + default startup routing
βββ .claude-plugin/ # Claude Code plugin and marketplace manifests
βββ hooks/ # Claude plugin session-start routing
βββ docs/agent-skills.md # Installation, profiles, updates, and adaptation notes
βββ dataset/ # Bundled benchmark code + data
β βββ vitabench/ # VitaBench (src/vita, data/)
β βββ deep_research_bench/
β βββ hlemath/
β βββ BrowseComp-Plus/
βββ run_*.sh # Evolution wrappers (run from parent of Skill_MAS/)
βββ demo_inference.py # Single-question build + inference demo
βββ demo_inference.sh # Shell wrapper for demo_inference.py
βββ results/ # Generated at runtime (not shipped)
Multi-trajectory rollout (evolution/rollout_multi.py) β run k trajectories per validation task; the agent reads the current round's SKILL.md, generates MAS code via three build stages (skill_mas/build.py), executes it, and records scores plus phase-level traces.
Contrastive reflection (evolution/contrastive_reflect.py) β compare high- vs low-scoring trajectories and synthesize structured improvement signals.
Skill bank optimization (evolution/bank_optimizer.py) β an optimizer LLM rewrites the single SKILL.md using reflection reports and round statistics.
Round selection (evolution/assemble_select.py) β track per-round scores; after all rounds, select the best skill snapshot.
| Backend | CLI flag | Validation data (default) | Evolution script | Per-bench eval script |
|---|---|---|---|---|
| VitaBench | --bench-backend vitabench | dataset/vitabench/data/vita_validate.json | run_vita.sh | dataset/vitabench/run_skill_mas.sh |
| Deep Research Bench | --bench-backend drb | dataset/deep_research_bench/data/drb_validate.jsonl | run_drb.sh | dataset/deep_research_bench/run_skill_mas.sh |
| HLEMath | --bench-backend hlemath | dataset/hlemath/data/hlemath_validate.jsonl | run_hlemath.sh | dataset/hlemath/run_skill_mas.sh |
| BrowseComp-Plus | --bench-backend bcp | dataset/BrowseComp-Plus/data/browsecomp_plus_validate.jsonl | run_bcp.sh | dataset/BrowseComp-Plus/run_skill_mas.sh |
Skill_MAS/results/{backend}_{model_tag}/
βββ artifacts/
β βββ skills/{bench_id}/{run_id}/round_XX/SKILL.md # skill snapshots per round
β βββ runs/{bench_id}/{run_id}/summary_rXX.json # round metrics
βββ log/{bench_id}/{run_id}/round_XX/ # traces, exports
Each round also saves:
round_r/
βββ trajectories/ # per-task, per-trajectory records
βββ aspects/ # phase-level snapshots
βββ contrastive/ # reflection reports
skills/.../round_r/
βββ SKILL.md # skill used in this round (rewritten after r-1)
βββ bank_meta.json # optimization history
βββ knee_images/ # task-priority elbow plots
Bring Skill-MAS's task decomposition β agent engineering β workflow orchestration
into your everyday agent workflow. After installation, Skill-MAS automatically
selects the appropriate optimized skill for the current task and orchestrates
the workflow alongside your existing skills. The portable
skill-mas adapts optimized_skill/
to native agent tools and coordinates delegation and verification as needed.
Simple questions and small edits stay lightweight. No benchmark datasets,
Python packages, or separate model API keys are needed; your agent's existing
tools and access apply.
Clone the repo and run the installer with Python 3.9+:
git clone --depth 1 https://github.com/linhh29/Skill_MAS.git
cd Skill_MAS
# Install for both agents, or choose --agent codex / --agent claude.
python3 scripts/install_agent_skill.py --agent both
This installs the self-contained skill and enables default startup routing.
Codex receives a managed block in its AGENTS.md; Claude Code receives a dedicated
rules/skill-mas.md. Existing instructions are preserved and changed instruction
files are backed up. See the exact paths and controls.
For installation in just one project:
python3 scripts/install_agent_skill.py --agent both --scope project --project /path/to/your-project
Open a new Codex or Claude Code session in the target project and describe your task:
Compare these three retrieval approaches and recommend one for our project.
Solve this combinatorics problem and explain the proof: [your problem]
Find the project matching these clues and verify the sources: [your clues]
Implement this feature, integrate the changes, and check that it works.
Skill-MAS selects the relevant strategy internally:
| Profile | Adapted from | Useful for |
|---|---|---|
drb | Deep Research Bench | Parallel research and report synthesis |
hlemath | HLEMath | Shared assumptions, independent reasoning, small-case checks |
bcp | BrowseComp-Plus | Multi-clue search, candidate comparison, relationship verification |
vitabench | VitaBench | Tool workflows, structured decisions, dependency-aware execution |
Specialist skills handle their own domains. If an existing orchestration skill already coordinates a task, Skill-MAS adds handoff and verification guidance to that workflow, keeping one plan and avoiding duplicate agent teams.
Instead of the copy installer, run these commands inside Claude Code and complete the installation in its plugin interface:
/plugin marketplace add linhh29/Skill_MAS
/plugin install skill-mas@skill-mas-marketplace
Start a new session and use the same ordinary prompts above. The plugin's
SessionStart hook loads the routing guidance so the agent can select an optimized
skill for the current task. Existing plugin users should update to the latest version.
Choose either the plugin or the copy installation for Claude Code to avoid duplicate entries. Default routing is implemented through the hosts' instruction and hook mechanisms; Skill-MAS is an installed extension, not an official bundled component. The skill uses available native delegation; when subagents are unavailable, it follows the same workflow sequentially and says so. These are adapted orchestration instructions; benchmark results do not establish their performance in Codex or Claude Code.
See the installation and adaptation guide for manual installation, updates, removal, source mapping, and troubleshooting. The research runtime setup below is only needed for the demo and benchmark workflows.
Check out this repo so that Skill_MAS/ lives under a parent directory (e.g. demo/ or arxiv_code/). All benchmarks are vendored under Skill_MAS/dataset/; you do not need sibling copies of vitabench_single/, hlemath/, etc.
Install dependencies for Skill-MAS and the benchmark you use (see dataset/vitabench/requirements.txt and each benchmark's README).
conda create -n skill_mas python=3.11 -y
conda activate skill_mas
pip install openai pydantic loguru # plus benchmark-specific deps
Edit skill_mas/model_config.json β model ids, pricing, base_url, and ${OPENAI_API_KEY} placeholders. Shell scripts resolve credentials via environment variables:
Use this when you want to try Skill-MAS on your own task without running multi-round evolution.
We ship ready-to-use skill files β no evolution required:
| Path | Role |
|---|---|
init_skill/SKILL.md | Initial meta-agent skill (pre-evolution baseline) |
optimized_skill/vitabench.md | Evolved skill for VitaBench |
optimized_skill/drb.md | Evolved skill for Deep Research Bench |
optimized_skill/hlemath.md | Evolved skill for HLEMath |
optimized_skill/bcp.md | Evolved skill for BrowseComp-Plus |
demo_inference.py loads any of these paths, runs the three-stage build, prints Stage-3 MAS code, executes the generated workflow, and prints the answer.
Supported standalone datasets in the demo: hlemath, drb, bcp. VitaBench needs the full simulator (run_vita.sh or dataset/vitabench/run_skill_mas.sh).
cd /path/to/parent-of-Skill_MAS
# Usage: bash Skill_MAS/demo_inference.sh <model_id> <skill_path> "<question>"
bash Skill_MAS/demo_inference.sh qwen3.5-plus \
Skill_MAS/init_skill/SKILL.md \
"What is 17 + 28? Give the final answer in \\boxed{...} form."
bash Skill_MAS/demo_inference.sh qwen3.5-plus \
Skill_MAS/optimized_skill/hlemath.md \
"Find the number of positive integers n such that n^2 + 3n + 2 is divisible by n + 1."
cd /path/to/parent-of-Skill_MAS
export OPENAI_API_KEY="your-key"
export PYTHONPATH="$(pwd):$(pwd)/Skill_MAS/dataset:$(pwd)/Skill_MAS/dataset/vitabench/src"
python Skill_MAS/demo_inference.py \
--model qwen3.5-plus \
--skill Skill_MAS/optimized_skill/drb.md \
--question "Summarize recent progress in retrieval-augmented generation." \
--verbose
python Skill_MAS/demo_inference.py \
--model qwen3.5-plus \
--skill Skill_MAS/init_skill/SKILL.md \
--question "Your task prompt here." \
--dataset hlemath \
--save-mas-code /tmp/demo_mas.py
| Flag | Description |
|---|---|
--skill | Path to SKILL.md or optimized_skill/*.md (required) |
--question | Input task / question (required) |
--model | Agent model id from model_config.json (default: qwen3.5-plus) |
--dataset | hlemath | drb | bcp | vita; auto-inferred from skill filename when omitted |
--save-mas-code | Optional path to save generated MAS Python code |
--verbose | Print parsed JSON from each build stage |
BrowseComp-Plus skills (bcp) additionally accept --bcp-index-path, --bcp-retrieval-topk, --bcp-doc-max-tokens, and --bcp-max-retrieval-rounds. The BM25 index under dataset/BrowseComp-Plus/scripts_build_index/indexes/bm25 must be available (see that benchmark's README).
For BrowseComp-Plus, refer to the official repo for data preprocessing. We do not ship a plain-text data file used in our paper, to reduce data contamination risk.
Run from the directory above Skill_MAS/. Each run_*.sh takes two positional arguments: agent model id and max concurrency.
cd /path/to/parent-of-Skill_MAS
# VitaBench (cross-domain: delivery, instore, ota)
bash Skill_MAS/run_vita.sh <model_id> <max_concurrency>
# Deep Research Bench
bash Skill_MAS/run_drb.sh <model_id> <max_concurrency>
# HLEMath
bash Skill_MAS/run_hlemath.sh <model_id> <max_concurrency>
# BrowseComp-Plus
bash Skill_MAS/run_bcp.sh <model_id> <max_concurrency>
Default evolution settings in the scripts:
| Parameter | Default | Meaning |
|---|---|---|
ROUNDS | 10 | Number of evolve rounds |
K_TRAJ | 5 | Trajectories sampled per task per round |
MAX_PROBLEMS | 0 | Validation subset size (0 = all tasks) |
RUN_ID | exp1 | Logical run name under results/ |
Tweak the variables at the top of each script to change rounds, task limits, evaluator/judge models, etc.
cd /path/to/parent-of-Skill_MAS
export OPENAI_API_KEY="your-key"
export PYTHONPATH="$(pwd):$(pwd)/Skill_MAS/dataset:$(pwd)/Skill_MAS/dataset/vitabench/src"
python -m Skill_MAS evolve \
--bench-backend vitabench \
--bench-id skill_mas_agent \
--run-id exp1 \
--domain "delivery,instore,ota" \
--jsonl Skill_MAS/dataset/vitabench/data/vita_validate.json \
--rounds 10 \
--k-trajectories 5 \
--agent-llm <model_id> \
--user-llm <model_id> \
--evaluator-llm <evaluator_model_id> \
--optimizer-llm <model_id> \
--max-concurrency 16 \
--max-steps 300 \
--language chinese
| Mode | How |
|---|---|
| Resume | Re-run the same command with the same --run-id. Completed rounds are detected via summary_rXX.json. |
| Fresh run | Add --fresh to allocate a new run directory (exp1_2, exp1_3, β¦) and restart from round_00. |
Run a benchmark with an existing skill β no multi-round evolution. The first argument is a path relative to Skill_MAS/ (e.g. init_skill/SKILL.md or optimized_skill/hlemath.md).
cd /path/to/parent-of-Skill_MAS
export OPENAI_API_KEY="your-key"
bash Skill_MAS/dataset/hlemath/run_skill_mas.sh init_skill/SKILL.md <model_id> <max_concurrency>
bash Skill_MAS/dataset/deep_research_bench/run_skill_mas.sh optimized_skill/drb.md <model_id> <max_concurrency>
bash Skill_MAS/dataset/BrowseComp-Plus/run_skill_mas.sh optimized_skill/bcp.md <model_id> <max_concurrency>
bash Skill_MAS/dataset/vitabench/run_skill_mas.sh optimized_skill/vitabench.md <model_id> <max_concurrency>
demo_inference.sh on one HLEMath question before launching a full evolution run β it is the fastest way to validate API config and skill quality.--verbose in demo_inference.py to inspect Stage 1β2 JSON; Stage 3 MAS code is always printed before execution.MAX_PROBLEMS, fewer ROUNDS, or lower K_TRAJ in the shell scripts.--fresh vs resume: same --run-id resumes; add --fresh when you want a clean experiment directory.dataset/BrowseComp-Plus/README.md.results/; add that path to .gitignore if you fork the repo.@article{lin2026skill,
title = {Skill-MAS: Evolving Meta-Skill for Automatic Multi-Agent Systems},
author = {Lin, Hehai and Yang, Qi and Qin, Chengwei},
journal = {arXiv preprint arXiv:2606.18837},
year = {2026}
}
Code for "Skill-MAS: Evolving Meta-Skill for Automatic Multi-Agent Systems"
Python
56
15 commits
updated Oct 9, 2026
Skill-MAS evolves a single meta-agent skill file (SKILL.md) that instructs an LLM to design and orchestrate a Multi-Agent System (MAS) in three stages:
| Stage | Name | Output |
|---|---|---|
| 1 | Task Decomposition | Sub-task graph & constraints |
| 2 | Agent Engineering | Sub-agent roles, tools, prompts |
| 3 | Workflow Orchestration | Executable MAS Python code |
Trajectories from each evolution round drive contrastive reflection and skill rewriting; the best skill snapshot is selected across rounds.
Three ways to use this repo
| Path | When to use |
|---|---|
| π§© Codex / Claude Code skill | Import evolved orchestration strategies into your everyday agent workflow |
| π Demo Inference | One question + existing skill β build & run MAS immediately |
| π Evolution | Multi-round skill optimization on benchmark validation sets |
Skill_MAS/
βββ assert/ # README figures (background.png, Method.png)
βββ core/ # CLI entry, evolution pipeline, resume, task selection
βββ evolution/ # Rollout, contrastive reflection, skill optimizer, bench adapters
βββ skill_mas/ # 3-stage MAS builder, async LLM client, model_config.json
βββ template/ # Generated MAS code templates and SubAgent runtime
βββ utils/ # Paths, cost tracking, logging, redaction
βββ init_skill/ # Initial (pre-evolution) SKILL.md
βββ optimized_skill/ # Pre-evolved skills per benchmark (ready to test)
βββ skills/skill-mas/ # Portable agent skill + four adapted task profiles
βββ scripts/ # Skill installer + default startup routing
βββ .claude-plugin/ # Claude Code plugin and marketplace manifests
βββ hooks/ # Claude plugin session-start routing
βββ docs/agent-skills.md # Installation, profiles, updates, and adaptation notes
βββ dataset/ # Bundled benchmark code + data
β βββ vitabench/ # VitaBench (src/vita, data/)
β βββ deep_research_bench/
β βββ hlemath/
β βββ BrowseComp-Plus/
βββ run_*.sh # Evolution wrappers (run from parent of Skill_MAS/)
βββ demo_inference.py # Single-question build + inference demo
βββ demo_inference.sh # Shell wrapper for demo_inference.py
βββ results/ # Generated at runtime (not shipped)
Multi-trajectory rollout (evolution/rollout_multi.py) β run k trajectories per validation task; the agent reads the current round's SKILL.md, generates MAS code via three build stages (skill_mas/build.py), executes it, and records scores plus phase-level traces.
Contrastive reflection (evolution/contrastive_reflect.py) β compare high- vs low-scoring trajectories and synthesize structured improvement signals.
Skill bank optimization (evolution/bank_optimizer.py) β an optimizer LLM rewrites the single SKILL.md using reflection reports and round statistics.
Round selection (evolution/assemble_select.py) β track per-round scores; after all rounds, select the best skill snapshot.
| Backend | CLI flag | Validation data (default) | Evolution script | Per-bench eval script |
|---|---|---|---|---|
| VitaBench | --bench-backend vitabench | dataset/vitabench/data/vita_validate.json | run_vita.sh | dataset/vitabench/run_skill_mas.sh |
| Deep Research Bench | --bench-backend drb | dataset/deep_research_bench/data/drb_validate.jsonl | run_drb.sh | dataset/deep_research_bench/run_skill_mas.sh |
| HLEMath | --bench-backend hlemath | dataset/hlemath/data/hlemath_validate.jsonl | run_hlemath.sh | dataset/hlemath/run_skill_mas.sh |
| BrowseComp-Plus | --bench-backend bcp | dataset/BrowseComp-Plus/data/browsecomp_plus_validate.jsonl | run_bcp.sh | dataset/BrowseComp-Plus/run_skill_mas.sh |
Skill_MAS/results/{backend}_{model_tag}/
βββ artifacts/
β βββ skills/{bench_id}/{run_id}/round_XX/SKILL.md # skill snapshots per round
β βββ runs/{bench_id}/{run_id}/summary_rXX.json # round metrics
βββ log/{bench_id}/{run_id}/round_XX/ # traces, exports
Each round also saves:
round_r/
βββ trajectories/ # per-task, per-trajectory records
βββ aspects/ # phase-level snapshots
βββ contrastive/ # reflection reports
skills/.../round_r/
βββ SKILL.md # skill used in this round (rewritten after r-1)
βββ bank_meta.json # optimization history
βββ knee_images/ # task-priority elbow plots
Bring Skill-MAS's task decomposition β agent engineering β workflow orchestration
into your everyday agent workflow. After installation, Skill-MAS automatically
selects the appropriate optimized skill for the current task and orchestrates
the workflow alongside your existing skills. The portable
skill-mas adapts optimized_skill/
to native agent tools and coordinates delegation and verification as needed.
Simple questions and small edits stay lightweight. No benchmark datasets,
Python packages, or separate model API keys are needed; your agent's existing
tools and access apply.
Clone the repo and run the installer with Python 3.9+:
git clone --depth 1 https://github.com/linhh29/Skill_MAS.git
cd Skill_MAS
# Install for both agents, or choose --agent codex / --agent claude.
python3 scripts/install_agent_skill.py --agent both
This installs the self-contained skill and enables default startup routing.
Codex receives a managed block in its AGENTS.md; Claude Code receives a dedicated
rules/skill-mas.md. Existing instructions are preserved and changed instruction
files are backed up. See the exact paths and controls.
For installation in just one project:
python3 scripts/install_agent_skill.py --agent both --scope project --project /path/to/your-project
Open a new Codex or Claude Code session in the target project and describe your task:
Compare these three retrieval approaches and recommend one for our project.
Solve this combinatorics problem and explain the proof: [your problem]
Find the project matching these clues and verify the sources: [your clues]
Implement this feature, integrate the changes, and check that it works.
Skill-MAS selects the relevant strategy internally:
| Profile | Adapted from | Useful for |
|---|---|---|
drb | Deep Research Bench | Parallel research and report synthesis |
hlemath | HLEMath | Shared assumptions, independent reasoning, small-case checks |
bcp | BrowseComp-Plus | Multi-clue search, candidate comparison, relationship verification |
vitabench | VitaBench | Tool workflows, structured decisions, dependency-aware execution |
Specialist skills handle their own domains. If an existing orchestration skill already coordinates a task, Skill-MAS adds handoff and verification guidance to that workflow, keeping one plan and avoiding duplicate agent teams.
Instead of the copy installer, run these commands inside Claude Code and complete the installation in its plugin interface:
/plugin marketplace add linhh29/Skill_MAS
/plugin install skill-mas@skill-mas-marketplace
Start a new session and use the same ordinary prompts above. The plugin's
SessionStart hook loads the routing guidance so the agent can select an optimized
skill for the current task. Existing plugin users should update to the latest version.
Choose either the plugin or the copy installation for Claude Code to avoid duplicate entries. Default routing is implemented through the hosts' instruction and hook mechanisms; Skill-MAS is an installed extension, not an official bundled component. The skill uses available native delegation; when subagents are unavailable, it follows the same workflow sequentially and says so. These are adapted orchestration instructions; benchmark results do not establish their performance in Codex or Claude Code.
See the installation and adaptation guide for manual installation, updates, removal, source mapping, and troubleshooting. The research runtime setup below is only needed for the demo and benchmark workflows.
Check out this repo so that Skill_MAS/ lives under a parent directory (e.g. demo/ or arxiv_code/). All benchmarks are vendored under Skill_MAS/dataset/; you do not need sibling copies of vitabench_single/, hlemath/, etc.
Install dependencies for Skill-MAS and the benchmark you use (see dataset/vitabench/requirements.txt and each benchmark's README).
conda create -n skill_mas python=3.11 -y
conda activate skill_mas
pip install openai pydantic loguru # plus benchmark-specific deps
Edit skill_mas/model_config.json β model ids, pricing, base_url, and ${OPENAI_API_KEY} placeholders. Shell scripts resolve credentials via environment variables:
Use this when you want to try Skill-MAS on your own task without running multi-round evolution.
We ship ready-to-use skill files β no evolution required:
| Path | Role |
|---|---|
init_skill/SKILL.md | Initial meta-agent skill (pre-evolution baseline) |
optimized_skill/vitabench.md | Evolved skill for VitaBench |
optimized_skill/drb.md | Evolved skill for Deep Research Bench |
optimized_skill/hlemath.md | Evolved skill for HLEMath |
optimized_skill/bcp.md | Evolved skill for BrowseComp-Plus |
demo_inference.py loads any of these paths, runs the three-stage build, prints Stage-3 MAS code, executes the generated workflow, and prints the answer.
Supported standalone datasets in the demo: hlemath, drb, bcp. VitaBench needs the full simulator (run_vita.sh or dataset/vitabench/run_skill_mas.sh).
cd /path/to/parent-of-Skill_MAS
# Usage: bash Skill_MAS/demo_inference.sh <model_id> <skill_path> "<question>"
bash Skill_MAS/demo_inference.sh qwen3.5-plus \
Skill_MAS/init_skill/SKILL.md \
"What is 17 + 28? Give the final answer in \\boxed{...} form."
bash Skill_MAS/demo_inference.sh qwen3.5-plus \
Skill_MAS/optimized_skill/hlemath.md \
"Find the number of positive integers n such that n^2 + 3n + 2 is divisible by n + 1."
cd /path/to/parent-of-Skill_MAS
export OPENAI_API_KEY="your-key"
export PYTHONPATH="$(pwd):$(pwd)/Skill_MAS/dataset:$(pwd)/Skill_MAS/dataset/vitabench/src"
python Skill_MAS/demo_inference.py \
--model qwen3.5-plus \
--skill Skill_MAS/optimized_skill/drb.md \
--question "Summarize recent progress in retrieval-augmented generation." \
--verbose
python Skill_MAS/demo_inference.py \
--model qwen3.5-plus \
--skill Skill_MAS/init_skill/SKILL.md \
--question "Your task prompt here." \
--dataset hlemath \
--save-mas-code /tmp/demo_mas.py
| Flag | Description |
|---|---|
--skill | Path to SKILL.md or optimized_skill/*.md (required) |
--question | Input task / question (required) |
--model | Agent model id from model_config.json (default: qwen3.5-plus) |
--dataset | hlemath | drb | bcp | vita; auto-inferred from skill filename when omitted |
--save-mas-code | Optional path to save generated MAS Python code |
--verbose | Print parsed JSON from each build stage |
BrowseComp-Plus skills (bcp) additionally accept --bcp-index-path, --bcp-retrieval-topk, --bcp-doc-max-tokens, and --bcp-max-retrieval-rounds. The BM25 index under dataset/BrowseComp-Plus/scripts_build_index/indexes/bm25 must be available (see that benchmark's README).
For BrowseComp-Plus, refer to the official repo for data preprocessing. We do not ship a plain-text data file used in our paper, to reduce data contamination risk.
Run from the directory above Skill_MAS/. Each run_*.sh takes two positional arguments: agent model id and max concurrency.
cd /path/to/parent-of-Skill_MAS
# VitaBench (cross-domain: delivery, instore, ota)
bash Skill_MAS/run_vita.sh <model_id> <max_concurrency>
# Deep Research Bench
bash Skill_MAS/run_drb.sh <model_id> <max_concurrency>
# HLEMath
bash Skill_MAS/run_hlemath.sh <model_id> <max_concurrency>
# BrowseComp-Plus
bash Skill_MAS/run_bcp.sh <model_id> <max_concurrency>
Default evolution settings in the scripts:
| Parameter | Default | Meaning |
|---|---|---|
ROUNDS | 10 | Number of evolve rounds |
K_TRAJ | 5 | Trajectories sampled per task per round |
MAX_PROBLEMS | 0 | Validation subset size (0 = all tasks) |
RUN_ID | exp1 | Logical run name under results/ |
Tweak the variables at the top of each script to change rounds, task limits, evaluator/judge models, etc.
cd /path/to/parent-of-Skill_MAS
export OPENAI_API_KEY="your-key"
export PYTHONPATH="$(pwd):$(pwd)/Skill_MAS/dataset:$(pwd)/Skill_MAS/dataset/vitabench/src"
python -m Skill_MAS evolve \
--bench-backend vitabench \
--bench-id skill_mas_agent \
--run-id exp1 \
--domain "delivery,instore,ota" \
--jsonl Skill_MAS/dataset/vitabench/data/vita_validate.json \
--rounds 10 \
--k-trajectories 5 \
--agent-llm <model_id> \
--user-llm <model_id> \
--evaluator-llm <evaluator_model_id> \
--optimizer-llm <model_id> \
--max-concurrency 16 \
--max-steps 300 \
--language chinese
| Mode | How |
|---|---|
| Resume | Re-run the same command with the same --run-id. Completed rounds are detected via summary_rXX.json. |
| Fresh run | Add --fresh to allocate a new run directory (exp1_2, exp1_3, β¦) and restart from round_00. |
Run a benchmark with an existing skill β no multi-round evolution. The first argument is a path relative to Skill_MAS/ (e.g. init_skill/SKILL.md or optimized_skill/hlemath.md).
cd /path/to/parent-of-Skill_MAS
export OPENAI_API_KEY="your-key"
bash Skill_MAS/dataset/hlemath/run_skill_mas.sh init_skill/SKILL.md <model_id> <max_concurrency>
bash Skill_MAS/dataset/deep_research_bench/run_skill_mas.sh optimized_skill/drb.md <model_id> <max_concurrency>
bash Skill_MAS/dataset/BrowseComp-Plus/run_skill_mas.sh optimized_skill/bcp.md <model_id> <max_concurrency>
bash Skill_MAS/dataset/vitabench/run_skill_mas.sh optimized_skill/vitabench.md <model_id> <max_concurrency>
demo_inference.sh on one HLEMath question before launching a full evolution run β it is the fastest way to validate API config and skill quality.--verbose in demo_inference.py to inspect Stage 1β2 JSON; Stage 3 MAS code is always printed before execution.MAX_PROBLEMS, fewer ROUNDS, or lower K_TRAJ in the shell scripts.--fresh vs resume: same --run-id resumes; add --fresh when you want a clean experiment directory.dataset/BrowseComp-Plus/README.md.results/; add that path to .gitignore if you fork the repo.@article{lin2026skill,
title = {Skill-MAS: Evolving Meta-Skill for Automatic Multi-Agent Systems},
author = {Lin, Hehai and Yang, Qi and Qin, Chengwei},
journal = {arXiv preprint arXiv:2606.18837},
year = {2026}
}