CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

fp-async

Practical async patterns using TaskEither - clean pipelines instead of try/catch hell, with real API examples

Quality

65%

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/fp-async/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

56%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-organized, highly actionable fp-ts cookbook with genuinely useful executable patterns (typed error recovery, retry with backoff, Do notation, batched parallelism). Its two structural weaknesses are significant redundancy — the try/catch-hell strawmen and the repeated before/after summary — and the complete absence of progressive disclosure, with ~950 lines that should be split into reference files all living in SKILL.md.

Suggestions

Trim the 30-40 line 'BEFORE' try/catch-hell demonstrations to 5-10 lines each — Claude already knows what nested try/catch looks like — and delete the 'Before/After Summary' section that duplicates sections 1-4.

Move the Prisma, Node file-operations, and complete API-client examples into reference files (e.g. references/database.md, references/files.md, references/api-client.md) with one-level-deep links from SKILL.md, keeping the core patterns and quick-reference card inline.

Consolidate the two different fetch wrappers (section 1's fetchJson vs section 5's request) into one canonical version to remove the internal inconsistency.

DimensionReasoningScore

Conciseness

At ~950 lines the body is noticeably verbose: 30-40 line 'BEFORE' try/catch-hell strawman examples are repeated across sections, and the 'Before/After Summary' at the end near-verbatim repeats patterns already shown in sections 1-4. Claude already knows what nested try/catch looks like; these padded demonstrations and the duplicated summary section could be cut with no loss of instruction.

2 / 5

Actionability

Nearly all guidance is concrete, executable fp-ts code: a reusable fetchJson wrapper, Do-notation pipelines, retry with exponential backoff, a typed Prisma error wrapper, and Express handler integration. Minor gaps only — several snippets assume undefined helpers (fetchUserFromApi, chargePayment, fetchOrder) and the section-1 fetchJson is re-implemented differently in section 5, which keeps it below fully copy-paste-ready.

4 / 5

Workflow Clarity

Content flows in a clear logical sequence from wrapping promises, to chaining, to parallel execution, to error recovery, to handling results, each framed with an explicit problem/solution structure. There are no validation checkpoints, but the skill is a pattern reference rather than a destructive or batch procedure, so the feedback-loop cap does not apply; it falls just short of the 'explicit validation steps' anchor.

4 / 5

Progressive Disclosure

Section headers are clear and the quick-reference card aids navigation, but the skill is entirely monolithic: no references/, scripts/, or assets/ directories exist, and ~950 lines — including the full API client, Prisma repository, and Node file-operation examples — are all inlined in SKILL.md. Content that clearly belongs in separate reference files is inline, matching the anchor for present-but-unsplit structure.

3 / 5

Total

13

/

20

Passed

Description

61%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 punchy and distinct within the fp-ts niche, with natural trigger terms like 'try/catch hell'. Its main weaknesses are the missing 'when to use' clause (capping completeness) and thin coverage of the skill's actual capabilities (wrapping, chaining, retries, parallel execution).

Suggestions

Add an explicit trigger clause, e.g. 'Use when writing async TypeScript with fp-ts, handling fetch/API errors, or replacing nested try/catch blocks with TaskEither pipelines.'

Enumerate 1-2 more concrete capabilities to raise specificity, such as 'wrap promises, chain operations, run requests in parallel, and add retries/fallbacks.'

Include 'fp-ts' and 'error handling' in the description text itself (not just tags) to improve trigger coverage and distinctiveness.

DimensionReasoningScore

Specificity

The description names the domain ('async patterns using TaskEither') and gestures at 1-2 concrete actions ('clean pipelines instead of try/catch hell, with real API examples'), but omits concrete capabilities like promise wrapping, retries, fallbacks, and parallel execution. It matches the anchor for naming domain with 1-2 concrete actions but not comprehensive coverage, and is below the 'several specific actions with minor gaps' anchor.

3 / 5

Completeness

It has a clear 'what' (practical async patterns using TaskEither with clean pipelines and real API examples) but no 'when' clause — there is no 'Use when...' or equivalent explicit trigger guidance anywhere in the description. Per the judging guideline, a missing 'Use when...' clause caps completeness at 3.

3 / 5

Trigger Term Quality

Includes natural phrases users would actually say: 'async patterns', 'try/catch hell', 'pipelines', 'TaskEither', 'API examples'. Good keyword coverage overall, though common variations like 'error handling', 'promises', and 'fp-ts' are missing (they only appear in tags, not the description), keeping it below the comprehensive anchor.

4 / 5

Distinctiveness Conflict Risk

'TaskEither' anchors this firmly in the fp-ts/functional-programming niche, making it clearly distinguishable from generic async or Promise skills. Minor overlap risk remains with general TypeScript async/error-handling skills since it doesn't name fp-ts explicitly. Not a 5 because the trigger surface could still catch generic async requests.

4 / 5

Total

14

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

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

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository

administrakt0r/AI-Agents-Safe-Coding-Skills

Path

skills/fp-async/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.