Every commit is an Architecture Decision Record.

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 →

The Replay Test

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.

28%
Claude
17%
Cursor
14%
Copilot Agent

None write structured why. Muselet fixes that.

How it works

01

Install

npx @muselet/init scaffolds commitlint config, husky hook, and agent instructions.

02

Lint

Agent hits lint error → reads convention → writes proper message with context sections.

03

Replay

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.

JB
Jonathan Blanchet
Author of Muselet

Every workflow. Covered.

Whether you commit by hand, pair with an AI, or let agents fly solo — Muselet enforces structured context every time.

Before
git commit
fix: handle null user in dashboard
With Muselet
git commit
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.