List StylingSharePointMicrosoft 365 Copilot

Style: Blueprint

Blueprint engineering-drawing style tokens for the list-styling skill. Monochromatic blue palette, double-ring rubber-stamp badges, ultra-compact two-line spec-sheet card.

Blueprint style applied to a SharePoint list

Blueprint engineering-drawing style tokens for the list-styling skill. Monochromatic blue palette with double-ring rubber-stamp badges and an ultra-compact two-line spec-sheet card layout.

Overdue is the only red element — the rest stays in the blueprint blue family. Use when the user says 'blueprint,' 'technical drawing,' 'engineering,' 'schematic,' or 'spec sheet.'

A SharePoint list style modeled on engineering drawings and technical spec sheets. Monochromatic blue palette, double-ring rubber-stamp status badges, and an ultra-compact card layout with a blue left-edge accent. The most information-dense style in the collection.

What you get

  • Design tokens for a monochromatic blue palette with double-ring badge treatment
  • The most compact rowFormatter in the collection — spec-sheet density with a blue left edge
  • Status badges styled as rubber-stamp rings — visually distinct from every other style
  • Overdue is the only element that turns red — everything else stays in the blue system

Using this style

This is a style token skill — it provides design tokens and a reference rowFormatter, but does not apply them on its own. Pair it with the list-styling skill, which reads the tokens from this skill and adapts the row template to your library's actual columns.

Typical flow:

  1. Install both this skill and list-styling into your SharePoint Skills library.
  2. From a Copilot agent, ask: "Style this library using the blueprint style."

Looking for sample content to try it on? The list-styling demo ships with ten short Word documents and the exact Status, Progress, and Deadline column setup the row template expects.

When to use this style

Audience: engineering teams, design ops, technical-spec libraries, anywhere the content already reads like a specification sheet. Tone: precise, monochromatic blue, information-dense — every row a small drafting plate.

Demo video

Watch the video

SharePoint Skill

Solution Author(s)
style-blueprint Zach Rosenfield | GitHub | LinkedIn

Version history

Version Date Comments
1.0 May 2026 Initial Release

Disclaimer

THIS CODE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.

Package

Ready to install

The ZIP contains only the upload-ready inner skill folder.

4.5 KB
69e2ab807affee4bcac2269d6ec0a6219444857bd292316092f0fd766ab7a7c6
Download Style: Blueprint
View SKILL.md
---
name: style-blueprint
description: Blueprint engineering-drawing style tokens and row template for the list-styling skill. Monochromatic blue palette, double-ring rubber-stamp status badges, ultra-compact spec-sheet card with a blue left edge. The most compact card in the library — no sidebar, no banner. Overdue is the only element that turns red. Use when the user says "blueprint," "technical drawing," "engineering," "schematic," "spec sheet," or similar.
---

# Blueprint — Style Tokens + Row Template

Monochromatic blue. Technical. Precise. Every card is a spec-sheet entry on an engineering drawing. Status badges are rubber stamps with double-ring borders. This is the most compact card in the library.

**Layout philosophy: Ultra-compact spec sheet with a blue left edge.** No sidebar, no banner — just a clean two-line card with a 4px blue left border. Line one is the document name. Line two is the stamp, progress bar, percentage, and due date — all on one row. The only color break in the entire list is overdue red. Everything else is blue, from the darkest ink to the palest wash.

---

## Color Palette

| Swatch | Hex | Semantic Role |
|---|---|---|
| 1 | `#1e3a8a` | ink — primary text, left edge, darkest blue |
| 2 | `#1e40af` | stamp — rubber stamp borders and text |
| 3 | `#2563eb` | date — date text, secondary info |
| 4 | `#3b82f6` | fill — progress bar fill |
| 5 | `#60a5fa` | label — subtle labels like "DUE" |
| 6 | `#93c5fd` | rule — card border, grid lines |
| 7 | `#dbeafe` | wash — progress track, lightest blue |
| 8 | `#ffffff` | paper — card background |
| 9 | `#dc2626` | alert — overdue ONLY, the single non-blue |

**CRITICAL:** Swatches 1–8 are ALL BLUE. Swatch 9 (red) is used ONLY for overdue states. There are no per-status color variations — every status looks the same monochromatic blue. The stamp text itself differentiates statuses. Overdue is the one dramatic break from the blueprint palette.

---

## Badge Tokens (Rubber Stamp)

The stamp uses a double-ring border: an outer div with a 2px border and 1px padding, wrapping an inner span with a 1px border. This creates the classic certification/rubber-stamp impression.

- outer_border: `2px solid #1e40af`
- outer_padding: `1px` (gap between rings)
- inner_border: `1px solid #1e40af`
- inner_padding: `2px 8px`
- font-size: `10px`
- font-weight: `700`
- text-transform: `uppercase`
- color: `#1e40af`
- background: `transparent` (stamps are outlines, not fills)
- border-radius: `0px` (sharp corners — technical, angular)

### status_colors

| Value | stamp_border | stamp_text | background |
|---|---|---|---|
| Draft | `#1e40af` | `#1e40af` | transparent |
| In Review | `#1e40af` | `#1e40af` | transparent |
| Revising | `#1e40af` | `#1e40af` | transparent |
| Approved | `#1e40af` | `#1e40af` | transparent |
| Published | `#1e40af` | `#1e40af` | transparent |
| _fallback | `#1e40af` | `#1e40af` | transparent |
| OVERDUE (any) | `#dc2626` | `#dc2626` | transparent |

**CRITICAL:** Every status uses the SAME blue. The stamp text is the only differentiator. Overdue overrides ANY status — when a deadline has passed, the stamp turns red regardless of status value. This is intentionally monochromatic.

---

## Progress Bar Tokens

- progress_track_height: `4px` (ultra-thin — compact)
- progress_track_bg: `#dbeafe` (wash)
- progress_track_border: `none`
- progress_track_radius: `1px`
- progress_fill_color: `#3b82f6` (single blue — NO color changes by percentage)
- progress_fill_radius: `1px`
- progress_label_font_size: `13px`
- progress_label_font_weight: `700`
- progress_label_color: `#1e3a8a` (ink)

**CRITICAL:** Progress fill is ALWAYS `#3b82f6` regardless of percentage. No low/mid/high color shifts. Blueprint is monochromatic.

---

## Deadline Tokens

- deadline_icon: none (no emoji — use text label "DUE" instead)
- due_label: `DUE`
- due_label_font_size: `10px`
- due_label_color_normal: `#60a5fa` (label)
- due_label_color_overdue: `#dc2626` (alert)
- date_font_size: `12px`
- date_normal_color: `#2563eb` (date)
- date_normal_weight: `500`
- date_overdue_color: `#dc2626` (alert)
- date_overdue_weight: `700`
- overdue_label: `OVERDUE` (text only — no emoji, no fire, no icons)
- overdue_label_font_size: `10px`
- overdue_label_color: `#dc2626`

**CRITICAL:** No emoji anywhere in the blueprint style. No 🔥, no 🗓️, no ✨. Text labels only. This is a technical drawing, not a party.

---

## Row Card Tokens

- card_border: `1px solid #93c5fd` (rule)
- card_border_left: `4px solid #1e3a8a` (ink — the blue left edge)
- card_border_radius: `2px` (barely rounded — sharp, technical)
- card_background: `#ffffff` (paper)
- card_margin_bottom: `4px` (tight stacking)
- card_padding: `8px 14px` (compact)
- card_shadow: `none` (clean, flat — no shadows on a blueprint)
- gap_between_lines: `4px`
- overdue_border: `1px solid #dc2626`
- overdue_border_left: `4px solid #dc2626`

**CRITICAL:** No shadows. Blueprints are flat technical drawings. The 4px left edge is the ONLY structural accent — it's a thin spec-sheet margin line, not a sidebar.

---

## Row Template Layout

Ultra-compact two-line spec sheet with blue left edge.

```
┌──────────────────────────────────────────────────────┐
▌ API Guide.docx                                       │
▌ ╔═APPROVED═╗  ━━━━━━━━━━━░░░░  75%   DUE 5/15/26   │
└──────────────────────────────────────────────────────┘

Overdue variant:
┌──────────────────────────────────────────────────────┐  ← red border
▌ API Guide.docx                                       │
▌ ╔═APPROVED═╗  ━━━━━━━━━━━░░░░  75%   DUE 5/15 OVERDUE│
└──────────────────────────────────────────────────────┘
```

Key differences from every other style:
- NO banner (unlike Retro's colored top banner)
- NO sidebar (unlike Neobrutalism's left panel)
- NO shadows (unlike both Retro and Neobrutalism)
- NO emoji (unlike every other style)
- NO per-status colors (unlike every other style)
- Two lines total — the most compact card in the library
- Double-ring stamp border — unique to Blueprint

---

## rowFormatter JSON

**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. Note: Blueprint has no per-status color expressions, so there are no status value strings to remap. Follow list-styling Step 3.

```json
{
  "$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, '1px solid #dc2626', '1px solid #93c5fd')",
      "border-left": "=if([$Deadline] < @now, '4px solid #dc2626', '4px solid #1e3a8a')",
      "border-radius": "2px",
      "background-color": "#ffffff",
      "margin-bottom": "4px",
      "padding": "8px 14px",
      "gap": "4px"
    },
    "children": [
      {
        "elmType": "div",
        "style": {
          "font-size": "13px",
          "font-weight": "700",
          "color": "#1e3a8a",
          "line-height": "1.2"
        },
        "txtContent": "=if([$FileLeafRef] == '', [$Title], [$FileLeafRef])"
      },
      {
        "elmType": "div",
        "style": {
          "display": "flex",
          "align-items": "center",
          "gap": "12px"
        },
        "children": [
          {
            "elmType": "div",
            "style": {
              "display": "inline-flex",
              "padding": "1px",
              "border": "=if([$Deadline] < @now, '2px solid #dc2626', '2px solid #1e40af')"
            },
            "children": [
              {
                "elmType": "span",
                "txtContent": "[$Status]",
                "style": {
                  "display": "inline-block",
                  "padding": "2px 8px",
                  "border": "=if([$Deadline] < @now, '1px solid #dc2626', '1px solid #1e40af')",
                  "font-size": "10px",
                  "font-weight": "700",
                  "text-transform": "uppercase",
                  "color": "=if([$Deadline] < @now, '#dc2626', '#1e40af')",
                  "white-space": "nowrap",
                  "background-color": "transparent"
                }
              }
            ]
          },
          {
            "elmType": "div",
            "style": {
              "flex": "1",
              "height": "4px",
              "background-color": "#dbeafe",
              "border-radius": "1px",
              "overflow": "hidden",
              "min-width": "60px"
            },
            "children": [
              {
                "elmType": "div",
                "style": {
                  "width": "=toString([$Progress]) + '%'",
                  "height": "100%",
                  "background-color": "#3b82f6",
                  "border-radius": "1px"
                }
              }
            ]
          },
          {
            "elmType": "span",
            "txtContent": "=toString([$Progress]) + '%'",
            "style": {
              "font-size": "13px",
              "font-weight": "700",
              "color": "#1e3a8a",
              "min-width": "32px"
            }
          },
          {
            "elmType": "div",
            "style": {
              "display": "flex",
              "align-items": "center",
              "gap": "4px"
            },
            "children": [
              {
                "elmType": "span",
                "txtContent": "DUE",
                "style": {
                  "font-size": "10px",
                  "font-weight": "600",
                  "color": "=if([$Deadline] < @now, '#dc2626', '#60a5fa')",
                  "text-transform": "uppercase"
                }
              },
              {
                "elmType": "span",
                "txtContent": "=toLocaleDateString([$Deadline])",
                "style": {
                  "font-size": "12px",
                  "font-weight": "=if([$Deadline] < @now, '700', '500')",
                  "color": "=if([$Deadline] < @now, '#dc2626', '#2563eb')"
                }
              },
              {
                "elmType": "span",
                "txtContent": "=if([$Deadline] < @now, 'OVERDUE', '')",
                "style": {
                  "font-size": "10px",
                  "font-weight": "700",
                  "color": "#dc2626",
                  "text-transform": "uppercase"
                }
              }
            ]
          }
        ]
      }
    ]
  }
}
```

---

## Checklist — "Is This Actually a Blueprint?"

- ✅ Full rowFormatter — NOT default column grid
- ✅ Ultra-compact TWO-LINE layout — the shortest card in the library
- ✅ NO banner, NO sidebar, NO panel — just a clean spec sheet
- ✅ 4px blue left edge (`#1e3a8a`) — a margin line, NOT a sidebar
- ✅ Double-ring rubber stamp badges (outer 2px + inner 1px border)
- ✅ ALL stamps are the same monochromatic blue — no per-status color variation
- ✅ Stamp background is TRANSPARENT — outlines only, like a real ink stamp
- ✅ Progress bar is 4px thin (half the height of other styles)
- ✅ Progress fill is ALWAYS `#3b82f6` — no color changes by percentage
- ✅ NO emoji anywhere — no 🔥, no 🗓️, no ✨, no 🎯
- ✅ Text labels only: "DUE" and "OVERDUE"
- ✅ NO shadows — flat, clean, technical
- ✅ Border-radius 2px — barely rounded, sharp and precise
- ✅ 4px margin between cards — tight stacking
- ✅ Entire palette is swatches 1–8 (all blue) from the blueprint palette
- ✅ Overdue is the ONLY red (`#dc2626`) — left edge, stamp, date, and label all flip to red
- ✅ Overdue card border turns red on ALL sides — impossible to miss
- ✅ Silhouette test: two flat lines with a left edge looks NOTHING like a banner card or sidebar card

---

## Responsive / mobile

- **≤ 720 px**: the high-density inline metadata wraps to a second line under the title. Keep the blue left-edge accent at full height.
- **≤ 480 px**: drop the swatch ramp from 8 swatches to ~3 in practice — primary, accent, overdue red. Hide tertiary chips entirely; never shrink chip text below 12 px on mobile.
- **Hero text step-down**: 16 px → 14 px on mobile. The style relies on tight stacking, not large text.

## Implementation notes

### Palette trim

The shipped palette ships nine blue swatches (1–9). In practice, swatches 4–6 are largely interchangeable to the eye and can be collapsed when re-skinning. A safe minimum set is **swatch 1 (primary)**, **swatch 7 (accent)**, and the **overdue red `#dc2626`**. Anything beyond that is connoisseur territory — use only when the list has 5+ distinct status values that genuinely need separation.

### Rubber-stamp double-ring fallback

The double-ring rubber-stamp badge depends on a nested element pattern (inner ring + outer ring). If the second ring's offset or `clip-path` is dropped by a SharePoint theme or modern view renderer:

- Fall back to a single solid ring at the outer color, with the inner space filled by a lighter tint of the same swatch.
- Keep the uppercase status text inside — the ring is decoration; the label carries the meaning.
- Never substitute a pill — it breaks the silhouette test.

References

  • agentskills.io specification

    The specification that SharePoint AI skills follow for installation and discovery.

  • List Styling Engine

    The companion skill that applies these style tokens to a SharePoint list.

  • Demo video

    Walkthrough of the list-styling engine and supporting style token skills.

Discuss this skill

Ask a question, share how you used it, or suggest an improvement with the community.

Open GitHub Discussions