← Back to docs

Start

Getting started

Preview and install Oh My QEMU skills locally, then prepare an auditable QEMU workspace.

Oh My QEMU provides 17 independently installable skills for local QEMU research, modeling, build, boot, debug, qtest, and documentation work.

Run this command from the QEMU repository root. It downloads the skill source through npx and installs all 17 skills into project-local Codex and Claude Code without a selection prompt or a manual Oh My QEMU clone:

curl -fsSL https://raw.githubusercontent.com/processmission/oh-my-qemu/main/install.sh | bash

The installer is always project-local and rejects global flags. After the skill install succeeds, it idempotently adds .agents/, .claude/skills/, .oh-my-qemu/, builds/, and the generated skills-lock.json to the repository-local Git exclude, preserving existing entries and deduplicating slash variants. It does not modify the shared .gitignore. Linked worktrees that use one Git common directory share the exclude file.

The installer stops before making changes if the target already tracks .agents/skills/, .claude/skills/, or skills-lock.json, because local Git exclude rules cannot hide modifications to tracked files.

The lockfile remains available locally for updates but does not appear in git status.

Optional contributor installation

Skill developers and contributors can clone Oh My QEMU and install their local working tree into a specific QEMU checkout:

git clone https://github.com/processmission/oh-my-qemu.git
cd oh-my-qemu
./install.sh --target /path/to/qemu

This installs all 17 skills from the cloned working tree, including local changes. To install only one skill:

./install.sh --target /path/to/qemu --skill qemu-build

Preview the catalog without installing anything:

npx skills add https://github.com/processmission/oh-my-qemu -l

Direct npx skills add remains available as a lower-level path, but it does not perform the repository-local Git exclude setup.

Start a task

For a non-trivial task that writes to a QEMU workspace, create only the entries you need under:

.oh-my-qemu/<task-slug>/
├── audit.md
├── commands.md
├── logs/
├── scripts/
└── output/

Use scripts/ for temporary probes, parsers, and harnesses. Use output/ for generated deliverables, downloaded dependency artifacts, and non-QEMU build binaries. Record scope, sources, decisions, and verification in audit.md, and reproducible commands and results in commands.md.

Build QEMU by target

QEMU’s own build output belongs in the source-root builds/ directory:

mkdir -p builds/build-aarch64
cd builds/build-aarch64
../../configure --target-list=aarch64-softmmu
ninja

Use a distinct name such as builds/build-riscv64/ or builds/build-aarch64-debug/ for every target or configuration. Never place a QEMU build in build/ or the task’s output/ directory.