Office files
How the agent makes and edits decks, spreadsheets, Word documents and PDFs on any host, and how it checks them before you see them.
Ask for a board deck as a PDF, a summary workbook from a CSV, or a proposal in
Word, and the agent does it with one skill, office. The skill runs on the
host as a command-line tool and returns a JSON result for every step, so the
agent sees what it made, what is wrong with it, and the operation that fixes
each problem. It needs no office suite, no browser and no desktop app, and a
page looks the same on a laptop, a Mac Studio or the company's Linux box,
because the skill ships the fonts it draws with.
The same skill comes with the plugin, so a coding agent on your own machine makes the same files.
Decks
A deck has no preset theme, layout kit or stock graphic. The agent designs each
one for its request, in stages adapted from
GenOffice (Apache-2.0, credited in
the plugin's NOTICE). Each stage is one file, and each is checked before the
next begins.
| Stage | File | What it holds |
|---|---|---|
| Style sheet | DESIGN.md | a palette with up to two accents, a background per page type, type sizes, and one line naming the style |
| Outline | outline.json | the core message, then per page its title, type, brief, figures and the photos it needs |
| Pages | pages/01.html, pages/02.html, … | one page per file, written from its outline entry |
| Build | build/<name>.pptx | the PowerPoint, with the PDF beside it |
The style sheet is checked only for what can be measured: the colours parse, text sizes stay above the readable minimum, and text has enough contrast against its background.
Every number in the outline is a figure with a label, a value and a unit. Before any page exists, a decision model (jev) reads the outline's text against the request and its attachments and refuses what they do not support, such as an invented number, a source line or a slogan. In one more call for the whole deck, the same model picks each page's layout from GenOffice's library of named compositions: covers, three column cards, a hero number, a timeline, two columns, a row of KPI cards, a chart with its insight, photo layouts and closings. Two body pages in a row never share a layout, and a deck uses at least three. The layout names the composition; the model still decides the proportions, the elements, their sizes and their colours.
A page takes its title from its outline entry, and the build fills it in, so a
page cannot carry another page's title. A chart plots only its entry's figures
with their units, and a chart with two units on one axis is refused. After each
page is written, office check pages/NN.html measures that page alone: content
spilling out of its box or the page, parts drawn over each other, clipped text,
contrast, and text below the minimum size.
office create build/<name>.pptx . checks every stage again, renders and
measures every page, and ends in one verdict the agent acts on:
| Verdict | What the agent does |
|---|---|
ACCEPTABLE | delivers the named file; remaining notes are advice |
FIX ROUND n OF 2 | fixes only the listed defects in their page files and builds again |
STOP FIXING | delivers and names what is left |
Then an image-reading decision model (clef) looks at each rendered slide, and at the whole deck for repeated layouts. It reports only objective defects: overlap, cramped or wasted space, misalignment, an unreadable chart, a bad picture. The host rewrites the pages it flags, for at most two rounds, and leaves clean pages untouched. When the file is delivered, a last claim check reads its text once more as a safety net, and a value the sources do not support is left blank for the reply to offer to complete.
InternKim picks a deck's typeface from the request: Paperlogy by default, otherwise Freesentation or A2Z. A font the person names is looked for among the attachments, the data room and Google Fonts and embedded; when none is found, the deck is set in Paperlogy and the reply says so. The company logo goes on the cover and the closing page. Photos come from the request's attachments and the data room images the requester can read, and a page with no photo gets no placeholder.
In the .pptx, text stays editable text, charts and tables are native with
their data, and the fonts are embedded.
A .pptx someone hands over is edited in place with office apply, and
office check previews and measures it. A layout problem it reports
carries the operation that clears it, or says that no single operation can.
Spreadsheets
A CSV becomes a typed workbook with office create, and office apply
adds what the request needs: formulas, conditional formats, validation,
tables, charts, pivot tables and page setup. Formulas are computed when the
file is written, so a workbook opened in a viewer that does not recalculate
still shows numbers.
office check reports formula errors, values left stale by an edit,
numbers stored as text, charts that read nothing, and a sheet that prints
across more pages or smaller than it should, each with the fix. office render
draws the printed pages so the agent can look at them.
Documents and PDFs
Word documents are written from Markdown, which may carry tables, images and
charts, or edited operation by operation. Edits can be tracked under an
author's name and accepted or rejected later, and comments can be added,
answered and resolved. office render lays the pages out the way Word
would, and office check uses that layout to catch a heading left alone
at the bottom of a page before the file is attached.
PDFs are created from a layout spec, read page by page, rendered to images,
and extended with section pages; a scanned PDF is read with --ocr, and a
locked one with --password. office convert
moves between Markdown, Word, HTML, PDF, workbooks, CSV and PowerPoint, and
office guide convert lists every route with what it keeps.
Company forms such as quotes and contracts are filled on the company's
letterhead with office merge, and office check verifies row amounts,
totals, tax and the amount in Korean words. office guide form lists the forms.
Results
Every command prints one JSON result: a status of ok, warning or error,
a summary, and issues. Each issue has a stable code, a location, a sentence
saying what to do, and fix, the operations that make that change. A
mistyped command, field or layout is answered with the nearest valid name. A
batch of operations applies whole or not at all unless --mode asks for
best effort.
Requirements
office setup installs what the skill needs beside its own files, at locked
versions: the Python packages, the page renderer and the OCR engine. It needs
Python 3, uv, and Bun or Node 18 or newer, and
the host install runs it. No other command installs
anything; before setup, each one says to run it.
The fonts are licensed under the SIL Open Font License and travel with the
skill, so nothing depends on fonts installed on the host. office guide
lists them.