WM

walterhu1015/mmskills

Developer tools
7 stars Quality 63 Trend 19Apache-2.0

MMSkills: Towards Multimodal Skills for General Visual Agents

Overview

Towards Multimodal Skills for General Visual Agents News | Paper | Website | Skill Library | Demos | Overview | Installation | Quick Start | Citation If you find this project helpful, please give us a star ⭐ for the latest updates. - 🏆 MMSkills ranked . - 🤗 The MMSkills dataset is now available on Hugging Face Datasets. - 🌐 The project website is live with demo comparisons and a searchable MMSkills Library indexing across Ubuntu, macOS, VAB-Minecraft, and Mario. - 🚀 The public release includes a compact multimodal desktop-skill subset, OSWorld-ready runtime adapters, task mappings, and model-agnostic skill modes. - 🔌 We are exploring integrations with OpenClaw, Codex, and Claude Code. Stay tuned. Four OSWorld demos compare the same task under no skills, text-only skill guidance, and multimodal MMSkills. To keep GUI text readable in the GitHub README, each case uses three separate 1080p MP4 players instead of a compressed side-by-side composite.

README

Towards Multimodal Skills for General Visual Agents

News | Paper | Website | Skill Library | Demos | Overview | Installation | Quick Start | Citation

If you find this project helpful, please give us a star ⭐ for the latest updates.

📣 Latest News

  • 🏆 [May 2026] MMSkills ranked #1 on Hugging Face Daily Papers.
  • 🤗 [May 2026] The MMSkills dataset is now available on Hugging Face Datasets.
  • 🌐 [May 2026] The project website is live with demo comparisons and a searchable MMSkills Library indexing 515 skills across Ubuntu, macOS, VAB-Minecraft, and Mario.
  • 🚀 [May 2026] The public release includes a compact multimodal desktop-skill subset, OSWorld-ready runtime adapters, task mappings, and model-agnostic skill modes.
  • 🔌 [May 2026] We are exploring integrations with OpenClaw, Codex, and Claude Code. Stay tuned.

🎬 Demos

Four OSWorld demos compare the same task under no skills, text-only skill guidance, and multimodal MMSkills. To keep GUI text readable in the GitHub README, each case uses three separate 1080p MP4 players instead of a compressed side-by-side composite. The full video layout is also available at deepexperience.github.io/MMSkills/cases.html.

💡 Overview

MMSkills is a framework for representing, loading, and using reusable multimodal procedural knowledge for visual agents. Each skill combines textual procedure guidance, compact state-card metadata, and optional visual references. At inference time, the agent keeps only lightweight skill hints in the main context, then opens a temporary skill branch when task state suggests that a skill may help.

This repository is a focused open-source release. It is not a full OSWorld fork; instead, it provides the MMSkill runtime layer, an install script, OSWorld runner patches, task-to-skill mappings, and a representative public skill library.

Project pages:

Website frontend files are published from the gh-pages branch. The main branch is kept focused on the open-source code, runtime integration, skills, and documentation.

✨ Highlights

🗂️ Repository Layout

MMSkills/
├── mm_agents/                 # MMSkill runtime architecture and model adapters
├── osworld_integration/       # MMSkills-aware OSWorld runner files
├── skills_library/            # Public multimodal skills subset for direct runtime use
├── task_skill_mappings/       # OSWorld task-to-skill mapping for released skills
└── scripts/
    ├── install_into_osworld.py # Install this release into an OSWorld checkout
    └── sync_from_sources.py    # Maintainer sync helper for source checkouts

🧠 Architecture

The public runtime entrypoint is mm_agents/mm_skill_agent.py, exposed in OSWorld as:

--agent_type mm_skill

The architecture is model-agnostic. A main visual agent receives compact skill hints; when a skill may apply, the runtime opens a branch that decides whether visual evidence is needed, requests relevant state views, compares them with the live screenshot, and returns structured guidance for the next grounded action.

The reference integration supports:

  • mm_skill: multimodal branch-loaded skill consultation.
  • general_text_skill: text-only skill consultation for ablation and lightweight runs.
  • general: baseline model-agnostic screenshot-to-pyautogui visual-agent routing.

Legacy gemini, gemini_skill, and gemini_text_skill CLI names are still accepted by the runner as aliases for compatibility, but the public files and recommended commands use the model-agnostic general* names.

Any screenshot-capable VLM served through an OpenAI-compatible chat-completions API can use the same general* and mm_skill interfaces by setting --model, --api_model when needed, --base_url, and --api_key.

🔧 Installation

1. Clone MMSkills

git clone https://github.com/DeepExperience/MMSkills.git
cd towards_mmskills

2. Install Python dependencies

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. Install into OSWorld

Clone and install OSWorld following its upstream instructions, then run:

python3 scripts/install_into_osworld.py /path/to/OSWorld --with-runner --with-skills

This copies the MMSkill agent files into OSWorld/mm_agents/, installs the MMSkills-aware runner files, and copies the released skills_library/ plus task_skill_mappings/.

4. Configure model endpoints

For an OpenAI-compatible endpoint:

export OPENAI_BASE_URL="https://your-openai-compatible-endpoint/v1"
export OPENAI_API_KEY="your_api_key"

For native Gemini-compatible routing, pass --api_backend gemini and set:

export GEMINI_BASE_URL="https://your-gemini-compatible-endpoint/v1"
export GEMINI_API_KEY="your_api_key"

🏃 Quick Start

Run commands from the OSWorld checkout after installation.

Baseline Without Skills

python run.py \
  --agent_type general \
  --model gpt-4o \
  --api_backend openai \
  --observation_type screenshot \
  --action_space pyautogui \
  --max_steps 20 \
  --test_all_meta_path evaluation_examples/test_nogdrive.json \
  --domain chrome \
  --result_dir results/no_skills

Text-Only Skills

python run.py \
  --agent_type general_text_skill \
  --model gpt-4o \
  --api_backend openai \
  --observation_type screenshot \
  --action_space pyautogui \
  --max_steps 20 \
  --skills_library_dir skills_library \
  --task_skill_mapping_root task_skill_mappings/task_skill_mapping.json \
  --skill_mode text_only \
  --text_skill_mode branch_planner \
  --test_all_meta_path evaluation_examples/test_nogdrive.json \
  --domain chrome \
  --result_dir results/text_only

Multimodal MMSkill Agent

python run.py \
  --agent_type mm_skill \
  --model gpt-4o \
  --api_backend openai \
  --observation_type screenshot \
  --action_space pyautogui \
  --max_steps 20 \
  --skills_library_dir skills_library \
  --task_skill_mapping_root task_skill_mappings/task_skill_mapping.json \
  --skill_mode multimodal \
  --task_skill_top_k 6 \
  --save_conversation_json \
  --test_all_meta_path evaluation_examples/test_nogdrive.json \
  --domain chrome \
  --result_dir results/mm_skill_multimodal

Use --domain all for the full no-Google-Drive OSWorld split. The runner writes trajectories, screenshots, skill_invocations.json, skill_usage_summary.json, and aggregate metrics under the selected --result_dir.

📚 Skill Library

The website indexes 515 skills from the open-source Ubuntu, macOS, VAB-Minecraft, and Mario skill assets. Each skill card links to a structured view of its SKILL.md, runtime state cards, and ordered visual references.

Browse the live library at deepexperience.github.io/MMSkills/skills.html.

The repository also includes a compact runtime-ready subset under skills_library/ for immediate OSWorld integration.

📦 Skill Package Format

skills_library///
├── SKILL.md                  # Procedure, applicability, transfer limits, checks
├── runtime_state_cards.json  # Compact state/view metadata used at inference time
├── state_cards.json          # Audit-grade state metadata for inspection
├── plan.json                 # Generated plan metadata, when available
└── Images/                   # Full frames, focus crops, before/after references

The main agent sees only concise skill names and state hints. Detailed visual evidence is loaded lazily by the branch planner, which keeps the main context compact while preserving access to state-specific multimodal references.

runtime_state_cards.json is the inference-facing version: it contains compact state descriptions, when-to-use rules, visible cues, verification cues, and selected image views for branch-time loading. state_cards.json is the richer authoring/audit version: it keeps transfer-limit notes, highlight targets, grounding queries, bounding boxes, crop decisions, and evidence-source metadata for inspection and regeneration.

🧪 Outputs

MMSkills adds skill-aware artifacts to OSWorld result directories:

File Purpose
skill_invocations.json Per-branch consultation records, selected states, requested views, and planner outputs
skill_usage_summary.json Aggregate skill counts, branch success counts, exhausted skills, and final actions
conversation.json Optional main and branch conversation trace when --save_conversation_json is enabled

🤝 Contributing

Contributions are welcome for new skills, runtime integrations, documentation, and reproducibility fixes. Please read CONTRIBUTING.md before opening an issue or pull request.

📄 License

This project is released under the Apache License 2.0. Portions of the OSWorld integration are derived from OSWorld; see NOTICE for attribution details.

📝 Citation

If you use MMSkills in your research or applications, please cite our arXiv paper:

@misc{zhang2026mmskills,
  title = {MMSkills: Towards Multimodal Skills for General Visual Agents},
  author = {Kangning Zhang and Shuai Shao and Qingyao Li and Jianghao Lin and Lingyue Fu and Shijian Wang and Wenxiang Jiao and Yuan Lu and Weiwen Liu and Weinan Zhang and Yong Yu},
  year = {2026},
  eprint = {2605.13527},
  archivePrefix = {arXiv},
  primaryClass = {cs.AI},
  url = {https://arxiv.org/abs/2605.13527}
}

You can also use the machine-readable citation metadata in CITATION.cff.

View the full README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add walterhu1015/mmskills
New to MCP? Start with the mcpskill.org guide →