CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

testland/ai-test-generator

Use for any question or task about generating tests with an LLM from acceptance criteria, user stories or requirements, including whether it works and why generated tests assert the wrong thing. Scores confidence per test case (self-assessment plus assertion, naming and completeness checks), batches uncertain cases for human review and emits tests in the team's existing framework.

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

81%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 well-structured, actionable workflow: a clearly sequenced 7-step pipeline with real validation gates, a feedback loop, a review checklist, and executable code for scoring and validation. Weaknesses are minor: the generator snippet depends on an undefined input_yaml (a gap duplicated in the reference file), a few trimmable explanatory phrases and a hardcoded gpt-4 model, and an implied scripts/ai-gen.py path that is absent from the bundle.

Suggestions

Make the generator code copy-paste ready by loading the input file (e.g., yaml.safe_load(open('input/cart-promo.yaml'))) so input_yaml is defined in both the spine and references/generation-and-scoring.md, and parameterize framework/test_runner instead of hardcoding 'jest'.

Trim obvious statements ('LLM calls have cost and rate limits') and the Overview sentence that restates Steps 4-5, and replace the pinned model='gpt-4' with a placeholder like model=TEAM_MODEL to avoid time-sensitive version rot.

Resolve the scripts/ai-gen.py path mismatch: either add the script to a scripts/ directory in the bundle or relabel the inline code blocks so they don't imply a bundled file that doesn't exist.

DimensionReasoningScore

Conciseness

The body is largely lean and assumes competence (terse anti-patterns, compact score() function, table instead of prose), but there are minor instances that could be trimmed: "LLM calls have cost and rate limits" states the obvious, the Overview sentence "Generated tests are scored for confidence and reviewed adversarially before merge" restates Steps 4-5, and the hardcoded "model='gpt-4'" is version-pinned model reference with no deprecation context. This matches anchor 4 ('efficient; minor instances of over-explanation') rather than anchor 5's 'every token earns its place', and is well above anchor 3 since there is no real padding or explanation of concepts Claude already knows.

4 / 5

Actionability

Mostly executable guidance: concrete validation commands ("npx tsc --noEmit", "python -m py_compile path/to/generated_test.py", "node --check"), a complete scoring function, and a copyable input YAML schema. However the generator code is not copy-paste ready: "input_yaml['acceptance_criteria']" is never defined or loaded in either the spine or the reference file (no yaml.safe_load), and framework is hardcoded to 'jest'. This fits anchor 4 ('mostly executable; concrete code or commands with minor gaps') rather than anchor 5, and clearly exceeds anchor 3 since the code is real and runnable, not pseudocode.

4 / 5

Workflow Clarity

Steps 1-7 are clearly sequenced (Define input → Generate → Validate → Score → Output → Iterate → Cost) with an explicit validation checkpoint in Step 3 ("Before scoring, verify that generated test files parse and compile", failing tests auto-downgraded), a feedback loop in Step 6 ("Lessons fed back into prompt" when the LLM keeps producing .toBeTruthy() or hallucinates an API), a review checklist in the Step 5 hand-off, and a score→action tier table. This matches anchor 5 ('explicit validation steps; feedback loops for error recovery; checklists') and exceeds anchor 4, which only requires 'most checkpoints'. Batch generation has validation present, so the destructive/batch cap at 3 does not apply.

5 / 5

Progressive Disclosure

The split is appropriate and well-signaled: the spine keeps the minimal runnable core and points to a real, verified one-level-deep reference ("full script with helpers ... is in [references/generation-and-scoring.md]", and the named helpers extract_imports, module_exists, extract_test_name all exist there). However, scoring against the actual bundle structure, the code-block label "# scripts/ai-gen.py" implies a bundled scripts/ path that does not exist (no scripts/ directory), and the sister-skill References section lists skill names without resolvable links. These minor organization gaps fit anchor 4 ('most content is appropriately placed; references mostly clear; minor organization gaps') rather than anchor 5's fully clean navigation.

4 / 5

Total

17

/

20

Passed

Description

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

The description is strong: it explicitly states both what the skill does (generate, confidence-score, batch, emit in the team's framework) and when to use it, with concrete, natural trigger terms like 'acceptance criteria' and 'user stories'. Weaknesses are minor — some natural synonyms (unit tests, AI, spec) are absent, and the broad 'any question or task about generating tests' phrasing creates slight overlap risk with generic test-writing skills.

DimensionReasoningScore

Specificity

Quotes: "generating tests with an LLM from acceptance criteria, user stories or requirements", "Scores confidence per test case (self-assessment plus assertion, naming and completeness checks)", "batches uncertain cases for human review", "emits tests in the team's existing framework". These are multiple specific concrete actions covering the skill's full pipeline, matching the 'comprehensive coverage' anchor; it exceeds anchor 4 because the action list spans generate, score, batch, and emit without meaningful gaps, and is far above anchor 3's '1-2 concrete actions'.

5 / 5

Completeness

The description opens with an explicit trigger clause — "Use for any question or task about generating tests with an LLM from acceptance criteria, user stories or requirements, including whether it works and why generated tests assert the wrong thing" — and follows with a clear, concrete 'what' (score confidence, batch for review, emit in the team's framework). Both 'what' and 'when' are explicitly answered with concrete trigger phrases, matching anchor 5; the 'missing Use when clause caps at 3' rule does not apply.

5 / 5

Trigger Term Quality

Quotes: "generating tests", "LLM", "acceptance criteria", "user stories", "requirements", "why generated tests assert the wrong thing", "human review". Natural keyword coverage is good, but common variations a user would say ("unit tests", "AI", "specifications", "test suite") are missing, so it fits anchor 4 ('good keyword coverage; a few natural terms missing') rather than anchor 5's comprehensive synonym coverage, and clearly beats anchor 3's 'some relevant keywords'.

4 / 5

Distinctiveness Conflict Risk

Quotes: "generating tests with an LLM", "Scores confidence per test case". The LLM-generation-plus-confidence-scoring niche is distinct, but "Use for any question or task about generating tests" is broadened by "any", leaving minor overlap risk with closely related test-writing skills (e.g., the gherkin-from-stories alternative the body itself mentions). This fits anchor 4 ('mostly distinct; minor overlap risk with closely related skills') better than anchor 5's minimal conflict risk.

4 / 5

Total

18

/

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: 1 missing

Warning

Total

15

/

16

Passed

Reviewed

On this page