Skills/styling/list-styling/SKILL.md
Apply a visual style theme to any SharePoint list or document library using column formatting, view formatting, row templates, and tile layouts. Use this skill whenever the user asks to style, theme, or visually transform a list or library. The goal is "I can't believe that's SharePoint" impact — not just color swaps, but fully art-directed views. This skill works with any style token file.
npx skillsauth add zrosenfield/sharepoint-ai-skills list-stylingInstall 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.
Transform SharePoint lists and document libraries into fully art-directed views. This is not a color palette swap — it's a complete visual redesign using every formatting capability SharePoint provides.
The bar: "I can't believe that's SharePoint."
SharePoint provides four levels of formatting. A properly styled view uses MULTIPLE levels together. Do not stop at column formatting.
Per-column rendering. Controls how individual cell values display.
Adds CSS classes to existing rows. Lightweight — doesn't change layout.
REPLACES the entire row layout. This is the power move. Instead of SharePoint's default column grid, you define the complete HTML structure of each row.
rowFormatter key instead of additionalRowClass)Gallery/card view layouts. Each item renders as a card instead of a row.
Rule: Every style MUST use at least Level 1 + Level 3. Level 3 (rowFormatter) is what creates the "I can't believe it" impact. Column formatting alone is a 3/10.
Know the columns, their internal names, types, and Choice values. Get this from SHAREPOINT.md if available, or ask the user. Do not generate any JSON until you have the actual column names and Choice values.
Load the matching style-{name}/SKILL.md. It contains design tokens and a rowFormatter reference template. The column names in that template ([$Status], [$Progress], [$Deadline]) are example placeholders that almost certainly do not match the user's list.
The style file's rowFormatter uses reference column names: [$Title], [$FileLeafRef], [$Status], [$Progress], [$Deadline]. These are examples — the user's list will likely have different column names.
Before applying the rowFormatter, you MUST adapt it:
Identify which column in the user's list serves each role:
[$Title], [$FileLeafRef], [$ProjectName])[$Status], [$Phase], [$Stage])[$Progress], [$Completion], [$PercentComplete])[$Deadline], [$DueDate], [$TargetDate])Find-and-replace all [$ReferenceName] values in the rowFormatter JSON with the actual internal column names.
Update the status_colors if() expressions to use the actual Choice values from the user's list. If they use "Active" instead of "In Review", or "Complete" instead of "Published", remap accordingly using the same color logic from the style tokens.
If the user's list has ADDITIONAL columns not covered by the style template (e.g., Owner, Priority, Category), decide where to surface them:
If the user's list is MISSING a column the template expects (e.g., no Deadline column), remove that section from the rowFormatter rather than letting it error.
The style's rowFormatter is a reference implementation. Adapt it to the user's data — do not paste it verbatim.
A. Row Template (rowFormatter) — DO THIS FIRST
This is the centerpiece. The style token file defines the row layout structure. Generate the complete rowFormatter JSON that composes all columns into the styled row design.
B. Column Formatters — FOR COLUMNS NOT HANDLED BY rowFormatter If the row template covers Status, Progress, and Deadline inline, you may not need separate column formatters for those. But any column NOT included in the rowFormatter still needs its own formatter.
C. View Formatting — IF the style uses alternating rows or row highlighting
Add additionalRowClass only if the style specifies it AND only if you're NOT using a rowFormatter (the two conflict — rowFormatter replaces the row entirely, so additionalRowClass has no effect when rowFormatter is active).
D. Tile Formatting — IF the user wants a gallery/card view Generate tile formatting for card-based layouts.
Tell the user to create a new view named after the style (e.g., "Neobrutalism") so the formatting doesn't affect the default "All Items" view.
This is the most powerful tool. It replaces the entire row with a custom layout.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/view-formatting.schema.json",
"hideSelection": false,
"hideColumnHeaders": true,
"rowFormatter": {
"elmType": "div",
"style": { ... },
"children": [ ... ]
}
}
Key behaviors:
hideColumnHeaders: true — hides the default column headers since the row template defines its own layout[$InternalColumnName]Layout patterns the style file can define:
elmType: div, span, a, img, svg, path, buttonstyle objectborder-radius, text-transform, box-shadow, overflow, gap — all work#ffffff)txtContent — works for iconscustomRowAction with action: "defaultClick" — makes elements clickable to open the itemforEach — iterate over multi-value fields@currentField, [$ColumnName], @now, @me, @rowIndextoString(), Number(), toLocaleDateString(), if(), indexOf(), substring()backdrop-filter, gradients, rgb()/rgba()/hsl()additionalRowClass)if() beyond ~10 levels$schema_x0020_)additionalRowClass WITH rowFormatter (they conflict — rowFormatter wins)The difference between "formatted" and "I can't believe that's SharePoint":
| Formatted (3/10) | Styled (7/10) | Art-Directed (11/10) | |---|---|---| | Colored status pills | Status badges with style-specific shape/border | Full row template with composed status + progress + deadline in a card layout | | Default progress bar colors | Styled progress bar (height, border, colors) | Progress bar integrated into the row card with contextual coloring and inline label | | Date string | Date with overdue coloring | Composed deadline block with icon, date, sublabel, and conditional overdue treatment — all positioned within the row card | | Default row grid | Alternating row colors | Complete row template that recomposes the entire layout into the style's signature pattern | | No view changes | Custom view name | Custom view with rowFormatter + style-specific header treatment |
The token file defines the row template. The engine generates it. RALPH iterates until it hits 11/10.
Creating a styled view:
Important: Always create a new view. Never modify "All Items" or "All Documents" directly.
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.