English | 简体中文
Moonwalk Skill is a Claude Code plugin focused on Michael Jackson music. It reads simple mood cues, recommends fitting songs, and opens the selected track fast.
This project is an independent fan-made plugin. It is not affiliated with, endorsed by, or sponsored by the Michael Jackson Estate or any official rights holder.
Watch the full Vimeo demo along with my original track "code with rhythm": vimeo.com/1184540755
- Recommends 2-4 songs based on mood, context, or activity
- Supports direct song requests such as
Billie JeanandHuman Nature - Adds a short, restrained emotional line when you sound tired, low, stressed, or nostalgic
- Opens the selected song through a supported music provider
- Supports both natural-language use and direct
/moonwalk-skill:mjinvocation
Use it when you want the right song without overthinking the request:
- You already know the song and want it opened quickly
- You want a few picks for coding, focus, late night, or winding down
- You want something softer after a rough day
- You want recommendations from a single, consistent catalog instead of doing general music search
Typical requests look like this:
play Billie Jean
something for coding
something softer for late night
I had a rough day, play something gentle
/moonwalk-skill:mj Billie Jean
Natural language is the default entry point.
- If you name a song, it opens that song directly.
- If you describe a mood, activity, or moment, it recommends 2-4 songs first.
- If the tone sounds personal, it adds one short, restrained line before the recommendations.
- If you say yes, it opens the top pick.
The plugin is intentionally narrow. It is for Michael Jackson music requests, not general music playback or artist discovery.
autoyoutubeytmusicspotifyappleqqnetease
Auto-routing rules:
- Chinese requests default to
qq - English requests default to
appleon macOS - English requests default to
spotifyon non-macOS platforms - An explicitly requested provider always wins
Open behavior:
spotifytries the local Spotify app first, then falls back to web searchappletries the Music app first, then falls back to web searchqq,netease,youtube, andytmusicopen web search directly
- This project does not host or distribute any music
- This project is independent and not an official Michael Jackson product
- Playback redirects to external platforms such as Apple Music, Spotify, QQ Music, NetEase, or YouTube
- Actual open behavior depends on the local OS, browser, and installed music apps
- Some providers may open a search page instead of direct playback
- The plugin only handles Michael Jackson music requests
To install from GitHub, first add this repository to your local marketplace sources:
/plugin marketplace add boylegu/moonwalk-skill
Then install the plugin:
/plugin install moonwalk-skill@mj-music
marketplace add only registers the repository in your local Claude Code environment. Other people still need to add the same source on their side before they can install from it.
If the marketplace catalog changes, refresh the local marketplace entry:
/plugin marketplace update mj-music
If the plugin itself releases a new version, update the installed copy:
/plugin update moonwalk-skill@mj-music
This is the default and recommended mode. Claude should auto-trigger the skill when your request is clearly about Michael Jackson music.
Use this mainly for debugging or forcing the skill to run:
/moonwalk-skill:mj Billie Jean
/moonwalk-skill:mj coding
/moonwalk-skill:mj I had a rough day, give me some MJ
Add bin/ to PATH first:
export PATH="$PWD/bin:$PATH"Return 2-4 MJ songs for a mood or context:
mj-recommend coding
mj-recommend "I had a rough day and feel tired"Open a song with a provider:
mj-open "Billie Jean"
mj-open --provider auto "Billie Jean"
mj-open --provider spotify "Billie Jean"Print the latest plugin status line:
mj-statusRefresh the latest status in a loop:
mj-watchRun quick syntax, JSON, and sample-command checks:
bash ./bin/debug.shIf you want to add more songs, edit data/songs.json.
Each entry should stay in this shape:
{
"title": "Song Title",
"tags": ["coding", "night", "comfort"]
}Keep the tags short and consistent with the existing vocabulary. Reusing current tags is better than inventing near-duplicates, because recommendations depend on those tag matches.
After updating the file, run:
python3 -m json.tool data/songs.json >/dev/null
bash ./bin/debug.shUseful checks from the repository root:
bash -n bin/mj-open.sh
bash -n bin/mj-recommend
python3 -m json.tool .claude-plugin/plugin.json >/dev/null
python3 -m json.tool .claude-plugin/marketplace.json >/dev/null
python3 -m json.tool data/songs.json >/dev/null
bash ./bin/debug.shMIT

