CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

fp-pragmatic

A practical, jargon-free guide to functional programming - the 80/20 approach that gets results without the academic overhead

Quality

59%

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-pragmatic/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 highly actionable, with executable before/after fp-ts examples and unusually honest decision guidance about when to skip FP. Its weaknesses are token efficiency — much of it restates fp-ts knowledge Claude already has — and a monolithic single-file structure that inlines content clearly belonging in separate reference files.

Suggestions

Cut or compress the 'Plain language translation' glossaries and the fp-ts API walk-throughs; Claude already knows pipe, Option, and Either semantics, so keep only the judgment-based content (when to use vs. skip each pattern).

Move 'Quick Wins', 'Common Refactors', and the cheat sheet into references/ files (e.g. references/refactors.md, references/cheat-sheet.md) and keep SKILL.md as a lean overview with clearly signaled links.

Fix the non-executable snippets: deduplicate 'const doubled' in the Map section and either define or explicitly mark as illustrative the fetchUser callback and fetchOrderTE/fetchUserTE examples.

DimensionReasoningScore

Conciseness

The 585-line body extensively teaches material Claude already knows: fp-ts pipe/Option/Either API usage, plus 'Plain language translation' glossaries explaining what O.fromNullable and E.right mean. There is real value in the judgment-based sections (When NOT to Use FP, The Readability Rule), which keeps it above anchor 1, but the padding and over-explanation are pervasive rather than occasional, matching 'noticeably verbose; several unnecessary explanations or padded sections'.

2 / 5

Actionability

Nearly every pattern ships as complete, executable TypeScript with imports and a concrete before/after pair, covering the common cases (null chains, JSON parsing, validation, async chains). It falls short of anchor 5 on minor gaps: User/Employee/fetchOrderTE are never declared, the callback-hell 'Before' snippet calls an undefined fetchUser(id, cb), and section 4 declares 'const doubled' twice, which would not compile as written.

4 / 5

Workflow Clarity

As a pattern guide rather than a procedure, it provides clear decision workflows: explicit 'When to use / When to skip' bullets for pipe, the Golden Rule, the Readability Rule as a pre-check ('Would a junior developer understand this?'), and a sequenced learning path from the 5 core patterns to quick wins to refactors. It misses anchor 5 because there is no explicit ordered procedure with checkpoints — the 'Middle Ground (Often Best)' guidance leaves the central decision implicit.

4 / 5

Progressive Disclosure

Sections are well organized with clear headers and a useful cheat sheet, but the entire ~585-line skill lives inline in SKILL.md with no reference files at all — 'Common Refactors' and 'Quick Wins' are clearly separable into references/*.md. This matches 'some structure but... content that should be separate is inline'; it is above 2 because navigation and organization within the file are genuinely good, but below 4 because nothing is offloaded despite the length.

3 / 5

Total

13

/

20

Passed

Description

45%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 names its domain and positioning clearly but provides no concrete capabilities, no trigger guidance, and only one natural keyword. It reads as marketing copy ('gets results without the academic overhead') rather than an operational skill description, leaving Claude little basis to know when to invoke it.

Suggestions

List concrete actions in the description, e.g. 'Teaches the five highest-value fp-ts patterns (pipe, Option, Either, map, flatMap) with before/after TypeScript refactors'.

Add an explicit trigger clause: 'Use when writing or reviewing TypeScript with fp-ts, or when the user mentions functional programming, Option, Either, or monads'.

Include natural keyword variations users actually say — 'fp-ts', 'TypeScript', 'Option', 'Either' — so the skill triggers on the library it actually teaches.

DimensionReasoningScore

Specificity

The description 'a practical, jargon-free guide to functional programming' names the domain but contains no concrete actions — it never says what the guide does (teach pipe/Option/Either patterns, refactor code, review FP usage). It matches the anchor 'names the domain but actions are minimal or generic'; it is above 1 because the domain is clearly stated, but below 3 because zero specific capabilities are listed.

2 / 5

Completeness

The 'what' is reasonably clear ('a practical, jargon-free guide to functional programming'), but the 'when' is entirely absent — there is no 'Use when...' clause or equivalent trigger guidance, which caps completeness at 3 per the judging guidelines. Not 4 because 'when' is not even weakly present; not 2 because the 'what' does state a specific domain and approach.

3 / 5

Trigger Term Quality

It includes the primary natural phrase 'functional programming', which users genuinely say, but misses every common variation and synonym the body actually covers: 'fp-ts', 'TypeScript', 'Option', 'Either', 'monads', 'null checks'. This sits between 'one or two generic keywords' (2) and 'good keyword coverage' (4) — the one keyword present is highly natural, but coverage is thin.

3 / 5

Distinctiveness Conflict Risk

'Functional programming' is a somewhat specific domain with a differentiating angle ('pragmatic', '80/20', 'jargon-free'), but the description could still overlap with general FP, TypeScript style, or code-review skills, and it offers no distinct trigger phrases to disambiguate. It is more specific than 'very broad; high overlap risk' (2) but lacks the niche-defining triggers of 4.

3 / 5

Total

11

/

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 (601 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-pragmatic/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.