CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

bats-testing-patterns

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

Quality

68%

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_all/bats-testing-patterns/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

57%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 thorough, example-rich Bats reference that is strong on executable patterns (assertions, mocking, stubbing, fixtures, CI integration) but reads as an exhaustive catalog rather than a skill: it restates shell basics Claude already knows, provides no sequenced test-writing workflow with verification steps, and keeps everything inline in one long file instead of splitting into reference files. Minor correctness slips (undefined skip_if, macOS-only stat flag) slightly reduce copy-paste reliability.

Suggestions

Split the body into one-level-deep reference files (e.g. references/assertions.md, references/mocking.md, references/ci-integration.md) and keep SKILL.md as a concise overview with clearly signaled links, shedding content Claude already knows such as basic [ -f ] / [ -r ] file checks.

Add an explicit end-to-end workflow with validation checkpoints: create test file → run `bats tests/` → read TAP output → fix and re-run, so users get a sequenced process instead of a pattern catalog.

Fix correctness gaps: define or remove `skip_if` (not a bats-core builtin), note that `stat -f %OLp` is macOS-only (GNU uses `stat -c %a`), and make the "Output matches string" example use Bats' run/output consistently.

DimensionReasoningScore

Conciseness

Prose is lean and example-driven, but the ~630-line body reiterates shell basics Claude already knows — e.g. "File is readable" (touch + [ -r ]), plain echo string comparisons, exit-code assertions repeated across three sections — and the same patterns are demonstrated redundantly. Not 2 because there is no padded conceptual explanation and the code blocks carry the weight.

3 / 5

Actionability

Nearly all guidance is concrete, executable Bats code — run/status/output assertions, a complete create_stub helper, setup/teardown/hooks, CI YAML, and Makefile targets. Not 5 because `skip_if` is used without being defined (it is not a bats-core builtin), `stat -f %OLp` is macOS-only with no Linux note, and the "Output matches string" example mixes non-Bats `result=$(...)` style into a Bats context.

4 / 5

Workflow Clarity

Sections are ordered sensibly (install → file structure → assertions → fixtures → mocking → CI) but the body is a pattern catalog, not a sequenced workflow: there is no explicit "create test file → run bats → interpret TAP output → iterate" path and no validation checkpoints or feedback loops. The rough sequence and absence of checkpoints place it at 3 rather than 4.

3 / 5

Progressive Disclosure

The file has clear section headers and a Resources section of external links, but there are no bundle files (references/, scripts/, assets/ all absent) and all ~600 lines live inline in SKILL.md — the assertion-pattern catalog and CI/CD integration are exactly the material that belongs in one-level-deep reference files. Good in-file structure keeps it at 3 rather than 2.

3 / 5

Total

13

/

20

Passed

Description

65%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 solid description with an explicit and well-targeted Use-when clause covering the main trigger scenarios, held back by a vague what-clause that names the domain without listing any concrete capabilities. Trigger coverage is good but misses the most common phrasings (bash, unit tests, bats).

Suggestions

Replace the vague "Master Bash Automated Testing System (Bats) for comprehensive shell script testing" with 3-4 concrete capabilities, e.g. "Write Bats unit tests for shell scripts: assertions on exit codes and output, setup/teardown, fixtures, mocking external commands, and CI integration."

Add natural trigger terms users actually say — "bash scripts", "bash", "unit tests" — to the Use-when clause, e.g. "Use when writing unit tests for bash or shell scripts, setting up shell script testing in CI/CD, or doing TDD on shell utilities."

Mention the file extension convention (.bats) to sharpen trigger matching and distinctiveness.

DimensionReasoningScore

Specificity

The description names the domain ("Master Bash Automated Testing System (Bats) for comprehensive shell script testing") but contains no concrete capability actions — "Master" and "comprehensive testing" are generic, with nothing like "write unit tests, create fixtures, or mock commands". It falls between anchors 2 and 3, but since not even 1-2 concrete actions are enumerated, anchor 2 is the closer fit.

2 / 5

Completeness

Both halves are explicitly present: a what-clause ("Master Bats ... for comprehensive shell script testing") and an explicit when-clause ("Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development"). Not 5 because the what-clause is vague — it does not state concrete trigger-linked capabilities the way the 5-anchor example does.

4 / 5

Trigger Term Quality

Natural trigger phrases are present and user-plausible ("writing tests for shell scripts", "CI/CD pipelines", "test-driven development of shell utilities"), giving good keyword coverage. Not 5 because common variations users would actually say — "bash", "bash scripts", "unit tests", or "bats" itself — are missing.

4 / 5

Distinctiveness Conflict Risk

"Bats", "shell script testing", and "TDD of shell utilities" carve out a clear niche with distinct triggers and minimal conflict risk. Not 5 because the absence of "bash"/"unit test" wording leaves some overlap with generic testing or bash scripting skills.

4 / 5

Total

14

/

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

skill_md_line_count

SKILL.md is long (631 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository

Microck/ordinary-claude-skills

Path

skills_all/bats-testing-patterns/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.