CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/qemu-system-test-runner

Author and run QEMU system emulation as an embedded-test target - qemu-system-arm / qemu-system-aarch64 / qemu-system-riscv32 launching cross-compiled ELF binaries on virtual MCUs and SoCs. Covers machine selection (-M virt / mps2-an385 / mps2-an386 / mps2-an500 / mps2-an511 / mps3-an524 / lm3s6965evb / raspi3b / xilinx-zynq-a9), CPU selection (-cpu cortex-m0 / cortex-m3 / cortex-m4 / cortex-m33 / cortex-a15 / cortex-a57 / max), -kernel ELF load, -nographic + -serial stdio, ARM semihosting via -semihosting-config enable=on,target=native (so cross-compiled GoogleTest / Unity binaries print to host stdio and exit with the test return code), GDB stub via -S -gdb tcp::1234, QMP monitor via -qmp tcp:host:port for automated test orchestration, and CI wiring. Use when host-only test runs are insufficient and the team wants arch-correct (endianness / alignment / interrupt-vector) behaviour on a virtual MCU without committing to physical hardware-in-loop.

72

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

86%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, command-dense skill body: every phase of the build-run-parse-CI pipeline has copy-paste-ready invocations, detail is correctly pushed to three well-signaled one-level-deep reference files, and limitations/anti-patterns are concrete. The main deductions are duplicated exit-code explanations and doc-quoting of flags Claude already knows.

Suggestions

State the exit-code propagation mechanism once (in 'Parsing results') and reference it from the semihosting section instead of explaining it in both places.

Drop the inline doc quotes for flags Claude already knows (e.g., '-S "freezes the CPU at startup"', '-gdb tcp::1234 "opens a GDB stub"') and keep quoting only for non-obvious behavior like the semihosting and QMP flags.

Frame the smoke run's expected output as an explicit validation step (e.g., 'Verify you see 2 Tests 0 Failures and exit code 0 before wiring CI') to turn the implicit checkpoint into a decision point.

DimensionReasoningScore

Conciseness

Mostly efficient with domain-specific content Claude does not already know (rdimon.specs wiring, board-to-CPU mapping), but with minor trimmable redundancy: the exit-code mechanism is explained twice ("the C runtime calls `_exit(rc)`; QEMU exits with `rc`. CI gates on `$?`" in the semihosting section, then again "Semihosting's `_exit(rc)` propagates `rc` through QEMU" in Parsing results), and doc quotes are given for flags Claude already knows (`-S` "freezes the CPU at startup", `-gdb tcp::1234` "opens a GDB stub on the specified device"). Not 3 because there are no padded explanations of basic concepts; not 5 because the duplication and obvious-flag quoting are tokens that do not earn their place.

4 / 5

Actionability

Every section is copy-paste ready: the cross-build command (`arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -O0 -g --specs=rdimon.specs ... -lrdimon`), the smoke run (`qemu-system-arm -M mps2-an386 -cpu cortex-m4 -nographic -semihosting-config enable=on,target=native -kernel build/test.elf`), a two-terminal GDB setup with exact `-ex` args, and QMP usage with concrete JSON commands (`{"execute":"query-status"}`, `{"execute":"stop"}`). This matches the 5 anchor: fully executable commands covering the common cases.

5 / 5

Workflow Clarity

A logical pipeline sequence (Authoring -> Building -> Running -> Parsing results -> CI integration) with a checkpoint via expected smoke-run output ("2 Tests 0 Failures 0 Ignored / OK", "Exit code: 0") and symptom->fix recovery in the Anti-patterns table ("Test prints nothing; QEMU never exits" -> "Always set both `-semihosting-config enable=on` and `target=native`"). Not 5 because validation is shown rather than framed as an explicit validate-then-proceed decision point, and the sequence is implied by section order rather than stated steps; not 3 because expected output and exit-code checkpoints are present and error recovery is tabulated.

4 / 5

Progressive Disclosure

The body is an overview that defers bulk detail to one-level-deep references, each clearly signaled and verified to exist and contain exactly what is promised: "The full machine list ... is in references/boards.md", "The full invocation flag table ... is in references/flags.md", "The canonical GitHub Actions pipeline ... is in references/ci.md". The split is appropriate (full board table, flag table, CI YAML), no nested references, easy navigation. Not 4 because there are no organization gaps; the only quirk - a 3-row Cortex-M table duplicated between body and boards.md - is deliberate quick-reference, not misplacement.

5 / 5

Total

18

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: explicit what and when, comprehensive enumerated capabilities with exact flags, and explicit positioning between host tests and HIL. The only weakness is trigger coverage relying on exact tool/board names rather than also including natural synonyms.

Suggestions

Add one or two natural synonym phrasings (e.g., 'emulate bare-metal tests on-target') alongside the exact tool-name enumeration to widen trigger matching for users who don't name the qemu-system-* binaries.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions with comprehensive coverage: "machine selection", "CPU selection", "-kernel ELF load", "-nographic + -serial stdio", "ARM semihosting via -semihosting-config enable=on,target=native", "GDB stub via -S -gdb tcp::1234", "QMP monitor via -qmp tcp:host:port", "and CI wiring". Matches the 5 anchor ('multiple specific concrete actions; comprehensive coverage'); not 4 because no capability area of the skill's scope is missing.

5 / 5

Completeness

Explicitly answers both parts: what - "Author and run QEMU system emulation as an embedded-test target - qemu-system-arm ... launching cross-compiled ELF binaries on virtual MCUs and SoCs" plus the enumerated capabilities; when - "Use when host-only test runs are insufficient and the team wants arch-correct (endianness / alignment / interrupt-vector) behaviour on a virtual MCU without committing to physical hardware-in-loop." Matches the 5 anchor exactly.

5 / 5

Trigger Term Quality

Good-to-excellent keyword coverage via terms users would actually say: "QEMU", "qemu-system-arm", "semihosting", "GoogleTest / Unity binaries", "cross-compiled ELF binaries", "virtual MCUs", "hardware-in-loop". Not 5 because the 5 anchor requires comprehensive coverage including synonyms and surface variants, and common phrasings like "emulate", "bare-metal", or "on-target tests" are absent while the enumeration leans on exact tool and board names.

4 / 5

Distinctiveness Conflict Risk

Clear niche with distinct triggers: exact tool names ("qemu-system-arm / qemu-system-aarch64 / qemu-system-riscv32") plus an explicit boundary against both host-only runs ("host-only test runs are insufficient") and the physical rig ("without committing to physical hardware-in-loop"), which separates it from sibling skills like hardware-in-loop-reference. Minimal conflict risk.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Reviewed

Table of Contents