From 819c0ea7e5cd0d0d0fa5d59aa34beafeb76b89f7 Mon Sep 17 00:00:00 2001 From: "dengzilong.zero" Date: Fri, 7 Aug 2026 15:29:13 +0800 Subject: [PATCH 1/3] fix: align slides xml-get skill flags --- shortcuts/slides/slides_xml_get_test.go | 16 +++++++++++ .../lark-slides-xml-presentations-get.md | 27 +++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/shortcuts/slides/slides_xml_get_test.go b/shortcuts/slides/slides_xml_get_test.go index 145434db59..38427e3d12 100644 --- a/shortcuts/slides/slides_xml_get_test.go +++ b/shortcuts/slides/slides_xml_get_test.go @@ -198,6 +198,22 @@ func TestSlidesXMLGetPrintsRawContentWhenRaw(t *testing.T) { } } +func TestSlidesXMLGetSkillReferenceDocumentsEveryPublicFlag(t *testing.T) { + b, err := os.ReadFile("../../skills/lark-slides/references/lark-slides-xml-presentations-get.md") + if err != nil { + t.Fatalf("ReadFile() error = %v", err) + } + doc := string(b) + for _, flag := range SlidesXMLGet.Flags { + if flag.Hidden { + continue + } + if !strings.Contains(doc, "| `--"+flag.Name+"` |") { + t.Errorf("xml-get skill reference does not document public flag --%s", flag.Name) + } + } +} + func TestSlidesXMLGetFetchesSingleSlideByIDToFile(t *testing.T) { dir := t.TempDir() withSlidesTestWorkingDir(t, dir) diff --git a/skills/lark-slides/references/lark-slides-xml-presentations-get.md b/skills/lark-slides/references/lark-slides-xml-presentations-get.md index 82fe027dc2..cb7e0ad594 100644 --- a/skills/lark-slides/references/lark-slides-xml-presentations-get.md +++ b/skills/lark-slides/references/lark-slides-xml-presentations-get.md @@ -8,7 +8,6 @@ 使用 `slides +xml-get` shortcut,可以把 XML 保存到本地文件,避免终端输出被截断。 - ```bash lark-cli slides +xml-get --as user \ --presentation "slides_example_presentation_id" \ @@ -23,7 +22,10 @@ lark-cli slides +xml-get --as user \ | `--presentation` | string | 是 | 演示文稿的唯一标识符 | | `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 | | `--output` | string | 否 | XML 保存路径,必须使用相对路径;省略时 XML 在 stdout 的 JSON envelope 中返回 | -| `--remove-attr-id` | flag | 否 | 移除 XML id 属性后读取 | +| `--raw` | flag | 否 | 直接把 XML 输出到 stdout,不包 JSON envelope;不能与 `--output`、`--jq` 或非 JSON `--format` 同时使用 | +| `--slide-id` | string | 否 | 只读取指定 `slide_id` 的单页 XML;不能与 `--slide-number` 或 `--remove-attr-id` 同时使用 | +| `--slide-number` | integer | 否 | 只读取指定的 1-based 页码;不能与 `--slide-id` 或 `--remove-attr-id` 同时使用 | +| `--remove-attr-id` | flag | 否 | 仅全文读取可用;移除 XML id 属性后读取,不适合后续精确块编辑 | | `--json` | flag | 否 | `--format json` 的简写,json 为默认输出格式 | @@ -36,6 +38,27 @@ lark-cli slides +xml-get --as user \ --json ``` +### 读取单页并保存 + +按页面 ID 和按页码二选一: + +```bash +lark-cli slides +xml-get --as user \ + --presentation "slides_example_presentation_id" \ + --slide-id "slide_example_id" \ + --output .lark-slides/plan/slides_example_presentation_id/slide.xml \ + --json +``` + +### 直接输出 XML 到管道 + +```bash +lark-cli slides +xml-get --as user \ + --presentation "slides_example_presentation_id" \ + --slide-number 1 \ + --raw +``` + ### 指定版本读取 ```bash From 8f8c4ec5ee392ef501aac528e23d2231e7ff6039 Mon Sep 17 00:00:00 2001 From: "dengzilong.zero" Date: Fri, 7 Aug 2026 16:49:48 +0800 Subject: [PATCH 2/3] test: remove shallow slides skill flag check --- shortcuts/slides/slides_xml_get_test.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/shortcuts/slides/slides_xml_get_test.go b/shortcuts/slides/slides_xml_get_test.go index 38427e3d12..145434db59 100644 --- a/shortcuts/slides/slides_xml_get_test.go +++ b/shortcuts/slides/slides_xml_get_test.go @@ -198,22 +198,6 @@ func TestSlidesXMLGetPrintsRawContentWhenRaw(t *testing.T) { } } -func TestSlidesXMLGetSkillReferenceDocumentsEveryPublicFlag(t *testing.T) { - b, err := os.ReadFile("../../skills/lark-slides/references/lark-slides-xml-presentations-get.md") - if err != nil { - t.Fatalf("ReadFile() error = %v", err) - } - doc := string(b) - for _, flag := range SlidesXMLGet.Flags { - if flag.Hidden { - continue - } - if !strings.Contains(doc, "| `--"+flag.Name+"` |") { - t.Errorf("xml-get skill reference does not document public flag --%s", flag.Name) - } - } -} - func TestSlidesXMLGetFetchesSingleSlideByIDToFile(t *testing.T) { dir := t.TempDir() withSlidesTestWorkingDir(t, dir) From caa1ebd648215e484d2d7a90a8b6685bf16b6eeb Mon Sep 17 00:00:00 2001 From: "dengzilong.zero" Date: Fri, 7 Aug 2026 16:58:39 +0800 Subject: [PATCH 3/3] docs: clarify slides xml-get scope --- .../lark-slides/references/lark-slides-xml-presentations-get.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills/lark-slides/references/lark-slides-xml-presentations-get.md b/skills/lark-slides/references/lark-slides-xml-presentations-get.md index cb7e0ad594..85bc9f155b 100644 --- a/skills/lark-slides/references/lark-slides-xml-presentations-get.md +++ b/skills/lark-slides/references/lark-slides-xml-presentations-get.md @@ -2,7 +2,7 @@ ## 用途 -读取飞书幻灯片(PPT)演示文稿的完整 XML 内容信息。 +读取飞书幻灯片(PPT)的完整演示文稿 XML,或通过 `--slide-id` / `--slide-number` 读取指定单页 XML。 ## Shortcut