CtrlK
BlogDocsLog inGet started
Tessl Logo

fp-immutability

Never mutate data — create new values instead. Covers immutable update patterns (spread, copy, freeze), nested updates without mutation, readonly enforcement, and performance trade-offs. Activate when: updating objects or arrays, working with state management (React, Redux), fixing bugs caused by unintended mutation, deeply nested data updates, or when the user mentions immutability, spread, readonly, frozen, copy-on-write, or structural sharing. Works in any language (TypeScript, Python, Go, Rust, Java).

77

Quality

97%

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

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

An excellent, dense guidance body: executable patterns across languages, a concrete decision procedure for choosing immutable vs mutable and for nested-update depth, honest performance numbers, and a high-signal NEVER list. The only structural note is that everything lives in one ~93-line file rather than splitting language-specific or library-specific detail into reference files.

DimensionReasoningScore

Conciseness

The body is dense and lean — cheatsheet tables, short code blocks, and directive rules like 'Never mutate. Always create new values.' No section explains concepts Claude already knows (no 'immutability is a principle of FP...' padding), and every line adds guidance. Matches the 5 anchor ('lean and efficient; every token earns its place'); not a 4 because there is no identifiable over-explanation to trim.

5 / 5

Actionability

Provides copy-paste-ready patterns: a per-operation mutable-vs-immutable cheatsheet ('arr.splice(i,1)' → 'arr.filter((_,idx) => idx !== i)' or 'arr.toSpliced(i,1)'), three executable nested-update approaches, and an explicit decision rule ('1-2 levels → manual spread. 3+ levels or many fields → Immer or helper functions'). Matches the 5 anchor; not a 4 because the examples are fully executable and cover the common cases across the listed languages.

5 / 5

Workflow Clarity

This is a single-purpose decision-guidance skill, and the single action ('Never mutate. Always create new values') is unambiguous and reinforced by a numbered pre-decision checklist ('Before Choosing Immutable vs Mutable, Ask Yourself'), an explicit approach-selection rule, and a 'When NOT to Enforce' escape hatch. Per the simple-skill exception the single action being unambiguous supports a 5; the destructive/batch validation cap does not apply since the skill involves no destructive or batch operations.

5 / 5

Progressive Disclosure

A single well-organized file with clear scannable sections (cheatsheet, nested updates, enforcement, performance, NEVER, when-not-to-enforce) and no nested or buried references — there are no bundle files at all. Fits the 4 anchor ('good structure; most content appropriately placed; minor organization gaps'); not a 5 because at ~93 lines everything is inlined, and material like the per-language notes or the Immer guide would naturally live in one-level-deep reference files, and the compact single-file 5 exception is scoped to skills under 50 lines.

4 / 5

Total

19

/

20

Passed

Description

96%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 strong description that explicitly states both what the skill covers and when to activate it, with rich natural trigger terms and synonyms. The only weakness is the broad 'updating objects or arrays' trigger, which risks firing on ordinary object-update tasks that don't involve immutability concerns.

DimensionReasoningScore

Specificity

Lists multiple concrete capability areas — 'immutable update patterns (spread, copy, freeze)', 'nested updates without mutation', 'readonly enforcement', and 'performance trade-offs' — which is comprehensive coverage of the domain, matching the 5 anchor ('multiple specific concrete actions'). It is not a 4 because no meaningful capability area of the skill is missing from the enumeration.

5 / 5

Completeness

Explicitly answers 'what' ('Covers immutable update patterns... nested updates... readonly enforcement, and performance trade-offs') and 'when' via an explicit 'Activate when:' clause with concrete triggers. This matches the 5 anchor verbatim in structure; not a 4 because the 'when' guidance is not merely present but specific and multi-condition.

5 / 5

Trigger Term Quality

Trigger list includes natural user phrasings and synonyms — 'immutability, spread, readonly, frozen, copy-on-write, or structural sharing' plus situational phrases like 'fixing bugs caused by unintended mutation' and named ecosystems (React, Redux). Matches the 5 anchor's 'comprehensive coverage of natural terms including synonyms'; not a 4 because no common synonym or variation is obviously missing (file extensions are not applicable to a language-level skill).

5 / 5

Distinctiveness Conflict Risk

The niche (immutability/immutable updates) is mostly distinct with distinctive terms like 'copy-on-write' and 'structural sharing', but the trigger 'updating objects or arrays' is very broad and could overlap with general state-management or framework skills. Fits the 4 anchor ('mostly distinct; minor overlap risk with closely related skills'); not a 5 because that broad trigger creates real misfire risk, and not a 3 because the core triggers are unmistakably about immutability.

4 / 5

Total

19

/

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
olion500/skills
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.