office-transform
Lets you create new files from parts of existing documents. Use when you want to extract or convert sections from spreadsheets, texts, or presentations without changing the original.
What it does
This tool creates a new document file (like Excel, Word, PDF, or PowerPoint) from a selected part of an existing file. The original file is never changed.
When to use it
- ✓Copying a table from a spreadsheet into a new file.
- ✓Extracting a specific paragraph from a Word document into a new file.
- ✓Converting a slide from a presentation into a new file.
Example of what to ask your AI
“Create a new Excel file with data from the 'Sales' sheet in columns A through C, rows 5 through 20.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
You select a portion of a document (like a range in a spreadsheet or a paragraph in Word). The tool then reads that selection and creates a completely new file with the selected content, ensuring the original file remains untouched.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add CherryHQ/cherry-studio --skill office-transformOr download just the file:
curl -L https://raw.githubusercontent.com/CherryHQ/cherry-studio/main/resources/skills/office-transform/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Office Transform
Turn a structural selection of an Office/PDF document into a new derived file.
Two invariants hold for every operation:
- The source file is read-only. Every result is a new file; both scripts refuse to write to the source path or overwrite an existing file. Never work around this with ad-hoc shell edits to the original.
- Anchors are structural. Selections address the document's own coordinates — worksheet + A1 range, body-level paragraph ordinal, one-based page number — never screen or DOM positions.
When to use which tool
- Only need to read a document to summarize or answer questions → use
mcp__cherry-tools__to_markdowninstead (see the cherry-tool-guide skill); it is lossy but built for reading. - The user wants a file out — an extracted range, a converted fragment, an edited copy → this skill.
Input: selection references
Chat surfaces may hand you a fenced selection-ref block:
{"path": "/abs/report.xlsx", "anchor": {"format": "xlsx", "sheet": "Sheet1", "range": "A1:C10"}, "excerpt": "…", "fileStamp": {"size": 1024, "mtimeMs": 1700000000000}}
The anchor object is exactly what the scripts take via --anchor.
Freshness check. fileStamp.mtimeMs is milliseconds since the Unix epoch, floored to
whole milliseconds. Do not compare it to stat's default output: stat -f %m (macOS) and
stat -c %Y (GNU) give whole seconds, so multiplying by 1000 loses the sub-second part and
never matches. Read whole milliseconds the way the app wrote them:
uv run python -c "import os,sys;st=os.stat(sys.argv[1]);print(st.st_size, st.st_mtime_ns//1_000_000)" '/abs/report.xlsx'
Treat the file as changed when the size differs, or when the mtimes differ by more than 2 ms.
The tolerance is small on purpose: both sides floor the same nanosecond timestamp to
milliseconds, so they agree exactly, and the couple of milliseconds only covers the rounding
of a double that can no longer represent current epoch milliseconds exactly. A wider window
would hide real edits — a same-size change made within it would read as unchanged, which is
why the anchor check below is not optional. On a change, tell the user the file changed since
they selected and ask them to re-select — never silently re-anchor.
Anchor check. Before a patch-copy edit, also verify the anchor still points where the
user thinks: extract the anchored region and compare its text with the reference's excerpt,
normalizing both sides the same way (NFC, collapse each whitespace run to one space, trim).
The two are not equal and are not meant to be — the excerpt is what the user selected, while
the extract is the whole region an edit would replace. A selection sitting inside one region
makes the excerpt the shorter side; a selection running past that region anchors to where it
starts, which makes it the longer one. So the test is containment, whichever way round fits:
the excerpt appears inside the extract, or the extract's tail is where the excerpt begins.
Only when neither holds has the anchor stopped pointing at the selection — then stop and tell
the user, never edit at a mismatched anchor and never go searching for a "close enough"
location. Two cases need care because the two sides are not directly comparable as-is:
- xlsx: the
excerptis tab-separated cells and newline-separated rows, while extraction writes csv or md. Compare cell values, not the raw file — read the csv with a csv reader and join the fields with single spaces before normalizing, so,and|never count as a difference. That join drops the cell boundaries on both sides, so a match proves the text is unchanged, not the grid — the same words re-split across cells still reads as a match. The freshness check above is what catches that; never skip it on a passing anchor check. Number formats are the second asymmetry: theexcerptholds what Excel displays, because that is what the user pointed at (1,234.50,45.67%), while extraction writes the stored value (1234.5,0.4567). Neither side is wrong, so a formatted cell never matches literally. Compare those cells by value, and leave them out of the joined strings so the containment test runs on the text cells alone. Dates, times and durations are the same asymmetry seen from the other side: extraction writes one fixed shape (2024-01-03,
…
FAQ
What happens to the original file?
The original file is always kept as is. The tool never modifies or overwrites it.
Can I edit the original file?
No, the tool is designed to be read-only regarding the source file. All operations result in a new file.
How does the tool know which part of the document I want?
You can select directly within the document or describe the area (e.g., 'sheet X, columns A to C'). The tool uses this information to pinpoint the exact structure to copy.
Details
Original description by the author
Derive new Office files from structural selections without touching the original. Use when the user points at part of a spreadsheet, Word document, PDF, or PowerPoint deck (a worksheet range, paragraph, page, slide, shape, or a pasted selection-ref block) and wants it extracted, converted, or edited — the result is always a NEW file; the source file is never modified. Covers xlsx range extraction
repo: CherryHQ/cherry-studio
Popularity
- GitHub stars
- 53k
- Ranking position
- #1820
- License
- AGPL-3.0
- Updated
- 10/16/2026
Comments
- …
More skills from this repository
code-mate-antigravity
Lets your agent analyze code and perform programming tasks. It's useful for reviewing or improving existing code.
CherryHQ/cherry-studio
code-mate-claude-code
Helps your agent analyze and implement code. It's useful for software development tasks and code reviews.
CherryHQ/cherry-studio
code-mate-codex
Lets your agent analyze and implement code. It's useful for getting coding results or comparing with other tools.
CherryHQ/cherry-studio
code-mate-deepseek-harness
Helps your agent analyze and implement code in repositories. It's useful for bounded development tasks and code analysis.
CherryHQ/cherry-studio
Similar skills
intent-driven-development
Helps your agent turn ideas into clear, testable plans. Defines criteria to ensure changes are made correctly and safely.
affaan-m/ECC
product-capability
Guides your agent in turning product ideas into clear plans. It defines what needs to be done, the limits, and decisions before development.
affaan-m/ECC
article-writing
Writes long-form content like articles, guides, and blog posts with a unique style. It's useful when you need well-written texts with a consistent voice and credibility.
affaan-m/ECC