zrosenfield/sharepoint-ai-skills/list-formatting

Claude Code and agent skill by zrosenfield/sharepoint-ai-skills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Create beautiful, functional SharePoint list and library formatters using JSON. Use this skill whenever the user asks to style, format, beautify, or customize the appearance of a SharePoint list, library, view, column, or form. Trigger phrases include "style my list", "format my list", "make my list pretty", "make my library beautiful", "style my library", "customize my view", "format my columns", "card layout", "tile view", "add icons to my list", "color code my list", "conditional formatting"…

Install

npx vskill@latest install zrosenfield/sharepoint-ai-skills/list-formatting

SKILL.md

SharePoint List Formatting Skill

Step 1: Load Additional References (if needed)

Scan the user's request and read any reference files that apply before responding:

If the request involves…Read…
Colors, icons, status indicators, severity styling, theme classes, font styling, background colors, any visual decorationreferences/visual.md
Buttons, Power Automate flows, hover cards, tile/gallery layouts, inline editing, group header/footer formatting, file previewsreferences/advanced.md
A named pattern (status pill, progress bar, card layout, Gantt, KPI dashboard, etc.), or the user asks for a template, example, or starting pointreferences/patterns.md

For open-ended "make it pretty" requests, read all three. When in doubt, read the file.


Step 2: Think Big Before You Build

When the user asks to "make it pretty", "style my view", or gives any open-ended visual request — do not default to incremental tweaks. Treat it as an invitation to fundamentally reimagine the experience.

Before touching JSON, ask yourself: What is the most dramatically better version of this list?

Default to transformation, not decoration:

  • Prefer a rowFormatter card layout over adding row highlight colors
  • Prefer a tile/gallery view over a plain list with styled columns
  • Prefer rich column formatters (status pills, avatar+name, progress bars, due date urgency) over plain text with background colors
  • Propose a complete visual system — not isolated column tweaks

Name your vision first. Before producing JSON, describe what you're building in one sentence. This lets the user redirect before you build the wrong thing.

Propose the boldest option, then offer alternatives. Lead with the most dramatic transformation. Mention a simpler fallback if they want something lighter.


Formatting Scopes

Four distinct scopes — pick the right one, or combine them:

  • Column formatting — Styles a single column's cells. Applied via: Column Settings > Format this column > Advanced mode. @currentField is the column's value.
  • View formatting (row-level) — Styles entire rows or transforms the view layout. Applied via: View dropdown > Format current view > Advanced mode. Two approaches: additionalRowClass (conditional CSS class per row) or rowFormatter (full custom row layout).
  • Group header/footer formatting — Uses groupProps with headerFormatter/footerFormatter. Access group data with @group token.
  • Form formatting — Customizes new/edit/display form layout, headers, footers, and conditional show/hide.

JSON Schemas

Always include the correct $schema:

Formatter typeSchema
Column formattinghttps://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json
View with rowFormatterhttps://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json
View with additionalRowClass onlyhttps://developer.microsoft.com/json-schemas/sp/view-formatting.schema.json
Tile/gallery viewhttps://developer.microsoft.com/json-schemas/sp/v2/tile-formatting.schema.json

Element Types (elmType)

elmTypeDescription
divBlock container. Most common wrapper.
spanInline container. Good for text alongside other elements.
aHyperlink. Requires href attribute.
imgImage. Requires src. Subject to domain restrictions.
svg / pathVector graphics. path requires d attribute.
buttonClickable button. Requires customRowAction.
filepreviewDocument library thumbnail. Set src to @thumbnail.medium.

Key Properties

  • `txtContent` — Text content of the element (string or expression). If set, children are ignored.
  • `style` — CSS property/value pairs. Supports layout (display, flex-*, position), sizing, spacing, background, border, text, and transform: translate(). Use flexbox; float is deprecated.
  • `attributes` — HTML attributes: href, src, class, target, title, role, iconName (Fluent UI icon), d (SVG path), data-interception.
  • `children` — Array of child element objects. Ignored if txtContent is set.
  • `forEach` — "iteratorName in @currentField" — duplicates element for each value in a multi-value field. Cannot be on the root element.
  • `debugMode` — Set true to log errors to browser console.

Expressions

Prefer Excel-style (= prefix). Examples:

=if(@currentField == 'Done', 'sp-field-severity--good', '')
=if([$DueDate] <= @now, '#a4262c', 'inherit')
='mailto:' + @currentField.email
=toString(floor(@currentField * 100)) + '%'

Operators: +, -, *, /, %, ==, !=, <, >, <=, >=, &&, ||, ternary ?

String: toString(), toLowerCase, toUpperCase, indexOf, startsWith, endsWith, substring, replace, replaceAll, padStart, padEnd, split, join, length (array count only — not string length)

Number: Number(), abs, floor, ceiling, pow, cos, sin, toLocaleString()

Date: Date(), getDate, getMonth (0-based), getYear, addDays, addMinutes, toLocaleDateString(), toLocaleString()

Array: appendTo, removeFrom, indexOf, join, length

Images: getUserImage(email, size) — sizes: 'small'/'s', 'medium'/'m', 'large'/'l'

Special Tokens

TokenDescription
@currentFieldColumn value. In rowFormatter, always resolves to Title — use [$FieldName] instead.
@currentField.title / .email / .id / .picture / .department / .jobTitlePerson field sub-properties
@currentField.lookupValue / .lookupIdLookup field sub-properties
@currentField.descHyperlink description
@meCurrent user's email
@nowCurrent date/time (epoch ms)
@rowIndexZero-based row index
[$FieldInternalName]Another column's value. Spaces → _x0020_.
[$FieldName.title] / .email / .lookupValueSub-properties from another column
@thumbnail.small / .medium / .largeDocument library thumbnail URLs
@currentWebCurrent site URL
@group.fieldData.displayValue / @group.countGroup header/footer tokens

Column Types

TypeAccessNotes
Text / Choice@currentFieldDirect string
Number / Currency@currentFieldUse in math; toLocaleString() for display
Date/Time@currentFieldCompare with @now; 1 day = 86400000ms
Yes/No@currentFieldReturns 1 or 0, not true/false
Person@currentField.title, .email, .pictureObject
Multi-Person / Multi-Choice / Multi-LookupforEachUse forEach to iterate
Lookup@currentField.lookupValue, .lookupIdObject
Hyperlink@currentField (URL), @currentField.desc
Location@currentField.DisplayName, .City, .Latitude, .Longitude

Document library fields: [$FileLeafRef] (filename), [$FileRef] (full path), [$File_x0020_Type] (extension), [$Editor] (modified by), [$FileSizeDisplay], @thumbnail.medium.

Common Pitfalls

  1. Internal vs display names: Use internal names in [$...]. Spaces → _x0020_. Find via List Settings > column URL parameter Field=.
  2. `@currentField` in rowFormatter: Always resolves to Title. Use [$FieldName] for other columns.
  3. Person fields are objects: Use .title or .email, not the field reference directly.
  4. Yes/No is 0/1: Not true/false. =if(@currentField == 1, 'Yes', 'No').
  5. Date math in ms: @now + 259200000 = 3 days from now.
  6. `length` is not string length: It counts array items (multi-value fields only).
  7. External images blocked: Use Fluent UI icons, SVG, or theme classes instead.
  8. `additionalRowClass` + `rowFormatter` are mutually exclusive: rowFormatter wins.
  9. Wrong schema silently fails: Match schema to formatter type exactly.

Your Role

  1. Understand the context: Ask what columns exist, their types, and what visual outcome they want.
  2. Recommend the right scope(s): Column, view, group, or form formatting — or a combination.
  3. Generate valid JSON: Always include the correct $schema. Use Excel-style expressions.
  4. Explain what it does: Briefly describe the formatter and any columns it requires.

Interaction Pattern

  1. Ask what kind of list it is and what columns it has.
  2. Name your vision and propose 2–3 approaches ranked bold-to-simple (e.g., "Best: full card layout with status pills and avatars. Lighter: conditional row colors + styled status column.").
  3. Generate the formatter(s) once the user confirms.
  4. Provide the JSON and instructions for where to apply it.

Common Scenarios

Task/project lists: Lead with a rowFormatter card layout — status pills, due date urgency, progress bars, person avatars.

Document libraries: Lead with a tile/gallery view using filepreview thumbnails, file type icons, and modified-by fields.

Contact/people lists: Card layouts with getUserImage profile pictures, email/phone action buttons.

Status/tracking lists: Traffic light indicators, data bars, KPI aggregate footers.

Link/resource lists: Tile layouts with icons and category sections.

Event/calendar lists: Cards with date badges, countdown formatting, registration status.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
99
Repository forks
31
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/zrosenfield/sharepoint-ai-skills/list-formatting/badge)](https://verified-skill.com/skills/zrosenfield/sharepoint-ai-skills/list-formatting)

Something wrong with this skill or its page? Tell us.