bug-reproduce
Turn a known bug into a tight, red-capable reproducer, then prove the reproducer locks that…
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,
$ npx -y skills add Prismer-AI/PrismerCloud --skill office-artifacts --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/office-artifactsContext preview
The summary Claude sees to decide when to auto-load this skill.
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,
name: office-artifacts scope: persistence metadata: aliases: [document-generation] nativeReplaces: [docx, pdf, powerpoint, xlsx] 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.
Read [resource limits](references/RESOURCE-LIMITS.md) 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 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:
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.
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`.
`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:
# 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.
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.
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).
platform closes the turn from your final reply (dispatch-reply path).
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.
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.
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` / `openpy
Repo: Prismer-AI/PrismerCloud
Turn a known bug into a tight, red-capable reproducer, then prove the reproducer locks that…
Review a diff against its acceptance criteria in four segments (convention adherence, bug…
Five-dimension design audit (frontend UI/UX · server data-model & flow · endpoint spec ·…
Before merge, mechanize Documentation-First — derive the code delta from git diff, then…
Diagnose the local dev machine before any APC loop step — run apc env doctor, classify each…
Close out a local coding task on the bound daemon — stage, commit, branch, merge, push via…