Bind buttons by purpose, not just spell.
Muscle Memory keeps your action bars consistent across every character. Capture your bars into reusable layers, then put the right spell, item, macro, mount, or equipment set back into each slot on any character — with one click.
A slot can also hold a smart action instead of a fixed spell. Bind a button to Interrupt, Taunt, or Bloodlust, and every character gets whatever ability it actually has for the job. One binding, every class.

⚠️ Early development: things mostly work, but bugs can occur. Please report issues on GitHub — attaching a debug report (About tab) makes them reproducible.
Getting started
- Type
/mmto open the window. An interactive tutorial opens on first use — reopen it any time from the "i" button. - Click a faded slot in the Core layer to capture whatever is on that action bar button.
- Switch character, then press Apply (or
/mm apply).
/mm preview shows what Apply would change before it touches anything.
What it does
- Set up your bars once. Snapshot your live bars into layers and apply them on any alt — no rebuilding the same layout twice.
- Slots that follow your class. Smart actions resolve to whatever ability each character actually has, with built-ins for Bloodlust, Interrupt, Battle Rez, Taunt, CC, Movement, and the racials that differ by class.
- Real macros when you need them. Render a smart action as a macro for mouseover, focus, modifier, and conditional casts (
/use [@mouseover,help][@focus] %name%). Muscle Memory writes and maintains the per-character macro for you. - Your macros travel with you. A bound macro is recreated on characters that don't have it, and keeps matching by name after you edit it.
- Suggestions while you bind. Drop Kick onto a slot and Muscle Memory offers Interrupt instead — never, suggest, or automatic, your call.
- Everything that lives on a bar. Spells, items, macros, mounts, toys, battle pets, flyouts, equipment sets, and transmog outfits.
- No surprises. Apply waits during combat or while something is on the cursor, and every configuration change can be undone step by step.
- Separate setups. Profiles keep independent configurations — an account-wide default, or a dedicated one per character.
- Share it. Export layers, smart actions, or whole profiles as a copyable string. Imports preview what's inside and never overwrite what you have.
- Scriptable. A public API drives everything in the window from macros and other add-ons — see GitHub.
Layers, not snapshots
Most bar-saving addons store one large snapshot and stamp the whole thing back down. Muscle Memory uses an ordered stack of layers, each managing only the slots it cares about. For every slot, the first enabled layer with an assignment wins — higher layers override, lower layers fill the gaps.
- Put class, spec, or single-character tweaks on top.
- Keep shared bindings in a base layer below and edit them once.
- Scope a layer with conditions — class, spec, race, faction, role, profession.
- Drop smart actions into any layer so one button works across classes.
Smart actions
A smart action is a named stand-in for an ability. Behind the name is an ordered list of candidates, and each character uses the first one it can actually use — checking class, spec, known spells, owned items, profession, and level. One slot becomes Pummel on your Warrior, Mind Freeze on your Death Knight, and Counterspell on your Mage.

Build your own by mixing spells, items, toys, and mounts in one list — order is priority. Bloodlust resolves through each class's own version and falls back to War Drums, so every character brings the haste. The built-in Interrupt ships as a macro that hits your focus and falls back to your current target.

Compatibility & support
- Retail only, updated for patch 12.1.
- English, Deutsch, Français — the window and its chat output follow your client language, falling back to English elsewhere.
- Bugs and requests: github.com/whytspace/MuscleMemory/issues

