CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

code-migration

Move code from one implementation to another function by function, tests first and code second, and check two implementations of one app for parity, with jscpd --compare as the progress measure and a coverage map binding each function to its tests. Use when porting a library or app to another language or framework (Java to Kotlin, JavaScript to Rust, a Python library to TypeScript, an iOS app to Android), when asked what is left to port, or when comparing the Android and iOS versions of an app.

Quality

87%

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

81%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 high-quality, expert-level body: a clearly sequenced tests-first workflow with strong validation loops, executable commands, and a real sample report. The main costs are a very dense enumerative style in places and a monolithic single file where reference material (options, pair-reading heuristics, known misses) could be split out.

DimensionReasoningScore

Conciseness

The body is dense and assumes competence — no generic explanations of tests, git, or coverage — and almost every paragraph carries tool-specific knowledge (level thresholds like 0.7125, matchedBy semantics, readyToPort ordering). A few sentences carry heavy parenthetical loads (e.g. the JSON schema enumeration in the Measure section) that could be tightened, keeping it just below the leanest anchor.

4 / 5

Actionability

Concrete, copy-paste commands appear throughout (semantic-download, the compare invocation with --ignore globs, the JSON report run, a .gitignore block) alongside a full sample report and per-step instructions. The coverage-map construction — a core step — is described procedurally rather than with an executable example, which is the main gap versus the fully-executable anchor.

4 / 5

Workflow Clarity

The two-phase workflow is explicitly sequenced (coverage map → port tests → port code) with validation checkpoints and feedback loops at every turn: run ported tests and fix the port not the test, run coverage to confirm tests reach the new function, rerun the comparison to confirm the function left unmatched and its pair level, and rerun before each batch since the source may change. Progress reporting to the user is specified with a concrete format.

5 / 5

Progressive Disclosure

A single-file skill (~195 lines) with no bundle files; it is well-sectioned with clearly signaled one-level-deep cross-references to sibling skills ([compare-codebases](../compare-codebases/SKILL.md), [jscpd](../jscpd/SKILL.md)) and in-page anchor links. The Options, Reading pairs, and Misses sections are borderline content that could live in separate reference files, which keeps it below the ideal split.

4 / 5

Total

17

/

20

Passed

Description

88%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: it names both workflows concretely, states the measurement mechanism, and gives an explicit, natural-language 'Use when' clause with varied trigger scenarios. The only gaps are a few missing synonyms (migrate/rewrite) and mild overlap with a sibling comparison skill.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — 'Move code from one implementation to another function by function, tests first and code second', 'check two implementations of one app for parity', 'jscpd --compare as the progress measure and a coverage map binding each function to its tests' — covering both workflows comprehensively with the specific mechanism named.

5 / 5

Completeness

It explicitly answers both questions: what it does (move code function by function, tests first; check parity; measure with jscpd --compare and a coverage map) and when to use it ('Use when porting a library or app to another language or framework..., when asked what is left to port, or when comparing the Android and iOS versions of an app'). Third person is used throughout.

5 / 5

Trigger Term Quality

Natural phrases users would say are well covered: 'porting a library or app to another language or framework', 'what is left to port', 'comparing the Android and iOS versions of an app', plus concrete language pairs (Java to Kotlin, JavaScript to Rust, iOS to Android). Common synonyms like 'migrate', 'rewrite', or 'translate' are absent, which keeps it a notch below the comprehensive-synonyms anchor.

4 / 5

Distinctiveness Conflict Risk

The porting/migration niche with jscpd --compare is a clear, distinct trigger set, but 'when comparing the Android and iOS versions of an app' overlaps with a closely related compare-codebases skill, so a small risk of firing for a pure comparison task remains.

4 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 2 suspicious

Warning

Total

15

/

16

Passed

Repository

kucherenko/jscpd

Path

skills/code-migration/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.