Skills/operations/dossier/SKILL.md
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.
npx skillsauth add zrosenfield/sharepoint-ai-skills dossierInstall 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 briefing 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/dossier-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:
Confirm your understanding before building the JSON.
Auto-detection rule:
Do not ask about mode unless the count is exactly 1 and the user has not indicated a preference.
Key facts hold structured, scannable, low-word-count data — the kind of facts a reader needs in 5 seconds. Rules:
"HQ | Austin, TX", "ARR | ~$40M est.", "Founded | 2019""Company description | This is a company that..." (belongs in summary)Tags are the fastest signal — 2–5 short labels that classify the subject. Use for: industry vertical, stage, geography, product category, or any grouping the reader uses for orientation.
Summary is 2–5 sentences of prose. Write in third person. Lead with the most important fact. No bullet points. This is the editorial paragraph — what an analyst would write.
Activity holds the 2–5 most recent, most relevant developments — in most-recent-first order. Each item gets a short date prefix (e.g., "Apr 2026") and a one-sentence description. For competitors: product launches, fundraises, acquisitions, executive changes. For candidates: recent projects, promotions, publications. For sites: content updates, ownership changes, traffic milestones.
Construct the JSON object. Top-level structure:
report object (document metadata):
| Field | Required | Description |
|---|---|---|
| title | yes | Page title, e.g. "Competitor Landscape — Q2 2026" |
| subtitle | no | Optional subtitle shown below title |
| palette | yes | warm-paper, deep-ink, clean-white, or slate |
| mode | no | "grid", "one-pager", or "auto" (default: "auto") |
| footer | no | Footer text, e.g. "Prepared May 28, 2026 · Confidential" |
subjects array — ordered list of subject objects (1–8 items):
| Field | Required | Description |
|---|---|---|
| id | yes | Unique slug, e.g. "acme-corp" |
| name | yes | Subject display name |
| type | yes | Category label shown as a pill, e.g. "Competitor", "Prospect", "Enterprise Site" |
| status | no | Status label text, e.g. "Active", "Watch", "Inactive" |
| status_color | no | green, amber, red, gray, or blue |
| key_facts | yes | Array of {label, value} pairs, 2–6 items |
| tags | yes | Array of strings, 1–6 tags |
| summary | yes | 2–5 sentence prose paragraph |
| activity | no | Array of {date, text} items, 0–5, most-recent first |
Run every check before rendering. Fix any failure before proceeding.
Document level:
report.palette is one of: warm-paper, deep-ink, clean-white, slatesubjects array has 1–8 entriesreport.mode is "grid", "one-pager", or "auto" (or omitted)Per subject:
id is present and uniquename and type are present and non-emptykey_facts has 2–6 items; each item has label and valuetags has 1–6 itemssummary is present and 2–5 sentencesstatus_color (if present) is one of: green, amber, red, gray, blueactivity items (if present) each have date and text; at most 5 itemsData integrity:
key_facts value is a sentence — values must be short labelsassets/dossier-template.html.{{REPORT_TITLE}} in <title> with a concise page title.{{PALETTE_CLASS}} on <body> with palette- + the palette name.report.mode is "auto" or omitted, use "grid" for 2–8 subjects and "one-pager" for 1 subject.{{PAGE_HEADER}} with the .rpt-header strip (title + optional subtitle).{{CONTENT}} with the rendered subjects — either the grid of cards or the one-pager layout. See references/components.md for exact HTML patterns.{{FOOTER}} with the footer text (or empty string).<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
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.