Skills/styling/style-retro/SKILL.md
Retro Memphis style tokens and row template for the list-styling skill. Bright contrasting colors, colored shadows, playful stacked card with a status-colored top banner and large progress number. Layout is a stacked vertical card with a bold colored header strip — NOT a sidebar layout. Use when the user says "retro," "memphis," "80s," "90s," "colorful," "playful," "fun style," or similar.
npx skillsauth add zrosenfield/sharepoint-ai-skills style-retroInstall 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.
Bright, playful, LOUD. Every status is a different color. Colored shadows. Stacked vertical card with a bold colored banner. This is the fun one.
Layout philosophy: Stacked vertical card with colored banner. The top third of the card is a bold status-colored banner containing the document name in large white text. Below it, a white content area with the status badge, a large progress percentage, and deadline info. The banner color changes per status — the card's personality changes with every item. This is structurally different from Neobrutalism's horizontal sidebar split.
5px 14px20px (full pill — playful, round, fun)12px700uppercase| Value | bg | text | border | banner_color |
|---|---|---|---|---|
| Draft | #fbbf24 | #1f2937 | 2px solid #d97706 | #fbbf24 |
| In Review | #3b82f6 | #ffffff | 2px solid #7c3aed | #3b82f6 |
| Revising | #f472b6 | #ffffff | 2px solid #db2777 | #f472b6 |
| Approved | #2dd4bf | #1f2937 | 2px solid #0d9488 | #2dd4bf |
| Published | #a78bfa | #ffffff | 2px solid #7c3aed | #a78bfa |
| _fallback | #e5e7eb | #374151 | 2px solid #9ca3af | #e5e7eb |
CRITICAL: The banner_color IS the status bg color — the entire top of the card floods with the status hue. Draft cards have a yellow top. In Review cards have a blue top. Revising cards have a hot pink top. Every card in the list is a different color.
10px#fef3c7 (warm yellow tint)2px solid #d977065px3px#f472b6 (HOT PINK — not red)#3b82f6 (ELECTRIC BLUE — not amber)#2dd4bf (TEAL — not green)28px (HUGE — the hero element)800#7c3aed (PURPLE)🗓️13px#374151600#db2777 (HOT PINK — not red)800#7c3aed (PURPLE)🔥 OVERDUE3px solid (color matches status shadow_color)12px (rounded — playful)#ffffff12px6px 6px 0px (large hard offset — COLORED per status)16px 20px16px 20px#db2777#db2777Stacked vertical card with a status-colored banner on top.
╭──────────────────────────────────────────────────╮
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│
│▓▓ API Guide.docx ▓▓│ ← status-colored
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ banner
│ │
│ [IN REVIEW] 🎯 ON TRACK 72% 🗓️ 5/15/26 │ ← white content
│ │
│ ░░████████████████████████████████░░░░░░░░░░░ │ ← warm yellow
│ │ track + amber
╰──────────────────────────────────────────────────╯ border
▓▓▓▓▓▓ ← 6px colored offset shadow
Key difference from Neobrutalism: Neobrutalism is a HORIZONTAL split (sidebar left, content right). Retro is a VERTICAL split (banner top, content bottom). Even the silhouettes are different.
Adapt before applying. The column names below ([$Status], [$Progress], [$Deadline]) are example placeholders — replace them with the actual internal column names from the user's list. Also update every status value string ('Draft', 'In Review', 'Revising', etc.) to match the user's actual Choice values. Follow list-styling Step 3.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/view-formatting.schema.json",
"hideSelection": false,
"hideColumnHeaders": true,
"rowFormatter": {
"elmType": "div",
"style": {
"display": "flex",
"flex-direction": "column",
"border": "=if([$Deadline] < @now, '3px solid #db2777', if([$Status] == 'Draft', '3px solid #d97706', if([$Status] == 'In Review', '3px solid #7c3aed', if([$Status] == 'Revising', '3px solid #db2777', if([$Status] == 'Approved', '3px solid #0d9488', if([$Status] == 'Published', '3px solid #7c3aed', '3px solid #9ca3af'))))))",
"border-radius": "12px",
"background-color": "#ffffff",
"margin-bottom": "12px",
"box-shadow": "=if([$Deadline] < @now, '6px 6px 0px #db2777', if([$Status] == 'Draft', '6px 6px 0px #d97706', if([$Status] == 'In Review', '6px 6px 0px #7c3aed', if([$Status] == 'Revising', '6px 6px 0px #db2777', if([$Status] == 'Approved', '6px 6px 0px #0d9488', if([$Status] == 'Published', '6px 6px 0px #7c3aed', '6px 6px 0px #9ca3af'))))))",
"overflow": "hidden"
},
"children": [
{
"elmType": "div",
"style": {
"padding": "16px 20px",
"background-color": "=if([$Deadline] < @now, '#db2777', if([$Status] == 'Draft', '#fbbf24', if([$Status] == 'In Review', '#3b82f6', if([$Status] == 'Revising', '#f472b6', if([$Status] == 'Approved', '#2dd4bf', if([$Status] == 'Published', '#a78bfa', '#e5e7eb'))))))",
"display": "flex",
"align-items": "center",
"gap": "10px"
},
"children": [
{
"elmType": "div",
"style": {
"font-size": "16px",
"font-weight": "800",
"color": "=if([$Status] == 'Draft', '#1f2937', if([$Status] == 'Approved', '#1f2937', '#ffffff'))",
"flex": "1",
"line-height": "1.3"
},
"txtContent": "=if([$FileLeafRef] == '', [$Title], [$FileLeafRef])"
},
{
"elmType": "span",
"txtContent": "=if([$Deadline] < @now, '🔥', '✨')",
"style": {
"font-size": "20px"
}
}
]
},
{
"elmType": "div",
"style": {
"padding": "16px 20px",
"display": "flex",
"flex-direction": "column",
"gap": "12px"
},
"children": [
{
"elmType": "div",
"style": {
"display": "flex",
"align-items": "center",
"gap": "14px",
"flex-wrap": "wrap"
},
"children": [
{
"elmType": "span",
"txtContent": "[$Status]",
"style": {
"display": "inline-block",
"padding": "5px 14px",
"border-radius": "20px",
"font-size": "12px",
"font-weight": "700",
"text-transform": "uppercase",
"white-space": "nowrap",
"border": "=if([$Status] == 'Draft', '2px solid #d97706', if([$Status] == 'In Review', '2px solid #7c3aed', if([$Status] == 'Revising', '2px solid #db2777', if([$Status] == 'Approved', '2px solid #0d9488', if([$Status] == 'Published', '2px solid #7c3aed', '2px solid #9ca3af')))))",
"color": "=if([$Status] == 'Draft', '#1f2937', if([$Status] == 'In Review', '#ffffff', if([$Status] == 'Revising', '#ffffff', if([$Status] == 'Approved', '#1f2937', if([$Status] == 'Published', '#ffffff', '#374151')))))",
"background-color": "=if([$Status] == 'Draft', '#fbbf24', if([$Status] == 'In Review', '#3b82f6', if([$Status] == 'Revising', '#f472b6', if([$Status] == 'Approved', '#2dd4bf', if([$Status] == 'Published', '#a78bfa', '#e5e7eb')))))"
}
},
{
"elmType": "span",
"txtContent": "=if([$Deadline] < @now, '🔥 AT RISK', '🎯 ON TRACK')",
"style": {
"font-size": "11px",
"font-weight": "700",
"color": "=if([$Deadline] < @now, '#db2777', '#0d9488')"
}
},
{
"elmType": "span",
"txtContent": "=toString([$Progress]) + '%'",
"style": {
"font-size": "28px",
"font-weight": "800",
"color": "#7c3aed",
"margin-left": "auto"
}
}
]
},
{
"elmType": "div",
"style": {
"width": "100%",
"height": "10px",
"background-color": "#fef3c7",
"border": "2px solid #d97706",
"border-radius": "5px",
"overflow": "hidden"
},
"children": [
{
"elmType": "div",
"style": {
"width": "=toString([$Progress]) + '%'",
"height": "100%",
"border-radius": "3px",
"background-color": "=if([$Progress] < 30, '#f472b6', if([$Progress] < 66, '#3b82f6', '#2dd4bf'))"
}
}
]
},
{
"elmType": "div",
"style": {
"display": "flex",
"align-items": "center",
"gap": "6px"
},
"children": [
{
"elmType": "span",
"txtContent": "🗓️",
"style": { "font-size": "13px" }
},
{
"elmType": "span",
"txtContent": "=toLocaleDateString([$Deadline])",
"style": {
"font-size": "13px",
"font-weight": "=if([$Deadline] < @now, '800', '600')",
"color": "=if([$Deadline] < @now, '#db2777', '#374151')"
}
},
{
"elmType": "span",
"txtContent": "=if([$Deadline] < @now, '🔥 OVERDUE', 'DEADLINE')",
"style": {
"font-size": "10px",
"font-weight": "=if([$Deadline] < @now, '700', '500')",
"color": "=if([$Deadline] < @now, '#db2777', '#7c3aed')",
"text-transform": "uppercase"
}
}
]
}
]
}
]
}
}
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.