← Back to brief

reference office only policy

memory · reference_office_only_policy.md

The rule (no exceptions)

Microsoft Office is the ONLY document toolchain. When a skill or script saves, opens, edits, creates, or converts a document, it goes through Word / Excel / PowerPoint — not LibreOffice / Pages / Numbers / Keynote / Google Workspace native apps.

This is hardwired across:

Adam-bd inherits the same rule via SHARED_LESSON. Future franchise installs inherit by default.

What's allowed

OperationTool
Edit .docxWord (via mcp__Word__By_Anthropic___* tools), or python-docx / docx unpack-edit-pack IF Word MCP can't reach the file (programmatic XML edits like the invoice-template flow). Output stays .docx.
Edit .xlsxExcel (or openpyxl for programmatic data writes). Output stays .xlsx.
Edit .pptxPowerPoint (via mcp__PowerPoint__By_Anthropic___*), or python-pptx. Output stays .pptx.
Convert Office doc → PDFWord / Excel / PowerPoint export-to-PDF. Never soffice / libreoffice --convert-to pdf.
Read existing .doc / .docx / .xls / .xlsx / .ppt / .pptxWord / Excel / PowerPoint, or python lib equivalents.
Open a Google Doc / Sheet / Slide for read-only reviewAllowed via Drive MCP, but if the artifact will be modified or saved, export first to .docx / .xlsx / .pptx and continue from there.

What's banned

BannedReasonReplace with
soffice / libreoffice CLI for any operationCreates .~lock.* orphan files (the 6 we just cleaned up); silent failures; non-Office formatting driftWord/Excel/PowerPoint export-to-PDF
LibreOffice.app, OpenOffice.app foregroundSameWord.app, Excel.app, PowerPoint.app
Pages, Numbers, Keynote (Apple iWork)Different file formats (.pages .numbers .key); Office can't read natively without conversion losing fidelityWord / Excel / PowerPoint native
Saving .odt / .ods / .odp / .fodt (OpenDocument)Not Office-nativeSave as .docx / .xlsx / .pptx
Saving .pages / .numbers / .keyApple-onlySave as .docx / .xlsx / .pptx
Editing a Google Doc/Sheet/Slide as the working artifact for a deliverableMulti-source-of-truth; Drive sync conflicts; format driftExport to Office format and edit there
pdf2docx for important conversionsOCR/layout drift on complex docsOpen the source PDF in Word (Word's built-in PDF import)

File-format whitelist for any artifact in this system

Allowed: .docx, .xlsx, .pptx, .pdf, .csv, .txt, .md, .json, .html, image formats.
Banned (for production artifacts): .odt, .ods, .odp, .pages, .numbers, .key, .gdoc, .gsheet, .gslides, .fodt, .fods, .fodp.

(Existing files in any banned format that surface in Adam's / Joseph's source data are read-only signals — we don't refuse to read them, but we never save back into those formats; the working copy gets exported to Office format first.)

Hygiene watchdog enforcement

The system_hygiene.sh watchdog detects .~lock. files anywhere in ~/Desktop/SkyRun/ (LibreOffice-signature orphans). It auto-deletes them and pushes ntfy noting the violation source. If the same dir keeps generating fresh .~lock. files, the watchdog escalates to high severity — that means a script is still calling soffice somewhere and needs investigation.

Skill-author contract

When you write or modify a skill (parent SkyRun OR adam-bd OR future franchise), this rule applies:

If a skill genuinely cannot be done within this rule (e.g., the only library that handles a specific format is a LibreOffice bridge), raise it as an exception via project_skill_maintenance_flags.md for review — don't silently work around the rule.

Origin of this rule

Joseph hardwired this on 2026-04-27 after the deep audit surfaced 6 stale .~lock.* files (44+ days old in some cases) created by LibreOffice-driven invoice generation. The recurring orphans were a downstream symptom of an actively-used soffice toolchain. Rather than suppress the symptom, kill the cause.

Specific incidents that informed the rule:

Audit-trail expectation

Every skill/script that creates a document writes an audit JSON noting:

If a future audit shows soffice in any of those fields, that's a policy violation and a bug to fix.