diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 00b7dbe0..3064b56b 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -42,7 +42,7 @@ }, { "name": "che-pptx-mcp", - "version": "0.1.2", + "version": "0.1.3", "description": "PowerPoint (.pptx) MCP server — PresentationML 解析與生成:slides、shapes、tables、notes、theme、markdown 匯出。v0.1.0: 首次 marketplace 發布(signed + notarized universal binary)。", "author": { "name": "Che Cheng" diff --git a/plugins/che-pptx-mcp/.claude-plugin/plugin.json b/plugins/che-pptx-mcp/.claude-plugin/plugin.json index f69dbf80..198bae83 100644 --- a/plugins/che-pptx-mcp/.claude-plugin/plugin.json +++ b/plugins/che-pptx-mcp/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "che-pptx-mcp", "description": "PowerPoint (.pptx) MCP server — PresentationML 解析與生成:slides、shapes、tables、notes、theme、markdown 匯出。 v0.1.0: 首次 marketplace 發布。", - "version": "0.1.2", + "version": "0.1.3", "binary_version": "0.1.0", "author": { "name": "Che Cheng" diff --git a/plugins/che-pptx-mcp/CHANGELOG.md b/plugins/che-pptx-mcp/CHANGELOG.md index 830a7843..4af303d0 100644 --- a/plugins/che-pptx-mcp/CHANGELOG.md +++ b/plugins/che-pptx-mcp/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to the che-pptx-mcp plugin shell will be documented in this The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). +## [0.1.3] - 2026-08-24 + +### Added + +- 新增 `che-pptx-mcp` skill(PsychQuant/macdoc#159):提供 Direct/Session 工作流、具名 MCP tools、0-based index/EMU 慣例,以及 PDF/render 尚未支援的誠實邊界。 + ## [0.1.2] - 2026-07-02 ### Changed diff --git a/plugins/che-pptx-mcp/README.md b/plugins/che-pptx-mcp/README.md index 37d6719b..1909fbbb 100644 --- a/plugins/che-pptx-mcp/README.md +++ b/plugins/che-pptx-mcp/README.md @@ -9,6 +9,14 @@ claude plugin marketplace add PsychQuant/macdoc claude plugin install che-pptx-mcp@macdoc ``` +## 使用方式 + +安裝後可由 `che-pptx-mcp` skill 取得具名工具流程、Direct/Session 模式、索引與 EMU 慣例: + +[`skills/che-pptx-mcp/SKILL.md`](skills/che-pptx-mcp/SKILL.md) + +目前可讀寫 slides、shapes、tables、images、notes,可讀取 theme,並匯出 Markdown。尚未提供 theme 寫入、PDF 匯出、投影片 render/PNG preview 或 cm 幾何工具;`export_image` 只匯出簡報內嵌圖片,不是投影片預覽。 + Wrapper 會自動從 [GitHub Releases](https://github.com/PsychQuant/che-pptx-mcp/releases) 下載 release 的 `ChePPTXMCP` universal binary 到 plugin 層級的 `.bin-cache/`(跨 marketplace 隔離、跨版本持久),安裝前與每次啟動時強制驗證 sha256(安裝時)與 Developer ID Application 簽章鏈(Team `6W377FS7BS`)。release 流程含 Apple notarization(wrapper 不重複檢查 notarization)。 ## 原始碼 diff --git a/plugins/che-pptx-mcp/skills/che-pptx-mcp/SKILL.md b/plugins/che-pptx-mcp/skills/che-pptx-mcp/SKILL.md new file mode 100644 index 00000000..54f1dd35 --- /dev/null +++ b/plugins/che-pptx-mcp/skills/che-pptx-mcp/SKILL.md @@ -0,0 +1,81 @@ +--- +name: che-pptx-mcp +description: Use when reading, creating, or editing PowerPoint .pptx presentations with the che-pptx-mcp plugin, especially for slides, shapes, tables, notes, images, themes, or Markdown export. +--- + +# che-pptx-mcp + +Use the Swift-native PresentationML server for `.pptx` work without launching PowerPoint. + +## Choose a mode + +| Need | Mode | Address | +|---|---|---| +| Inspect one file | Direct, read-only | `source_path` | +| Create or edit | Session | `doc_id` after `create_presentation` or `open_presentation` | + +All `slide_index`, row, and column indices are zero-based. Use `get_slide_shapes` to discover IDs. `update_shape_text`, `set_shape_position`, `set_shape_size`, and `set_shape_fill` accept only entries reported as `Shape`, not picture/table/group IDs. Use image tools for pictures and table tools for tables. Groups have no text/position/size/fill editor; `delete_shape` can remove one. Geometry parameters are raw EMU integers; centimetre helpers are not shipped yet. + +## Read without opening a session + +```text +get_presentation_info(source_path: "/in/deck.pptx") +get_slide_count(source_path: "/in/deck.pptx") +get_slide_text(source_path: "/in/deck.pptx", slide_index: 0) +``` + +Direct mode is read-only. Use `create_presentation` to start a new session, or `open_presentation` before modifying an existing file. + +## Create a presentation + +```text +1. create_presentation(doc_id: "deck") +2. insert_text_shape(doc_id: "deck", slide_index: 0, text: "Title", + x: 720000, y: 720000, width: 7200000, height: 900000) +3. save_presentation(doc_id: "deck", path: "/out/new-deck.pptx") +4. close_presentation(doc_id: "deck") +``` + +`create_presentation` starts with one blank slide at index 0; call `add_slide` only when another slide is needed. + +## Edit an existing presentation + +```text +1. open_presentation(path: "/in/deck.pptx", doc_id: "deck") +2. get_slide_shapes(doc_id: "deck", slide_index: 1) +3. update_shape_text(doc_id: "deck", slide_index: 1, + shape_id: