moonlight-claude-mods
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- exec() — Shell command execution in mod-blast-radius/hooks/look.tsx
- exec() — Shell command execution in mod-blast-radius/hooks/outside.ts
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Mods for Claude Code's terminal: a pill row of side panels (skills, prompts, files, agent progress, heads-up notes), hover tips, and safety checks that hold risky commands. One shared Moonlight look, each mod independent.
moonlight-claude-mods
Add-ons for the Claude Code terminal: panels, safety checks and pills (small clickable labels in a row above the prompt). They need Claude Code 2.1.287 or newer, and they are tested on Windows Terminal and macOS iTerm2.
Install
[!WARNING]
Mods are not sandboxed: they run with your permissions.
Not sure which ones you want? Start with mod-manager. It lists every mod, installs the ones you tick, turns them on and off, and tells you when there are updates. From your terminal:
claude plugin install mod-manager --marketplace v-amorim/moonlight-claude-mods
It adds the marketplace too. Then start Claude Code, and click Open setup on the card above the prompt, or the gear pill.
One mod, inside Claude Code, using any name from the list of mods:
/plugin marketplace add v-amorim/moonlight-claude-mods
/plugin install mod-transcript@claude-mods
/reload-plugins
/plugin install asks where to install the mod. Choose Install for you (user scope) and press Enter. Press Esc to close the plugin screen, then run /reload-plugins.
Add this repo as a plugin marketplace:
claude plugin marketplace add v-amorim/moonlight-claude-modsInstall every mod. In bash or zsh:
for mod in mod-menu mod-manager mod-skill-panel mod-prompts mod-file-tree mod-transcript mod-model-effort mod-heads-up mod-progress mod-next-steps mod-wrap-up mod-blast-radius mod-collision-guard; do claude plugin install "$mod@claude-mods" --scope user doneIn PowerShell:
'mod-menu','mod-manager','mod-skill-panel','mod-prompts','mod-file-tree','mod-transcript','mod-model-effort','mod-heads-up','mod-progress','mod-next-steps','mod-wrap-up','mod-blast-radius','mod-collision-guard' | ForEach-Object { claude plugin install "$_@claude-mods" --scope user }Ignore any note about settings not set yet: every setting has a default.
Run
/reload-pluginsin an open session, or start a new one.
Each mod works alone, with or without mod-manager.
See them in action
| Every terminal mod in 133 seconds |
|---|
| https://github.com/user-attachments/assets/a693419b-9732-4a59-9bd6-07d550e30943 |
This is Claude Code. Now with Moonlight. Moonlight mods add what the terminal never had: a row of panels, right under the prompt. Forget the skill names. Start typing and the right one finds you. Then Claude goes to work. A turn full of tool calls, and the answer still stays on top. Name a color, and you see it. Every file it touches shows up as it happens. Click one to replay it. Agents in the background report in, with their gates and live output. If something important slips past while you're busy, a quiet note catches it. A risky command stops before it runs, and Haiku explains, in plain words, what it would do. When the turn ends, the next step is one key away. Don't like one? Switch it off. Your session keeps going. And when the context fills up, the work carries over to a fresh session. Thirteen mods. Use one, or all of them. Find them on GitHub.
| Without mods | With mods |
|---|---|
What each mod does
Click a name for its screenshots, features and settings.
| Mod | What it does | How to open it |
|---|---|---|
mod-menu |
The switch that hides or shows the pill row above the prompt, plus its hover tips; each panel mod draws its own pill | /mod-menu |
mod-manager |
Installs, turns on and off, and updates mods, and edits their settings | The gear pill, or /mod-manager |
mod-skill-panel |
Lists your skills and agents; a click adds one to the prompt | Skills pill |
mod-prompts |
Every prompt of the session; jump back to any of them | Prompts pill |
mod-file-tree |
The files Claude read and changed, with a replay of each edit | Files pill |
mod-transcript |
Chat bubbles for you and Claude, each finished turn folded to one line you can open, Bash commands in shell colors | Automatic |
mod-model-effort |
Shows the model and effort level; a click changes either | The model pill |
mod-heads-up |
Now and then flags one thing you should know but might miss, kept by turn in a panel | Automatic, or the Heads up pill |
mod-progress |
The main session, every subagent and every agent of a workflow run: model, effort, context fill, tokens, time and gate progress, plus the background shells and monitors each one started, with their live output | Progress pill |
mod-next-steps |
Suggests up to three next prompts after each turn | Automatic |
mod-wrap-up |
Hands off to a fresh session, or fills /compact with what to keep |
Wrap up pill |
mod-blast-radius |
Holds a risky shell command until you choose Cancel or Run | Automatic |
mod-collision-guard |
Asks before editing a file another session just changed | Automatic |
Where each mod draws on the screen:
---
config:
theme: base
themeVariables:
darkMode: true
background: "#0D0E17"
mainBkg: "#141726"
primaryColor: "#141726"
primaryTextColor: "#EEEEFA"
primaryBorderColor: "#7386d0"
secondaryColor: "#252A42"
secondaryTextColor: "#EEEEFA"
secondaryBorderColor: "#8A9BE0"
tertiaryColor: "#7386D0"
tertiaryTextColor: "#EEEEFA"
tertiaryBorderColor: "#A2B0EA"
lineColor: "#7386d0"
textColor: "#EEEEFA"
titleColor: "#EEEEFA"
nodeBorder: "#7386d0"
nodeTextColor: "#EEEEFA"
clusterBkg: "#1C2033"
clusterBorder: "#252A42"
edgeLabelBackground: "#141726"
arrowheadColor: "#7386d0"
border1: "#7386d0"
border2: "#7E86A4"
activationBorderColor: "#ffcb6b"
errorBkgColor: "#7386D0"
errorTextColor: "#EEEEFA"
fontFamily: "Mulish, system-ui, sans-serif"
fontSize: "14px"
---
block-beta
%% block-beta takes no markdown-string labels, so no label wraps: each one gets a cell wide enough for it.
columns 5
block:main:3
columns 3
transcript["Transcript"]:3
transcriptmod["mod-transcript"]:3
band["Above the prompt"]:3
headsup["mod-heads-up"]:3
nextsteps["mod-next-steps"] blast["mod-blast-radius"] wrapup["mod-wrap-up"]
menu["mod-menu"] effort["mod-model-effort"]:2
toasts["Messages from every mod"]:3
prompt["Prompt, Claude Code's own"]:3
end
block:side:2
columns 1
sidebar["Sidebar"]
skills["mod-skill-panel"]
prompts["mod-prompts"]
files["mod-file-tree"]
progress["mod-progress"]
manager["mod-manager"]
details["mod-blast-radius"]
headsuppanel["mod-heads-up"]
end
classDef region fill:#252A42,stroke:#252A42,color:#EEEEFA
classDef ghost fill:transparent,stroke:#7E86A4,stroke-dasharray:4 4,color:#7E86A4
class transcript,band,sidebar region
class prompt ghost
Icons and Nerd Fonts
The mods draw safe Unicode symbols, so they work in any terminal. With a Nerd Font they show sharper icons instead. You don't need one.
| Without a Nerd Font | With a Nerd Font |
|---|---|
A Nerd Font is a programming font with thousands of icons added to it. To use one:
- Download one from nerdfonts.com, such as JetBrainsMono Nerd Font, and install it.
- Set it as your terminal's font. In Windows Terminal, that's Settings, then your profile, Appearance, Font face; other terminals keep it in their profile or font settings.
- Start a new Claude Code session.
The mods find the font on their own in Windows Terminal, iTerm2, VS Code, Ghostty, kitty, WezTerm, Alacritty, GNOME Terminal and Konsole. In any other terminal, set the Icons setting from auto to nerd: for all mods at once from the gear pill (mod-manager), or per mod with /mod-<name> settings.
Each mod up close
Click a mod to open its video and a link to its full page.
mod-menu: Each panel mod draws its own pill in one row. Hover one to see what it does.| Hovering an entry shows its tip |
|---|
| https://github.com/user-attachments/assets/f0bb82f3-55aa-4e9e-b195-1744ce13e03f |
| The first-run card, a mod's spend, and a toggle |
|---|
| https://github.com/user-attachments/assets/362d6469-ed76-4465-a7f0-b6b4457a7f2d |
| Live while Claude works |
|---|
| https://github.com/user-attachments/assets/92fb4b27-e977-4ea1-a553-32bc9e695040 |
| Picking one by its digit |
|---|
| https://github.com/user-attachments/assets/d89e12c2-c107-421e-ba16-653f2ae55deb |
| Pick a prompt to read it |
|---|
| https://github.com/user-attachments/assets/0cf0064f-0498-4f0a-85cc-18e5256cfcd3 |
| Tags while typing /, add a skill, then the settings |
|---|
| https://github.com/user-attachments/assets/9dc338ca-887f-4cc3-881e-e3967c364d59 |
| Unfolding a turn |
|---|
| https://github.com/user-attachments/assets/187f612b-2783-4df1-8b77-57d38846460d |
| Effort on hover, models on click |
|---|
| https://github.com/user-attachments/assets/bc90d5e3-6bf5-4981-8bdd-410abb7465c8 |
| The panel and a note opened |
|---|
| https://github.com/user-attachments/assets/6600f825-6a46-4f1d-91bb-0d3e00a7fc24 |
| Two agents running, opened from the pill |
|---|
| https://github.com/user-attachments/assets/248259f2-7cc2-4b5c-b237-a68fc09490c4 |
| A risky command held |
|---|
| https://github.com/user-attachments/assets/511d4e1b-98f7-4d31-a3bf-a88f821dcc52 |
| Asking before an edit |
|---|
| Compact, start to end |
|---|
| https://github.com/user-attachments/assets/d0d12e0a-4206-4dd2-a63c-dacc3a7200d2 |
| Auto handoff at the mark: countdown, clear, carry on |
|---|
| https://github.com/user-attachments/assets/8f6c31b4-03c9-44c4-aebe-19d5b93c5e1e |
Everyday use
| Goal | How |
|---|---|
| Turn one off | The gear pill (mod-manager), or claude plugin disable <name>@claude-mods |
| Change its settings | The gear pill, or /mod-<name> settings |
| Remove one | claude plugin uninstall <name>@claude-mods |
| Apply changes in an open session | /reload-plugins |
| Update to the latest version | claude plugin update <name>@claude-mods, or Update on the card mod-manager shows |
| Update on their own | Auto-update is off for unofficial marketplaces; turn it on in /plugin, under Marketplaces, then claude-mods |
| Try one mod without installing it | git clone https://github.com/v-amorim/moonlight-claude-mods, then claude --plugin-dir ./moonlight-claude-mods/mod-transcript |
| Load the clone in every session | Add each mod folder of the clone to env.CLAUDE_CODE_PLUGIN_DIRS in ~/.claude/settings.json, separated by ; on Windows and : elsewhere |
| Pass a slash command from Git Bash | MSYS_NO_PATHCONV=1 claude "/mod-<name> settings", since Git Bash rewrites /x into a Windows path |
Build your own
Make a new mod- Clone the repo, then copy an existing mod's folder to
<clone>/<name>and rename it inplugin.jsonand its test. - Check it with
claude plugin validate <clone>/<name>. - Test it with
claude plugin test <clone>/<name>. - Try it with
claude --plugin-dir <clone>/<name>, then add its folder toCLAUDE_CODE_PLUGIN_DIRS.
Each mod's folder:
<mod-name>/
.claude-plugin/plugin.json manifest
hooks/hooks.json { "modules": ["./register.tsx"] }, plus command hooks if the mod has any
hooks/register.tsx the hooks module
tests/*.test.tsx run by claude plugin test
showcase.json optional: tagline, features, actions, example cards
A mod's hooks.json always lists its modules. Seven mods also ship plain shell command hooks next to them:
{
"modules": ["./register.tsx"],
"hooks": {
"SessionStart": [{ "hooks": [{ "type": "command", "command": "…appends the payload to the bridge file…" }] }],
"SessionEnd": [{ "hooks": [{ "type": "command", "command": "…deletes the session's bridge file…" }] }]
}
}
Each command hook appends the event's JSON payload as one line to ~/.claude/mods-data/<mod>/bridge/<session id>.jsonl, or under $CLAUDE_CONFIG_DIR/mods-data/ when that is set. The mod reads the file every 250 ms. A record can hold the session id, the working folder, the transcript path and, for Stop-type events, the last assistant message. SessionEnd deletes the session's file, and SessionStart deletes files older than 7 days. The hooks need a POSIX shell (Git Bash on Windows). Without one they write nothing, and the mod falls back to what it can find on its own.
| Mod | Events it bridges |
|---|---|
mod-prompts, mod-heads-up, mod-file-tree |
SessionStart |
mod-transcript |
SessionStart, PermissionDenied, StopFailure |
mod-progress |
SessionStart, Stop, SubagentStop, StopFailure |
mod-model-effort |
SessionStart, PostModelSwitch, ConfigChange |
mod-wrap-up |
SessionStart, including the one after a compact |
Every one of them also hooks SessionEnd, to delete its file. Some plans block plugin hooks on these events. The mods then run on what they can find on their own.
The shared standardEvery mod follows the same rules:
| Rule | In short |
|---|---|
| Name | Plugin, folder and command share one name, mod-<name> |
| Shared files | Each mod carries its own copy of the shared files, so it works alone |
| Panes | Tabs, a one-line hint, then bordered sections |
| Controls | Every control is a pill; mouse only, so the prompt keeps the keyboard |
| Icons | Plain symbols everywhere, Nerd Font icons when the terminal has one |
One panel shows at a time, and no mod needs to know the others:
---
config:
theme: base
sequence:
mirrorActors: false
themeVariables:
darkMode: true
background: "#0D0E17"
mainBkg: "#141726"
primaryColor: "#141726"
primaryTextColor: "#EEEEFA"
primaryBorderColor: "#7386d0"
secondaryColor: "#252A42"
secondaryTextColor: "#EEEEFA"
secondaryBorderColor: "#8A9BE0"
tertiaryColor: "#7386D0"
tertiaryTextColor: "#EEEEFA"
tertiaryBorderColor: "#A2B0EA"
lineColor: "#7386d0"
textColor: "#EEEEFA"
titleColor: "#EEEEFA"
actorBkg: "#141726"
actorBorder: "#7386d0"
actorTextColor: "#EEEEFA"
actorLineColor: "#7386d0"
signalColor: "#7386d0"
signalTextColor: "#EEEEFA"
labelBoxBkgColor: "#252A42"
labelBoxBorderColor: "#7386d0"
labelTextColor: "#EEEEFA"
loopTextColor: "#EEEEFA"
noteBkgColor: "#7386D0"
noteTextColor: "#EEEEFA"
noteBorderColor: "#7386d0"
activationBkgColor: "#252A42"
activationBorderColor: "#ffcb6b"
arrowheadColor: "#7386d0"
errorBkgColor: "#7386D0"
errorTextColor: "#EEEEFA"
fontFamily: "Mulish, system-ui, sans-serif"
fontSize: "14px"
sequenceNumberColor: "#0D0E17"
---
sequenceDiagram
actor you as You
participant files as mod-file-tree
participant cc as Claude Code
participant skills as mod-skill-panel
you->>files: click Files
files->>cc: open the Files pane
cc->>skills: a pane opened
skills->>cc: close the Skills pane
License and credits
Made by Vinicius Amorim and released under the MIT license. Bug reports and pull requests are welcome, especially from Linux terminals, which are untested.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found