oMaN-Rod/claude-code-widgets/tree/main/plugins/checks-widget
关于这个 mod
Claude Code Widgets
位于 Claude Code 提示框下方,或全屏时停靠在记录旁边的小卡片。每个 widget 都是一个独立 mod,通过斜杠命令切换。
最初只有几个实用 widget(上下文、用量、文件树),后来不断扩展:现在共有 61 个,从 git 状态和回合计时器,到像素螃蟹、地牢探险和 Tetris。
安装
先添加 marketplace,再安装布局插件和你想要的 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,版本更新时可能改变。
Widgets
布局
所有 widget 都依赖它。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| widgets | /widgets [side\|above\|below\|close\|<columns>\|width <widget> <columns\|reset>] | 摆放卡片:在提示框下方、上方,或全屏时停靠在记录旁边 |
工作阶段
Claude 正在做什么,以及这需要多少成本。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| 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] | 最新测试、代码检查和构建运行:通过或失败、耗时,以及距离现在有多久 |
| 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
工作树的状态。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| 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] | 最近一次编辑的语法高亮 diff |
| watch-widget | /watch-widget [on\|off\|run\|stop]、/watch <command> | /watch bun test 会在每次编辑后重新运行命令,显示通过或失败指示灯和最后几行失败信息 |
| map-widget | /map-widget [on\|off\|clear] | 受跟踪文件的像素地图:Claude 读过的位置亮蓝色,编辑过的位置亮绿色 |
时间与专注
不依赖工作阶段的时钟、计时器和提醒。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| 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] | 距离你设定的截止时间还有多久、进度条,以及到点时的提示 |
| 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 分钟内逐渐见底的咖啡,并提醒你休息 |
场景
会对回合、工具调用、检查和上下文用量作出反应的像素艺术。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| 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] | 将上下文用量显示为首领生命条;压缩会击败它并开始下一关 |
| 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] | 并行子代理是赛道上的赛车,每次工具调用前进一格,完成时登上领奖台 |
可视化工具
由工具活动驱动的抽象画面。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| 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 会自行游玩,直到你点击棋盘并接管按键。
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| 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] | 打字游戏:来自你自己文件名的单词落下,你要在它们落地前打出来 |
只是好玩
| Plugin | Command | 显示内容 |
| --- | --- | --- |
| fortune-widget | /fortune-widget [on\|off\|next] | 每回合都会改变的一行签语 |
| 8ball-widget | /8ball-widget [on\|off]、/8ball <question> | /8ball <question> 给出可靠性存疑的答案 |
| badges-widget | /badges-widget [on\|off\|reset] | 跨工作阶段获得的成就,解锁时会显示提示 |
| 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)中把卡片停靠在记录旁边。默认布局会改为放在提示框下方。- 像素艺术使用终端块字符绘制,只会显示在终端中。
sound-widget只在 macOS 上播放音频;其他平台保持静音,只绘制钢琴卷帘。board-widget注册一个 Claude 可以调用的pin工具,因此它的说明会在 board 开启时成为上下文的一部分。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
插件不能互相 import,因此 widgets 会通过 $.widgets(plugins/widgets/hooks/kit.tsx)共享卡片堆叠和像素渲染器,每个 widget 都会调用它。
许可证
MIT
安装
请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。
claude plugin marketplace add oMaN-Rod/claude-code-widgets claude plugin install checks-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 60sets how wide one widget's card may grow (the default is 40 columns);/widgets width pet resetputs it back./widgets sidedocks 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-widgetplays audio on macOS only; elsewhere it stays silent and just draws the piano roll.board-widgetregisters apintool that Claude can call, so its description is part of the context while the board is on.watch-widgetruns your command throughsh -c, falling back tocmd /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
