From add
Generates a self-contained HTML project dashboard from .add/ project files, specs, docs, and git log. Shows requirement counts, feature status, milestones, cycles, and retro scores.
How this skill is triggered — by the user, by Claude, or both
Slash command
/add:dashboard [--open][--open]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a self-contained HTML dashboard at `reports/dashboard.html` by reading the project's `.add/` directory, specs, docs, and config. The file opens in the browser and gives anyone — developer, PM, or founder — a real-time picture of the project's state.
Generate a self-contained HTML dashboard at reports/dashboard.html by reading the project's .add/ directory, specs, docs, and config. The file opens in the browser and gives anyone — developer, PM, or founder — a real-time picture of the project's state.
Token economy: dashboard rendering is mechanical work. When sub-agent dispatch is available, delegate the bulk HTML generation to the fast tier per rules/model-roles.md; keep the frontier-model context for judgment — data selection, status interpretation, and final review.
.add/config.json — if not found, abort: "No ADD project found. Run /add:init first."${CLAUDE_PLUGIN_ROOT}/references/skill-epilogue.md.Read ALL of these source files. If a file doesn't exist, note it as missing and continue:
| Source | Path | Data |
|---|---|---|
| Config | .add/config.json | Project name, maturity level, WIP limit, current cycle |
| PRD | docs/prd.md | H2 headings = requirement sections, count total |
| Specs | specs/*.md | Feature name (H1), Status (frontmatter), AC count (lines with AC- prefix or - [ ]/- [x] under Acceptance Criteria heading) |
| Milestones | docs/milestones/*.md | Name, status, feature lists, completion dates |
| Cycles | .add/cycles/cycle-*.md | Cycle number, status, features, validation result |
| Learnings | .add/learnings.json | Entry count by category |
| Decisions | .add/decisions.md | Decision count (H2 sections) |
| Changelog | CHANGELOG.md | Version entries |
| Retro scores | .add/retro-scores.json | Score trend data (collab, ADD effectiveness, swarm) |
| Retros | .add/retros/retro-*.md | Dates and period summaries |
| Git log | git log --oneline | Recent commits, tags for releases |
Map ADD spec frontmatter Status: to dashboard positions:
| Spec Status | Dashboard Label | Hill % |
|---|---|---|
| Draft | draft | 10% |
| Approved | specced | 25% |
| (has plan) | planned | 40% |
| Implementing | in-progress | 60% |
| Complete | done | 90% |
| Blocked | blocked | off-hill |
Check if a corresponding plan exists in docs/plans/ to infer "planned" status.
Generate a single self-contained HTML file with ALL CSS in a <style> block and ALL JavaScript in a <script> block. No external CDN calls, no imports, no build step. Must work offline.
Colors, fonts, gradients, and card styling come from ${CLAUDE_PLUGIN_ROOT}/references/design-system.md — use its dark-background palette and accent gradient (project branding.palette override first, raspberry default).
Dashboard-specific semantic colors:
Sticky header with backdrop-filter: blur(12px), background: rgba(15,15,35,0.92):
#b00149, bold monospace 18pxVertical traceability chain rendered as connected flow nodes:
PRD Requirements → Specs → Acceptance Criteria → Verified/Done
[N total] [N total] [N total / N checked] [N done specs]
stroke-dasharray technique
rgba(255,255,255,0.1), fill: #22c55e, center text: percentageSVG hill using cubic bezier:
<path d="M 0 200 C 100 200, 150 20, 250 20 C 350 20, 400 200, 500 200" />
<circle> elements positioned by status %#b00149, #0ea5e9, #a855f7, #22c55e, #f59e0b<title> child for native tooltips: "{name} | {status} | {cycle} | {AC}% complete"Active cycle at top:
Past cycles as collapsed <details> accordion:
If no cycles: "No cycles yet — run /add:cycle to plan your first work batch."
Scan for human bottlenecks:
Each item as a card:
If empty: green card "All clear — no decisions pending."
Four large metric cards in a 2x2 grid:
.add/learnings.json.add/decisions.mdMaturity timeline: horizontal track POC → Alpha → Beta → GA with current level highlighted and pulsing dot.
If .add/retro-scores.json exists with entries, render SVG line chart:
<title> tooltipsAggregates .add/telemetry/*.jsonl (OpenTelemetry GenAI-aligned structured trace — see rules/telemetry.md). This is the only dashboard-side consumer of telemetry files; skills themselves never read them (AC-004).
Read path (AC-020, AC-024):
.add/telemetry/*.jsonl. If the directory is missing, render "Telemetry not enabled — run with telemetry.enabled: true in .add/config.json to capture per-skill cost/velocity."json.loads per line.Parse warnings: {N} malformed telemetry lines skipped in the Parse Warnings section at the bottom.Aggregations (AC-021, AC-022):
gen_ai.usage.cache_read_input_tokens (null-safe sum), total duration, success rate, mean cache_hit_ratio (ignore nulls).spec_id → cycle membership (read from .add/cycles/*.md). Totals: invocations, tokens, duration.spec_id. Totals same as per-cycle.Panel layout:
━━━ COST & VELOCITY ━━━
Period: last 30 days | Total invocations: N | Success rate: N.N% | Avg cache-hit ratio: N.NN
Per Skill (top 5 by invocations)
| Skill | Invocations | Input Tokens | Output Tokens | Cache Reads | Avg Duration | Cache-Hit Ratio |
|-------|-------------|--------------|---------------|-------------|--------------|-----------------|
| tdd-cycle | 42 | 521,400 | 134,820 | 398,200 | 38.1s | 0.76 |
...
[Inline SVG trend chart — tokens (left axis) & invocations (right axis) over 30 days]
Per Cycle
| Cycle | Invocations | Total Tokens | Duration | Success |
|-------|-------------|--------------|----------|---------|
...
Per Spec
| Spec | Invocations | Total Tokens |
|------|-------------|--------------|
...
SVG trend chart (AC-023): Inline <svg>, no <script>, no CDN. X-axis = day (last 30), left Y = tokens, right Y = invocations. Two <polyline> elements (tokens in var(--accent), invocations in var(--info)). Dots with <title> tooltips per day.
Cache-hit ratio presentation: if a skill's entries all have cache_hit_ratio: null, render "—" rather than 0.00 (distinguishes "unknown" from "no hits").
Export hint (static text in the panel):
Export telemetry to an OTel-compatible collector:
cat .add/telemetry/*.jsonl | jq -c '.' | vector --config otel.tomlor any of: Datadog, Honeycomb, Helicone, Langfuse, Braintrust (no translation needed — field names match OTel GenAI conventions).
Horizontal scrollable timeline with chronological events:
Event sources:
.add/retros/retro-*.md filenames.add/decisions.md if timestampedFilter buttons at top: All | Milestones | Specs | Releases | Retros | Decisions
@media print {
.site-nav { display: none; }
details { open; }
details[open] summary { display: none; }
body { background: white; color: black; }
.card { border: 1px solid #ccc; break-inside: avoid; }
}
If any source file had malformed frontmatter or couldn't be parsed, render a collapsed section at the bottom: "Parse Warnings: {N} files skipped" — expandable to show file paths and error descriptions.
Write the generated HTML to reports/dashboard.html. Create reports/ directory if needed.
Print to terminal:
✓ Dashboard generated → reports/dashboard.html
Open with: open reports/dashboard.html
Summary:
· [N] specs across [N] milestones
· [N] features on the hill, [N] done
· [N] items in your decision queue
· Active cycle: [cycle name or "none"]
If --open flag is provided, run open reports/dashboard.html (macOS) or xdg-open reports/dashboard.html (Linux) after generation.
End-of-skill epilogue: follow ${CLAUDE_PLUGIN_ROOT}/references/skill-epilogue.md (observation + learning checkpoint + progress tracking).
npx claudepluginhub mountainunicorn/add --plugin addGenerates a self-contained HTML progress dashboard from Plans.md, showing task counts, completion %, elapsed time, cost, and drift alerts. Automatically regenerates every 60 seconds.
Generates a tabbed project status artifact published via Claude's Artifact tool. Use for projects too big for a single update needing a shareable overview.
Generates a single-page markdown product status dashboard from knowledge files and MCP integrations like GitHub, Jira, Linear, showing OKR progress, sprint status, decisions, blockers, launches, and metrics.