Muselet is a commitlint plugin that enforces structured context sections in commit messages — why, approach, alternatives, tradeoffs — so every decision is captured where it happened.
npx @muselet/init Get started →
We scored 2,271 commit messages from AI coding tools on The Replay Test: could you reproduce the intent from the message alone? Strong pass = why + approach + context.
None write structured why. Muselet fixes that.
npx @muselet/init scaffolds commitlint config, husky hook, and agent instructions.
Agent hits lint error → reads convention → writes proper message with context sections.
Every commit becomes a replayable decision record. Context preserved forever.
A commit should work like a database migration,
but for decisions.
A migration doesn't just say "changed the schema." It encodes context, intent, and consequences — so it can be replayed anytime. Your commits should do the same. When an agent rewrites your app in a new framework or language, diffs show the mechanical changes — but without the reasoning, it can't tell a deliberate choice from a quick hack.
Whether you commit by hand, pair with an AI, or let agents fly solo — Muselet enforces structured context every time.
fix: handle null user in dashboard
fix: handle null user in dashboard ### Why Crash reported in Sentry — users hitting the dashboard before profile hydration completes. ### Cause Race condition: the React query fires before the auth context is populated on hard refresh. ### Approach Optional chaining + skeleton fallback until user object is available. No loading spinner.