shabier/claude-plugins/tree/main/plugins/dashboard
dashboard
사이드 창의 Bento 그리드: 시계, 할 일, 컨텍스트 예측, git, Hacker News를 표시합니다. `/dash`로 엽니다.
이 mod 소개
dashboard
사이드 창의 Bento 그리드: 시계, 할 일, 컨텍스트 예측, git, Hacker News를 표시합니다. /dash로 엽니다.
명령
| 명령 | 기능 |
|---|---|
| /dash | 열거나 닫기 |
| /dash list | 모든 widget과 크기, 차지하는 크기 |
| /dash add <widget> [WxH] | 하나 추가. 지정하지 않으면 기본 크기 |
| /dash rm <widget> | 하나 제거. 데이터는 유지 |
| /dash size <widget> <WxH> | 크기 조정 |
| /dash reset | 기본 레이아웃으로 돌아가기 |
| /dash autostart on\|off | 세션 시작 시 열기. 기본값은 off |
키
창을 클릭하거나 ctrl+x tab을 눌러 키를 넘기고, Esc를 눌러 돌려줍니다.
할 일 타일이 키를 소유합니다. j, k로 이동하고 x로 완료하며 d로 삭제합니다. 마지막 행에도 표시됩니다. 두 번째 타일이 키를 가지면 n으로 포커스를 이동합니다.
프롬프트에 + buy milk를 입력하면 할 일이 추가되고 Claude에 전달되지 않습니다. 한 줄만 받으므로 붙여 넣은 diff도 그대로 처리됩니다.
위젯
| Widget | Sizes | Shows |
|---|---|---|
| clock | 2x1, 1x1 | 도트 매트릭스 시간, 날짜, 초 |
| todo | 2x2, 2x1, 4x1 | 목록 |
| context | 2x1, 2x2 | compaction point 비율, 남은 token, 현재 속도에서 남은 턴. API key에서는 비용을 표시하고 의미 없는 구독에서는 숨김 |
| git | 2x2, 4x2, 2x1 | 브랜치, 앞섬/뒤처짐, 최근 commit, +/- 막대가 있는 변경 파일 |
| hn | 2x2, 4x2, 2x1 | 상위 10개 story, 5분마다. 제목을 클릭하면 thread |
레이아웃 순서가 배치 순서입니다. 타일은 창을 채우도록 늘어납니다.
Git은 설계상 읽기 전용입니다. Claude가 편집할 때마다 그리고 10s마다 호스트는 고정된 읽기 명령 4개만 실행합니다. 타일은 Claude가 실행 중인 폴더를 따릅니다.
위젯 작성
hooks/widgets/<id>.ts를hooks/contract.ts의defineWidget로 작성합니다.hooks/widgets/index.ts에 추가합니다.claude plugin test plugins/dashboard를 실행합니다.
위젯은 순수합니다: init, update, draw, persist. $도 타이머도 없습니다. 호스트가 tick, 세션 번호, git, fetch, 저장소 같은 모든 효과를 소유하고 데이터를 전달합니다. 색은 hex가 아닌 tone을 사용합니다: fg dim faint accent add mod del info link. 링크는 tile.link를 통하며 https만 허용합니다.
테스트 스위트는 등록된 모든 위젯을 모든 크기에서 19개 입력으로 실행합니다. 예외가 없어야 하고, draw는 50ms 미만이며, 타일 밖으로 나가지 않고, 상태는 JSON 왕복을 통과해야 합니다. 런타임에 예외를 내는 위젯은 오류 타일이 되고 나머지는 계속됩니다.
contract: 1. 추가만 허용합니다. 깨뜨리면 v2가 되며 호스트는 모르는 버전을 거부합니다.
제한
- 높이만 바뀌는 창 크기 조정은 재적합하지 않습니다. Claude Code는 너비가 바뀔 때 다시 그립니다.
/dash를 전환하세요. - 새 세션은 첫 응답 후에 컨텍스트를 표시합니다.
- 남은 턴은 2번 응답해야 속도를 계산할 수 있습니다.
Credits: CREDITS.md.
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add shabier/claude-plugins claude plugin install dashboard
원문 / README
dashboard
A bento grid in the side pane: clock, todo, context forecast, git, Hacker News. /dash opens it.
Commands
| Command | Does |
|---|---|
| /dash | open or close |
| /dash list | every widget, its size, the sizes it takes |
| /dash add <widget> [WxH] | add one, default size unless given |
| /dash rm <widget> | remove one; its data stays |
| /dash size <widget> <WxH> | resize |
| /dash reset | back to the default layout |
| /dash autostart on\|off | open at session start. Off by default |
Keys
Click the pane or ctrl+x tab to give it the keys, Esc to hand them back.
The todo tile owns them: j k move, x done, d delete. Its last row says so too. n moves focus once a second tile has keys.
+ buy milk in the prompt adds a todo and never reaches Claude. Single lines only, so a pasted diff still does.
Widgets
| Widget | Sizes | Shows |
|---|---|---|
| clock | 2x1, 1x1 | time in dot-matrix, date, seconds |
| todo | 2x2, 2x1, 4x1 | the list |
| context | 2x1, 2x2 | share of the compaction point, tokens left, turns left at the current pace. Cost on API keys; hidden on subscriptions, where it means nothing |
| git | 2x2, 4x2, 2x1 | branch, ahead/behind, recent commits, changed files with +/- bars |
| hn | 2x2, 4x2, 2x1 | top 10 stories, every 5 min. Click a title for the thread |
Layout order is packing order. Tiles stretch to fill the pane.
Git is read-only by construction: the host runs 4 fixed read commands and nothing else, after every edit Claude makes and every 10s. The tile follows the folder Claude runs in.
Writing a widget
hooks/widgets/<id>.ts, built withdefineWidgetfromhooks/contract.ts.- Add it to
hooks/widgets/index.ts. claude plugin test plugins/dashboard.
Widgets are pure: init, update, draw, persist. No $, no timers. The host owns every effect (ticks, session numbers, git, fetches, storage) and hands the data in. Colours are tones, never hex: fg dim faint accent add mod del info link. Links go through tile.link, https only.
The suite runs every registered widget through 19 inputs at every size: no throws, under 50ms a draw, nothing outside its tile, state through a JSON round trip. A widget that throws at runtime gets an error tile; the rest carry on.
contract: 1. Additions only. A break would be v2, and the host refuses versions it doesn't know.
Limits
- Height-only window resizes don't refit; Claude Code redraws on width. Toggle
/dash. - A fresh session shows context after its first response.
- Turns left needs 2 answered turns to have a pace.
Credits: CREDITS.md.
