ClaudeMods
☰
ZH-CN
● 0 人在线 · 浏览 0 次
赞助提交作品
GitHub 仓库 · 发布者 oMaN-Rod

diff-widget

将上次编辑显示为带语法高亮的差异。

oMaN-Rod@oMaN-Rod

oMaN-Rod/claude-code-widgets/tree/main/plugins/diff-widget

已翻译

关于这个 mod

Claude Code Widgets

显示在 Claude Code 提示词下方的小卡片,也可以在全屏模式中停靠在 transcript 旁边。每个 widget 都是一个独立 mod,通过斜杠命令切换。

它起初只有几个实用 widget(上下文、用量、文件树),后来越做越多:现在共有 61 个 widget,从 git status 和工作阶次计时器,到像素螃蟹、地牢探索和 Tetris。

安装

添加市场,然后安装布局插件和你想要的 widget:

/plugin marketplace add oMaN-Rod/claude-code-widgets
/plugin install widgets@claude-code-widgets
/plugin install context-widget@claude-code-widgets

每个 widget 都需要 widgets,也就是负责放置卡片的布局插件。

需要支持 mod(function hook)的 Claude Code 版本。mod API 目前处于 early access 阶段,版本更新之间可能会改变。

Widget

布局

每个 widget 都需要。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | widgets | /widgets [side\\|above\\|below\\|close\\|<columns>\\|width <widget> <columns\\|reset>] | 将卡片放在提示词下方、上方,或全屏模式的 transcript 旁边 |

工作阶次

Claude 正在做什么,以及这要花费多少。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | context-widget | /context-widget [auto\\|detailed\\|grid\\|top\\|bar\\|line] | 用堆叠条显示上下文窗口,每种 /context 类别使用一种颜色 | | usage-widget | /usage-widget | 每个限流窗口一条进度条、重置所需时间和工作阶次成本 | | timer-widget | /timer-widget [on\\|off\\|clear] | 当前工作阶次已用时间,以及上一次、平均值、最长工作阶次和迷你折线图 | | activity-widget | /activity-widget [on\\|off\\|clear] | 最近的工具调用、耗时和是否失败 | | tasks-widget | /tasks-widget [on\\|off\\|clear] | Claude 正在处理的任务列表和进度条 | | checks-widget | /checks-widget [on\\|off\\|clear] | 最近的测试、lint 和构建运行:通过或失败、耗时以及距今多久 | | timeline-widget | /timeline-widget [on\\|off] | 把工作阶次画成图表:时间轴上每次工具调用一条横条,并将并行调用叠放 | | board-widget | /board-widget [on\\|off\\|clear] | Claude 通过 pin 工具自行写入的状态板:目标、发现和开放问题 | | forecast-widget | /forecast-widget [on\\|off\\|clear] | 每个工作阶次的上下文增长图表,以及压缩前剩余的工作阶次数 | | guard-widget | /guard-widget [on\\|off\\|clear] | 本次工作阶次的权限检查:允许、已询问和拒绝,并显示你一直被询问的内容 | | stream-widget | /stream-widget [on\\|off] | Claude 写作时实时显示每秒 token 数仪表和迷你折线图(根据文本长度估算) | | sessions-widget | /sessions-widget [on\\|off] | 本机其他已打开的 Claude Code 工作阶次:文件夹、分支、忙碌或空闲 |

项目与 git

工作树的状态。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | file-tree-widget | /file-tree-widget | 项目目录,点击即可展开文件夹 | | git-widget | /git-widget | 分支、领先/落后、暂存、变更和未跟踪数量,以及最近一次提交 | | changes-widget | /changes-widget [on\\|off\\|clear] | 本次工作阶次编辑过的文件,最新的排在前面,并显示每个文件的编辑次数 | | commits-widget | /commits-widget | 本次工作阶次开始后创建的提交 | | todos-widget | /todos-widget | 已跟踪文件中的 TODO、FIXME、HACK 和 XXX 注释,计数并列出 | | diff-widget | /diff-widget [on\\|off\\|clear] | 上次编辑的语法高亮差异 | | watch-widget | /watch-widget [on\\|off\\|run\\|stop]、/watch <command> | /watch bun test 会在每次编辑后重新运行命令:显示通过或失败,以及上次失败的行 | | map-widget | /map-widget [on\\|off\\|clear] | 已跟踪文件的像素地图:Claude 读取过的地方亮蓝色,编辑过的地方亮绿色 |

时间与专注

不依赖工作阶次的时钟、计时器和提醒。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | pomodoro-widget | /pomodoro-widget [on\\|off\\|start\\|break\\|stop\\|<minutes>] | 专注计时器、倒计时、进度条和已完成工作阶次计数 | | countdown-widget | /countdown-widget [on\\|off\\|clear]、/countdown <HH:MM\\|<n>m\\|<n>h> [label] | 你设置的截止时间剩余时间、进度条,以及到点时的 toast | | clocks-widget | /clocks-widget [on\\|off\\|add <zone>\\|remove <zone>\\|clear] | 你当地的时间和添加的时区,例如 Asia/Tokyo | | notes-widget | /notes-widget [on\\|off\\|clear]、/note <text\\|done <n>> | 跨工作阶次保留的置顶笔记;/note <text> 添加一条,/note done <n> 删除一条 | | coffee-widget | /coffee-widget [on\\|off\\|refill\\|<minutes>] | 一杯在 90 分钟内逐渐喝完的咖啡,并提醒你休息 |

场景

会对工作阶次、工具调用、检查和上下文用量做出反应的像素画。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | pet-widget | /pet-widget [on\\|off\\|<mood>] | 像素螃蟹 Clawd:工作阶次进行时工作,工具调用失败时头晕,测试通过时开心。跨工作阶次获得 XP 并升级;badges-widget 发放徽章后会戴上帽子;打开两个工作阶次时,会留在你最近提示过的那个工作阶次里 | | aquarium-widget | /aquarium-widget [on\\|off\\|demo] | 每个正在运行的工具调用和代理对应一条鱼 | | skyline-widget | /skyline-widget [on\\|off\\|demo\\|clear] | 每个工作阶次一栋楼,每次工具调用一层楼 | | train-widget | /train-widget [on\\|off] | 火车头在本次工作阶次中每次工具调用拉一节车厢,颜色表示工具 | | garden-widget | /garden-widget [on\\|off\\|reset] | 一株植物:每次工具调用长一片叶子,检查通过时开花,调用失败时枯萎 | | campfire-widget | /campfire-widget [on\\|off\\|stoke] | 工具调用越多篝火烧得越旺,空闲时逐渐只剩余烬 | | constellation-widget | /constellation-widget [on\\|off\\|clear] | 每个工作阶次一颗星,连成星座,达到 9 颗后获得名称 | | fireworks-widget | /fireworks-widget [on\\|off\\|demo] | 检查通过时夜空放烟火,失败时放出哑炮 | | invaders-widget | /invaders-widget [on\\|off\\|demo\\|clear] | 每次检查失败出现一个入侵者;检查通过时将它们击落 | | weather-widget | /weather-widget [on\\|off\\|live\\|<percent>] | 上下文有空间时是晴天,接近压缩时变成暴风雨 | | boss-widget | /boss-widget [on\\|off] | 把上下文用量显示为 Boss 血条;压缩会击败它并开始下一关 | | sky-widget | /sky-widget [on\\|off] | 按你当地时间显示天空:白天是太阳,夜晚是月亮,工作阶次持续越久星星越多 | | world-widget | /world-widget [on\\|off\\|clear] | 一个场景包含全部内容:天空随时钟变化、天气随上下文变化、每个工作阶次一座塔、工具调用组成的火车,以及一只四处游荡的螃蟹 | | quest-widget | /quest-widget [on\\|off\\|reset] | 把工作阶次变成地牢探索:每个工作阶次一间房、每次工具调用一个怪物、检查通过时掉落战利品;英雄会跨工作阶次保留 | | race-widget | /race-widget [on\\|off\\|clear] | 把并行子代理显示成赛道上的赛车,每次工具调用前进一步,完成时登上领奖台 |

可视化工具

由工具活动驱动的抽象图像。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | mosaic-widget | /mosaic-widget [on\\|off\\|clear] | 每次工具调用一个色块,按工具着色;失败显示为红色 | | sorting-widget | /sorting-widget [on\\|off\\|step] | 正在排序的柱状图,每次工具调用交换一次 | | equalizer-widget | /equalizer-widget [on\\|off] | 每次工具调用跳动、随后回落的音量电平表 | | rain-widget | /rain-widget [on\\|off] | 下落的代码雨,工作阶次越忙速度越快 | | orbit-widget | /orbit-widget [on\\|off] | 一个小型太阳系;工具调用运行时行星加速 | | life-widget | /life-widget [on\\|off\\|reset] | Conway 的生命游戏;每次工具调用放下一架滑翔机 | | donut-widget | /donut-widget [on\\|off] | 旋转的 3D 甜甜圈;工具调用运行时转得更快 | | pipes-widget | /pipes-widget [on\\|off] | 管道屏保;工作阶次空闲时生长,Claude 工作时暂停 | | maze-widget | /maze-widget [on\\|off\\|new] | 从项目文件夹生成种子的一人称迷宫漫游 | | marquee-widget | /marquee-widget [on\\|off\\|clear\\|<text>] | 滚动工作阶次事件的 LED 跑马灯;其他文本会发布为你自己的标题 |

游戏

Snake、2048 和 Tetris 会自行游玩,直到你点击棋盘并接管按键。

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | snake-widget | /snake-widget [on\\|off] | Snake;在你接管按键前自行游玩 | | 2048-widget | /2048-widget [on\\|off] | 2048;在你接管按键前自行游玩 | | tetris-widget | /tetris-widget [on\\|off] | Tetris;在你接管按键前自行游玩 | | minesweeper-widget | /minesweeper-widget [on\\|off] | Minesweeper:点击揭开,右键或 f 插旗,r 重新开始 | | breakout-widget | /breakout-widget [on\\|off\\|reset] | 自动游玩的打砖块;每次工具调用增加一排砖块 | | typer-widget | /typer-widget [on\\|off] | 打字游戏:你自己的文件名中的单词落下,你要在它们落地前打出来 |

只是好玩

| 插件 | 命令 | 显示内容 | | --- | --- | --- | | fortune-widget | /fortune-widget [on\\|off\\|next] | 每个工作阶次都会改变的一行签语 | | 8ball-widget | /8ball-widget [on\\|off]、/8ball <question> | /8ball <question> 给出一个可靠性存疑的答案 | | badges-widget | /badges-widget [on\\|off\\|reset] | 跨工作阶次获得的成就,解锁成就时显示 toast | | sigil-widget | /sigil-widget [on\\|off\\|clear] | 根据本次工作阶次的活动生成像素徽记,并在旁边展示更早工作阶次的徽记画廊 | | sound-widget | /sound-widget [on\\|off\\|mute\\|test] | 每次工具调用一个音符,检查通过时一组和弦,失败时一声蜂鸣,并显示钢琴卷帘(音频只在 macOS 上播放) |

每个工作阶次都会保存并恢复放置位置、启用的 widget 和查看模式。

说明

  • /widgets width pet 60 设置一个 widget 卡片可以增长到的宽度(默认是 40 列);/widgets width pet reset 将其恢复。
  • /widgets side 只在全屏布局(/tui fullscreen)中把卡片停靠到 transcript 旁边。在默认布局中,它会退回到提示词下方。
  • 像素画只用终端块字符绘制,只会显示在终端中。
  • sound-widget 只在 macOS 上播放音频;其他平台保持静音,只绘制钢琴卷帘。
  • board-widget 注册一个 Claude 可以调用的 pin 工具,因此它的说明会在面板开启时成为上下文的一部分。
  • watch-widget 通过 sh -c 运行你的命令,失败时回退到 cmd /c。
  • 接管游戏以及进行 Minesweeper 都需要点击棋盘;全屏布局会报告这次点击。

开发

plugins/ 下的每个插件都是一个 mod:包含清单、hooks 模块和测试。

claude --plugin-dir plugins            # load every plugin from this checkout
claude plugin validate plugins/<name>  # check a manifest and hooks module
claude plugin test plugins/<name>      # run its tests

插件不能互相导入,因此 widgets 会将卡片堆叠和像素渲染器作为 $.widgets(plugins/widgets/hooks/kit.tsx)共享;每个 widget 都会调用它。

许可

MIT

安装

请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。

claude plugin marketplace add oMaN-Rod/claude-code-widgets
claude plugin install diff-widget
原文 / README

Claude Code Widgets

Small cards that sit under the Claude Code prompt, or docked beside the transcript in fullscreen. Each widget is its own mod, toggled with a slash command.

It started with a few useful ones (context, usage, file tree) and then got carried away: there are now 61 widgets, from git status and a turn timer to a pixel crab, a dungeon crawl and Tetris.

Install

Add the marketplace, then install the layout plugin and whichever widgets you want:

/plugin marketplace add oMaN-Rod/claude-code-widgets
/plugin install widgets@claude-code-widgets
/plugin install context-widget@claude-code-widgets

Every widget needs widgets, the layout plugin that places the cards.

Requires a Claude Code version with mod (function hook) support. The mod API is early access and may change between releases.

Widgets

Layout

Required by every widget.

| Plugin | Command | What it shows | | --- | --- | --- | | widgets | /widgets [side\|above\|below\|close\|<columns>\|width <widget> <columns\|reset>] | Places the cards: below the prompt, above it, or docked beside the transcript in fullscreen |

Session

What Claude is doing and what it is costing.

| Plugin | Command | What it shows | | --- | --- | --- | | context-widget | /context-widget [auto\|detailed\|grid\|top\|bar\|line] | The context window as a stacked bar, one colour per /context category | | usage-widget | /usage-widget | A bar per rate-limit window, time to reset, session cost | | timer-widget | /timer-widget [on\|off\|clear] | The running turn's elapsed time, plus last, average and longest turn and a sparkline | | activity-widget | /activity-widget [on\|off\|clear] | The latest tool calls with their duration and whether they failed | | tasks-widget | /tasks-widget [on\|off\|clear] | The task list Claude is working through, with a progress bar | | checks-widget | /checks-widget [on\|off\|clear] | The latest test, lint and build runs: pass or fail, duration and how long ago | | timeline-widget | /timeline-widget [on\|off] | The turn as a chart: one bar per tool call on a time axis, parallel calls stacked | | board-widget | /board-widget [on\|off\|clear] | A status board Claude writes itself through a pin tool: goal, findings and open questions | | forecast-widget | /forecast-widget [on\|off\|clear] | Context growth per turn as a chart, with the turns left before compaction | | guard-widget | /guard-widget [on\|off\|clear] | Permission checks this session: allowed, asked and denied, with what you keep being asked about | | stream-widget | /stream-widget [on\|off] | A live tokens-per-second gauge and sparkline while Claude is writing (estimated from text length) | | sessions-widget | /sessions-widget [on\|off] | The other Claude Code sessions open on this machine: folder, branch, busy or idle |

Project and git

The state of the working tree.

| Plugin | Command | What it shows | | --- | --- | --- | | file-tree-widget | /file-tree-widget | The project directory; folders expand on click | | git-widget | /git-widget | Branch, ahead/behind, staged, changed and untracked counts, and the last commit | | changes-widget | /changes-widget [on\|off\|clear] | Files edited this session, most recent first, with an edit count each | | commits-widget | /commits-widget | The commits made since the session started | | todos-widget | /todos-widget | TODO, FIXME, HACK and XXX comments in tracked files, counted and listed | | diff-widget | /diff-widget [on\|off\|clear] | The last edit as a syntax-highlighted diff | | watch-widget | /watch-widget [on\|off\|run\|stop], /watch <command> | /watch bun test reruns the command after every edit: a pass or fail light and the last failing lines | | map-widget | /map-widget [on\|off\|clear] | A pixel map of the tracked files, lit blue where Claude has read and green where it has edited |

Time and focus

Clocks, timers and reminders that do not depend on the session.

| Plugin | Command | What it shows | | --- | --- | --- | | pomodoro-widget | /pomodoro-widget [on\|off\|start\|break\|stop\|<minutes>] | A focus timer with a countdown, a progress bar and a count of finished sessions | | countdown-widget | /countdown-widget [on\|off\|clear], /countdown <HH:MM\|<n>m\|<n>h> [label] | Time left to a deadline you set, with a progress bar and a toast when it arrives | | clocks-widget | /clocks-widget [on\|off\|add <zone>\|remove <zone>\|clear] | Your local time beside the time zones you add, such as Asia/Tokyo | | notes-widget | /notes-widget [on\|off\|clear], /note <text\|done <n>> | Pinned notes kept across sessions; /note <text> adds one, /note done <n> removes it | | coffee-widget | /coffee-widget [on\|off\|refill\|<minutes>] | A cup that empties over 90 minutes and nudges you to take a break |

Scenes

Pixel art that reacts to turns, tool calls, checks and context usage.

| Plugin | Command | What it shows | | --- | --- | --- | | pet-widget | /pet-widget [on\|off\|<mood>] | Clawd, a pixel crab: works during a turn, dizzy when a tool call fails, happy when tests pass. Earns XP and levels up across sessions, wears a hat once badges-widget has awarded a badge, and with two sessions open stays in the one you last prompted | | aquarium-widget | /aquarium-widget [on\|off\|demo] | A fish for every running tool call and agent | | skyline-widget | /skyline-widget [on\|off\|demo\|clear] | One building per turn, one floor per tool call | | train-widget | /train-widget [on\|off] | A locomotive pulling one wagon per tool call this turn, coloured by tool | | garden-widget | /garden-widget [on\|off\|reset] | A plant: a leaf per tool call, a flower when checks pass, wilting when a call fails | | campfire-widget | /campfire-widget [on\|off\|stoke] | A campfire that burns higher with tool calls and dies down to embers when idle | | constellation-widget | /constellation-widget [on\|off\|clear] | A star per turn, joined into a constellation that gets a name after nine | | fireworks-widget | /fireworks-widget [on\|off\|demo] | A night sky that sets off fireworks when checks pass, and a dud when they fail | | invaders-widget | /invaders-widget [on\|off\|demo\|clear] | An invader arrives for every failing check; passing checks shoot them down | | weather-widget | /weather-widget [on\|off\|live\|<percent>] | Clear sky when context has room, a storm near compaction | | boss-widget | /boss-widget [on\|off] | Context usage as a boss health bar; compaction defeats it and starts the next level | | sky-widget | /sky-widget [on\|off] | The sky at your local time: sun by day, moon by night, more stars the longer the session runs | | world-widget | /world-widget [on\|off\|clear] | One scene for everything: sky by the clock, weather by context, a tower per turn, a train of tool calls and a wandering crab | | quest-widget | /quest-widget [on\|off\|reset] | The session as a dungeon crawl: a room per turn, a monster per tool call, loot when checks pass; the hero is kept across sessions | | race-widget | /race-widget [on\|off\|clear] | Parallel subagents as cars on a track, one stride per tool call, with a podium as they finish |

Visualizers

Abstract pictures driven by tool activity.

| Plugin | Command | What it shows | | --- | --- | --- | | mosaic-widget | /mosaic-widget [on\|off\|clear] | One tile per tool call, coloured by tool; failures are red | | sorting-widget | /sorting-widget [on\|off\|step] | A bar chart being sorted, one swap per tool call | | equalizer-widget | /equalizer-widget [on\|off] | Level meters that jump with each tool call and fall back to rest | | rain-widget | /rain-widget [on\|off] | Falling code rain that speeds up the busier the turn gets | | orbit-widget | /orbit-widget [on\|off] | A small solar system; the planets speed up while tool calls run | | life-widget | /life-widget [on\|off\|reset] | Conway's Game of Life; every tool call drops a glider | | donut-widget | /donut-widget [on\|off] | The spinning 3D donut; it spins faster while tool calls run | | pipes-widget | /pipes-widget [on\|off] | The pipes screensaver; it grows while the session is idle and pauses while Claude works | | maze-widget | /maze-widget [on\|off\|new] | A first-person walk through a maze seeded by the project folder | | marquee-widget | /marquee-widget [on\|off\|clear\|<text>] | An LED ticker scrolling session events; any other text posts your own headline |

Games

Snake, 2048 and Tetris play themselves until you click the board and take the keys.

| Plugin | Command | What it shows | | --- | --- | --- | | snake-widget | /snake-widget [on\|off] | Snake; it plays itself until you take the keys | | 2048-widget | /2048-widget [on\|off] | 2048; it plays itself until you take the keys | | tetris-widget | /tetris-widget [on\|off] | Tetris; it plays itself until you take the keys | | minesweeper-widget | /minesweeper-widget [on\|off] | Minesweeper: click to reveal, right-click or f to flag, r to restart | | breakout-widget | /breakout-widget [on\|off\|reset] | A self-playing brick breaker; every tool call adds a row of bricks | | typer-widget | /typer-widget [on\|off] | A typing game: words from your own file names fall, and you type them before they land |

Just for fun

| Plugin | Command | What it shows | | --- | --- | --- | | fortune-widget | /fortune-widget [on\|off\|next] | A one-line fortune that changes with every turn | | 8ball-widget | /8ball-widget [on\|off], /8ball <question> | /8ball <question> gives an answer of doubtful reliability | | badges-widget | /badges-widget [on\|off\|reset] | Achievements earned across sessions, with a toast when one unlocks | | sigil-widget | /sigil-widget [on\|off\|clear] | A pixel emblem generated from this session's activity, beside a gallery of the ones from earlier sessions | | sound-widget | /sound-widget [on\|off\|mute\|test] | A note per tool call, a chord when checks pass, a buzz on failure, with a piano roll (audio plays on macOS only) |

Placement, which widgets are on, and view modes are saved and restored in every session.

Notes

  • /widgets width pet 60 sets how wide one widget's card may grow (the default is 40 columns); /widgets width pet reset puts it back.
  • /widgets side docks the cards beside the transcript only in the fullscreen layout (/tui fullscreen). In the default layout it falls back to below the prompt.
  • The pixel art is drawn with terminal block characters and shows in the terminal only.
  • sound-widget plays audio on macOS only; elsewhere it stays silent and just draws the piano roll.
  • board-widget registers a pin tool that Claude can call, so its description is part of the context while the board is on.
  • watch-widget runs your command through sh -c, falling back to cmd /c.
  • Taking over a game, and playing Minesweeper at all, needs a mouse click on the board, which the fullscreen layout reports.

Develop

Each plugin under plugins/ is a mod: a manifest, a hooks module and its tests.

claude --plugin-dir plugins            # load every plugin from this checkout
claude plugin validate plugins/<name>  # check a manifest and hooks module
claude plugin test plugins/<name>      # run its tests

Plugins cannot import from one another, so widgets shares card stacking and the pixel renderer as $.widgets (plugins/widgets/hooks/kit.tsx), which every widget calls.

License

MIT

更多类似作品