# Officeimo Conversion Operator

> Use when contributing code that changes or validates OfficeIMO conversion behavior, especially DOCX/XLSX/PPTX/HTML/Markdown/PDF byte and stream APIs, browser-safe paths, or fidelity diagnostics. Prefer OfficeIMO core APIs first and keep hosts, websites, cmdlets, MCP tools, and demos thin.

- Skill: `evotecit/officeimo-conversion-operator` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add evotecit/officeimo-conversion-operator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/evotecit/officeimo-conversion-operator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: evotecit (https://skillmd.com/u/evotecit)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/evotecit/officeimo-conversion-operator

---


# OfficeIMO Conversion Operator

Use this skill for OfficeIMO conversion work across Word, Excel, PowerPoint, Markdown, HTML, and PDF.

## Golden Path

1. Start by locating the owning reusable API.
   - Word behavior belongs under `OfficeIMO.Word*`.
   - Excel behavior belongs under `OfficeIMO.Excel*`.
   - PowerPoint behavior belongs under `OfficeIMO.PowerPoint*`.
   - Shared PDF behavior belongs in the PDF engine projects, not in a host wrapper.
2. Treat file paths as adapter concerns.
   - Prefer byte array and stream entrypoints for conversion APIs.
   - Keep browser, CLI, PowerShell, MCP, and website shells as orchestration only.
3. Validate real artifacts.
   - For PDF output, at minimum verify the returned bytes start with `%PDF`.
   - For browser work, validate inside a real Blazor WebAssembly runtime before calling it GitHub Pages-safe.
   - For fidelity work, keep a named fixture and record the expected known gap.
4. Separate platform limits from conversion defects.
   - Browser-safe means no Office automation, LibreOffice process, native graphics dependency, server filesystem dependency, or environment-only state.
   - Font coverage, Unicode embedding, large memory use, and startup size are conversion quality gaps even when the browser runtime works.
5. Keep public surfaces friendly.
   - Add simple options and presets at host layers only after the reusable OfficeIMO API already supports the behavior.
   - Avoid hidden environment-variable switches for behavior that should be an explicit option.

## Useful Checks

```powershell
dotnet build OfficeIMO.Word.Pdf\OfficeIMO.Word.Pdf.csproj -c Release -f net10.0
dotnet test OfficeIMO.Word.Tests\OfficeIMO.Word.Tests.csproj -c Release --filter "*SaveAsPdf*"
dotnet test OfficeIMO.Html.Tests\OfficeIMO.Html.Tests.csproj -c Release --filter "*Html*"
dotnet test OfficeIMO.Markdown.Tests\OfficeIMO.Markdown.Tests.csproj -c Release --filter "*Markdown*"
```

When the work targets GitHub Pages or OfficeIMO.com, pair these with the browser conversion proof described in `Docs/officeimo.blazor-wasm-conversion-proof.md`.

