ClaudeMods
☰
ZH-TW
● 0 人在線上 · 瀏覽 0 次
贊助提交作品
GitHub 儲存庫 · 發布者 oMaN-Rod

garden-widget

一株植物:每次工具呼叫長出一片葉子,檢查通過時開花,呼叫失敗時枯萎。

oMaN-Rod@oMaN-Rod

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

已翻譯

關於這個 mod

位於 Claude Code 提示列下方的小卡片,或在全螢幕時停靠在文字記錄旁。每個小工具都是獨立的外掛,使用斜線指令切換。

一開始只有幾個實用的小工具(上下文、用量、檔案樹),後來越做越多:現在共有 61 個小工具,從 git 狀態、回合計時器,到像素螃蟹、地城探險與 Tetris。

安裝

加入市集,接著安裝版面配置外掛與想使用的小工具:

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

每個小工具都需要 widgets,也就是負責放置卡片的版面配置外掛。需要支援 mod(function hook)的 Claude Code 版本;mod API 目前處於搶先體驗階段,版本更新時可能變更。

小工具

版面配置

每個小工具都需要。

| 外掛 | 指令 | 顯示內容 | | --- | --- | --- | | widgets | /widgets [side\|above\|below\|close\|<columns>\|width <widget> <columns\|reset>] | 將卡片放在提示列下方、上方,或全螢幕時停靠在文字記錄旁 |

工作階段

顯示 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] | 設定的截止時間剩餘時間、進度列,以及抵達時的提示訊息 | | 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] | 每回合一顆星,連成星座,累積九顆後得到名稱 | | 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] | 平行子代理程式是賽道上的車,每次工具呼叫前進一步,完成時登上頒獎台 |

視覺化工具

由工具活動驅動的抽象圖像。

| 外掛 | 指令 | 顯示內容 | | --- | --- | --- | | 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] | 康威生命遊戲;每次工具呼叫放下一架滑翔機 | | 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] | 跨工作階段取得的成就,解鎖時顯示提示訊息 | | sigil-widget | /sigil-widget [on\|off\|clear] | 依這個工作階段活動產生的像素徽記,旁邊是較早工作階段徽記的畫廊 | | sound-widget | /sound-widget [on\|off\|mute\|test] | 每次工具呼叫一個音符,檢查通過時一個和弦,失敗時一聲嗡鳴,附鋼琴卷軸(音訊僅在 macOS 播放) |

放置位置、啟用的小工具與檢視模式都會在每個工作階段儲存並還原。

注意事項

  • /widgets width pet 60 設定單一小工具卡片可延伸的寬度(預設是 40 欄);/widgets width pet reset 會還原。
  • /widgets side 只在全螢幕版面配置(/tui fullscreen)把卡片停靠在文字記錄旁;預設版面配置會改放到提示列下方。
  • 像素藝術使用終端機區塊字元繪製,只在終端機顯示。
  • 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)共享卡片堆疊與像素繪製器,每個小工具都會呼叫它。

授權

MIT

安裝

請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。

claude plugin marketplace add oMaN-Rod/claude-code-widgets
claude plugin install garden-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

更多類似作品