
Dashboard Template
Kiro Crew repo only: load this when a task will author or change a dashboard page.
Install
npx skills add kirodotdev/KiroCrew --skill dashboard-template -g -a claude-code -y- Repository
- kirodotdev/KiroCrew4.7k
- Category
- Testing
- Updated
- 3d ago
- License
- Apache-2.0
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- Yes, review before use
What it does
Kiro Crew repo only: load this when a task will author or change a dashboard page. A page never ships alone: the same PR carries its TypedDict contract, its provider, and a parity test that the two agree. Scaffold all four from one field list; read numbers from an existing fold, never type them.
Dashboard Template
A dashboard page is HALF of a template. The other half is a type, and the two halves are checked by different machines, which is why they drift.
This skill is the procedure for the
kirocrew-dashboard-authorcrewmate, whose spec isagent-spec.mdbeside this file: the charter (what it is for and what it may never do) plus the narrowed toolset that makes the charter true against a tool list rather than only against prose. A human or another agent following this file gets the same procedure. The gateway installs the spec as the owned agentkirocrew-dashboard-authorat every start (OWNED_KIRO_AGENT_FILES,_install_dashboard_author_agent), so a crewmate dispatched on it starts with this procedure as its prompt; a human or another agent loads this skill directly.
The page is inert html. The host sanitizes it, renders it, and binds text into it by
data-dashboard-field. No type checker is anywhere near that binding, because one half
is markup. So a page that reads settled while its provider fills settled_count
renders an empty cell, on a status board, forever, with nothing red anywhere.
Read the host before you write a page; it is short and it is the authority on what gets
refused. src/kiro_crew/dashboard/dynamic_cards.py holds normalize_card, which decides
whether a card is accepted at all, and
website/src/pages/chat/command-center/dashboardDocument.ts is what queries
[data-dashboard-field] and writes the text in.
You are done when four files and one registration line exist, not when the page looks right. Everything here is dev time: it lands through a pull request, mypy is blocking and the parity test is a gate. At run time the gateway evaluates none of it. A publisher supplies three sentences and nothing else.


