Guide for migrating forms from the legacy JsonForm/FormModel system to the new TanStack-based form system.
48
52%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./.agents/skills/migrate-frontend-forms/SKILL.mdQuality
Discovery
40%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 identifies a clear, specific migration niche between two named form systems, which gives it strong distinctiveness. However, it lacks explicit trigger guidance ('Use when...'), lists no concrete actions beyond 'migrating', and misses common keyword variations a developer might use when seeking this help.
Suggestions
Add an explicit 'Use when...' clause, e.g., 'Use when the user needs to convert or migrate forms from JsonForm/FormModel to the TanStack-based form system.'
List specific concrete actions the skill covers, such as 'convert field definitions, update validation schemas, replace FormModel bindings with TanStack hooks, update form submission handlers.'
Include natural keyword variations like 'refactor forms', 'upgrade legacy forms', 'form migration', 'replace JsonForm' to improve trigger term coverage.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Names the domain (form migration) and identifies the two systems involved (JsonForm/FormModel to TanStack-based), but doesn't list specific concrete actions like 'convert field definitions', 'update validation logic', or 'replace form components'. | 2 / 3 |
Completeness | Describes what it does (guide for migrating forms between two systems) but has no explicit 'Use when...' clause or equivalent trigger guidance, which per the rubric should cap completeness at 2, and the 'what' is also fairly thin—just 'guide for migrating'—so it falls to 1. | 1 / 3 |
Trigger Term Quality | Includes relevant technical terms like 'JsonForm', 'FormModel', 'TanStack', and 'migrating forms' that a developer would use, but misses common variations like 'refactor forms', 'upgrade forms', 'form refactoring', or 'legacy form replacement'. | 2 / 3 |
Distinctiveness Conflict Risk | The description targets a very specific migration path between two named systems (JsonForm/FormModel → TanStack), making it highly distinctive and unlikely to conflict with other skills. | 3 / 3 |
Total | 8 / 12 Passed |
Implementation
64%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This is a highly actionable migration guide with excellent concrete code examples covering every feature mapping from old to new system. Its main weaknesses are length/verbosity (the document is very long with all details inline rather than progressively disclosed) and the lack of explicit validation/verification checkpoints in the migration workflow. The feature mapping table is an effective overview, but the body could benefit from splitting detailed examples into referenced files.
Suggestions
Add explicit validation checkpoints to the migration checklist, such as 'Run the component's test suite to verify behavior is preserved' and 'Manually test the form in the browser before committing'.
Consider splitting the detailed old/new code comparisons into a separate MIGRATION_EXAMPLES.md file, keeping only the feature mapping table and brief summaries in the main SKILL.md.
Trim explanatory prose that describes what old features did (e.g., 'The saveMessage showed a custom toast/alert after successful save') — Claude can infer this from the code examples alone.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The skill is quite long (~400+ lines) with extensive old/new code comparisons that are useful but could be tightened. Some sections include explanatory prose that Claude doesn't need (e.g., explaining what getData did, what saveMessage showed). The mutation typing section is thorough but borders on verbose with multiple anti-pattern examples. However, most content is genuinely migration-specific knowledge Claude wouldn't have. | 2 / 3 |
Actionability | Excellent actionability throughout — every feature mapping includes concrete, executable old-vs-new code examples with real imports, real component names, and copy-paste-ready patterns. The mutation typing section provides clear do/don't examples. The migration checklist at the end is a concrete action list. | 3 / 3 |
Workflow Clarity | The migration checklist at the end provides a clear sequence of steps, and individual feature migrations are well-documented. However, there are no explicit validation checkpoints — no 'verify the form works after this step' or 'run tests to confirm' instructions. For a destructive operation like migrating forms, the absence of verification steps (e.g., 'run the test suite', 'verify search indexing works') is a gap. The FormSearch section does include the extract-form-fields command, which is a validation step, but overall validation is sparse. | 2 / 3 |
Progressive Disclosure | The content is a monolithic document with no references to external files for detailed content. The feature mapping table at the top is a good overview, but the detailed sections that follow are all inline, making this a very long single file. The mutation typing rules reference 'static/AGENTS.md' which is good, but the bulk of content (especially the many old/new code comparisons) could benefit from being split into separate reference files with the SKILL.md serving as an overview. | 2 / 3 |
Total | 9 / 12 Passed |
Validation
90%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 10 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
skill_md_line_count | SKILL.md is long (682 lines); consider splitting into references/ and linking | Warning |
Total | 10 / 11 Passed | |
552fb5c
Table of Contents
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.