Agent skill

Office Artifacts

by Prismer-AI in Prismer-AI/PrismerCloud

Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud…

MITAuto-check passedDocuments & Office

Install Office Artifacts

skills CLI
$ npx skills add Prismer-AI/PrismerCloud --skill office-artifacts -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Prismer-AI/PrismerCloud office-artifacts --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sdk/cloud/catalog/skills/office-artifacts .claude/skills/office-artifacts && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
office-artifacts
GitHub stars
1.6k
Token cost
~2.6k tokens
SKILL.md length
1,088 words
Files
74 (incl. references)
Skills in repo
88
Repo updated
First seen
Licence
MIT

At a glance

Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud…

  • Works in 2 steps: Write each deliverable (PDF / DOCX /… → Deliver it with the absolute path
  • The user asks for documents
  • SKILL.md covers Format-specific resources, Delivery contract — explicit,…, HARD RULE — never claim a file… and Runtime baseline (release 201), plus 4 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Office Artifacts is an agent skill from Prismer-AI/PrismerCloud. Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud deliver <abs-path. Use whenever the user asks for documents, slides, spreadsheets, reports, or PDFs.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 78 other files, including reference files (for example `NOTICE.md`, `references/RESOURCE-LIMITS.md` and `references/document-generation/GUIDE.md`).

It sits in Documents & Office, covering Excel spreadsheets, PowerPoint presentations and Word documents. It works with Microsoft PowerPoint, Microsoft Excel, Microsoft Word and pypdf. The licence is MIT.

When your agent uses it

  • The user asks for documents
  • Tasks that involve Excel spreadsheets
  • Tasks that involve PowerPoint presentations

Example prompts

  • “/office-artifacts”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Write each deliverable (PDF / DOCX / PPTX / XLSX / CSV / image /
  2. Deliver it with the absolute path

What it can do on your machine

Read from SKILL.md and the folder at commit e5d9444. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Office Artifacts loads about 2.6k tokens when it runs, and up to ~94k if it reads all its reference files. Until then it costs about 79 tokens; SKILL.md has 1,088 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~94k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Prismer-AI/PrismerCloud at commit e5d9444, republished under its MIT licence (© Prismer-AI). 1,088 words, ~2,568 tokens.

Download SKILL.mdSave it as .claude/skills/office-artifacts/SKILL.md (or your agent's skills folder). This skill also uses 73 other files; get the full folder from GitHub.
name
office-artifacts
description
Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with `cloud deliver <abs-path>`. Use whenever the user asks for documents, slides, spreadsheets, reports, or PDFs.
scope
persistence
metadata.aliases
document-generation
metadata.nativeReplaces
docx, pdf, powerpoint, xlsx

Office Artifacts

Format-specific resources

Read resource limits for dependency tiers, unsupported structures, Unicode fonts and optional extractor licensing.

Read only the guide for the requested format: references/docx/GUIDE.md, references/pdf/GUIDE.md, references/powerpoint/GUIDE.md or references/xlsx/GUIDE.md. Each guide's scripts and references are relative to its own directory, not the workspace or this skill root. Use the installed office Python interpreter below. For CJK text, references/document-generation/GUIDE.md is authoritative for fonts and PDF rendering; do not use ReportLab with unsupported CFF Noto collections. Treat upstream installation suggestions as optional dependency checks, not permission to modify the system. Verify generated files by reopening them and inspect rendered pages/slides when a renderer is available; otherwise report that visual verification was not performed. Always follow this entry's Prismer delivery contract instead of upstream host-specific output conventions.

Produce real binary office files (not markdown-as-PDF) by writing each one into the artifacts dir ($PRISMER_ARTIFACTS_DIR / <artifacts_dir> from <execution_context>). Prose-only completions are not valid.

Delivery contract — explicit, two steps (release202/09 P2)

Delivery is explicit. Writing a file into the artifacts dir does NOT deliver it — there is no auto-scan. You must run cloud deliver for every file you want the user to receive.

  1. Write each deliverable (PDF / DOCX / PPTX / XLSX / CSV / image / archive) into the artifacts dir. Drafts / intermediate scratch → $PRISMER_SCRATCH_DIR (never delivered).

  2. Deliver it with the absolute path:

    bash
    cloud deliver "<artifacts_dir>/report.pdf"

    This attaches the file to your current reply (动作 A — it rides the same message as your text summary). Run it once per file. The command prints the assetId on success.

  • $PRISMER_ARTIFACTS_DIR is injected as an env var by spawn-style adapters (claude-code / codex / openclaw). Hermes does not inject the env var — read the absolute artifacts/ path from the dispatch prompt's [Artifacts directive] block and write there. Either way, pass the absolute path to cloud deliver.

  • Hermes also has NO per-dispatch env ids (PRISMER_RUN_ID / PRISMER_TASK_ID / PRISMER_CONVERSATION_ID are all unset), so plain cloud deliver <path> cannot find the dispatch and exits with an error. On hermes you MUST copy <run_id> (or <task_id>) and <conversation_id> from <execution_context> and pass them as flags:

    bash
    # Hermes — ids come from <execution_context>, not env:
    cloud deliver "<artifacts_dir>/report.pdf" --run-id "<run_id>" --conversation-id "<conversation_id>"

    Spawn-adapter agents (claude-code / codex) do not need these flags — their env is already set; plain cloud deliver "<abs-path>" works there.

  • Sending a file as its OWN message (动作 B — separate from your reply, e.g. to drop it into the session standalone): use cloud file send "$PRISMER_CONVERSATION_ID" "<abs-path>". On hermes the conversation id comes from <execution_context><conversation_id> (pass it as the positional), and you must also add --run-id "<run_id>" so the proxy activates. Prefer cloud deliver (动作 A) for the normal "here is the document you asked for" case.

  • Attaching a file to a message you ALREADY sent (动作 A2 — "I already replied, now I produced a file I want on THAT message"): cloud send / cloud file send return a messageId; run cloud attach <messageId> "<abs-path>" to append the file to that existing message (it does NOT start a new one). On hermes also pass --run-id "<run_id>" and --conversation-id "<conversation_id>" (both copied from <execution_context>). Use this only when the reply already exists; for "this reply carries the file" use cloud deliver (动作 A).

  • Do NOT run cloud task complete to deliver a chat reply — the platform closes the turn from your final reply (dispatch-reply path).

  • cloud task attach / cloud task complete are OPTIONAL and ONLY for when you are genuinely working a kanban TASK you were assigned (e.g. moving a board card to review / done). For a normal @-mention chat reply, never touch them — cloud deliver is all you need.

  • Rejections are visible: if cloud deliver prints a non-zero exit / error (bad MIME, renamed extension, file not found), the file was NOT delivered — fix it and re-run. Do not claim a file you failed to deliver.

Show full SKILL.md (478 more words)Show less

HARD RULE — never claim a file you didn't actually write

Lie-guard (src/im/ws/handler.ts) as of release201/30 §8 is warn-only telemetry, not a destructive interceptor — the audit banner ("Team Manager 声明已生成文件但未真正落盘") that used to render in red is removed. The detector still logs a [warn] claim/asset disagreement (warn-only, see release201/30 §8) for ops dashboards when text claims a file but assetIds is empty. That signal helps investigate broken adapter wiring; it does NOT change the visible chat. Original 2026-05-22 audit: 25 of 27 office tasks shipped a claim with zero attached files.

Forbidden unless every product was actually written to $PRISMER_ARTIFACTS_DIR: "已生成 / 已落盘 / 已附件", "Created report.pdf", "Attached the file", "Generated slides.pptx".

Before claiming a file, all must hold:

  1. Generator import (import docx / pptx / openpyxl / reportlab) succeeds.
  2. Script ran with exit 0 (no traceback).
  3. ls -lah <artifacts_dir> (the absolute path from <execution_context>) shows the file, non-zero size.

If (1)-(3) fail, your reply must start with 无法生成文件 (reason) / Cannot produce file (reason).

Runtime baseline (release 201)

Sandbox image bakes python-docx, python-pptx, openpyxl, reportlab, pandas, pillow, numpy, imageio, apt file — all of them inside the image venv interpreter /home/user/.venv/bin/python3 (NOT the system /usr/bin/python3, which has NONE of these libraries). Always run generator scripts with that interpreter, e.g.

bash
/home/user/.venv/bin/python3 generate_report.py

If an import docx (or pptx / openpyxl / reportlab) probe fails, DO NOT conclude the dependency is missing until you have retried under /home/user/.venv/bin/python3 — a failure under the system python only means you probed the wrong interpreter. Only when the import ALSO fails under the venv interpreter, fail the task with module 'X' missing — rebuild sandbox image. Do not pip install on the fly.

Resolving the output directory

Your artifacts dir is delivered as an ABSOLUTE path in your prompt's <execution_context> block:

xml
<execution_context …>
  <artifacts_dir>/home/user/.prismer/workspaces/<ws>/…/tasks/<id>/artifacts</artifacts_dir>
  …
</execution_context>

It is also re-stated in the [Artifacts directive] block. Use that exact absolute path. The $PRISMER_ARTIFACTS_DIR env var is set ONLY by spawn-style adapters (claude-code / codex / openclaw); Hermes does NOT set it (os.environ.get("PRISMER_ARTIFACTS_DIR") returns None). Never write to a relative path, the CWD, or a literal placeholder — copy the <artifacts_dir> value verbatim:

python
import os
from pathlib import Path
# Paste the absolute path from <execution_context><artifacts_dir> here:
ARTIFACTS_DIR = "/home/user/.prismer/workspaces/.../tasks/.../artifacts"  # ← from <artifacts_dir>
out = Path(os.environ.get("PRISMER_ARTIFACTS_DIR") or ARTIFACTS_DIR)
out.mkdir(parents=True, exist_ok=True)

Generator recipes

python
# DOCX
from docx import Document
d = Document(); d.add_heading("Report", 0)
d.add_paragraph("Executive summary…"); d.save(out / "report.docx")

# PPTX
from pptx import Presentation
p = Presentation(); s = p.slides.add_slide(p.slide_layouts[0])
s.shapes.title.text = "Deck"; s.placeholders[1].text = "Key message"
p.save(out / "deck.pptx")

# XLSX
from openpyxl import Workbook
wb = Workbook(); ws = wb.active; ws.title = "Model"
ws.append(["Metric", "Value"]); ws.append(["Revenue", 100000])
ws.freeze_panes = "A2"; wb.save(out / "model.xlsx")

# PDF — reportlab (never rename markdown/html to .pdf)
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
c = canvas.Canvas(str(out / "report.pdf"), pagesize=letter)
c.drawString(72, 720, "Report"); c.save()

Validation + delivery

  1. File non-empty, magic bytes match (DOCX/PPTX/XLSX → PK; PDF → %PDF; CSV → UTF-8 with headers).
  2. Confirm every product landed in the artifacts dir:
bash
ls -lah <artifacts_dir>   # the absolute path from <execution_context><artifacts_dir>
  1. Deliver each file explicitly (this is the step that actually delivers — there is no auto-scan):
bash
cloud deliver "<artifacts_dir>/report.pdf"
cloud deliver "<artifacts_dir>/deck.pptx"

# On hermes (no env ids) append --run-id / --conversation-id from <execution_context>:
cloud deliver "<artifacts_dir>/report.pdf" --run-id "<run_id>" --conversation-id "<conversation_id>"

Each call attaches the file to your reply (动作 A). Confirm exit 0 and the printed assetId. Then write your final reply describing what you produced. Do NOT run cloud task attach / cloud task complete for chat delivery.

Working a real kanban TASK (board card), not a chat reply? Only then may you optionally cloud task complete "$PRISMER_TASK_ID" --result "..." to move the card — and only when $PRISMER_TASK_ID is a real task id, not a chat run.

Failure mode

Missing library + cannot install → fail with module 'X' missing and list the package. No renamed extensions, no prose-only substitute.

© Prismer-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 73 other files (references) in sdk/cloud/catalog/skills/office-artifacts of Prismer-AI/PrismerCloud.

  • SKILL.md
  • NOTICE.md
  • references/RESOURCE-LIMITS.md
  • references/document-generation/GUIDE.md
  • references/docx/GUIDE.md
  • references/docx/LICENSE
  • references/docx/NOTICE.md
  • references/docx/references/revisions-and-comments.md
  • references/docx/scripts/docx_comments.py
  • references/docx/scripts/docx_common.py
  • references/docx/scripts/docx_create.py
  • references/docx/scripts/docx_edit.py
  • references/docx/scripts/docx_read.py
  • references/docx/scripts/docx_revisions.py
  • references/docx/scripts/docx_template.py
  • references/docx/scripts/docx_validate.py
  • … and 58 more

Open the folder on GitHubat commit e5d9444

Compare with similar skills

Office Artifacts next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Office Artifacts compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Office Artifacts this skillPrismer-AI/PrismerCloud1.6k—~2.6kAutomated safety check: PassMIT
Documentszhongkaifu/TensorSharp563—~4.2kAutomated safety check: PassBSD-3-Clause
Markdown Exporterbowenliang123/markdown-exporter2721 repos~5.3kAutomated safety check: PassApache-2.0
Brand DOCXferdinandobons/brand-docs272—~3.8kAutomated safety check: PassMIT
Brand PPTXferdinandobons/brand-docs272—~3.5kAutomated safety check: PassMIT
Office RemediatorCommunity-Access/accessibility-agents423—~1kAutomated safety check: PassMIT

Similar skills

  • Documents

    zhongkaifu/TensorSharp

    Read and write real documents on the device - PDF, XLSX, DOCX, PPTX and CSV.

    563 GitHub stars~4.2k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Markdown Exporter

    bowenliang123/markdown-exporter

    Convert Markdown text to DOCX, PPTX, XLSX, PDF, PNG, SVG, HTML, IPYNB, MD, CSV, JSON, JSONL, XML files, and extract code blocks in Markdown to Python, Bash,JS and etc files.

    272 GitHub starsUsed in 1 repo~5.3k tokens
    Documents & OfficeAuto-check passed
  • Brand DOCX

    ferdinandobons/brand-docs

    Brand-aware Word engine. An agent skill from ferdinandobons/brand-docs.

    272 GitHub stars~3.8k tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • Brand PPTX

    ferdinandobons/brand-docs

    Brand-aware PowerPoint engine. An agent skill from ferdinandobons/brand-docs.

    272 GitHub stars~3.5k tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • Office Remediator

    Community-Access/accessibility-agents

    Fix .docx, .xlsx and .pptx programmatically via python-docx and friends.

    423 GitHub stars~1k tokensUpdated 17 days ago
    Documents & OfficeAuto-check passed
  • MinerU Document Reader

    opendatalab/MinerU

    Reads, OCRs, searches and cites local documents through the mineru CLI, covering PDF, images, Office files, EPUB, HTML and CSV.

    81k GitHub stars~9.4k tokensUpdated yesterday
    Documents & OfficeAuto-check: warnings

More from Prismer-AI/PrismerCloud

All 88 skills in this repo
  • Prismer Google Workspace

    Prismer-AI/PrismerCloud

    Gives an agent account-scoped access to Gmail, Calendar, Drive, Contacts, Docs and Sheets through the gws CLI or a bundled Python client.

    1.6k GitHub starsUsed in 3 repos~4.2k tokens
    Auto-check passed
  • Prismer Skill Creator

    Prismer-AI/PrismerCloud

    Walks an agent through creating, importing, editing, validating, testing and publishing Prismer Skills with a fixed workflow and bundled scripts.

    1.6k GitHub stars~2.6k tokensUpdated 10 days ago
    Auto-check: notes
  • Himalaya Email CLI

    Prismer-AI/PrismerCloud

    Operates a mailbox from the terminal with the external Himalaya CLI over IMAP, SMTP, Notmuch or Sendmail, separate from any built-in email gateway adapter.

    1.6k GitHub starsUsed in 2 repos~2.3k tokens
    Auto-check passed
  • Prismer Image Generation

    Prismer-AI/PrismerCloud

    Generates one image from a text prompt with a bundled Node.js helper and delivers it once as the attachment to the current Prismer reply.

    1.6k GitHub stars~1.4k tokensUpdated 10 days ago
    Auto-check passed
  • Manim Explainer Videos

    Prismer-AI/PrismerCloud

    Produces 3Blue1Brown-style explainer animations with Manim Community Edition for math, algorithms, equations and architecture diagrams, with planning and rendering references.

    1.6k GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • Prismer Role Builder

    Prismer-AI/PrismerCloud

    Creates or updates Prismer role templates from a persona, SOP or job description, and turns a role into a working agent that runs its first task through a bundled script.

    1.6k GitHub stars~2.3k tokensUpdated 10 days ago
    Auto-check: notes

Questions about Office Artifacts

What does Office Artifacts do?

Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud…. Office Artifacts is an agent skill from Prismer-AI/PrismerCloud. Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with cloud deliver <abs-path.

When should I use Office Artifacts?

Office Artifacts fits situations like: the user asks for documents; tasks that involve Excel spreadsheets; tasks that involve PowerPoint presentations.

How do I install Office Artifacts in Claude Code?

Run `npx skills add Prismer-AI/PrismerCloud --skill office-artifacts -a claude-code`. Or copy the skill folder (sdk/cloud/catalog/skills/office-artifacts in Prismer-AI/PrismerCloud) into .claude/skills/office-artifacts in your project. Claude Code loads it when a task matches its description.

How do I install Office Artifacts in Codex?

Run `npx skills add Prismer-AI/PrismerCloud --skill office-artifacts -a codex`. Or copy the skill folder (sdk/cloud/catalog/skills/office-artifacts in Prismer-AI/PrismerCloud) into .agents/skills/office-artifacts in your project. Codex loads it when a task matches its description.

Can I use Office Artifacts in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Prismer-AI/PrismerCloud --skill office-artifacts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/office-artifacts, .gemini/skills/office-artifacts, .github/skills/office-artifacts and .opencode/skills/office-artifacts in your project.

What does Office Artifacts need to run?

Going by SKILL.md and its folder, Office Artifacts needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Office Artifacts access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Office Artifacts safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Office Artifacts use?

Office Artifacts is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Office Artifacts use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 91k tokens, read only when the agent opens those files.

What are the alternatives to Office Artifacts?

Skills that share tags, products or a category with Office Artifacts: Documents (zhongkaifu/TensorSharp, 563 stars), Markdown Exporter (bowenliang123/markdown-exporter, 272 stars), Brand DOCX (ferdinandobons/brand-docs, 272 stars) and Brand PPTX (ferdinandobons/brand-docs, 272 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Office Artifacts?

Prismer-AI (a GitHub organization) maintains it in Prismer-AI/PrismerCloud, which has 1,555 GitHub stars. The repository holds 88 skills in this directory. The repository was last updated on September 30, 2026.

Source: Prismer-AI/PrismerCloud on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.