CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

qemu-system-test-runner

Use when embedded tests must run on a virtual MCU or SoC instead of the host or real hardware, for correct endianness, alignment and interrupts: qemu-system-arm, aarch64 and riscv32 machine and CPU flags, loading ELF binaries, semihosting exit codes, GDB and QMP, and CI.

Quality

86%

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

The canonical home for this skill is testland/qemu-system-test-runner

SKILL.md
Quality
Evals
Security

Quality

Content

78%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.

The body is a highly actionable, well-disclosed skill: every command is executable, the pipeline phases are in order, and detail is correctly offloaded to three real, clearly-signaled reference files. The main cost is token efficiency — the exit-code mechanism and the not-real-time caveat are each repeated three times across sections, and standard QEMU flag documentation is quoted inline.

Suggestions

Consolidate the semihosting exit-code explanation into "Parsing results" (its natural home) and reduce the Overview and "ARM semihosting" mentions to a one-line cross-reference, saving ~10 lines of repetition.

State the "QEMU is not real-time" caveat once in Limitations and cut its restatements in "Timing the run" and the Anti-patterns timing row to bare pointers ("see Limitations: not real-time").

Convert the Running section into a numbered build → smoke-run → check-$? sequence with an explicit validation checkpoint after the smoke run (e.g., "if $? is nonzero or no output, see Anti-patterns"), which would also inline the error-recovery feedback loop the anti-pattern table currently holds.

DimensionReasoningScore

Conciseness

Mostly high-signal (tables, commands, flags, no teaching of concepts Claude already knows), but the semihosting exit-code mechanism ("main() returns the failure count; QEMU exits with that code; CI gates on it") is explained three times — in Overview, "ARM semihosting", and "Parsing results" — and the "not real-time" caveat is likewise repeated across "Timing the run", the Anti-patterns table, and Limitations. Quoted flag definitions ("-S 'freezes the CPU at startup'") also restate standard QEMU syntax; this repetition goes beyond the 'minor instances' of anchor 4 but is well short of anchor 2's padded explanatory prose.

3 / 5

Actionability

Fully executable, copy-paste-ready guidance throughout: the complete arm-none-eabi-gcc build line with --specs=rdimon.specs, the smoke-run invocation, the -d int,cpu_reset debug command, the two-terminal GDB session, QMP connection commands with concrete JSON-RPC examples, and the GitHub Actions pipeline in references/ci.md. The anti-patterns table pairs every failure mode with a specific fix (e.g., "Wrap in timeout 60 qemu-system-arm ..."), matching anchor 5.

5 / 5

Workflow Clarity

Sections follow the real pipeline order (When to use → Authoring → Building → Running → Parsing results → CI) and the exit code is explicitly established as the validation gate ("CI gates on the exit code directly"), with failure modes and recoveries enumerated in the Anti-patterns table. It falls short of anchor 5 because there is no numbered sequence or inline verify-before-proceeding checkpoint — error recovery lives in a separate table rather than feedback loops at the point of the step — but validation is clearly present, keeping it above anchor 3.

4 / 5

Progressive Disclosure

Verified against the actual bundle: SKILL.md is a genuine overview, and the three details that would bloat it — the full board/CPU mapping table, the invocation-flag table, and the complete CI pipeline — are split into references/boards.md, references/flags.md, and references/ci.md, all of which exist and contain exactly the promised content. References are one level deep (they cite external QEMU docs, not further skill files) and are clearly signaled at the point of need with inline markdown links, matching anchor 5.

5 / 5

Total

17

/

20

Passed

Description

87%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.

A strong description with an explicit, concrete 'Use when' trigger and a dense list of domain-specific capabilities that make it highly distinguishable from sibling skills. The main weakness is that the capability list degrades into bare tool names (GDB, QMP, CI) at the end, naming topics rather than the actions the skill performs with them.

DimensionReasoningScore

Specificity

Lists several concrete capabilities — "qemu-system-arm, aarch64 and riscv32 machine and CPU flags, loading ELF binaries, semihosting exit codes" — but the tail of the list ("GDB and QMP, and CI") names tools without stating the actions performed with them, leaving minor gaps versus anchor 5's comprehensive action list. It is clearly above anchor 3, which allows only 1-2 concrete actions.

4 / 5

Completeness

Explicitly answers both: what (running embedded tests on a virtual MCU/SoC via QEMU machine/CPU flags, ELF loading, semihosting exit codes, GDB, QMP, CI) and when ("Use when embedded tests must run on a virtual MCU or SoC instead of the host or real hardware, for correct endianness, alignment and interrupts"). The when-clause is concrete and could not be more explicit, so it matches anchor 5 rather than 4.

5 / 5

Trigger Term Quality

Good natural-term coverage — "embedded tests", "virtual MCU or SoC", "endianness", "alignment", "ELF binaries", "semihosting", "GDB", "CI" are phrases an embedded developer would actually say. A few natural terms are missing: standalone "QEMU" (only embedded in the binary name), "emulation", and "Cortex-M"/"ARM" beyond aarch64, so it fits anchor 4 rather than 5's comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

Clear niche — QEMU system emulation of virtual MCUs/SoCs for embedded tests — with named binaries (qemu-system-arm, aarch64, riscv32) as distinct triggers, and "instead of the host or real hardware" explicitly separates it from host-test and hardware-in-loop skills. Minimal conflict risk, matching anchor 5.

5 / 5

Total

18

/

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.

Repository

testland/qa

Path

plugins/qa-embedded/skills/qemu-system-test-runner/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.