CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

fp-refactor

Comprehensive guide for refactoring imperative TypeScript code to fp-ts functional patterns

Quality

61%

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

Quality

Content

50%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 delivers genuinely useful, mostly executable before/after refactoring patterns with good internal organization, but it is a monolithic 45KB document with padded preambles, cross-section duplication, and no progressive disclosure or bundle files. Validation in the migration workflows is named but never made concrete.

Suggestions

Split the body into reference files (e.g. references/patterns.md, references/pitfalls.md, references/adoption-strategies.md) and keep SKILL.md as an overview with the mapping table and links.

Cut the 'The Problem with X' preambles and deduplicate the fetch/TE.tryCatch wrapping that appears in both sections 1 and 6.

Add explicit validation checkpoints to the migration workflow, e.g. 'run tsc and the test suite after each conversion; only proceed when both pass'.

DimensionReasoningScore

Conciseness

The body is ~1,780 lines / ~45KB with every one of nine sections opening with a padded 'The Problem with X' preamble that explains concepts Claude already knows (why try-catch is hard to reason about, why callback hell is bad). There is also real duplication: the async fetch-to-TaskEither wrapping in section 1 reappears nearly verbatim in section 6, and the tryCatchSync/tryCatchAsync helpers overlap with section 8's bridge functions. This matches 'noticeably verbose; several unnecessary explanations or padded sections' rather than anchor 3, where the excess would be minor.

2 / 5

Actionability

Nearly all guidance is concrete, executable TypeScript with imports, presented as before/after pairs plus numbered step-by-step refactoring guides ('Identify the error type... Replace throw statements with E.left(...)') and a mapping table of imperative constructs to fp-ts equivalents. Minor gaps keep it from anchor 5: a few snippets reference undefined identifiers (postgresClient, smtpClient) or unimported modules (O in the unfold example), and some helpers are stubbed with '/* ... */'.

4 / 5

Workflow Clarity

Sequence exists (per-pattern step-by-step guides, module-by-module migration strategy, type-driven development workflow), but validation checkpoints are only implicit: 'Test thoroughly before moving on' names testing without any concrete verification step such as running tsc or the test suite after each conversion. This fits 'steps listed but validation gaps; checkpoints missing or implicit' — above anchor 2 because real sequences with concrete sub-steps are present.

3 / 5

Progressive Disclosure

The file is well structured internally (table of contents, nine numbered sections, quick-reference table), but there are no bundle files at all: a 1,780-line cookbook of patterns, pitfalls, and adoption strategies is inlined entirely in SKILL.md when the pattern library, pitfalls, and adoption guides clearly belong in separate reference files. This matches 'some structure but could be better organized; content that should be separate is inline' — above anchor 2 because section headers and a TOC provide real navigation.

3 / 5

Total

12

/

20

Passed

Description

57%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 specific and highly distinctive thanks to naming fp-ts, but it is a single what-only sentence. It lacks any 'when to use' trigger clause and over-claims with 'Comprehensive guide' while omitting the concrete conversions the skill actually covers.

Suggestions

Add an explicit trigger clause, e.g. 'Use when migrating TypeScript code to fp-ts, or when the user mentions Either, Option, TaskEither, or functional error handling.'

Replace the buzzword 'Comprehensive guide' with 2-3 concrete capabilities, e.g. 'Converts try-catch to Either/TaskEither, null checks to Option, and class-based DI to Reader'.

Include natural synonyms users would say ('migrate', 'functional error handling') to broaden trigger coverage.

DimensionReasoningScore

Specificity

The description names its domain ('refactoring imperative TypeScript code to fp-ts functional patterns') and one concrete action, but does not enumerate the actual conversions it covers (try-catch to Either, null checks to Option, Promise chains to TaskEither, class DI to Reader). This matches 'names domain and 1-2 concrete actions, but not comprehensive'; it is above anchor 2 because the domain and action are real and specific, not generic.

3 / 5

Completeness

The 'what' is clear (refactor imperative TypeScript to fp-ts patterns), but there is no 'Use when...' clause or equivalent explicit trigger guidance anywhere in the description, which per the rubric caps completeness at 3. It is not anchor 2 because the 'what' is concrete rather than vague.

3 / 5

Trigger Term Quality

Relevant natural keywords are present ('refactoring', 'TypeScript', 'fp-ts', 'functional patterns'), but common variations a user would actually say are missing: 'migrate/migration', 'error handling', 'Either', 'Option', 'TaskEither'. This sits at 'some relevant keywords but missing common variations or synonyms' rather than anchor 4, whose example shows a broader set of natural trigger terms.

3 / 5

Distinctiveness Conflict Risk

'fp-ts functional patterns' names a specific library and a specific niche (imperative-to-functional TypeScript migration), giving it distinct triggers and minimal overlap risk with other skills. Unlike anchor 4's 'minor overlap risk with closely related skills', the library name pins the domain unambiguously.

5 / 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 (1784 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-refactor/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.