recoup-deal-dashboard
Use when building, refreshing, validating, or QC-ing the customer-facing executive dashboard (DASHBOARD.html) for a music catalog deal. Trigger on "build the dashboard", "render the dashboard", "create the executive dashboard", "refresh DASHBOARD.html", "QC the deal", "run the pre-share gate", "check the deal before sharing", or any phase of /recoup-deal-start that produces the customer's read-the-deal artifact.
What this skill does
# Deal Dashboard
The dashboard is the deal's WOW moment. It is the single artifact the
customer opens when they want to know what you found and what to do
next. Treat it as the deliverable.
## Output contract
- **Single file**: `deals/{deal-id}/DASHBOARD.html`
- **Self-contained**: external resources only from the CDN allowlist
(Chart.js, D3, Plotly, Tailwind via cdn.jsdelivr.net /
cdnjs.cloudflare.com / unpkg.com). No other `<script src>`. No
`<iframe>`. No `<object>`. No `<embed>`.
- **Verified by `scripts/validate-dashboard.py`** before the run can
finish. The validator runs after you write the file. Read its output
and fix issues before claiming completion.
You have full creative freedom on layout, chart types, interaction
patterns, narrative flow, and depth. Use that freedom to tell the
catalog's specific story. Different deals deserve different shapes.
## What the dashboard MUST contain
These markers must be present somewhere on the page. The validator
checks for them via text search. Beyond these requirements, the
structure is yours.
1. **Status indicator** — `ready`, `review_needed`, or `blocked`,
matching the open findings tally.
2. **KPI section** — at least normalized NPS or NLS. Top-1
concentration when it's material. Open finding counts.
3. **Findings/blockers section** — every open critical or high finding
visible somewhere on the page (collapsed sections are fine; hidden
tabs are fine; absent is not).
4. **Evidence trail** — every material claim either matches a value in
a workpaper JSON file (within 5% rounding tolerance) or carries a
`data-evidence`, `data-source`, or `data-derived` attribute. See
"Trust contract" below.
5. **"What you can do next"** — recommendations section pointing at
what would tighten the bracket. Read
`workpapers/recommendations.json` if it exists; that's a starting
point you can restructure freely or override when the deal's story
calls for different framing.
## What the dashboard SHOULD contain (when the data exists)
- Value bracket — downside / base / upside from
`workpapers/valuation-summary.json#scenarios`.
- NPS bridge — from `workpapers/nps-bridge.json`.
- NLS bridge — from `workpapers/nls-bridge.json`.
- Provider mix — aggregated from `normalized/royalty-ledger.csv`.
- Top-N catalog assets — from `workpapers/concentration-analysis.json`
or aggregated from the ledger.
- Quarterly or monthly trend — aggregated from the ledger.
- Open seller requests — from `findings/missing-files.md`.
If a workpaper does not exist, render a placeholder that says so, or
leave the section out and explain in the narrative.
## What you CAN add (encouraged when the deal asks for it)
- Tabs to organize a complex story (e.g., publishing tab, masters tab,
neighboring rights tab).
- Scenario sliders or toggles (e.g., toggle Bright Lights decay curves;
flip recoupment branches).
- Side-by-side comparisons (reported vs normalized; pre-recoupment vs
post-recoupment).
- Decay sweeps with multiple curves on one chart.
- Per-finding sensitivity tables ranked by valuation swing.
- Recoupment NPV branch trees.
- Foreign-society coverage matrices.
- Embedded narrative paragraphs that tell the catalog's story.
- Drill-down accordions for the curious analyst.
- A "data sources" footer linking each section to its workpaper file.
- Anything else the deal's specific shape calls for.
## Trust contract — non-negotiable
The dashboard goes to a customer. They might forward it to an IC, a
lender, or counsel. Every number on the page has to be defensible.
### Three ways a `$`-figure on the page is considered trustworthy
1. **Matches a workpaper value within 5%.** The validator builds a
"truth set" from the source files (royalty-ledger sums, valuation-
summary scenarios, bridge amounts and running totals, concentration
top-10, etc.). If a `$`-claim on the page is within 5% of any
value in the truth set, it's accepted automatically.
2. **Lives inside an element with `data-evidence="EV-NNN"`** that
resolves to a real entry in `evidence-ledger.json`. Use this for
numbers that came directly from a source file (e.g., a contract,
a single ledger row).
```html
<div class="kpi" data-evidence="EV-007">
<label>Atlas admin overlay</label>
<div class="v">$7,254</div>
</div>
```
3. **Lives inside an element with `data-derived="<reason>"`.** Use
this when the dashboard derives a value from primary numbers (a
sum, a difference, a probability-weighted NPV) that is NOT in any
workpaper. The reason text becomes part of the audit trail.
```html
<p data-derived="weighted by 30/25/25/20 branch probabilities">
Weighted NLS NPV is <strong>$113,930</strong>.
</p>
```
You may also mark whole sections with `data-source="workpapers/path.json"`
if every claim inside ties back to that file.
### What the validator will reject
- A `$`-figure on the page that does not match the truth set AND has
no `data-evidence` / `data-source` / `data-derived` ancestor.
- An external `<script src>` not in the CDN allowlist.
- `<iframe>`, `<object>`, `<embed>` tags.
- `eval(`, `Function(`, `document.write(` in inline JS.
- Files smaller than 5 KB (likely empty/broken) or larger than 5 MB
(likely accidentally embedded a CSV in the HTML).
- Files that don't parse as HTML.
- A page missing any of the five required markers above.
If the validator returns errors, **read them**, fix the dashboard,
and rebuild. Do not claim the run is complete until the validator
passes.
## Source files to read
| Path | What's in it |
| --- | --- |
| `deals/{deal-id}/assumptions.yaml` | `deal.deal_name`, workflow type, valuation_date, currency, materiality thresholds. |
| `deals/{deal-id}/normalized/royalty-ledger.csv` | Every normalized statement line. Aggregate freely. |
| `deals/{deal-id}/findings/findings.json` | Every structured finding with severity and status. |
| `deals/{deal-id}/findings/missing-files.md` | Open requests for the seller. |
| `deals/{deal-id}/evidence-ledger.json` | Evidence entries to cite via `data-evidence`. |
| `deals/{deal-id}/workpapers/valuation-summary.json` | Normalized NPS/NLS, scenario brackets. |
| `deals/{deal-id}/workpapers/nps-bridge.json` | Reported→normalized NPS waterfall. |
| `deals/{deal-id}/workpapers/nls-bridge.json` | Reported→normalized NLS waterfall. |
| `deals/{deal-id}/workpapers/concentration-analysis.json` | Top-N asset, provider, territory shares. |
| `deals/{deal-id}/workpapers/ingest-coverage.json` | "X of Y files contributed financial data" line. |
| `deals/{deal-id}/workpapers/recommendations.json` | Optional structured starting point for the recommendations section. |
Any other JSON under `workpapers/` (recoupment NPV, decay scenarios,
sensitivity tables, custom analyses) is fair game. Read them if they
help tell the story; ignore them if they don't.
## Quality bar
The dashboard is a customer deliverable, not a debug dump. Apply a
designer's eye:
- **Hierarchy.** The first thing the customer sees should be the
headline — value bracket, status, top blocker. Detail comes after.
- **Restraint.** Neutral palette (slate, dark amber for warnings, no
saturated brand colors). Lots of whitespace. One purposeful chart
per question, not five charts that all show the same thing.
- **Typography.** System sans-serif stack. No more than two type
weights. Numbers in a tabular figure feature when alignment matters.
- **Accessibility.** Semantic HTML (`<section>`, `<header>`,
`<nav>`). `aria-label` on charts. Color contrast ≥ 4.5:1 for body
text. Don't rely on color alone to convey severity — pair with
shape, label, or icon.
- **Responsiveness.** Works on a 1280px laptop and on a 600px phone.
Tables scroll horizontally rather than overflowing.
- **Self-explanatory.** A reader who has never seen the catalog should
understand the headline within 10 seconds of opening the page.
## Workflow
1. Read the sourceRelated in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.