CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/testbook-tests

Use the `@testbook` decorator to write conventional pytest unit tests against functions defined in Jupyter notebooks, without copy-pasting the function into a `.py` file. Covers `tb.ref()` (notebook object access) and `tb.inject()` (insert code into the kernel) for hermetic per-test setup. Use when unit-testing functions that live in a Jupyter notebook.

79

Quality

99%

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

100%

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

A tight, actionable skill body: executable examples for each decorator pattern, a well-sequenced step flow, and recovery guidance via an anti-patterns table and limitations. It stays lean without over-explaining known concepts and uses a clearly signaled single external reference.

DimensionReasoningScore

Conciseness

The body is lean and code-forward — short intro, tight 'When to use' bullets, numbered steps each with an executable block plus a one-to-two sentence note, then an anti-patterns table and limitations — assuming Claude's competence without explaining basic concepts; not at 2 despite a few repeated 'Per the [testbook docs]' citations and a one-line docs-quote intro, because the dominant character is efficient and the padding is minor.

3 / 3

Actionability

Every step provides fully executable, copy-paste-ready Python — @testbook decorator with execute=True, tb.ref(), tb.inject(), selective execute=['imports','data-load'], the pytest fixture pattern, and tb.patch() — with concrete assertions; not at 2 because the examples are complete executable code rather than pseudocode or vague direction.

3 / 3

Workflow Clarity

Steps are clearly sequenced (Install → Object patching) and reinforced by an anti-patterns 'why it fails / fix' table and a limitations section that together provide error-recovery guidance; not at 2 because this is a non-destructive library skill so the validation-checkpoint cap does not bind, and the sequencing plus recovery material matches the clear-sequence anchor.

3 / 3

Progressive Disclosure

A single self-contained, well-organized reference with clearly labeled sections (When to use, Steps 1–7, Anti-patterns, Limitations, References) and one clearly signaled one-level-deep link to the external testbook docs; no bundle files exist and there is no nested reference nesting, so the under-50-lines / well-organized-sections allowance applies. Not at 2 because there is no monolithic wall of text or content that should be split out.

3 / 3

Total

12

/

12

Passed

Description

100%

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, concise description that states concrete capabilities, includes natural trigger terms, and explicitly pairs what the skill does with when to use it in a distinct niche. Third-person imperative voice is used correctly with no over-claims.

DimensionReasoningScore

Specificity

Names multiple concrete actions — 'write conventional pytest unit tests against functions defined in Jupyter notebooks' plus 'Covers tb.ref() (notebook object access) and tb.inject() (insert code into the kernel) for hermetic per-test setup' — matching the 'lists multiple specific concrete actions' anchor; it is not at 2 because it goes beyond naming only the domain and some actions.

3 / 3

Completeness

Explicitly answers what (use the @testbook decorator to unit-test notebook functions via tb.ref/tb.inject) and when via the explicit 'Use when unit-testing functions that live in a Jupyter notebook' trigger; not at 2 because the when-clause is present rather than implied, satisfying the guideline that a missing 'Use when...' would cap at 2.

3 / 3

Trigger Term Quality

Includes natural terms a user would say — 'pytest unit tests', 'Jupyter notebooks', 'unit-testing functions that live in a Jupyter notebook' — giving good coverage of common phrasings; it is not at 2 because it is not limited to technical jargon or a single generic phrase.

3 / 3

Distinctiveness Conflict Risk

Occupies a clear niche — pytest unit tests of functions living inside Jupyter notebooks — with distinct triggers unlikely to fire for unrelated skills; not at 2 because the trigger is specific enough that it would not readily overlap with sibling skills like full-notebook nbval regression testing.

3 / 3

Total

12

/

12

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.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents