CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

elm-to-fsharp-guru

Specialized Elm-to-F# migration expert for morphir-dotnet. Expert in converting Elm code from finos/morphir-elm to idiomatic F# while maintaining AOT compatibility, type safety, and behavioral equivalence. Use when migrating Elm modules, converting patterns, implementing Myriad code generation, or translating UI code to Fun.Blazor. Triggers include "elm", "migration", "convert elm", "translate elm", "morphir-elm", "myriad", "fun.blazor", "elm architecture".

Quality

75%

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 ./.claude/skills/elm-to-fsharp-guru/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

58%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 content is rich in genuinely useful project-specific guidance with strong, well-validated workflows, but it is buried in a monolithic document padded with basic Elm/F# tutorials and triplicated material, and it references pattern/template files that are absent from the bundle. It functions more as a full playbook inlined into SKILL.md than as an overview with progressive disclosure.

Suggestions

Move the basic Elm/F# language tutorials (sections 1 and 8) out of SKILL.md — Claude already knows Option/Result, DUs, computation expressions, and smart constructors — keeping only the morphir-specific mappings and conventions.

Deduplicate the Myriad-vs-manual decision tree (appears in sections 3, 9, and 10) and the opaque-type UserId example (sections 1, 2, and 8) into a single canonical version, cutting several hundred lines.

Actually create the referenced 'patterns/' and 'templates/' files or remove those references; move the inlined pattern-catalog entries (sections 2, 4, 6) into them so SKILL.md becomes a lean overview with one-level-deep references.

DimensionReasoningScore

Conciseness

The ~1600-line body extensively explains concepts Claude already knows — Maybe/Option and Result mapping, basic pattern matching, records, DUs, computation expressions, smart constructors, railway-oriented programming (sections 1 and 8) — matching 'noticeably verbose; several unnecessary explanations or padded sections'. It is also heavily duplicated: the Myriad-vs-manual decision tree appears three times (sections 3, 9, 10) and the opaque-type UserId example three times (sections 1, 2, 8). Not a 1 only because substantial project-specific content (Myriad MSBuild integration, Morphir IR fidelity, script usage) genuinely earns its tokens.

2 / 5

Actionability

Mostly executable guidance: real script invocations ('dotnet fsi scripts/analyze-elm-module.fsx path/to/module.elm'), copy-paste MSBuild snippets, complete F# JSON-context and test examples, and concrete decision matrices. Minor gaps keep it from 5: the Myriad plugin skeleton calls undefined helpers ('parseInputTypes context', 'generateCode inputTypes') and generated-code examples contain literal ellipses ('new Utf8JsonWriter(...)').

4 / 5

Workflow Clarity

Section 9 gives a four-phase workflow with per-phase checklists, explicit validation commands (verify-compatibility.fsx, 'Test with PublishTrimmed=true', 'Verify JSON roundtrip'), and section 16 adds an 11-step getting-started sequence. Feedback loops for error recovery are explicit via the AOT Guru and QA Tester handoff workflows ('Addressing AOT Guru feedback: Adding TrimmerRootDescriptor.xml'), matching the top anchor.

5 / 5

Progressive Disclosure

The body is a monolithic 1600 lines where content that clearly belongs in separate files is inlined: full language tutorials and complete pattern-catalog entries that the skill itself says live in 'patterns/' files. Scoring against the actual bundle, the six referenced scripts/ files are real and well documented, but the referenced 'patterns/' (8 files) and 'templates/' (6 files) directories do not exist in the bundle at all — dangling references. Not a 3 because the inlining is pervasive rather than incidental and navigation to the promised detailed material is impossible.

2 / 5

Total

13

/

20

Passed

Description

83%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: third-person, concrete about what it does, with an explicit 'Use when' clause and a well-chosen trigger list. Its only weaknesses are minor — a few missing natural trigger variations ('F#', '.elm') and slight generic-trigger overlap risk from 'elm' and 'migration'.

DimensionReasoningScore

Specificity

Quotes several concrete actions — 'converting Elm code from finos/morphir-elm to idiomatic F#', 'implementing Myriad code generation', 'translating UI code to Fun.Blazor', 'migrating Elm modules' — matching the anchor for several specific actions. Not a 5 because test migration and pattern-catalog work, major documented responsibilities of the skill, are absent, leaving minor gaps in coverage.

4 / 5

Completeness

Explicitly answers both questions: what it does ('converting Elm code from finos/morphir-elm to idiomatic F# while maintaining AOT compatibility, type safety, and behavioral equivalence') and when to use it ('Use when migrating Elm modules, converting patterns, implementing Myriad code generation, or translating UI code to Fun.Blazor' plus a concrete trigger list). This matches the anchor for clearly and explicitly answering both with concrete trigger phrases.

5 / 5

Trigger Term Quality

Good natural keyword coverage including synonyms ('convert elm', 'translate elm', 'elm architecture') and specific tool names ('morphir-elm', 'myriad', 'fun.blazor'). Not a 5 because common variations users would say — 'F#', 'port to F#', the '.elm' file extension — are missing; not a 3 because coverage goes well beyond a couple of generic keywords.

4 / 5

Distinctiveness Conflict Risk

Clear niche (Elm-to-F# for morphir-dotnet) with distinctive triggers like 'morphir-elm', 'myriad', 'fun.blazor'. Not a 5 because the generic triggers 'elm' and 'migration' create minor overlap risk with general Elm-development or generic migration skills, matching the 'mostly distinct; minor overlap risk' anchor.

4 / 5

Total

17

/

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 (1635 lines); consider splitting into references/ and linking

Warning

relative_links

Relative link issues: 4 suspicious

Warning

Total

14

/

16

Passed

Repository

finos/morphir-dotnet

Path

.claude/skills/elm-to-fsharp-guru/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.