agentsclimarketplace

Im sheets style guide

Skill integralmedia1/im-html-style-guide/skills/im-sheets-style-guide

This skill should be used when the user asks to format a Google Spreadsheet with Integral Media (IM) branding, or when building Google Sheets API batchUpdate requests for IM-branded spreadsheets. Triggers include: "format this spreadsheet", "IM sheets style", "branded Google Sheet", "style this sheet", "format the audit spreadsheet", "apply IM formatting", "Google Sheets batchUpdate formatting", "make this sheet look professional".From its SKILL.md

Install
npx -y skills add integralmedia1/im-html-style-guide --skill im-sheets-style-guide

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.4 KB, as published. Nobody here has run it

Integral Media — Google Sheets Style Guide

Brand-faithful formatting for Google Sheets, derived from the IM HTML style guide (integralmedia1/im-html-style-guide). Adapted for Sheets constraints: limited fonts, no border-radius/shadows/text-transform. All colour combinations pass WCAG AA (4.5:1+ for normal text).


Colour Palette

TokenHexRGB (0-1)WCAG NotesUsage
navy#002F6C0.0, 0.184, 0.42417.5:1 vs whiteDocument title row bg, summary tab colour
navy-light#0A3D7A0.039, 0.239, 0.47814.4:1 vs whiteSection divider row bg
sky#27C1F40.153, 0.757, 0.957Accent onlyTab colours (data tabs), accent borders
sky-muted#E6F7FE0.902, 0.969, 0.9966.3:1 vs slate-darkNotes/data source bg, LOW priority bg
charcoal#3337400.200, 0.216, 0.25114.8:1 vs whiteAll body text
cool-grey#DCDDEB0.863, 0.867, 0.922—All borders, horizontal rules
light#F1F5F90.945, 0.961, 0.97614.0:1 vs charcoalColumn header bg, alternating row band
lighter#F8FAFC0.973, 0.980, 0.98816.7:1 vs navySub-header bg
slate-dark#4755690.278, 0.333, 0.4126.3:1 vs sky-mutedSecondary text (notes, footnotes)
white#FFFFFF1.0, 1.0, 1.0—Primary row bg, text on dark bg
subtitle-grey#CCCCCC0.8, 0.8, 0.810.8:1 vs navySubtitle text on navy bg
red-muted#FEE2E20.996, 0.886, 0.88612.4:1 vs charcoalHIGH priority bg
amber-muted#FEF3C70.996, 0.953, 0.78013.8:1 vs charcoalMEDIUM priority bg
amber#F59E0B0.961, 0.620, 0.043—Warning row left border accent
green-muted#DCFCE70.863, 0.988, 0.90614.2:1 vs charcoalVERIFIED / complete bg

Accessibility Notes

  • slate (#64748B) replaced with slate-dark (#475569) for all secondary text — original was borderline 4.5:1 on sky-muted, new value gives 6.3:1 headroom
  • Minimum font size: 10pt everywhere (no 9pt)
  • Separator rows: 20px minimum (invisible rows break keyboard nav + screen readers)
  • Priority/warning rows use colour + text label + left border accent (not colour-only)

Element Specifications

ElementBackgroundText ColourFontSizeBoldHeightMergeBorders
Document titlenavywhiteRoboto14ptYes40pxFull widthBottom: 3px sky accent
Subtitle rowsnavysubtitle-greyRoboto10ptNo22pxFull widthNone
Section dividernavy-lightwhiteRoboto11ptYes30pxFull widthNone
Column headerlightcharcoalRoboto10ptYes28pxNoBottom: 1px cool-grey
Sub-headerlighternavyRoboto10ptYes26pxFull widthBottom: 1px cool-grey
Data cell (single-line)whitecharcoalRoboto10ptNo24pxNoBottom: 1px cool-grey
Data cell (wrapped)whitecharcoalRoboto10ptNo42pxNoBottom: 1px cool-grey
Alt data cell (single-line)lightcharcoalRoboto10ptNo24pxNoBottom: 1px cool-grey
Alt data cell (wrapped)lightcharcoalRoboto10ptNo42pxNoBottom: 1px cool-grey
Data source notesky-mutedslate-darkRoboto10ptItalic24pxFull widthNone
Separator rowwhite————20px—None
HIGH priorityred-mutedcharcoalRoboto10ptYes24pxNoLeft: 3px red
MEDIUM priorityamber-mutedcharcoalRoboto10ptYes24pxNoLeft: 3px amber
LOW prioritysky-mutedcharcoalRoboto10ptYes24pxNoLeft: 3px sky
Warning rowamber-mutedcharcoalRoboto10ptYes24pxNoLeft: 3px amber

Design Decisions

  • Font: Roboto everywhere (closest to Inter in Sheets). Roboto Mono for email addresses and IDs.
  • Hierarchy: Navy title → navy-light sections → light headers → white/light data rows (4 levels)
  • Borders: Horizontal rules only — 1px cool-grey bottom border on every data row. No full grid.
  • Sky accent: Used sparingly — tab colours + title bottom accent border only. Never as cell bg.
  • Separator rows: 20px empty rows for breathing space, accessible for keyboard nav.
  • Text wrapping: Default to WRAP on all content columns. Only use CLIP/OVERFLOW on explicitly short-value columns (single status words, yes/no, single IDs under 15 chars). When in doubt, WRAP.
  • Frozen rows: Row 1 on data tabs, none on Summary/report tabs.
  • Alignment: Left-align all text columns. Never centre-align text columns.
  • Tab colours: Summary = navy (#002F6C), data tabs = sky (#27C1F4).

Column Width Guidelines

Content TypeWidth (px)
Dates140
Email addresses250
IDs / short codes110-140
Names / labels220-280
Status / role120-140
Notes / descriptions300-400
URLs320-400

Anti-Patterns (Do Not)

  • Full grid borders (overwhelming)
  • Bright saturated cell backgrounds (unprofessional, accessibility issues)
  • Multiple font families (visual noise)
  • Centre-aligned text columns (harder to scan)
  • Font sizes below 10pt (readability on laptop screens)
  • Invisible separator rows (<20px)
  • Colour-only status indicators (accessibility failure)
  • Relying on sheet default for white backgrounds (residual formatting bleeds through from previous sessions)
  • Formatting only the data range without clearing surrounding columns/rows (old banding/formatting artifacts remain visible)

White-Label Adaptation

Same formatting rules apply for white-label partner clients — just remove all IM references from content. No brand modifications needed to the formatting itself.


API Reference

When building batchUpdate requests, use the RGB (0-1) values from the colour palette. Google Sheets API expects { red: 0.0, green: 0.184, blue: 0.424 } format.

Implementation Rules

  • Explicit white backgrounds: Always set explicit white backgrounds on ALL data rows. Never rely on the sheet default — previous formatting sessions may have left residual cell-level backgrounds that override the sheet default.
  • Clear beyond data range: After formatting the data range, clear all backgrounds from endColumn to column Z and from endRow to row 100+. Old banded ranges and formatting often extend beyond the visible data area.
  • Default wrap strategy: Set wrapStrategy: "WRAP" on all content columns. Only use CLIP/OVERFLOW on columns with short single-value content (yes/no, single IDs under 15 chars).

API Gotchas

  • Unmerge before merge: Always send unmergeCells on the full sheet range before applying any new mergeCells requests. Otherwise you'll get "You must select all cells in a merged range to merge or unmerge them" errors from cells merged in previous sessions.
  • Banding conflicts: addBanding fails if any banded range already overlaps the target range. The correct delete method is deleteBanding (not deleteBandedRange). Query existing banded ranges first and delete ALL of them, not just known IDs.

Typical Request Order per Tab

  1. unmergeCells — clear all existing merges on the full sheet range
  2. deleteBanding — query and remove ALL existing banded ranges
  3. updateSheetProperties — tab colour, frozen rows
  4. mergeCells — section dividers, title rows, note rows
  5. updateDimensionProperties — column widths + row heights
  6. repeatCell — backgrounds, text formatting, fonts, alignment, wrap
  7. updateBorders — horizontal rules, accent borders
  8. addBanding — alternating rows on data sections with 8+ rows
  9. Clear formatting beyond data range — explicit white bg on surrounding empty cells

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.