Skills/operations/exec-report/SKILL.md
Generates a polished, self-contained HTML executive report or dashboard from any data source — SharePoint lists, CSV exports, or a user description. Use when asked to build an exec report, one-pager, summary page, status dashboard, project summary, business review, or any single-page visual summary of data. Interviews the user if data is incomplete, constructs a validated JSON document block by block, then renders it into a single sandbox-safe HTML file using the component library. No external dependencies — output runs inside a SharePoint sandboxed iframe.
npx skillsauth add zrosenfield/sharepoint-ai-skills exec-reportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generates a complete, self-contained HTML report by (1) interviewing the user or parsing their data, (2) constructing and validating a JSON document, then (3) rendering that JSON into HTML using assets/report-template.html. The JSON is the authoritative source of truth; the HTML is fully determined by it.
Check what the user has already provided before asking anything:
list_items on the relevant lists. Read all needed columns before proceeding.If the data or intent is not fully clear, ask these questions in a single message — not one at a time:
If the user's prompt already signals narrative intent (e.g., "the headline is the gap," "lead with urgency," "show the wins"), skip question 3 — you already have the answer.
Confirm your understanding before building the JSON.
The component sequence IS the story. Read references/components.md for the full component catalog, props schemas, and HTML patterns.
Always true:
hero — sets the company, label, and hero sentence.highlights — narrative "so what" belongs last.trend, one table, and one highlights per report.Narrative intent drives the block order:
| Intent | Typical sequence | Hero sentence shape | |---|---|---| | Achievement | hero → kpi-row → trend → bar-list → compare → status-grid → highlights | "We closed $X, up Y% from last quarter." | | Problem | hero → status-grid → compare → table → bar-list → highlights | "We enter Q3 with X open roles and a gap in Y." | | Status | hero → status-grid → kpi-row → compare → bar-list → highlights | "Here's where all six workstreams stand heading into Q3." |
The hero sentence signals intent to the reader. Achievement heroes lead with a number and a direction. Problem heroes lead with a situation. Status heroes lead with a scope statement.
Component selection guide:
| Data shape | Component |
|---|---|
| 2–4 headline numbers worth celebrating or tracking | kpi-row |
| Values over time (3+ periods) | trend |
| Category breakdown with relative sizes | bar-list |
| Structured numeric comparison (QoQ, YoY, plan vs. actual) | compare |
| Detailed row data (5+ items with 3+ fields) | table |
| Health or urgency status of multiple items | status-grid |
| Narrative insights: bright spots, risks, actions | highlights |
Hard rules:
kpi-row can show it larger.table for 2–4 numbers — use kpi-row.kpi-row is not mandatory — omit it when the story is problem- or urgency-forward and metrics are supporting context, not the lead.Construct the JSON object. Top-level structure:
report object (document metadata):
| Field | Required | Description |
|---|---|---|
| palette | yes | warm-paper, deep-ink, clean-white, or slate |
| footer_l | no | Left footer text, e.g. "Generated May 28, 2026" |
| footer_r | no | Right footer text, e.g. "47 deals analyzed" |
blocks array — ordered list of content blocks. Each block: type string + props object. See references/components.md for every component's full props schema.
Run every check before rendering. Fix any failure before proceeding.
Document level:
report.palette is one of: warm-paper, deep-ink, clean-white, slateblocks array has at least one entrytype is herotype is highlightsPer block:
type is one of: hero, kpi-row, trend, bar-list, compare, table, status-grid, highlightsData integrity:
kpi-row items count is 2–4bar-list shares: largest item = 1.0, all others ≤ 1.0trend data and labels arrays have the same length (3–12)trend prior_data (if present) same length as datacompare rows have dir set to "up" or "down" on every rowtable headers count matches every row's cell counthighlights items count is 3–5assets/report-template.html.{{REPORT_TITLE}} in <title> with a concise page title (company + report label).{{PALETTE_CLASS}} on <body> with palette- + the palette name (e.g. palette-warm-paper).hero block HTML (.rpt-header + .hero) and replace {{HERO}}.{{BLOCKS}}.{{FOOTER_L}} and {{FOOTER_R}} with footer text (or empty strings).{{INLINE_SCRIPT}} content. Include:
bar-list blocks are present)TREND_DATA array (if a trend block is present)If the site context specifies a folder for report output, save the file there after delivering it.
<script src> tags. All JavaScript must be inline.testing
--- name: review-council description: Convene a council of expert AI personas to review, stress-test, and improve any document, idea, proposal, or plan. Use this skill whenever the user asks to "review," "stress-test," "get feedback on," "critique," "poke holes in," "red team," "evaluate," "council," "panel review," or "get perspectives on" any content — whether it's an uploaded Word doc, Excel spreadsheet, PowerPoint deck, PDF, or just a raw idea typed into chat. Also trigger on phrases like "w
tools
Generates a polished, self-contained HTML heatmap scorecard — a weighted comparison matrix where entities (rows) are scored across dimensions (columns), with computed totals, rank badges, and a winner highlight. Use when asked to build a scorecard, comparison matrix, decision matrix, vendor evaluation, tool assessment, candidate scoring grid, competitive analysis, site-readiness matrix, or any weighted multi-criteria ranking. Interviews the user if entities or criteria are missing, constructs a validated JSON document, then renders it into a sandbox-safe HTML file using the component library. No external dependencies — output runs inside a SharePoint sandboxed iframe.
development
Generates a polished, self-contained HTML roadmap or milestone timeline from any project data — SharePoint lists, pasted tables, or a verbal description. Use when asked to build a project roadmap, product roadmap, migration timeline, release plan, onboarding sequence, run-of-show, phase plan, or any visual schedule showing items over time. Interviews the user if data is incomplete, constructs a validated JSON document, then renders it into a single sandbox-safe HTML file. Chooses between two layouts automatically: horizontal roadmap with swimlanes (for phase-range data) or vertical milestone list (for point-in-time events). No external dependencies — output runs inside a SharePoint sandboxed iframe.
development
Renders a polished, self-contained HTML briefing from any data source — SharePoint lists, uploaded documents, or a verbal description. Use when asked to build a competitor landscape, account brief, candidate summary, site inventory, board bio, speaker profile, partner overview, or any grid of profile cards or single-subject one-pager. Interviews the user if data is incomplete, constructs a validated JSON document, then renders it into a sandbox-safe HTML file using grid mode (2–8 subjects as responsive cards) or one-pager mode (1 subject as a rich briefing). No external dependencies — output runs inside a SharePoint sandboxed iframe.