CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

testland/googletest-embedded-arm

Use for any task that writes or runs GoogleTest tests for embedded C++ (C++17 or later) on ARM, even one test with a mock, including firmware tests that pass on the host but fail on the target: TEST, TEST_F and parameterized tests, EXPECT vs ASSERT, fixtures, GoogleMock, cross-compiling with arm-none-eabi-g++, running on host or QEMU and XML output for CI. Pure C uses unity-test-framework-c.

Quality

87%

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

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.

A well-structured, highly actionable body: the worked example is copy-paste executable from host to QEMU, validation gates are explicit, and detail is correctly split into two real one-level-deep reference files. The main cost is token spend on background Claude already knows (what GoogleTest is, Primer quotes on TEST/fixture basics), which keeps conciseness at the midpoint.

Suggestions

Trim the Overview's definition of GoogleTest ("Google's C++ test framework - an xUnit-style framework merged with GoogleMock…") to a single clause focused on the embedded-specific constraints (hosted-lib availability, Cortex-M semihosting bridge).

Drop the Primer quotes explaining TEST argument semantics and fixture non-reuse in the Minimal test / Fixtures sections; keep only the embedded-relevant implications.

Replace the quoted Primer sentence in the Fatal-vs-non-fatal section with just the embedded rule of thumb: use ASSERT_* only when the next line dereferences a possibly-null pointer.

DimensionReasoningScore

Conciseness

The embedded-specific material earns its tokens ("-DGTEST_HAS_PTHREAD=0" being "mandatory on bare-metal M-profile", the ~300 KB binary size, death-test fork() limitation, shuffle-seed caveats), but the body spends tokens on concepts Claude already knows: the Overview defines GoogleTest ("Google's C++ test framework - an xUnit-style framework merged with GoogleMock"), and Authoring quotes the Primer on TEST argument semantics ("the first argument is 'the name of the test suite…'") and fixture non-reuse. Mostly efficient with several unnecessary explanations, fitting anchor 3's 'could be tightened' rather than anchor 4's 'minor instances'.

3 / 5

Actionability

Guidance is fully executable end to end: complete TEST/TEST_F code for the ring buffer, a host cmake build+run, and a copy-paste-ready cross-compile and QEMU run ("arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -O0 -g -std=c++17 -DGTEST_HAS_PTHREAD=0 --specs=rdimon.specs ... -lrdimon" followed by "qemu-system-arm -M mps2-an385 -cpu cortex-m4 -nographic -semihosting-config enable=on,target=native -kernel ringbuffer_test.elf"). The worked example covers the common host-and-target cases, matching anchor 5.

5 / 5

Workflow Clarity

The 5-step "How to use" sequence and the numbered worked example are clearly ordered with real validation checkpoints ("gate the host job on the JUnit XML and the QEMU job on the semihosting exit code", expected "[ PASSED ] 2 tests" output shown, `echo $?` exit-code propagation). It falls short of anchor 5 only because the sequence itself has no inline validate-then-fix retry loop — error recovery is delegated to the Anti-patterns table rather than integrated as feedback steps — so anchor 4's 'minor validation gaps' is the best fit.

4 / 5

Progressive Disclosure

The body keeps core authoring and flags content inline while splitting deep material into two well-signaled, one-level-deep references ("full toolchain, CMake, and build invariants in references/cross-compile-and-ci.md"; "Value-parameterised (TEST_P), typed (TYPED_TEST), and death tests live in references/authoring-variants.md"), both verified to exist with real content and no nested references. The References section consolidates navigation, matching anchor 5's clear overview with easy navigation.

5 / 5

Total

17

/

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.

A strong description that explicitly covers what and when with an unusually specific trigger clause, concrete toolchain terms, and explicit de-confliction against sibling skills. The only weakness is that a few natural synonym phrasings (gtest/gmock short forms, 'unit test') live in metadata keywords rather than the description text itself.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions spanning the whole domain: "TEST, TEST_F and parameterized tests, EXPECT vs ASSERT, fixtures, GoogleMock, cross-compiling with arm-none-eabi-g++, running on host or QEMU and XML output for CI". Coverage is comprehensive for embedded ARM C++ testing with no notable gaps, matching the anchor-5 example rather than anchor 4's 'minor gaps in coverage'.

5 / 5

Completeness

Both what and when are explicitly answered: "Use for any task that writes or runs GoogleTest tests for embedded C++ (C++17 or later) on ARM, even one test with a mock, including firmware tests that pass on the host but fail on the target" gives concrete trigger conditions, and the enumerated action list states what the skill does. The 'when' clause is explicit and specific (including edge cases like single-test-with-mock and host-pass/target-fail), fitting anchor 5 rather than anchor 4's 'could be more explicit'.

5 / 5

Trigger Term Quality

Natural user phrases like "GoogleTest", "GoogleMock", "fixtures", "firmware tests", "QEMU", and "cross-compiling" are present, giving good keyword coverage. A few natural terms are missing from the description itself — the short forms "gtest"/"gmock" appear only in metadata keywords, and common phrasings like "unit test" are absent — so it sits at anchor 4 rather than the comprehensive synonym/extension coverage of anchor 5.

4 / 5

Distinctiveness Conflict Risk

The niche is sharply defined ("embedded C++ (C++17 or later) on ARM") with distinct triggers (arm-none-eabi-g++, QEMU, GoogleTest macros) and it actively routes away from the sibling skill: "Pure C uses unity-test-framework-c.". Minimal conflict risk, matching anchor 5's clear-niche example.

5 / 5

Total

19

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 3 missing

Warning

Total

15

/

16

Passed

Reviewed

On this page