DannyMac180/skills/tree/main/modsmith/templates/artifact-dashboard
이 mod 소개
프로젝트를 위한 공유 Kanban 보드이며 프롬프트 위에 실시간 한 줄 요약을 표시합니다.
보드는 데이터베이스가 있는 claude.ai artifact입니다. 카드마다 { title, column, owner } 문서 하나가 있습니다. 프로젝트에서 작업하는 모든 Claude 세션이 같은 카드를 읽고 쓰므로, 보드는 한 세션의 메모가 아니라 공유 프로젝트 상태입니다.
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add DannyMac180/skills claude plugin install artifact-dashboard
원문 / README
artifact-dashboard
A shared Kanban board for a project, with a live one-line summary of it above the prompt.
The board is a claude.ai artifact with a database: one document per card,
{ title, column, owner }. Every Claude session working on the project reads
and writes the same cards, so the board is shared project state rather than one
session's notes. This mod draws a line like this above the prompt:
▦ board todo 4 doing 2 review 1 done 9 · read 14:32 · Fix login → done
What it does
- Reads the board itself. It calls Claude Code's own
ArtifactDatatool through$.tool.call(action: 'list') and counts the cards per column. That's a tool call, not a model call, so it costs no tokens. - Watches Claude's writes. A
tool.callhook onArtifactDatasees every card Claude adds, moves or deletes on the linked board, and updates the summary immediately. Until the next read confirms them, the line saysunconfirmed. A write whoseif_versionpin missed (db_write.committed: false) is ignored. - Tells Claude the board exists. Once per conversation it adds a short
projectBoardblock (about 130 tokens) to the first message: the board's URL, the card shape, and the rule to read before writing, pin every write withif_version, and only move its own task's cards. - Never opens a permission dialog unasked. Before an automatic read it
asks
$.tool.check. If the answer isn'tallow, it skips the read and the line saysreading needs approval: run /board refresh.
Cost per turn
| When | Model tokens | Other |
| --- | --- | --- |
| First message of a conversation | about 130 input tokens, once (the projectBoard block). It sits in the cached prefix after that. | none |
| /board <url> mid-session | about 130 input tokens, once (the same brief, as the command's context) | one ArtifactData list |
| Turn end, after Claude wrote to the board | 0 | one ArtifactData list, if reading is allowed |
| Turn end, mirror older than 2 minutes | 0 | one ArtifactData list, if reading is allowed |
| Any other turn end | 0 | nothing |
| Drawing the line | 0 | reads $.state only |
The mod never calls $.model.* or spawns an agent. When Claude moves a card,
that's Claude's own tool call and is billed like any other tool call. Turn the
mod off with /board off: the line and the automatic reads stop at once, at
session start too, and stay off after a restart. The brief is not taken back
from a conversation that already carries it (that would re-render the cached
first message); conversations started while the mod is off get no brief.
Set up
- Ask Claude for the board, for example: "Make a Kanban artifact with a shared
database. Collection
cards, one document per card withtitle,column(backlog, todo, doing, review, blocked, done) andowner." Claude builds the page with the artifactdbcapability. - Link it. You can do this per machine:
/board https://claude.ai/artifact/<id>(optionally followed by a collection name), which is stored per project root in this mod's$.store. Or link it once for everyone by committing.claude/board.json:
The repo file wins over the stored link, so every session in the project finds the same board.{ "url": "https://claude.ai/artifact/<id>", "collection": "cards" } - Optional: to let the mod read on its own, allow
ArtifactDatain your permission settings. Without that, run/board refreshwhen you want a read. An allow rule forArtifactDataalso lets Claude write without asking, so choose deliberately.
Commands
/board shows the status. The subcommands:
/board <url> [collection]links a board./board refreshreads it now, and may ask for permission./board offand/board onturn the mod off and on./board forgetdrops the stored link.
Composes with
- Any band mod (token-weather and others). It draws
{await next(e)}under its own line, so other mods' bands still show. - A next-steps supervisor or quiz mod. The summary is plain
$.statethat any plugin can read:$.state.get({ plugin: 'artifact-dashboard', key: 'view' })gives{ columns, total, readAt, isConfirmed, lastMove, note }. A supervisor mod can put that in its fork's prompt and ask "did this turn move the card it should have?" without a board read of its own (a fork has no tools). - A mode selector. Another plugin can hide the board for a mode by hooking
state.seton{ plugin: 'artifact-dashboard', key: 'isOff' }.
Load it
claude plugin validate templates/artifact-dashboard
claude plugin test templates/artifact-dashboard
claude --plugin-dir templates/artifact-dashboard
It needs a session where ArtifactData exists, meaning one signed in to
claude.ai with artifacts. Without it, the line shows the last stored mirror and
says the tool isn't available.
What it cannot see
- Changes made from the artifact page or by another session show up only at
the next read (a turn end after 2 minutes, or
/board refresh). Nothing pushes them to the mod. - It counts at most 1000 cards (one
listpage). Above that, the line says the counts are partial. - A card is any document with a
column(orstatus, orlane). Documents without one are not counted. - Claude's reads with
out_dir(documents saved to files) or a loweredas_levelare ignored: neither shows the board as it stands.profileslookups are ignored too.
