re-frame-pair

Trace re-frame dispatches and inspect live runtime state via shadow-cljs nREPL.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires shadow-cljs, babashka, and includes scripts (resource) components.

What problem does it solve?

re-frame-pair removes the guesswork of debugging reactive UI behavior by letting an AI inspect the live re-frame runtime (app-db, events, effects, subscriptions, renders) and iteratively probe changes without source edits until the causal path is clear.

Core Features & Use Cases

  • Live runtime debugging loop: observe current state, inspect the relevant epoch, form a hypothesis, probe via dispatch/hot-swap/REPL, compare epochs, then edit source.
  • Epoch-centric post-mortems: identify which event introduced a bad value by walking parent/child dispatch ids and app-db diffs.
  • Safe probing and time-travel: hot-swap handlers/subs/fx and optionally stub side effects; rewind app-db during experiment loops.
  • UI-to-source grounding: map rendered re-com components back to source file/line when debug metadata is available.

Quick Start

Run scripts/discover-app.sh first, then trace an event with scripts/dispatch.sh --trace.

Frequently Asked Questions about re-frame-pair

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

FAQPage Schema
How do I debug a running re-frame app-db state without modifying source code?

You can debug a running re-frame app-db state by attaching via shadow-cljs nREPL to inspect live runtime state, probe handlers, and iteratively dispatch events without source edits until the causal path is clear.

Why does my re-frame UI not update when I dispatch an event?

To find out why your re-frame UI does not update, use epoch-centric post-mortem tracing to walk parent and child dispatch ids, inspect app-db diffs, and identify which event interceptor chain introduced the bad value.

Can I hot-swap re-frame event handlers and subscriptions during live debugging?

Yes, you can hot-swap re-frame event handlers, subscriptions, and effects during live debugging to safely probe runtime behavior, stub side effects, and rewind app-db state during experiment loops.

Do I need shadow-cljs and Babashka to trace re-frame dispatch events?

Yes, you need shadow-cljs and Babashka to trace re-frame dispatch events, as shadow-cljs provides the nREPL connection for runtime attachment and Babashka executes the helper scripts to capture epochs.

What's the best way to trace re-frame subscription recomputations and effects?

The best way to trace re-frame subscription recomputations and effects is to use dispatch tracing with epoch capture, returning structured EDN for reads and writes to compare state changes across events.

How do I map rendered re-com UI components back to their source file in re-frame?

You map rendered re-com UI components back to their source file and line in re-frame by using UI-to-source resolution, which leverages debug metadata to ground the live runtime view to the source code.