fm-verify

Runs build, TypeScript, Vitest, and ESLint gates on a migrated page and records verified status.

1|Updated Feb 19, 2026
One-click install
npx skills add https://github.com/ohmyhotelco/hare-cc-plugins --skill fm-verify-ohmyhotelco
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: fm-verify
Source: https://github.com/ohmyhotelco/hare-cc-plugins/tree/main/frontend-migration-plugin/skills/fm-verify
Command: npx skills add https://github.com/ohmyhotelco/hare-cc-plugins --skill fm-verify-ohmyhotelco

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? After migrating a legacy page to a new frontend stack, you need objective proof that the generated code actually compiles, builds, passes tests, and meets lint standards before it can advance. This Skill runs that technical gate automatically and records the result in a migration tracker, preventing unverified pages from moving forward. ## Core Features & Use Cases - Composite-aware TypeScript check: Detects project references in tsconfig.json and runs tsc -b or tsc --noEmit accordingly. - Full gate pipeline: Executes Vite build, Vitest, ESLint (hard failure), and Prettier (advisory warning only) from the app's appDir. - i18n key-coverage enforcement: Verifies the i18n coverage spec actually ran inside the Vitest output, failing the gate if the spec is missing or not collected. - Tamper-evident evidence recording: Hashes watched file trees before and after the run, records commit SHA and tree hash in tracker.json, and refuses to record a pass if files moved mid-run. - Use Case: After generating a migrated hotel booking page with fm-gen, run this Skill to confirm the page builds and passes all tests, advancing its tracker status from generated to verified. ## Quick Start Run fm-verify on the migrated checkout page for the pc app to execute the build, type, test, and lint gate and mark it verified.

Frequently Asked Questions about fm-verify

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I verify a migrated frontend page builds and passes tests?▼

Run fm-verify with the page name and app target, for example `fm-verify checkout --app pc`. It executes TypeScript compilation, Vite build, Vitest, and ESLint from the app's directory, then records the page as verified in tracker.json only if all hard gates pass.

What checks does a frontend migration verification gate include?▼

The gate runs four hard tools: TypeScript (composite-aware via tsc -b when project references exist), Vite build, Vitest unit/component tests, and ESLint. Prettier runs as an advisory check that warns but never blocks verification.

Why does verification fail when the i18n spec file exists?▼

File existence is not proof the spec ran. If the i18n key-coverage spec's results do not appear in the Vitest output, the gate fails because the spec was never collected by the test harness. The fix is repairing the harness include pattern via fm-fix, not regenerating the page.

Can I re-verify a page that is already flipped or done?▼

No. The skill refuses pages at flipped or done status, or when flipPrOpenedAt is present, because re-verifying would overwrite a live page's tracker state. For flipped pages, run fm-route with --revert first; done pages require a manual reopening decision.

Does Prettier formatting failure block page verification?▼

No. Prettier runs in advisory mode only. A non-zero prettier --check exit is recorded as a warning under formatWarnings in the tracker with the unformatted file list, but it never sets verify-failed or blocks the verified status.

What happens if files change while the verification gate runs?▼

The skill hashes watched file trees before and after the run. If the hashes differ, no pass is recorded and the page status stays unchanged, since the gate result cannot be trusted against a moving tree. You must re-run the verification.