DannyMac180/skills/tree/main/modsmith/templates/artifact-dashboard
artifact-dashboard
A shared Kanban board for a project, with a live one-line summary of it above the prompt.
關於這個 mod
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.
安裝
請先查看作者 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.

