CtrlK
BlogDocsLog inGet started
Tessl Logo

migrate-harness-tests-to-state-transition-test

Migrates legacy ops.testing Harness suites to state-transition tests by enumerating Harness usages, defining explicit State objects, and recreating assertions per Juju event so charms stay compatible with modern ops releases.

67

Quality

80%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/migrate-harness-tests-to-state-transition-test/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

85%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 migration workflow with strong validation gates, feedback loops, and excellent use of one-level-deep reference files containing ready-to-paste code. The only weaknesses are mild redundancy in dependency-sync guidance and a hardcoded script path in the usage example.

Suggestions

Consolidate the dependency-sync guidance that currently repeats across 'Preflight Checks', 'Repository Tooling Notes', and 'Quality Bar' into a single authoritative section.

Use the skill-relative path 'scripts/find_harness_tests.py' in the usage example instead of the hardcoded '.github/skills/migrate-harness-tests-to-state-transition-test/scripts/find_harness_tests.py' install path.

DimensionReasoningScore

Conciseness

The body is dense and assumes domain knowledge — it never explains what Harness or Juju are, and every section instructs rather than describes. However, dependency-sync guidance recurs across 'Preflight Checks', 'Repository Tooling Notes', and 'Quality Bar', so it is not anchor-5 lean; it sits above anchor 3, which expects more substantial over-explanation.

4 / 5

Actionability

It gives concrete executable commands ('uv add --group unit ops[testing]', 'tox -e unit -- tests/unit/test_charm.py', 'ctx.run(ctx.on.<event>(...), state_in)', 'pytest.raises(testing.ActionFailed)') and delegates full copy-paste code to the recipes reference. The minor gap is the script invocation hardcoding a '.github/skills/...' install path instead of the skill-relative 'scripts/find_harness_tests.py', keeping it below anchor 5.

4 / 5

Workflow Clarity

Steps 0-4 are clearly sequenced with explicit validation checkpoints: run the narrowest pytest selection immediately after each file, pair every code-change task with a verification task in the ledger, and 'do not advance to the next file until the paired verification succeeds', with a final gate of 'tox -e unit' returning 0 with zero detector hits. This batch migration workflow has full feedback loops and remediation, matching anchor 5 exactly.

5 / 5

Progressive Disclosure

The body stays an overview with workflow and quick cues, while deep material lives in two real one-level-deep reference files (migration-checklist.md, state-transition-recipes.md) clearly signaled via links, plus the detector script in scripts/. All referenced paths exist and content is appropriately split with easy navigation, matching anchor 5.

5 / 5

Total

18

/

20

Passed

Description

75%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 highly specific, well-scoped migration description written in third person with concrete action verbs. Its main weakness is the absence of any 'Use when...' trigger clause and the missing 'Scenario'/'ops-scenario' vocabulary, both of which would improve discoverability and completeness.

Suggestions

Append an explicit trigger clause, e.g. 'Use when tests still instantiate testing.Harness, when migrating to Scenario/state-transition tests, or when ops deprecation warnings mention Harness.'

Include the framework's common names 'Scenario' and 'ops-scenario' as trigger terms, since users asking for this migration often use those words.

Add natural user phrasings such as 'migrate charm unit tests' to widen the keyword set beyond the ops.testing terminology.

DimensionReasoningScore

Specificity

The description lists three concrete, sequential actions — 'enumerating Harness usages', 'defining explicit State objects', and 'recreating assertions per Juju event' — which comprehensively cover the migration flow. It clearly matches the anchor for multiple specific concrete actions with comprehensive coverage, not the anchor below that admits coverage gaps.

5 / 5

Completeness

The 'what' is explicit and specific, but the description contains no 'Use when...' clause or any equivalent explicit trigger guidance, which caps completeness at 3 per the judging guidelines. It fits anchor 3 (clear what, when missing) rather than anchor 4 (both present).

3 / 5

Trigger Term Quality

It uses natural domain vocabulary a charm maintainer would say ('ops.testing Harness', 'state-transition tests', 'Juju event', 'charms', 'ops releases'), but omits 'Scenario'/'ops-scenario', the framework's common name users would naturally mention. Good keyword coverage with a few natural terms missing fits anchor 4, not the comprehensive synonym coverage of anchor 5.

4 / 5

Distinctiveness Conflict Risk

The description occupies a clear niche (Juju Harness-to-state-transition test migration) with distinct trigger vocabulary like 'Harness suites' and 'state-transition tests', giving minimal conflict risk with other skills. This matches anchor 5 rather than anchor 4, which still allows minor overlap with closely related skills.

5 / 5

Total

17

/

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
canonical/copilot-collections
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.