agentleFS
DakkshinDakkshin/ops-skills/skills/workbook-compiler/SKILL.md

workbook-compiler

Skill1 starsChanged 53 days agoMITView on GitHub

Compiles SOPs, handover notes, link directories and workflow maps into a finished, styled Google Sheets manual — multi-tab, colour-coded, with chips, zebra banding, frozen headers, dropdowns, checkboxes, hover notes and collapsible groups. Use when asked to turn SOPs or a handover into a workbook, build a training manual or run sheet in Google Sheets, package a pack for a new hire, or when an existing workbook "looks terrible" and needs formatting, row/column sizing or a colour system. Also use for the Google Sheets API mechanics behind it (batchUpdate, cell formatting, conditional formatting, data validation, protected ranges, dimension groups, PDF export). Not for local .xlsx files (use xlsx) or written documents (use docs).

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use it when any of these is true:

    line 31
  2. Very specific:

    Do not use it for local .xlsx files (use xlsx) or prose documents (use docs).

    line 41
  3. Distinctive:

    Run these stages in order.

    line 50
  4. Very specific:

    Every cell is a sentence a busy person reads at 5pm.

    line 111
  5. Distinctive:

    No filler: Delete "please note", "in order to", "it is important that".

    line 117
  6. Distinctive:

    Never hand back a workbook you have not read back.

    line 142
  7. Distinctive:

    Do not invent a link: If a URL is missing, leave the cell empty and ask.

    line 202

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

SOP Manual Compiler

Turn a pile of procedures into a workbook someone can actually work from.

The unit of output is a multi-tab Google Sheet: a role card you read once, a workflow map you search by trigger, step tables you follow, a directory that answers "where's the sheet", hidden rules that stop silent failures, and a run sheet you tick per event.

This skill is a compiler, not a formatter. Given SOPs, links and workflow notes it generates the manual. Given a workbook that already exists, it repairs it. The design system and the API recipes are the same in both directions.


When to use

Use it when any of these is true:

  • "Turn these SOPs into a sheet / manual / handover pack."
  • "Build a training manual / run sheet / onboarding workbook in Google Sheets."
  • "Package this for a new hire" — role handover, team onboarding, a process someone else runs.
  • "The sheet looks terrible" / "make it readable" / "format it properly" / "adjust the rows and columns."
  • "Add a dashboard tab / a directory / a checklist" to an existing workbook.
  • The work touches the Google Sheets API through Composio: batchUpdate, formatting, conditional formatting, data validation, protection, PDF export.

Do not use it for local .xlsx files (use xlsx) or prose documents (use docs). It compiles into Google Sheets. Related siblings that share the "ingest messy source → emit a structured artifact" shape: knowledge-compiler and prompts-compiler (they emit Markdown/PDF; this emits a workbook).


The pipeline

Run these stages in order. Each one has a reference file with the detail.

#StageWhat happensReference
1IngestRead the source notes. Collect every artifact they name.references/source-extraction.md
2ExtractPull triggers, ordered steps, owners, blockers, tools, gotchas, voice.references/source-extraction.md
3StructureAssign each extracted block to a tab archetype.references/tab-archetypes.md
4WriteDraft the cell text in the house voice.references/content-voice.md
5StyleApply the design system over the raw values.references/design-system.md
6WireFormulas, validation, chips, groups, protection, notes.references/api-mechanics.md
7VerifyRead back and compare against intent.this file, §Verify
8ExportOptional PDF. Know what Google exposes and what it blocks.references/print-export.md

Never style before the values are in. Formatting a sheet, then overwriting the cells, wipes the banding. Values → dimensions → formats → chips → conditional rules → validation → groups → protection. That order exists because each later step reads the geometry the earlier one set (row heights depend on text; zebra depends on row indices; groups depend on the final row map).


Stage 1–2: what you are compiling

The richest source is a vault SOP. It already carries the fields you need — you are re-sorting a document into a workbook, not inventing content.

SOP elementBecomes
Name / Purposethe tool/step row's what it does
Sub Categorythe family / section it belongs to
How (numbered steps)the ordered artifacts in the workflow map, or the step table's rows
Whythe reason column — never drop this, it is what makes a manual teachable
Success Criteriathe done when conditions
Changes for next versionhidden rules and gotchas
Tools (link)a directory row, with type + owner
Status / Versionthe status chip and footer

Source types and how to treat each: references/source-extraction.md.


Stage 3: the eight tab archetypes

Pick the minimum set that answers the reader's real questions. Most packs land on six to eight. Full definitions: references/tab-archetypes.md.

ArchetypeAnswersTypical shape
Role cardWho am I, what do I own, who do I wait onlabel + paragraph rows, a ping table
Workflow mapSomething happened — what do I do, in what orderID · trigger · ordered artifacts · how-to · blocked by · owner
Step tableHow do I do this one workflow, click by clickstep · action · where · gotcha
DirectoryWhere does this liveresource · type · search phrase · trigger · owner · link
Hidden rulesWhat looks right but is wrong# · rule · why · what breaks
Folder mapWhere does this file gofolder · goes in · never goes in · link
Loom indexHow do I learn this tacit step# · title · trigger covered · link · status
Run sheetIs this done, for this eventstep rows × entity columns of checkboxes + a progress formula

Stage 4: the voice

Every cell is a sentence a busy person reads at 5pm. references/content-voice.md has the rules; the short version:

  • Lead with the action. "Send from the central dummy account…" — not "It is recommended that…"
  • Carry the why. A step without a reason gets skipped the moment it's inconvenient.
  • Name the failure. "A file in Downloads is not filed — the banner generator fetches from that folder."
  • No filler. Delete "please note", "in order to", "it is important that".
  • One idea per line inside a cell. Use \n between numbered steps so they render as a list.

Stage 5–6: the design system

Full palette, type and mechanics: references/design-system.md. The load-bearing ideas:

  • Colour is navigation, not decoration. Each workflow family owns an accent; the ID cell is a solid chip in that colour and the section row carries a matching tint. You find "the C block" without reading.
  • Chips encode type. In a directory, Sheet = green, Doc = blue, Drive = gold, Form = purple, Site = teal, Account = red, Tool = grey. Type reads before the word.
  • Zebra inside blocks. Alternate rows only within a family, so the eye tracks a line across without the banding fighting the section tints.
  • Amber means blocked. Conditional formatting, not manual fill — so it stays true as content changes.
  • Frozen header + frozen ID column. The row identity survives a horizontal scroll.
  • Gridlines off, borders on. Cleaner than the default grid, and prints better.

Stage 7: verify

Never hand back a workbook you have not read back. Minimum checks:

  1. GET_SPREADSHEET_INFO — tab list, order, frozen counts, hidden gridlines.
  2. Spot-read one range per tab — confirm values, not just the write acknowledgment.
  3. Confirm links are clickable, not dead text (they must have been written USER_ENTERED; a FORMULA-render read shows =HYPERLINK(...)).
  4. Confirm conditional formatting exists where a rule was added.
  5. Confirm the row heights fit: no cell whose text needs more lines than its height allows.

Writes report success even when a range auto-adjusted. Trust the read, not the receipt.


Stage 8: export

Google exposes no page-setup API. The sheet-level print export route is blocked (307 redirect); the Drive whole-file export works and returns a PDF. Binary cannot pass back through the Composio proxy — extract the S3 key from the returned URL and upload with GOOGLEDRIVE_UPLOAD_FILE. Details and the manual fallback: references/print-export.md.


Scripts

Copy these into the Composio remote workbench (the helpers proxy_execute, run_composio_tool are preloaded there) or adapt the pure functions into any harness.

ScriptDoes
scripts/fit_rows.pyComputes per-row pixel heights from wrapped text in known column widths
scripts/style_tab.pyBuilds batchUpdate requests for headers, body, sections, zebra, borders, chips
scripts/sheets_batch.pyThin wrappers: send a batchUpdate, batch-get ranges, update values

They are pure builders plus a thin sender — the payloads are plain dicts, so they work with or without Composio.


Build order (memorise this)

create spreadsheet
  → add tabs (no index when creating in parallel)
  → write values            (RAW, or USER_ENTERED for links/formulas)
  → column widths
  → row heights             (computed from the values you just wrote)
  → cell formats            (header / body / section / zebra / borders)
  → chips                   (ID, type, status)
  → conditional formatting  (blockers, owners, HOLD)
  → data validation         (dropdowns, checkboxes)
  → dimension groups        (collapsible families)
  → protection              (headers, legend, ID columns)
  → verify

Hard rules

  1. Never write generated files by hand. Change the source, recompile.
  2. One task lives in one place. A workflow map row references a directory row; it does not duplicate it.
  3. Do not invent a link. If a URL is missing, leave the cell empty and ask.
  4. Don't style what you haven't written. Banding applied before values disappears.
  5. The manual is the source of truth; the workbook is its rendering. Keep them consistent.

Related

  • references/source-extraction.md · references/tab-archetypes.md
  • references/design-system.md · references/content-voice.md
  • references/api-mechanics.md · references/layout-math.md · references/print-export.md
  • Siblings: knowledge-compiler, prompts-compiler

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.