CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

fp-ts-errors

Handle errors as values using fp-ts Either and TaskEither for cleaner, more predictable TypeScript code. Use when implementing error handling patterns with fp-ts.

Quality

73%

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-ts-errors/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%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-organized, largely executable pattern library for fp-ts error handling with genuine pedagogical sequencing. Its main weaknesses are token padding (long anti-example blocks, a duplicated example, and a recap table), a few stub or slightly incorrect code snippets, and a monolithic single-file layout that inlines material which could be split into reference files.

Suggestions

Cut the three 'MESSY' before/bad-code blocks and the basic Either explanation to one or two lines each — Claude already knows what nested try/catch looks like; keep only the 'after' patterns and a one-line statement of the problem.

Split the Real Scenarios section (and optionally the TaskEither/retry material) into one or more reference files (e.g., references/scenarios.md) linked from a short SKILL.md overview, and remove the duplicated processUserOrder variant that is not needed inline.

Fix the minor code gaps: fill or clearly mark the '{ ... }' stub bodies, import O in the processAllCollectErrors example, and use a plain record type instead of FormData for the form-validation example.

DimensionReasoningScore

Conciseness

The core pattern examples are efficient and earn their tokens, but there is padding Claude does not need: three long 'MESSY' try/catch anti-example blocks (processOrder, processUserOrder, loadDashboard) demonstrating what bad code looks like, a basic explanation of what Either/Left/Right means, a duplicated processUserOrder (both nested-chain and Do-notation versions), and a Quick Reference table recapping operations already shown. Mostly efficient with clear trimming opportunities, rather than noticeably below the midpoint.

3 / 5

Actionability

The body provides concrete, mostly copy-paste-ready TypeScript across all sections. Minor gaps keep it from fully executable everywhere: several functions are stubs with '{ ... }' bodies (getUser, getProduct, createOrder, validateInput), the processAllCollectErrors example uses O.some/O.none without importing O, and validateForm reads form.email off a FormData object as though it were a plain record. This matches mostly executable guidance with minor gaps.

4 / 5

Workflow Clarity

This is a pattern-reference skill with no destructive or batch operations performed by the skill itself, so no validation checkpoints are required; the content is clearly and progressively sequenced (problem → pattern → variants → boundary conversion → real scenarios → quick reference → summary) and each pattern is unambiguous. Minor gaps remain, such as no guidance on when to prefer Do notation over nested E.chain, keeping it below the top anchor.

4 / 5

Progressive Disclosure

The actual bundle contains no reference, script, or asset files — everything is inlined in a single ~850-line SKILL.md. Internal structure is good (clear headers, Quick Reference table, Summary), but content that plausibly belongs in separate files (Real Scenarios, the TaskEither/retry deep-dive) is inline, and the under-50-lines exception for single-file skills does not apply at this length. This fits the anchor for good structure but with content that should be separate kept inline.

3 / 5

Total

14

/

20

Passed

Description

73%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 that clearly identifies its niche (fp-ts error handling) and includes an explicit 'Use when' clause with good natural trigger terms. Its weaknesses are limited action specificity (only one stated action despite the skill covering many patterns) and a 'when' clause that restates the 'what' rather than enumerating concrete trigger situations.

Suggestions

Enumerate several concrete capabilities in the description, e.g., "Wrap throwing functions with tryCatch, chain fallible operations with pipe/chain, accumulate form validation errors, and wrap async operations with TaskEither" to raise specificity.

Make the 'when' clause cover concrete trigger situations instead of restating the topic, e.g., "Use when replacing try/catch with Result-style error handling, accumulating multiple validation errors, or handling failed async operations in TypeScript".

Add one or two common synonyms (e.g., "Result-style" or "functional error handling") to broaden natural trigger coverage.

DimensionReasoningScore

Specificity

The description names the domain and two concrete constructs ("using fp-ts Either and TaskEither") but offers only one action ("Handle errors as values") without listing several specific actions such as wrapping throwing code, chaining async operations, or accumulating validation errors. It matches the anchor for naming the domain with 1-2 concrete actions but not comprehensive coverage, rather than the level above which requires several listed actions.

3 / 5

Completeness

Both what ("Handle errors as values using fp-ts Either and TaskEither for cleaner, more predictable TypeScript code") and when ("Use when implementing error handling patterns with fp-ts") are explicitly present. The 'when' clause is nearly tautological with the 'what' and could be more specific about concrete trigger situations, which fits the anchor for both present but 'when' needing more explicitness rather than the top anchor with concrete trigger phrases.

4 / 5

Trigger Term Quality

Natural terms a user would say are present: "error handling", "fp-ts", "Either", "TaskEither", "TypeScript". A few natural variants are missing (e.g., "Result type", "functional error handling", "replace try/catch"), which matches good-but-not-comprehensive keyword coverage rather than the comprehensive-with-synonyms anchor.

4 / 5

Distinctiveness Conflict Risk

"fp-ts Either and TaskEither" carves out a clear niche with distinct triggers; virtually no other skill would match these terms. Minimal conflict risk, matching the top anchor for a clear niche with distinct triggers.

5 / 5

Total

16

/

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 (858 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-ts-errors/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.