re-frame-migration

Migrates re-frame v1.x ClojureScript codebases to re-frame2 with automated rewrites and guided review.

49|Updated May 7, 2026
One-click install
npx skills add https://github.com/day8/re-frame2 --skill re-frame-migration-day8
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: re-frame-migration
Source: https://github.com/day8/re-frame2/tree/main/skills/re-frame-migration
Command: npx skills add https://github.com/day8/re-frame2 --skill re-frame-migration-day8

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Upgrading an existing re-frame v1.x ClojureScript application to re-frame2 involves a dependency-coordinate swap plus dozens of breaking-change rules, many of which fail silently at runtime rather than at compile time. This Skill routes that migration through a structured workflow so mechanical rewrites are applied automatically and judgment-call changes are flagged for human review instead of being guessed. ## Core Features & Use Cases - Planned migration sweep: Inventories v1 add-on libraries (http-fx, async-flow-fx, re-frame-10x) and app features, scans their source for removed v2 surfaces, and produces a per-item migration plan before any edit. - Type A / Type B rule application: Applies mechanical rewrites (namespace requires, effect-map consolidation, dispatch shapes, test-API renames) automatically, and asks first on intent-sensitive changes like handler semantics and the M-11 view conversion. - Runtime verification: Runs the project's own compile and test gates, then drives a boot smoke-test with live app-db and machine-snapshot introspection, since a clean compile is not the done-bar. - Use Case: Point it at a v1 project using re-frame/re-frame, re-frame-test, and async-flow-fx; it bumps the deps to day8/re-frame2 plus a substrate adapter, clears the React-19/Reagent-2 floor gate, rewrites the call sites, and produces a migration report citing each M-N/O-N rule applied. ## Quick Start Ask the AI to migrate this re-frame v1 project to re-frame2 using the re-frame-migration skill, starting from the repository root.

Frequently Asked Questions about re-frame-migration

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

FAQPage Schema
How do I migrate a re-frame v1 app to re-frame2?▼

Run the migration workflow from the project root: it inventories v1 add-ons, clears the React-19/Reagent-2 floor gate, swaps re-frame/re-frame for day8/re-frame2 plus a substrate adapter, applies mechanical rewrites, and verifies with a boot smoke-test. Judgment-call changes are flagged for your review.

What breaks when upgrading from re-frame v1 to re-frame2?▼

Breaking changes include removed namespaces like re-frame.db and re-frame.alpha, the removed re-frame.core/console, effect-map consolidation into :fx, reg-event-db removal, and signal-fn reg-sub rejection. Many failures moved from compile time to runtime, so a clean compile does not mean the app boots.

Does re-frame2 work with Reagent 1.x and React 18?▼

No. re-frame2's adapters target React 19, and the Reagent bridge runs on Reagent 2.x. The skill runs a pre-flight floor gate that audits React-coupled dependencies and component libraries before any dependency edit, with an explicit go/no-go decision.

Can I migrate http-fx and async-flow-fx to re-frame2?▼

Yes, but it is forced, not optional: both add-ons call the removed re-frame.core/console and fail to compile once re-frame2 is on the classpath. The skill converts async-flow-fx flows to reg-machine state machines (O-16) and http-fx calls to :rf.http/managed (O-17), asking before each conversion.

When should I not use the re-frame-migration skill?▼

Do not use it for greenfield project setup, writing new re-frame2 application code, live inspection of a running v2 app, or substrate migrations like Reagent to UIx. Those route to the sibling re-frame2-setup, re-frame2, and re-frame2-pair skills instead.

Why does my migrated re-frame2 app compile but fail at boot?▼

re-frame2 moves a class of v1 failures to runtime: a boot dispatch without an app frame throws :rf.error/no-frame-context, a :db carrying the retired :rf/runtime root throws :rf.error/legacy-runtime-root, and subscribing plain defn views crash at first render. The Phase-4 boot smoke-test with live app-db introspection catches these.