A collection of AI agent skills for QEMU hardware modeling, source builds, image packaging, boot testing, qtest coverage, debugging, RST documentation, and TCG workflows.
The skills give an agent structured, evidence-driven workflows for turning a hardware target into a runnable QEMU model. They are designed to be used inside a QEMU source tree and keep all agent-created artifacts under:
.oh-my-qemu/<task-slug>/
The runtime adds .oh-my-qemu/ to the checkout's local .git/info/exclude
when the QEMU tree is a Git worktree. This keeps QEMU source trees free of
.plan/, .humanize/, root-level scratch notes, logs, temporary scripts, and
other agent working files.
Once installed, start Codex from a QEMU checkout and give the agent a concrete target and workload. For example:
git clone https://github.com/processmission/qemu.git
cd qemu
codexModel a board or peripheral until a workload runs
/goal Help me model the xxx hardware model in QEMU. Proactively collect relevant datasheets, technical blogs, and driver source code. Follow the oh-my-qemu workflow end to end, including source provenance, register extraction, peripheral or board modeling, qtest/model verification, build, boot/run evidence, and RST documentation where appropriate. Continue until the xxx workload can run under QEMU, such as a bare-metal program, firmware payload, RTOS image, or Linux boot.
Extract a register contract before modeling
Use the oh-my-qemu workflow to research this UART/SPI/PCIe block. Compare the datasheet, Linux driver, U-Boot driver, device tree bindings, and firmware initialization sequence, then produce a register-extraction handoff for QEMU modeling.
Debug a stuck firmware boot
The firmware boot hangs after early MMIO setup. Use QEMU logs, trace events, gdbstub, and instruction-window analysis to identify the blocking device or missing register behavior.
Create QEMU board documentation
Write the QEMU RST documentation for this board model. Include supported devices, direct Linux boot, firmware boot, test commands, and known limitations, and update the relevant toctree.
Replace xxx with the SoC, board, peripheral, ISA feature, or test program you
want to model and run.
| Directory | Purpose |
|---|---|
.agents/skills/ |
Agent skills, one SKILL.md per flow primitive or workflow |
scripts/ |
Skill validation, Codex registration, portable install, task initialization, and methodology issue helpers |
commands/ |
Slash command definitions such as /qemu-init-task |
hooks/ |
Artifact-policy hooks that keep agent scratch files under .oh-my-qemu/ |
src/ |
Oh My Pi plugin runtime glue and shared hook logic |
.claude-plugin/ |
Claude Code plugin and marketplace metadata |
skills |
Symlink to .agents/skills/ for plugin-compatible discovery |
Oh My QEMU uses two skill schemas:
| Schema | Naming | Role |
|---|---|---|
| Flow primitive | qemu-<capability> |
Owns one bounded action, record, or evidence contract. It does not orchestrate other primitives or workflows. |
| Workflow | qemu-workflow-<name> |
Composes primitives to complete a larger QEMU task path. |
Flow primitives are the stable building blocks. Workflows choose and order those primitives based on the task input.
| Skill | Purpose |
|---|---|
qemu-agent-feedback |
Summarize sanitized oh-my-qemu agent workflow problems and file improvement issues with gh when approved |
qemu-boot-run |
Build reproducible QEMU run commands, logs, timeout markers, and result classification |
qemu-build |
Configure, build, reuse, and diagnose QEMU build directories |
qemu-debug |
Use gdbstub, host debugger, QEMU logs, trace events, replay, and instruction-window analysis |
qemu-image-layout |
Describe and verify boot media formats, partitions, offsets, writes, and hashes |
qemu-image-packaging |
Package kernels, firmware, DTBs, rootfs, modules, and boot media images |
qemu-kernel-build |
Build Linux kernel artifacts for QEMU boot tests |
qemu-model-verification |
Produce PASS/FAIL/INCONCLUSIVE evidence for model, board, device, and runtime behavior |
qemu-plan |
Define task scope, acceptance criteria, artifact root, and verification gates |
qemu-qtest |
Design, register, run, and debug qtest coverage |
qemu-register-extraction |
Extract register maps, bitfields, side effects, IRQ/DMA behavior, and driver sequences |
qemu-rlcr-loop |
Iterate implementation/debugging rounds with verification, review, local checkpoints, and final-series draft preparation |
qemu-rst-documentation |
Write QEMU RST docs, board pages, boot examples, Sphinx index updates, and docs validation |
qemu-source-provenance |
Record source trees, revisions, configs, toolchains, outputs, and hashes |
qemu-uboot-build |
Build U-Boot, SPL/TPL, FIT/ITB, and firmware-chain artifacts |
| Skill | Purpose |
|---|---|
qemu-workflow-linux-boot |
Boot Linux directly or through firmware based on task inputs and preserve handoff evidence |
qemu-workflow-board-modeling |
Model boards, SoCs, memory maps, boot paths, firmware handoff, FDT, and IRQ topology |
qemu-workflow-peripheral-modeling |
Model MMIO, qdev, SysBus, IRQ, timer, DMA, and register-bank devices |
qemu-workflow-tcg-frontend-instruction |
Add, review, or debug guest ISA decode and TCG translation |
qemu-workflow-tcg-backend-adaptation |
Adapt TCG host backend ops, constraints, register allocation, emission, atomics, and vectors |
This repository follows the open Agent Skills standard.
Each skill directory contains a SKILL.md file that compatible agents can load
on demand. The same skill content is exposed through portable skills, Codex
local registration, Oh My Pi, and Claude Code plugin packaging.
| Agent/runtime | Project-level path | User-level path |
|---|---|---|
| OpenAI Codex | .agents/skills/ |
${CODEX_HOME:-$HOME/.codex}/skills |
Portable npx skills canonical install |
.agents/skills/ |
~/.agents/skills/ |
| Claude Code plugin | plugin marketplace/cache | plugin marketplace/cache |
| Oh My Pi plugin | plugin marketplace/cache | plugin marketplace/cache |
List available skills:
npx skills add https://github.com/processmission/oh-my-qemu -lFrom a local checkout, install globally for agents that support global skill paths:
git clone https://github.com/processmission/oh-my-qemu.git
cd oh-my-qemu
npm run portable:skills:install-globalThe install script wraps npx skills add with an explicit list of global-capable
agents. It intentionally excludes PromptScript because PromptScript is
project-only in current skills CLI releases. The script also refreshes Codex
links under ${CODEX_HOME:-$HOME/.codex}/skills from this checkout.
Verify the completed install:
npx skills list -gInstall into the current project instead:
npx skills add https://github.com/processmission/oh-my-qemu --allFor Codex development against this checkout, validate and register symlinks into
${CODEX_HOME:-$HOME/.codex}/skills:
cd /path/to/oh-my-qemu
npm run codex:skills:validate
npm run codex:skills:register:dry-run
npm run codex:skills:registerUse a copy instead of symlinks, or target another directory:
node scripts/register-codex-skills.mjs --copy --target /path/to/codex/skillsStart a new Codex session after registering so the new skill metadata is loaded.
The Oh My Pi plugin exposes the same skills plus OMP-specific helpers:
qemu_init_tasktool;/qemu-init-taskslash command;- artifact-policy hook that redirects root-level scratch artifacts to
.oh-my-qemu/<task-slug>/.
Install from the self-hosted marketplace:
omp plugin marketplace add processmission/oh-my-qemu
omp plugin install oh-my-qemu@processmissionLocal development link:
omp plugin link /path/to/oh-my-qemuThe Claude Code plugin exposes the same skills, /qemu-init-task, and the
artifact-policy PreToolUse hook.
Install from the self-hosted marketplace:
claude plugin marketplace add processmission/oh-my-qemu
claude plugin install oh-my-qemu@processmissionInstall into the current project only with --scope project, or keep it local
with --scope local.
Local development against a checkout:
claude plugin marketplace add /path/to/oh-my-qemu
claude plugin install oh-my-qemu@processmissionVerify the plugin and its skills:
claude plugin list
claude plugin details oh-my-qemu@processmissionInstalled plugin skills are namespaced as oh-my-qemu:<skill>, for example
oh-my-qemu:qemu-plan.
Initialize a task workspace:
/qemu-init-task k230-uart-model
This creates:
.oh-my-qemu/k230-uart-model/
plan.md
evidence.md
commands.md
source-provenance.md
image-layout.md
boot-run.md
methodology-feedback.md
register-extraction.md
source-inventory.md
conflicts.md
logs/
reviews/
scratch/
rlcr/
For a complete modeling run, keep the request in the task workspace and compose
the workflow skills from there. In a QEMU tree, create
.oh-my-qemu/k230-uart-model/task.md:
mkdir -p .oh-my-qemu/k230-uart-model
cat > .oh-my-qemu/k230-uart-model/task.md <<'EOF'
---
slug: k230-uart-model
workstream: peripheral-modeling
---
Model the K230 UART and prove it with qtest.
EOFThen ask the agent to use the appropriate QEMU workflow skill from that QEMU
tree. The workflow creates the task root, records a provenance snapshot, plans
the work, runs implementation/verification/review loops, prepares human-owned
final-series drafts, and writes
.oh-my-qemu/k230-uart-model/rlcr/final-summary.md.
Typical composition:
qemu-plan- define goal, scope, acceptance criteria, and evidence.qemu-source-provenance,qemu-image-layout, andqemu-boot-run- record sources, artifacts, media layout, and run commands.qemu-register-extraction,qemu-workflow-peripheral-modeling, orqemu-workflow-board-modeling- build the model from verified hardware facts.qemu-build,qemu-qtest,qemu-debug, andqemu-model-verification- prove the model with build, tests, traces, and boot evidence.qemu-rst-documentation- document supported hardware, boot commands, tests, and known limitations.qemu-rlcr-loop- iterate until the acceptance criteria pass.
Common workflows:
kernel build -> linux boot (direct path) -> verification
uboot build -> image packaging -> linux boot (firmware path) -> debug if needed -> verification
register extraction -> peripheral modeling -> qtest -> model verification
board modeling -> qtest -> linux boot (selected path) -> RST documentation
These skills follow QEMU provenance constraints:
- agents do not generate code intended for QEMU upstream submission;
- agents do not add DCO/review trailers to repository commits or sign on behalf of humans;
- final-series DCO trailers are drafted only for human review and ownership;
- QEMU DCO is the standard
Signed-off-by: Name <email>trailer; the tool-user git identity normally satisfies it unless a distinct second signer is recorded; AI-used-for:is only a proposed qemu-devel scope-disclosure trailer for human-enabled final-series drafts; it is not an AI-agent DCO sign-off;- local research, debugging, verification, and workflow guidance are allowed.
The workflow design is based on PolyArch/humanize: plan with explicit acceptance criteria, iterate in reviewed rounds, and keep evidence attached to the work.
At final completion, pause, blocked state, or max-iteration exit of an RLCR or composed workflow, the agent can write a one-time methodology feedback record. It summarizes reusable workflow problems or improvements into:
.oh-my-qemu/<task-slug>/methodology-feedback.md
The report must be sanitized before it is shown or filed: no private paths, branch names, commit hashes, proprietary logs, code snippets, project-specific URLs, image paths, or board/customer/product identifiers unless explicitly approved.
If reusable improvements exist, use qemu-agent-feedback to draft the
public issue from the sanitized report and file it with the local GitHub CLI
when approved. The default target is processmission/oh-my-qemu,
overrideable with QEMU_METHODOLOGY_ISSUE_REPO=owner/repo.
Draft an improvement issue from a sanitized report:
npm run methodology:issue -- .oh-my-qemu/<task-slug>This writes:
.oh-my-qemu/<task-slug>/scratch/methodology-issue-title.txt
.oh-my-qemu/<task-slug>/scratch/methodology-issue.md
Practice/demo branch using these ideas for downstream QEMU modeling work:
- RK3588/RK3588S Rockchip machines and shared IP models: https://github.com/processmission/qemu/tree/devel
Portable skills:
npx skills update -gOh My Pi plugin:
omp plugin upgrade oh-my-qemu@processmissionClaude Code plugin:
claude plugin install oh-my-qemu@processmissionRe-add the marketplace to pick up new commits, or manage versions through the interactive plugin menu.
MIT. Copyright (c) 2026 Process Mission. See LICENSE.