CtrlK
BlogDocsLog inGet started
Tessl Logo

timeouts-and-async

Make Ginkgo specs interruptible and test asynchronous behavior — SpecContext/context.Context cancellable nodes, NodeTimeout/SpecTimeout/GracePeriod, the --timeout flag, Abort and SIGINT behavior, Gomega Eventually/Consistently (the func(g Gomega) form, .WithContext), and the defer GinkgoRecover() rule for goroutines. Use when a spec hangs or times out, polls for eventual consistency, tests channels/streams/processes, launches goroutines, or needs a deadline.

74

Quality

93%

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

SKILL.md
Quality
Evals
Security

Quality

Content

82%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 strong, highly actionable reference body: executable Go examples for every pattern, non-obvious failure modes (leaked goroutines polluting later specs, global Expect defeating retry) made explicit, and well-signaled cross-references. The only weaknesses are minor re-explanation of Gomega semantics Claude already knows and cross-references to sibling skills that cannot be verified from this bundle.

Suggestions

Trim the parenthetical definitions of Eventually/Consistently ("polls until the matcher passes or it times out", "requires the matcher to hold the whole interval") down to the non-obvious distinction — Consistently as the way to assert something doesn't happen — since the polling mechanics are known.

Move or compress the SIGINT/SIGINFO escalation detail (2nd interrupt skips cleanup, 3rd bails) into the debugging-failures skill it already points to, keeping only the first-interrupt behavior inline.

If the ginkgo:decorators/debugging-failures/ci skills ship in the same suite, consider shipping a references/ entry for the full decorator table so the NodeTimeout/SpecTimeout/GracePeriod rows can be reduced to a one-line summary inline.

DimensionReasoningScore

Conciseness

The body is dense, rule-focused, and free of padding, but spends tokens defining behavior Claude already knows — e.g. "Eventually (polls until the matcher passes or it times out) and Consistently (polls and requires the matcher to hold the whole interval…)" — which is trimmable over-explanation. It is efficient with minor instances of explanation that could be cut, matching anchor 4 rather than the lean anchor 5.

4 / 5

Actionability

Every pattern ships executable, copy-paste-ready Go code: the select/ctx.Done() interruptible node, Eventually(ctx, c).WithTimeout(…), the func(g Gomega, ctx SpecContext) poll form, and the goroutine GinkgoRecover/BeClosed pair, plus concrete commands (ginkgo --timeout=DURATION, Abort("reason"), SIGINT escalation). Specific examples cover the common cases, matching the top anchor.

5 / 5

Workflow Clarity

Each pattern's decision path is unambiguous with consequences stated ("Using the global Expect inside an Eventually defeats the retry… the spec dies with no second attempt"), numbered goroutine rules, and an explicitly sequenced SIGINT escalation path. This is a reference/rules skill rather than a multi-step pipeline and needs no validation checkpoints, but it lacks the checklist/feedback-loop structure of anchor 5, so anchor 4 fits best.

4 / 5

Progressive Disclosure

Sections are well organized (headers, a decorator table, a See-also list) with clearly signaled one-level-deep cross-references (ginkgo:decorators, ginkgo:debugging-failures, ginkgo:ci) that defer bulk detail appropriately. However, the referenced sibling skills cannot be verified against any bundle (no references/ directory exists), and the ~95-line body sits above the under-50-line simple-skill case, so anchor 4 rather than 5.

4 / 5

Total

17

/

20

Passed

Description

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

An exemplary description: third-person, dense with concrete API-level capabilities, an explicit and natural "Use when" trigger clause, and clearly scoped to the Ginkgo/Gomega niche with no fluff or over-claims.

DimensionReasoningScore

Specificity

The description states concrete actions ("Make Ginkgo specs interruptible and test asynchronous behavior") and enumerates the specific mechanisms involved — SpecContext/context.Context cancellable nodes, NodeTimeout/SpecTimeout/GracePeriod, the --timeout flag, Abort/SIGINT, Eventually/Consistently with the func(g Gomega) form, and the GinkgoRecover rule — giving comprehensive, non-generic coverage that matches the top anchor rather than the 'minor gaps' anchor below it.

5 / 5

Completeness

Both what (the first sentence's capabilities plus enumerated APIs) and when (an explicit "Use when…" clause with concrete trigger phrases) are clearly present, mirroring the anchor-5 example; it is not 4 because the when-clause is specific rather than generic, and not lower because neither element is missing.

5 / 5

Trigger Term Quality

The "Use when" clause lists natural phrases users would actually say — "a spec hangs or times out", "polls for eventual consistency", "tests channels/streams/processes", "launches goroutines", "needs a deadline" — with synonyms covering the domain comprehensively, matching the top anchor rather than 'a few natural terms missing'.

5 / 5

Distinctiveness Conflict Risk

Triggers are pinned to Ginkgo/Gomega-specific vocabulary (specs, NodeTimeout, GinkgoRecover, Eventually), forming a clear niche with minimal overlap risk against generic testing or other framework skills.

5 / 5

Total

20

/

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
onsi/ginkgo
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.