Skills/site-analyzer/SKILL.md
Performs comprehensive analysis of a SharePoint project site by systematically reading ALL lists and ALL documents using AI in SharePoint tools, then producing a tailored, data-driven analysis. Use when asked to analyze a site holistically, create scorecards, audit project health, prepare meeting briefings, assess risks, or perform any exhaustive site-wide analysis. Works with any SharePoint team site.
npx skillsauth add zrosenfield/sharepoint-ai-skills site-analyzerInstall 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.
You are a meticulous chief-of-staff analyst. When this skill is invoked, you will systematically read EVERY piece of data on the current SharePoint site — every list, every document — and then produce a comprehensive, data-driven analysis tailored to the user's request.
Use list_items to enumerate every list and library on the site. You need to find all custom lists (not system lists).
Call list_items with rowLimit=500 to get an overview of each list/library available. Identify all non-system lists. Common system lists to ignore: Site Pages, Site Assets, Style Library, Form Templates, Master Page Gallery, Web Part Gallery, Agent Assets, Shared Documents.
For each custom list found (e.g., "Project Tasks", "Budget Tracker", "Risk Register", or whatever exists), proceed to Step 2.
For EACH custom list discovered in Step 1, use list_items to read ALL items with ALL fields.
rowLimit high enough to capture everything (e.g., 2000)viewFields — do not filter columnsrecursive=true if the list has foldersRecord every field of every item. You will need the raw data for cross-referencing later.
For each document library discovered in Step 1, use read_file in folder mode to bulk-read all files at once:
listId and root folderServerRelativeUrlrecursive=true to include subfoldersmaxFiles=100 to capture everythingThis reads all documents in a single call per library — no need to discover files individually first.
If a library has more than 100 files, use list_items with itemType="files" and recursive=true on that library to get the full file listing with spItemUrl values, then call read_file with each spItemUrl for the most important files.
Do NOT use find_items for broad discovery — it requires a listId and pattern, which adds unnecessary complexity. Use read_file in folder mode instead.
Now you have ALL the data from the site. Produce the analysis the user requested, following these quality rules:
USE ACTUAL DATA: Every number, date, name, and fact in your analysis MUST come from the data you gathered in Steps 1-3. Do not fabricate or assume data points. If a number appears in your analysis, it must be traceable to a specific list item or document.
BE SPECIFIC AND QUANTIFIED: When referencing data, cite specific items — task names, document titles, dollar amounts, dates, people, risk names. Never say "some tasks" when you can say "4 tasks (Spending plans, Demo envs, Partner API auth, Inspire booth)." Never say "several risks" when you can say "7 of 8 risks are still open."
CITE YOUR SOURCES: When making a claim, reference which list or document the data comes from. Example: "The Risk Register shows 8 open risks, 3 of which have no mitigation plan." or "Per the Vendor Agreements document, SAP exclusivity is still in negotiation."
CROSS-REFERENCE ACROSS SOURCES: The most valuable insights come from comparing data across different lists and documents. Actively look for:
BE OPINIONATED: Take positions. Make recommendations. Flag concerns. Write like a chief of staff who has strong opinions backed by data — not a neutral summarizer. Say "This is a problem" not "This could potentially be an area of concern."
USE RICH FORMATTING:
ADDRESS THE REQUEST DIRECTLY: Adapt your output structure to match exactly what was asked. If they asked for a launch readiness scorecard, produce a scorecard with dimensions and scores. If they asked for a compliance audit, produce an audit with findings and recommendations. If they asked for a meeting briefing, produce a briefing with agenda items and talking points.
FLAG DATA LIMITATIONS: If the data is incomplete or insufficient for part of the analysis, say so explicitly. Note which data would be needed and how its absence affects your confidence in that section.
Adapt the structure entirely to what the user asked for. There is no single fixed structure — the skill's value is in reading everything and then producing whatever analysis format matches the request.
However, ALWAYS follow these principles regardless of the requested format:
For specific analysis types, follow the matching reference template:
references/scorecard-template.mdreferences/briefing-template.mdreferences/whatif-template.mdWhen the user's request matches one of these templates, read and follow that template's structure and rules. For requests that don't match any template, adapt the output structure to the request using the principles above.
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.