@yandy0725/pi-lark 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +30 -0
  2. package/README.zh.md +30 -0
  3. package/package.json +36 -0
  4. package/skills/lark-approval/SKILL.md +56 -0
  5. package/skills/lark-approval/references/lark-approval-initiate.md +196 -0
  6. package/skills/lark-approval/references/lark-approval-instance-form-control-parameters.md +606 -0
  7. package/skills/lark-approval/references/lark-approval-instance-value-sourcing.md +108 -0
  8. package/skills/lark-apps/SKILL.md +78 -0
  9. package/skills/lark-apps/references/lark-apps-access-scope-get.md +28 -0
  10. package/skills/lark-apps/references/lark-apps-access-scope-set.md +40 -0
  11. package/skills/lark-apps/references/lark-apps-cloud-dev.md +120 -0
  12. package/skills/lark-apps/references/lark-apps-create.md +40 -0
  13. package/skills/lark-apps/references/lark-apps-db-env-create.md +31 -0
  14. package/skills/lark-apps/references/lark-apps-db-execute.md +40 -0
  15. package/skills/lark-apps/references/lark-apps-db-table-get.md +29 -0
  16. package/skills/lark-apps/references/lark-apps-db-table-list.md +31 -0
  17. package/skills/lark-apps/references/lark-apps-env-pull.md +35 -0
  18. package/skills/lark-apps/references/lark-apps-git-credential.md +37 -0
  19. package/skills/lark-apps/references/lark-apps-html-publish.md +57 -0
  20. package/skills/lark-apps/references/lark-apps-init.md +37 -0
  21. package/skills/lark-apps/references/lark-apps-list.md +37 -0
  22. package/skills/lark-apps/references/lark-apps-local-dev.md +76 -0
  23. package/skills/lark-apps/references/lark-apps-release-create.md +30 -0
  24. package/skills/lark-apps/references/lark-apps-release-get.md +28 -0
  25. package/skills/lark-apps/references/lark-apps-release-list.md +31 -0
  26. package/skills/lark-apps/references/lark-apps-session-messages-list.md +53 -0
  27. package/skills/lark-apps/references/lark-apps-update.md +30 -0
  28. package/skills/lark-attendance/SKILL.md +57 -0
  29. package/skills/lark-base/SKILL.md +157 -0
  30. package/skills/lark-base/references/dashboard-block-data-config.md +350 -0
  31. package/skills/lark-base/references/formula-field-guide.md +737 -0
  32. package/skills/lark-base/references/lark-base-cell-value.md +153 -0
  33. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +717 -0
  34. package/skills/lark-base/references/lark-base-dashboard.md +238 -0
  35. package/skills/lark-base/references/lark-base-data-analysis-sop.md +210 -0
  36. package/skills/lark-base/references/lark-base-data-query-guide.md +61 -0
  37. package/skills/lark-base/references/lark-base-data-query.md +452 -0
  38. package/skills/lark-base/references/lark-base-field-create.md +103 -0
  39. package/skills/lark-base/references/lark-base-field-json.md +489 -0
  40. package/skills/lark-base/references/lark-base-field-update.md +171 -0
  41. package/skills/lark-base/references/lark-base-form-detail.md +71 -0
  42. package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
  43. package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
  44. package/skills/lark-base/references/lark-base-form-submit.md +170 -0
  45. package/skills/lark-base/references/lark-base-record-batch-create.md +57 -0
  46. package/skills/lark-base/references/lark-base-record-batch-update.md +52 -0
  47. package/skills/lark-base/references/lark-base-record-history-list.md +43 -0
  48. package/skills/lark-base/references/lark-base-record-upsert.md +63 -0
  49. package/skills/lark-base/references/lark-base-role-guide.md +65 -0
  50. package/skills/lark-base/references/lark-base-view-set-filter.md +189 -0
  51. package/skills/lark-base/references/lark-base-workflow-guide.md +830 -0
  52. package/skills/lark-base/references/lark-base-workflow-schema.md +1071 -0
  53. package/skills/lark-base/references/lookup-field-guide.md +512 -0
  54. package/skills/lark-base/references/role-config.md +549 -0
  55. package/skills/lark-calendar/SKILL.md +137 -0
  56. package/skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
  57. package/skills/lark-calendar/references/lark-calendar-create.md +106 -0
  58. package/skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
  59. package/skills/lark-calendar/references/lark-calendar-meeting.md +40 -0
  60. package/skills/lark-calendar/references/lark-calendar-room-find.md +113 -0
  61. package/skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
  62. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
  63. package/skills/lark-calendar/references/lark-calendar-search-event.md +29 -0
  64. package/skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
  65. package/skills/lark-calendar/references/lark-calendar-update.md +105 -0
  66. package/skills/lark-contact/SKILL.md +59 -0
  67. package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
  68. package/skills/lark-contact/references/lark-contact-search-user.md +124 -0
  69. package/skills/lark-doc/SKILL.md +79 -0
  70. package/skills/lark-doc/references/lark-doc-create.md +79 -0
  71. package/skills/lark-doc/references/lark-doc-fetch.md +138 -0
  72. package/skills/lark-doc/references/lark-doc-md.md +76 -0
  73. package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
  74. package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
  75. package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
  76. package/skills/lark-doc/references/lark-doc-resource-cover.md +70 -0
  77. package/skills/lark-doc/references/lark-doc-update.md +259 -0
  78. package/skills/lark-doc/references/lark-doc-whiteboard.md +154 -0
  79. package/skills/lark-doc/references/lark-doc-xml.md +181 -0
  80. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +59 -0
  81. package/skills/lark-doc/references/style/lark-doc-style.md +86 -0
  82. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +55 -0
  83. package/skills/lark-drive/SKILL.md +215 -0
  84. package/skills/lark-drive/references/lark-drive-add-comment.md +193 -0
  85. package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
  86. package/skills/lark-drive/references/lark-drive-comment-location.md +193 -0
  87. package/skills/lark-drive/references/lark-drive-comments-guide.md +72 -0
  88. package/skills/lark-drive/references/lark-drive-cover.md +79 -0
  89. package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
  90. package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
  91. package/skills/lark-drive/references/lark-drive-delete.md +79 -0
  92. package/skills/lark-drive/references/lark-drive-download.md +31 -0
  93. package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
  94. package/skills/lark-drive/references/lark-drive-export.md +145 -0
  95. package/skills/lark-drive/references/lark-drive-files-list.md +158 -0
  96. package/skills/lark-drive/references/lark-drive-import.md +170 -0
  97. package/skills/lark-drive/references/lark-drive-inspect.md +50 -0
  98. package/skills/lark-drive/references/lark-drive-member-add.md +66 -0
  99. package/skills/lark-drive/references/lark-drive-move.md +120 -0
  100. package/skills/lark-drive/references/lark-drive-permission-guide.md +41 -0
  101. package/skills/lark-drive/references/lark-drive-preview.md +87 -0
  102. package/skills/lark-drive/references/lark-drive-pull.md +137 -0
  103. package/skills/lark-drive/references/lark-drive-push.md +162 -0
  104. package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
  105. package/skills/lark-drive/references/lark-drive-search.md +269 -0
  106. package/skills/lark-drive/references/lark-drive-secure-label.md +52 -0
  107. package/skills/lark-drive/references/lark-drive-status.md +137 -0
  108. package/skills/lark-drive/references/lark-drive-task-result.md +302 -0
  109. package/skills/lark-drive/references/lark-drive-upload.md +101 -0
  110. package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
  111. package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
  112. package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
  113. package/skills/lark-drive/references/lark-drive-version-revert.md +35 -0
  114. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-analysis.md +249 -0
  115. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-discovery.md +253 -0
  116. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-execution.md +200 -0
  117. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-planning.md +336 -0
  118. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-rollback.md +308 -0
  119. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +226 -0
  120. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +168 -0
  121. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +424 -0
  122. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +207 -0
  123. package/skills/lark-drive/references/lark-drive-workflow.md +130 -0
  124. package/skills/lark-event/SKILL.md +154 -0
  125. package/skills/lark-event/references/lark-event-im.md +87 -0
  126. package/skills/lark-event/references/lark-event-minutes.md +54 -0
  127. package/skills/lark-event/references/lark-event-task.md +78 -0
  128. package/skills/lark-event/references/lark-event-vc.md +94 -0
  129. package/skills/lark-event/references/lark-event-whiteboard.md +67 -0
  130. package/skills/lark-im/SKILL.md +247 -0
  131. package/skills/lark-im/references/lark-im-card-action-reply.md +175 -0
  132. package/skills/lark-im/references/lark-im-chat-create.md +162 -0
  133. package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
  134. package/skills/lark-im/references/lark-im-chat-list.md +166 -0
  135. package/skills/lark-im/references/lark-im-chat-messages-list.md +157 -0
  136. package/skills/lark-im/references/lark-im-chat-search.md +142 -0
  137. package/skills/lark-im/references/lark-im-chat-update.md +84 -0
  138. package/skills/lark-im/references/lark-im-feed-group-list-item.md +68 -0
  139. package/skills/lark-im/references/lark-im-feed-group-list.md +65 -0
  140. package/skills/lark-im/references/lark-im-feed-group-query-item.md +44 -0
  141. package/skills/lark-im/references/lark-im-feed-groups.md +452 -0
  142. package/skills/lark-im/references/lark-im-feed-shortcut-create.md +97 -0
  143. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +103 -0
  144. package/skills/lark-im/references/lark-im-feed-shortcut-remove.md +48 -0
  145. package/skills/lark-im/references/lark-im-flag-cancel.md +67 -0
  146. package/skills/lark-im/references/lark-im-flag-create.md +67 -0
  147. package/skills/lark-im/references/lark-im-flag-list.md +100 -0
  148. package/skills/lark-im/references/lark-im-message-enrichment.md +54 -0
  149. package/skills/lark-im/references/lark-im-messages-mget.md +99 -0
  150. package/skills/lark-im/references/lark-im-messages-reply.md +267 -0
  151. package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
  152. package/skills/lark-im/references/lark-im-messages-search.md +234 -0
  153. package/skills/lark-im/references/lark-im-messages-send.md +267 -0
  154. package/skills/lark-im/references/lark-im-reactions.md +299 -0
  155. package/skills/lark-im/references/lark-im-threads-messages-list.md +115 -0
  156. package/skills/lark-mail/SKILL.md +287 -0
  157. package/skills/lark-mail/assets/templates/job-application--resume.html +33 -0
  158. package/skills/lark-mail/assets/templates/newsletter--weekly-brief.html +50 -0
  159. package/skills/lark-mail/assets/templates/research--market-report.html +256 -0
  160. package/skills/lark-mail/assets/templates/weekly--personal-report.html +43 -0
  161. package/skills/lark-mail/assets/templates/weekly--team-report.html +9 -0
  162. package/skills/lark-mail/references/lark-mail-calendar-invite.md +36 -0
  163. package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
  164. package/skills/lark-mail/references/lark-mail-draft-create.md +127 -0
  165. package/skills/lark-mail/references/lark-mail-draft-edit.md +404 -0
  166. package/skills/lark-mail/references/lark-mail-forward.md +239 -0
  167. package/skills/lark-mail/references/lark-mail-html.md +333 -0
  168. package/skills/lark-mail/references/lark-mail-lint-html.md +243 -0
  169. package/skills/lark-mail/references/lark-mail-message.md +233 -0
  170. package/skills/lark-mail/references/lark-mail-messages.md +108 -0
  171. package/skills/lark-mail/references/lark-mail-recall.md +66 -0
  172. package/skills/lark-mail/references/lark-mail-recipient-search.md +59 -0
  173. package/skills/lark-mail/references/lark-mail-reply-all.md +213 -0
  174. package/skills/lark-mail/references/lark-mail-reply.md +249 -0
  175. package/skills/lark-mail/references/lark-mail-rules.md +31 -0
  176. package/skills/lark-mail/references/lark-mail-send-as.md +44 -0
  177. package/skills/lark-mail/references/lark-mail-send-receipt.md +120 -0
  178. package/skills/lark-mail/references/lark-mail-send-status.md +46 -0
  179. package/skills/lark-mail/references/lark-mail-send.md +222 -0
  180. package/skills/lark-mail/references/lark-mail-share-to-chat.md +87 -0
  181. package/skills/lark-mail/references/lark-mail-signature.md +98 -0
  182. package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
  183. package/skills/lark-mail/references/lark-mail-template-update.md +150 -0
  184. package/skills/lark-mail/references/lark-mail-template.md +54 -0
  185. package/skills/lark-mail/references/lark-mail-thread.md +111 -0
  186. package/skills/lark-mail/references/lark-mail-triage.md +131 -0
  187. package/skills/lark-mail/references/lark-mail-watch.md +94 -0
  188. package/skills/lark-markdown/SKILL.md +69 -0
  189. package/skills/lark-markdown/references/lark-markdown-create.md +94 -0
  190. package/skills/lark-markdown/references/lark-markdown-diff.md +156 -0
  191. package/skills/lark-markdown/references/lark-markdown-fetch.md +79 -0
  192. package/skills/lark-markdown/references/lark-markdown-overwrite.md +85 -0
  193. package/skills/lark-markdown/references/lark-markdown-patch.md +160 -0
  194. package/skills/lark-minutes/SKILL.md +192 -0
  195. package/skills/lark-minutes/references/lark-minutes-detail.md +62 -0
  196. package/skills/lark-minutes/references/lark-minutes-download.md +137 -0
  197. package/skills/lark-minutes/references/lark-minutes-search.md +204 -0
  198. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +107 -0
  199. package/skills/lark-minutes/references/lark-minutes-summary.md +122 -0
  200. package/skills/lark-minutes/references/lark-minutes-todo.md +138 -0
  201. package/skills/lark-minutes/references/lark-minutes-update.md +41 -0
  202. package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
  203. package/skills/lark-note/SKILL.md +94 -0
  204. package/skills/lark-note/references/lark-note-detail.md +26 -0
  205. package/skills/lark-note/references/lark-note-transcript.md +23 -0
  206. package/skills/lark-okr/SKILL.md +115 -0
  207. package/skills/lark-okr/references/lark-okr-batch-create.md +106 -0
  208. package/skills/lark-okr/references/lark-okr-contentblock.md +359 -0
  209. package/skills/lark-okr/references/lark-okr-cycle-detail.md +84 -0
  210. package/skills/lark-okr/references/lark-okr-cycle-list.md +90 -0
  211. package/skills/lark-okr/references/lark-okr-entities.md +329 -0
  212. package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
  213. package/skills/lark-okr/references/lark-okr-indicator-update.md +80 -0
  214. package/skills/lark-okr/references/lark-okr-progress-create.md +81 -0
  215. package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
  216. package/skills/lark-okr/references/lark-okr-progress-get.md +62 -0
  217. package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
  218. package/skills/lark-okr/references/lark-okr-progress-update.md +81 -0
  219. package/skills/lark-okr/references/lark-okr-reorder.md +81 -0
  220. package/skills/lark-okr/references/lark-okr-weight.md +96 -0
  221. package/skills/lark-openapi-explorer/SKILL.md +153 -0
  222. package/skills/lark-shared/SKILL.md +168 -0
  223. package/skills/lark-shared/references/lark-wiki-token-routing.md +42 -0
  224. package/skills/lark-sheets/SKILL.md +165 -0
  225. package/skills/lark-sheets/references/lark-sheets-batch-update.md +191 -0
  226. package/skills/lark-sheets/references/lark-sheets-chart.md +330 -0
  227. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +179 -0
  228. package/skills/lark-sheets/references/lark-sheets-core-operations.md +103 -0
  229. package/skills/lark-sheets/references/lark-sheets-filter-view.md +137 -0
  230. package/skills/lark-sheets/references/lark-sheets-filter.md +130 -0
  231. package/skills/lark-sheets/references/lark-sheets-float-image.md +159 -0
  232. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +267 -0
  233. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +166 -0
  234. package/skills/lark-sheets/references/lark-sheets-range-operations.md +267 -0
  235. package/skills/lark-sheets/references/lark-sheets-read-data.md +235 -0
  236. package/skills/lark-sheets/references/lark-sheets-search-replace.md +111 -0
  237. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +212 -0
  238. package/skills/lark-sheets/references/lark-sheets-sparkline.md +149 -0
  239. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +205 -0
  240. package/skills/lark-sheets/references/lark-sheets-workbook.md +395 -0
  241. package/skills/lark-sheets/references/lark-sheets-write-cells.md +565 -0
  242. package/skills/lark-sheets/scripts/sheets_df.py +32 -0
  243. package/skills/lark-skill-maker/SKILL.md +85 -0
  244. package/skills/lark-slides/SKILL.md +293 -0
  245. package/skills/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
  246. package/skills/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
  247. package/skills/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
  248. package/skills/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
  249. package/skills/lark-slides/assets/templates/hr--employee_training.xml +912 -0
  250. package/skills/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
  251. package/skills/lark-slides/assets/templates/hr--onboarding.xml +933 -0
  252. package/skills/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
  253. package/skills/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
  254. package/skills/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
  255. package/skills/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
  256. package/skills/lark-slides/assets/templates/marketing--marketing_plan.xml +1469 -0
  257. package/skills/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
  258. package/skills/lark-slides/assets/templates/marketing--product_whitepaper.xml +1455 -0
  259. package/skills/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
  260. package/skills/lark-slides/assets/templates/misc--book_sharing.xml +1338 -0
  261. package/skills/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
  262. package/skills/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
  263. package/skills/lark-slides/assets/templates/office--dark_general.xml +3763 -0
  264. package/skills/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
  265. package/skills/lark-slides/assets/templates/office--light_general.xml +3378 -0
  266. package/skills/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
  267. package/skills/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
  268. package/skills/lark-slides/assets/templates/office--work_report.xml +1099 -0
  269. package/skills/lark-slides/assets/templates/office--work_summary.xml +4420 -0
  270. package/skills/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
  271. package/skills/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
  272. package/skills/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
  273. package/skills/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
  274. package/skills/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
  275. package/skills/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
  276. package/skills/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
  277. package/skills/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
  278. package/skills/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
  279. package/skills/lark-slides/assets/templates/personal--self_intro.xml +696 -0
  280. package/skills/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
  281. package/skills/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
  282. package/skills/lark-slides/assets/templates/product--market_analysis.xml +898 -0
  283. package/skills/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
  284. package/skills/lark-slides/assets/templates/product--product_intro.xml +2838 -0
  285. package/skills/lark-slides/assets/templates/product--product_promotion.xml +687 -0
  286. package/skills/lark-slides/assets/templates/product--product_promotion_2.xml +687 -0
  287. package/skills/lark-slides/references/asset-planning.md +124 -0
  288. package/skills/lark-slides/references/examples.md +261 -0
  289. package/skills/lark-slides/references/iconpark-index.json +41901 -0
  290. package/skills/lark-slides/references/iconpark.md +46 -0
  291. package/skills/lark-slides/references/lark-slides-create.md +137 -0
  292. package/skills/lark-slides/references/lark-slides-edit-workflows.md +144 -0
  293. package/skills/lark-slides/references/lark-slides-media-upload.md +128 -0
  294. package/skills/lark-slides/references/lark-slides-replace-pages.md +95 -0
  295. package/skills/lark-slides/references/lark-slides-replace-slide.md +240 -0
  296. package/skills/lark-slides/references/lark-slides-screenshot.md +94 -0
  297. package/skills/lark-slides/references/lark-slides-whiteboard.md +330 -0
  298. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +220 -0
  299. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
  300. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
  301. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +187 -0
  302. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
  303. package/skills/lark-slides/references/planning-layer.md +219 -0
  304. package/skills/lark-slides/references/slide-templates.md +201 -0
  305. package/skills/lark-slides/references/slides_demo.xml +226 -0
  306. package/skills/lark-slides/references/slides_xml_schema_definition.xml +3049 -0
  307. package/skills/lark-slides/references/template-catalog.md +463 -0
  308. package/skills/lark-slides/references/template-index.json +1853 -0
  309. package/skills/lark-slides/references/troubleshooting.md +63 -0
  310. package/skills/lark-slides/references/validation-checklist.md +110 -0
  311. package/skills/lark-slides/references/visual-planning.md +254 -0
  312. package/skills/lark-slides/references/xml-format-guide.md +369 -0
  313. package/skills/lark-slides/references/xml-schema-quick-ref.md +245 -0
  314. package/skills/lark-slides/scripts/iconpark_tool.py +362 -0
  315. package/skills/lark-slides/scripts/iconpark_tool_test.py +177 -0
  316. package/skills/lark-slides/scripts/template_tool.py +970 -0
  317. package/skills/lark-slides/scripts/template_tool_test.py +177 -0
  318. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +367 -0
  319. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +263 -0
  320. package/skills/lark-task/SKILL.md +167 -0
  321. package/skills/lark-task/references/lark-task-assign.md +38 -0
  322. package/skills/lark-task/references/lark-task-comment.md +28 -0
  323. package/skills/lark-task/references/lark-task-complete.md +27 -0
  324. package/skills/lark-task/references/lark-task-create.md +57 -0
  325. package/skills/lark-task/references/lark-task-followers.md +35 -0
  326. package/skills/lark-task/references/lark-task-get-my-tasks.md +61 -0
  327. package/skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
  328. package/skills/lark-task/references/lark-task-reminder.md +36 -0
  329. package/skills/lark-task/references/lark-task-reopen.md +27 -0
  330. package/skills/lark-task/references/lark-task-search.md +41 -0
  331. package/skills/lark-task/references/lark-task-set-ancestor.md +32 -0
  332. package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
  333. package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
  334. package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
  335. package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
  336. package/skills/lark-task/references/lark-task-update.md +37 -0
  337. package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
  338. package/skills/lark-vc/SKILL.md +202 -0
  339. package/skills/lark-vc/references/lark-vc-detail.md +44 -0
  340. package/skills/lark-vc/references/lark-vc-recording.md +154 -0
  341. package/skills/lark-vc/references/lark-vc-search.md +163 -0
  342. package/skills/lark-vc/references/vc-domain-boundaries.md +188 -0
  343. package/skills/lark-vc-agent/SKILL.md +169 -0
  344. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +287 -0
  345. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +141 -0
  346. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +105 -0
  347. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +91 -0
  348. package/skills/lark-whiteboard/SKILL.md +47 -0
  349. package/skills/lark-whiteboard/elements/connectors.md +102 -0
  350. package/skills/lark-whiteboard/elements/content.md +40 -0
  351. package/skills/lark-whiteboard/elements/image.md +80 -0
  352. package/skills/lark-whiteboard/elements/layout.md +374 -0
  353. package/skills/lark-whiteboard/elements/schema.md +357 -0
  354. package/skills/lark-whiteboard/elements/style.md +318 -0
  355. package/skills/lark-whiteboard/elements/typography.md +73 -0
  356. package/skills/lark-whiteboard/references/lark-whiteboard-query.md +60 -0
  357. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +122 -0
  358. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +94 -0
  359. package/skills/lark-whiteboard/routes/dsl.md +107 -0
  360. package/skills/lark-whiteboard/routes/mermaid.md +27 -0
  361. package/skills/lark-whiteboard/routes/svg-edit.md +85 -0
  362. package/skills/lark-whiteboard/routes/svg.md +54 -0
  363. package/skills/lark-whiteboard/scenes/architecture.md +433 -0
  364. package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
  365. package/skills/lark-whiteboard/scenes/comparison.md +135 -0
  366. package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
  367. package/skills/lark-whiteboard/scenes/flowchart.md +185 -0
  368. package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
  369. package/skills/lark-whiteboard/scenes/funnel.md +101 -0
  370. package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
  371. package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
  372. package/skills/lark-whiteboard/scenes/milestone.md +139 -0
  373. package/skills/lark-whiteboard/scenes/organization.md +173 -0
  374. package/skills/lark-whiteboard/scenes/photo-showcase.md +126 -0
  375. package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
  376. package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
  377. package/skills/lark-whiteboard/scenes/treemap.md +216 -0
  378. package/skills/lark-wiki/SKILL.md +110 -0
  379. package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
  380. package/skills/lark-wiki/references/lark-wiki-member-add.md +67 -0
  381. package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
  382. package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
  383. package/skills/lark-wiki/references/lark-wiki-move.md +183 -0
  384. package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
  385. package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
  386. package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
  387. package/skills/lark-wiki/references/lark-wiki-node-get.md +57 -0
  388. package/skills/lark-wiki/references/lark-wiki-node-list.md +88 -0
  389. package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
  390. package/skills/lark-wiki/references/lark-wiki-space-list.md +68 -0
  391. package/skills/lark-workflow-meeting-summary/SKILL.md +122 -0
  392. package/skills/lark-workflow-standup-report/SKILL.md +122 -0
@@ -0,0 +1,240 @@
1
+ # slides +replace-slide(块级替换 / 插入)
2
+
3
+ > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
+
5
+ 对指定 slide 做块级替换或插入。编辑已有 PPT 的主路径——`slide_id` 不变、页序不动、只影响被指定的块。
6
+
7
+ 相比直接调 `xml_presentation.slide.replace`,这个 shortcut 的四个额外价值:
8
+
9
+ 1. `--presentation` 接受 `xml_presentation_id` / `/slides/` URL / `/wiki/` URL(wiki 自动解析);
10
+ 2. `block_replace` 的 `replacement` 根元素 `id="<block_id>"` 由 CLI 自动注入——底层 API 的硬约束(不注入返回 3350001);直接调原生 API 需自己加,用 Shortcut 则自动注入;
11
+ 3. `<shape>` 元素缺少 `<content/>` 子元素时由 CLI 自动注入——SML 2.0 schema 要求每个 `<shape>` 必须有 `<content/>` 子元素,缺失同样触发 3350001;自闭合的 `<shape .../>` 也会被自动展开为 `<shape ...><content/></shape>`;
12
+ 4. 3350001 错误时提供上下文感知的 hint,帮助 AI agent 和用户快速定位原因。
13
+
14
+ ## 命令
15
+
16
+ ```bash
17
+ # block_insert:在页末追加一个新元素
18
+ lark-cli slides +replace-slide --as user \
19
+ --presentation slidesXXXXXXXXXXXXXXXXXXXXXX \
20
+ --slide-id pfG \
21
+ --parts '[{"action":"block_insert","insertion":"<shape type=\"rect\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"100\"/>"}]'
22
+
23
+ # block_replace:已知某块 id,整块替换(replacement 根 id 自动注入为 bUn)
24
+ lark-cli slides +replace-slide --as user \
25
+ --presentation slidesXXXXXXXXXXXXXXXXXXXXXX \
26
+ --slide-id pfG \
27
+ --parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'
28
+
29
+ # 大 --parts 走文件或 stdin(auto-gen 命令不支持 @file,但 shortcut 支持)
30
+ lark-cli slides +replace-slide --as user \
31
+ --presentation $PID --slide-id $SID --parts @parts.json
32
+ cat parts.json | lark-cli slides +replace-slide --as user \
33
+ --presentation $PID --slide-id $SID --parts -
34
+
35
+ # wiki URL 直接传(CLI 自动 get_node → 拿真实 xml_presentation_id)
36
+ lark-cli slides +replace-slide --as user \
37
+ --presentation "https://xxx.feishu.cn/wiki/wikcnXXXXXX" --slide-id pfG \
38
+ --parts '[{"action":"block_insert","insertion":"<shape type=\"rect\" width=\"100\" height=\"100\"/>"}]'
39
+
40
+ # 预览(不实际调用)
41
+ lark-cli slides +replace-slide --as user \
42
+ --presentation $PID --slide-id $SID --parts "$PARTS" --dry-run
43
+ ```
44
+
45
+ ## 参数
46
+
47
+ | 参数 | 必填 | 说明 |
48
+ |------|------|------|
49
+ | `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |
50
+ | `--slide-id` | 是 | 页面 ID(`xml_presentation.slide.get` / `xml_presentations.get` 都能拿到) |
51
+ | `--parts` | 是 | JSON 数组(`[{...}, ...]`),单次最多 200 条。支持 `@<file>` 和 `-`(stdin)读取 |
52
+ | `--revision-id` | 否 | 基础版本号;默认 `-1` 表示基于最新版执行;传具体版本号时,服务端以该版本为 base 执行;**传不存在的版本号(超过当前 revision)返回 3350002** |
53
+ | `--tid` | 否 | 并发事务 ID;多人协作长事务才用,单次单人调用留空 |
54
+
55
+ ## parts 元素结构
56
+
57
+ > **限制**:最多 200 条;`block_replace` 和 `block_insert` 可以在同一批次混用。**其他 action(含 `str_replace`)CLI 会直接报错拒绝**。
58
+
59
+ 每条 part 按 `action` 取不同字段:
60
+
61
+ ### action = `block_replace`
62
+
63
+ | 字段 | 必填 | 说明 |
64
+ |------|------|------|
65
+ | `action` | 是 | `"block_replace"` |
66
+ | `block_id` | 是 | 目标块的 3 位 short element ID(从 `slide.get` 返回 XML 里读) |
67
+ | `replacement` | 是 | 新 XML 片段;**根元素 `id` 会被 CLI 自动注入为 `block_id`**,用户不用自己加(如果已经加了且不一致会被覆盖为正确值) |
68
+
69
+ ### action = `block_insert`
70
+
71
+ | 字段 | 必填 | 说明 |
72
+ |------|------|------|
73
+ | `action` | 是 | `"block_insert"` |
74
+ | `insertion` | 是 | 要插入的 XML 片段 |
75
+ | `insert_before_block_id` | 否 | 插到这个块之前;省略(不提供此字段)则追加到页末 |
76
+
77
+ ## 合法根元素速查
78
+
79
+ `block_replace.replacement` 和 `block_insert.insertion` 必须以 SML 2.0 定义的合法元素为根。完整权威定义看 [`slides_xml_schema_definition.xml`](slides_xml_schema_definition.xml);这里只列能作为**根**的类型 + 每种类型的最小可工作片段。
80
+
81
+ | 元素 | 用途 | 关键点 |
82
+ |---|---|---|
83
+ | `<shape>` | 矩形/椭圆/三角/文本框等所有形状 | `type` 必填;`<content/>` 缺失时 CLI 会自动注入 |
84
+ | `<line>` | 直线 | 需 `startX/startY/endX/endY` |
85
+ | `<polyline>` | 折线 | `points` 读回时被服务端规整丢弃(几何已入库) |
86
+ | `<img>` | 图片 | `src` 必须是 [`+media-upload`](lark-slides-media-upload.md) 返回的 `file_token`,不能是 URL |
87
+ | `<icon>` | 图标 | `iconType` 取自 iconpark 资源;语义图标先用 `scripts/iconpark_tool.py search` 检索 |
88
+ | `<table>` | 表格 | 整表替换会**重建内部 td id**,旧 td block_id 立即失效 |
89
+ | `<td>` | 单元格局部替换 | 只能 `block_replace`,不能 `block_insert`;`block_id` 必须是最新 `slide.get` 拿到的 td id |
90
+ | `<chart>` | 图表(line/bar/column/pie/area/radar/combo) | 必须嵌 `<chartPlotArea>` + `<chartData>` + `<dim1>/<dim2>/<chartField>` |
91
+ | `<whiteboard>` | 画板(SVG 或 Mermaid) | 内嵌 `<svg>` 或 `<mermaid>`;`slide.get` 返回结构不含内部数据,但可直接写完整新 XML 做 `block_replace` 覆盖;详见 [`lark-slides-whiteboard.md`](lark-slides-whiteboard.md) |
92
+
93
+ **不可作为根元素**:
94
+
95
+ - `<video>` / `<audio>` —— SML 2.0 没有这两个原生元素;`<undefined type="video|audio">` 是**导出时**的占位符(服务端遇到不支持的类型时用它代替),**不能写入**。尝试 insert/replace 都会返回 3350001。
96
+
97
+ ### 最小 XML 片段(JSON 嵌入时记得把 `"` 转义成 `\"`)
98
+
99
+ `<shape>`(文本框;`type` 还可选 `rect`/`ellipse`/`triangle`/`custom` 等):
100
+ ```xml
101
+ <shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
102
+ <content textType="title"><p>标题</p></content>
103
+ </shape>
104
+ ```
105
+
106
+ `<img>`:
107
+ ```xml
108
+ <img src="{file_token}" topLeftX="600" topLeftY="20" width="80" height="80"/>
109
+ ```
110
+
111
+ `<polyline>`:
112
+ ```xml
113
+ <polyline topLeftX="10" topLeftY="10" width="100" height="50" points="0,0 50,50 100,0"/>
114
+ ```
115
+
116
+ `<table>`(2×2):
117
+ ```xml
118
+ <table topLeftX="30" topLeftY="80">
119
+ <colgroup><col span="2" width="110"/></colgroup>
120
+ <tr><td><content><p>A</p></content></td><td><content><p>B</p></content></td></tr>
121
+ <tr><td><content><p>C</p></content></td><td><content><p>D</p></content></td></tr>
122
+ </table>
123
+ ```
124
+
125
+ `<td>`(`block_replace` 单元格;`block_id` 必须是最新 `slide.get` 拿到的 td id):
126
+ ```xml
127
+ <td><content><p>新内容</p></content></td>
128
+ ```
129
+
130
+ `<chart>`(`type` 改成 `bar`/`column`/`pie`/`area`/`radar`/`combo` 切换图型):
131
+ ```xml
132
+ <chart topLeftX="30" topLeftY="300" width="300" height="200">
133
+ <chartPlotArea><chartPlot type="line"/></chartPlotArea>
134
+ <chartData>
135
+ <dim1><chartField name="x" valueType="string">Q1,Q2,Q3,Q4</chartField></dim1>
136
+ <dim2><chartField name="Sales" valueType="number">10,20,15,30</chartField></dim2>
137
+ </chartData>
138
+ </chart>
139
+ ```
140
+
141
+ ## 返回值
142
+
143
+ ```json
144
+ {
145
+ "xml_presentation_id": "slidesXXXXXXXXXXXXXXXXXXXXXX",
146
+ "slide_id": "pfG",
147
+ "parts_count": 1,
148
+ "revision_id": 102
149
+ }
150
+ ```
151
+
152
+ | 字段 | 说明 |
153
+ |------|------|
154
+ | `xml_presentation_id` | 解析后的真实 token(wiki URL 解析后会变化) |
155
+ | `slide_id` | 与入参一致 |
156
+ | `parts_count` | 本次提交的 parts 条数 |
157
+ | `revision_id` | 成功后的新版本号,下次做乐观锁时用 |
158
+ | `failed_part_index` | 有部分失败时存在,指向第几条 part 失败 |
159
+ | `failed_reason` | 失败原因文字描述 |
160
+
161
+ 整批作为原子事务:任一 part 失败则整批不生效,服务端通过 `failed_part_index` / `failed_reason` 告诉你是哪条;按此定位修正后重发。
162
+
163
+ ## 使用流程
164
+
165
+ ### 给已有页加图(典型场景)
166
+
167
+ ```bash
168
+ PID=xxx
169
+ SID=yyy
170
+
171
+ # 1) 上传图片
172
+ TOKEN=$(lark-cli slides +media-upload --as user \
173
+ --file ./pic.png --presentation "$PID" | jq -r '.data.file_token')
174
+
175
+ # 2) block_insert 到页末
176
+ lark-cli slides +replace-slide --as user \
177
+ --presentation "$PID" --slide-id "$SID" \
178
+ --parts "$(jq -n --arg token "$TOKEN" \
179
+ '[{action:"block_insert",insertion:("<img src=\""+$token+"\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>")}]')"
180
+ ```
181
+
182
+ ### 改标题(block_replace)
183
+
184
+ ```bash
185
+ # 先拿原页 XML,从里面找到标题块的 3 位 short id(如 bUn)
186
+ lark-cli slides xml_presentation.slide get --as user \
187
+ --params "{\"xml_presentation_id\":\"$PID\",\"slide_id\":\"$SID\"}"
188
+
189
+ # block_replace 换掉整个标题块(id 自动注入)
190
+ lark-cli slides +replace-slide --as user \
191
+ --presentation "$PID" --slide-id "$SID" \
192
+ --parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'
193
+ ```
194
+
195
+ ### 批量:一次换标题 + 追加装饰图
196
+
197
+ `block_replace` 和 `block_insert` 可以在同一个 `--parts` 里混用,整批原子执行。
198
+
199
+ ```bash
200
+ lark-cli slides +replace-slide --as user \
201
+ --presentation "$PID" --slide-id "$SID" \
202
+ --parts '[
203
+ {"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"},
204
+ {"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}
205
+ ]'
206
+ ```
207
+
208
+ ### 乐观锁
209
+
210
+ ```bash
211
+ # 读时记录 revision_id
212
+ REV=$(lark-cli slides xml_presentation.slide get --as user \
213
+ --params "{\"xml_presentation_id\":\"$PID\",\"slide_id\":\"$SID\"}" \
214
+ | jq '.data.revision_id')
215
+
216
+ # 写时传 --revision-id;传不存在的版本号(超过当前 revision)返回 3350002
217
+ lark-cli slides +replace-slide --as user \
218
+ --presentation "$PID" --slide-id "$SID" --revision-id "$REV" \
219
+ --parts "$PARTS"
220
+ ```
221
+
222
+ ## 常见错误
223
+
224
+ | 现象 | 原因 | 对策 |
225
+ |------|------|------|
226
+ | 3350001 + hint "block_id not found" | `parts[i].block_id` 在当前页不存在 | 重新 `slide.get` 拿最新 XML,按里面的 short ID 再填 |
227
+ | 3350002 not found | `--revision-id` 传了不存在的版本号(超过当前 revision) | 用 `-1` 或用 `slide.get` 拿到的有效 `revision_id` |
228
+ | `--parts[i] action "str_replace" is not supported` | CLI 不暴露 `str_replace` | 把替换需求改写成 `block_replace` / `block_insert` |
229
+ | `--parts contains N items, exceeds maximum of 200` | 一次提交 parts 太多 | 拆多次调用 |
230
+ | `--parts[i] (block_replace) requires non-empty block_id` / `replacement` | 字段缺失 | 按 parts 元素结构补齐 |
231
+ | `<img>` 不显示 / 显示破图 | `src` 写了外链 URL | 换成通过 [`+media-upload`](lark-slides-media-upload.md) 拿到的 `file_token` |
232
+ | 3350001 | `replacement` 不是合法单根 XML 片段,或 `block_id` 不存在 | CLI 已自动注入 `id` 和 `<content/>`;如果仍报错,重新 `slide.get` 拿最新 XML 确认 `block_id` 存在;检查 XML 结构是否合法;坐标是否超出 960×540 |
233
+ | 403 | 权限不足 | 需要 `slides:presentation:update` 或 `slides:presentation:write_only`;wiki URL 还需要 `wiki:node:read` |
234
+
235
+ ## 相关命令
236
+
237
+ - [xml_presentation.slide get](lark-slides-xml-presentation-slide-get.md) — 读原页拿 `block_id` / `revision_id`
238
+ - [xml_presentation.slide replace](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考
239
+ - [+media-upload](lark-slides-media-upload.md) — 上传图片拿 `file_token`
240
+ - [lark-slides-edit-workflows.md](lark-slides-edit-workflows.md) — 读-改-写闭环 + 决策树
@@ -0,0 +1,94 @@
1
+ # slides +screenshot
2
+
3
+ ## 用途
4
+
5
+ 获取幻灯片页面截图并保存为本地图片文件。默认用于已存在 PPT 页面截图;传入 `--content` 时用于直接渲染单个 `<slide>` XML 片段预览。本 shortcut 会在 CLI 进程内解码并写入文件,stdout 只返回文件路径、大小、页面 ID 等元信息,避免把图片 Base64 输出给模型。
6
+
7
+ 注意:该截图能力受应用白名单限制,绝大多数应用不可用。截图失败时不要引导用户申请 `slides:presentation:screenshot` 权限;记录错误后降级到 XML 读回、结构 lint、文本重叠检查等非截图检查路径。
8
+
9
+ ## 命令
10
+
11
+ ```bash
12
+ lark-cli slides +screenshot --as user \
13
+ --presentation '<xml_presentation_id 或 slides/wiki URL>' \
14
+ --slide-number 1
15
+ ```
16
+
17
+ 渲染本地 XML 内容:
18
+
19
+ ```bash
20
+ lark-cli slides +screenshot --as user \
21
+ --content @slide.xml
22
+ ```
23
+
24
+ ## 参数
25
+
26
+ | 参数 | 必需 | 说明 |
27
+ |------|------|------|
28
+ | `--presentation` | list 模式必需 | `xml_presentation_id`、`/slides/` URL,或解析后为 slides 的 `/wiki/` URL。传 `--content` 时不能使用 |
29
+ | `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID;多页截图时重复传入 |
30
+ | `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面页号;多页截图时重复传入 |
31
+ | `--content` | render 模式必需 | 要直接渲染的 `<slide>` XML 片段;支持直接传值、`@file`、`-` stdin。传入后不能同时传 `--slide-id` / `--slide-number` |
32
+ | `--output-dir` | 否 | 输出目录,默认 `.lark-slides/screenshots`;必须是当前目录内的相对路径 |
33
+ | `--output-name` | 否 | render 模式的输出文件名 stem;未指定时优先用返回的 `slide_id`,否则用 `rendered-slide`。若目标文件已存在,会自动追加递增后缀避免覆盖 |
34
+
35
+ ## 示例
36
+
37
+ ### 单页截图
38
+
39
+ ```bash
40
+ lark-cli slides +screenshot --as user \
41
+ --presentation slides_example_presentation_id \
42
+ --slide-number 1
43
+ ```
44
+
45
+ ### 多页截图
46
+
47
+ ```bash
48
+ lark-cli slides +screenshot --as user \
49
+ --presentation slides_example_presentation_id \
50
+ --slide-number 1 \
51
+ --slide-number 2 \
52
+ --output-dir .lark-slides/screenshots/demo
53
+ ```
54
+
55
+ ### 渲染 XML 预览
56
+
57
+ ```bash
58
+ lark-cli slides +screenshot --as user \
59
+ --content @.lark-slides/out/demo/slide.xml \
60
+ --output-name preview
61
+ ```
62
+
63
+ ## 返回值
64
+
65
+ 返回 JSON 不包含 Base64 图片内容:
66
+
67
+ ```json
68
+ {
69
+ "code": 0,
70
+ "data": {
71
+ "xml_presentation_id": "slides_example_presentation_id",
72
+ "output_dir": ".lark-slides/screenshots",
73
+ "screenshots": [
74
+ {
75
+ "slide_id": "slide_example_id",
76
+ "slide_number": 1,
77
+ "format": "png",
78
+ "path": "/abs/path/.lark-slides/screenshots/slides_example_presentation_id_p001_slide_example_id.png",
79
+ "size": 12345
80
+ }
81
+ ]
82
+ },
83
+ "msg": "success"
84
+ }
85
+ ```
86
+
87
+ ## 注意事项
88
+
89
+ 1. 优先使用 `slides +screenshot` 保存本地图片,不要把图片 Base64 打到 stdout。
90
+ 2. 已存在 PPT 页面截图时,不传 `--content`,用 `--presentation` + `--slide-id` 或 `--slide-number`。
91
+ 3. 本地 XML 预览时,传 `--content @file` 或 `--content -`,内容应为单个 `<slide>` XML 片段;此时不要传 `--presentation` / `--slide-id` / `--slide-number`。
92
+ 4. `slide_id` 是页面 short ID,页码请用 `--slide-number`。
93
+ 5. list 模式默认文件名包含 presentation ID、页码和/或 slide ID;文件已存在时自动追加 `_2`、`_3` 等后缀,避免覆盖旧截图。
94
+ 6. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
@@ -0,0 +1,330 @@
1
+ # Whiteboard 画板元素
2
+
3
+ `<whiteboard>` 放在 `<data>` 内,内部可放 **SVG** 或 **Mermaid**,用于绘制流程图、时序图、架构图、散点图、漏斗图、自定义图标、装饰图案等 `<chart>` 和 `<shape>` 难以覆盖的视觉内容。
4
+
5
+ > 前置条件:使用本文档前先阅读 [lark-slides SKILL.md](../SKILL.md)。
6
+
7
+ ---
8
+
9
+ ## `<chart>` 还是 `<whiteboard>`?
10
+
11
+ **先判断内容类型,再进入本文档:**
12
+
13
+ | 场景 | 推荐元素 |
14
+ |------|---------|
15
+ | 有结构化数据序列的柱/条/折线/面积/雷达/饼/组合图 | `<chart>` — 原生渲染,支持 legend / tooltip / 系列配色 |
16
+ | 散点图、漏斗图(`<chart>` 不支持) | `<whiteboard>` SVG |
17
+ | 流程图、时序图、架构图、类图、ER 图等拓扑图 | `<whiteboard>` Mermaid 或 SVG |
18
+ | 自定义图标、徽标、示意性图形(需要 path/polygon 精确控制) | `<whiteboard>` SVG |
19
+ | 进度条、波浪背景、装饰图案、像素级自定义可视化 | `<whiteboard>` SVG |
20
+
21
+ > 适合 `<chart>` 的内容就用 `<chart>`,不要用 SVG 手绘——原生渲染更省力且质量更高。
22
+
23
+ ---
24
+
25
+ ## whiteboard 公共属性
26
+
27
+ | 属性 | 必需 | 说明 |
28
+ |------|------|------|
29
+ | `topLeftX` | 是 | 左上角 X 坐标(slide 坐标系,slide 默认宽 960) |
30
+ | `topLeftY` | 是 | 左上角 Y 坐标(slide 坐标系,slide 默认高 540) |
31
+ | `width` | 是 | 画板宽度(像素) |
32
+ | `height` | 是 | 画板高度(像素) |
33
+
34
+ > SVG 模式下 `<svg>` 需声明 `xmlns="http://www.w3.org/2000/svg"`;内容大小由子元素包围盒决定,`width`/`height`/`viewBox` 不影响渲染(仅当元素属性使用百分比值时需要 `viewBox` 提供计算基准)。Mermaid 模式不需要额外属性。
35
+
36
+ SVG 内的坐标相对于 whiteboard 自身左上角(0,0),与 slide 坐标系无关。
37
+
38
+ ---
39
+
40
+ ## SVG 还是 Mermaid?
41
+
42
+ 选择分两步:**先看图表类型,再看当前模型身份**。
43
+
44
+ ### 第一步:图表类型优先判断
45
+
46
+ 以下类型**推荐 Mermaid**,自动布局、代码简洁;如需精确匹配品牌配色或自定义节点样式,可改用 SVG:
47
+
48
+ | 图表类型 | Mermaid 关键字 |
49
+ |----------|--------------|
50
+ | 流程图、决策树、架构图 | `flowchart TD` / `flowchart LR` |
51
+ | 时序图 | `sequenceDiagram` |
52
+ | 类图 | `classDiagram` |
53
+ | 饼图 | `pie` |
54
+ | 甘特图 | `gantt` |
55
+ | 状态图 | `stateDiagram-v2` |
56
+ | 思维导图 | `mindmap` |
57
+ | ER 图 | `erDiagram` |
58
+
59
+ ### 第二步:数据图表与装饰元素按模型身份选路径
60
+
61
+ 上表以外的场景(散点图、漏斗图、进度条、时间线、波浪背景、星点纹理等)需要精确控制坐标和配色,SVG 表达力更强,但各模型生成 SVG 的能力有差异:
62
+
63
+ | 模型身份 | 路径 |
64
+ |----------|------|
65
+ | Claude / Gemini / GPT / GLM | **SVG** — 精确控制坐标、颜色、透明度 |
66
+ | Doubao / Seed / Other | **Mermaid** — 用 `pie`、`gantt` 等近似表达;确实无法用 Mermaid 表达时才回退到简单 SVG 矩形/线条 |
67
+
68
+ > **先自报身份再选路径**:在决定使用 SVG 之前,确认当前模型属于哪一类。不要跳过这一步。
69
+
70
+ ---
71
+
72
+ ## 模式一:SVG
73
+
74
+ ### ⚠️ 设计品质要求
75
+
76
+ 在 slide 里嵌入 `<whiteboard>` 的目的是**提升视觉质量**,不是把数字堆进去。
77
+
78
+ - **不要只用矩形加文字应付**:通篇纯白底色 + 方块 + 黑字等于白做,这是不及格输出
79
+ - **数据图表必须有坐标系**:坐标轴、网格线、数值标注缺一不可,不要只画柱子或点
80
+ - **字号必须有层级**:标题 ≠ 标签 ≠ 数值,混用同一字号会消灭视觉焦点
81
+ - **配色要与 slide 主题呼应**:深色 slide 背景下图表用透明底或深色卡片;浅色背景下避免再加纯白底块
82
+ - **每个 whiteboard 都是设计机会**:主动用圆角、半透明填充、折线面积、点装饰等细节拉开与默认模板的差距
83
+ - **写 SVG 前先判断背景亮度**:背景亮度 < 30% 时,装饰元素"对比不足"比"过强"危害更大,宁重勿轻;
84
+ - **装饰层次用亮度跳跃,不用线性叠透明度**:`α=0.04→0.08→0.12` 的等差递增在深色底上几乎看不出差异(相邻层亮度差 ≈20);正确做法是非线性跳跃如 `0.10→0.40→0.70→1.0`,相邻层亮度差 ≥60。
85
+
86
+ ### 语法
87
+
88
+ ```xml
89
+ <whiteboard width="400" height="300" topLeftX="500" topLeftY="120">
90
+ <svg xmlns="http://www.w3.org/2000/svg">
91
+ <rect x="50" y="50" width="80" height="200" rx="4" fill="rgba(59,130,246,0.85)"/>
92
+ <text x="90" y="270" text-anchor="middle" font-size="12" fill="rgba(100,116,139,1)">ABC</text>
93
+ </svg>
94
+ </whiteboard>
95
+ ```
96
+
97
+ `<svg>` 需声明 `xmlns="http://www.w3.org/2000/svg"`;`width`/`height`/`viewBox` 无需填写,若元素属性使用百分比值则需额外声明 `viewBox`。
98
+
99
+ ### ⚠️ 渲染包围盒规则
100
+
101
+ whiteboard 渲染时以**所有子元素的几何包围盒合并结果**为内容区域,自适应缩放到容器。
102
+
103
+ `<svg>` 上的 `width`、`height`、`viewBox` 不影响内容区域的计算,但 `viewBox` 有一个实际用途:**为百分比属性提供计算基准**。若元素使用 `width="50%"` 等百分比值,必须声明 `viewBox` 才能正确解析;绝对坐标元素则无需关心。推荐统一使用绝对坐标,避免引入百分比依赖。
104
+
105
+ ### 支持的 SVG 元素
106
+
107
+ | 元素 | 说明 | 典型用途 |
108
+ |------|------|---------|
109
+ | `<rect>` | 矩形,支持 `rx` 圆角 | 柱图、卡片、进度条 |
110
+ | `<circle>` | 圆 | 节点、装饰点、环形图 |
111
+ | `<ellipse>` | 椭圆 | 自定义轮廓图形 |
112
+ | `<line>` | 直线 | 坐标轴、分隔线 |
113
+ | `<path>` | 任意路径(支持 Q/C 曲线) | 波浪、折线、弧形 |
114
+ | `<text>` | 文本,支持中文 | 标签、数值 |
115
+ | `<polygon>` | 多边形 | 箭头、星形、面积填充 |
116
+ | `<g>` | 分组 | 批量变换、语义分组 |
117
+ | `<linearGradient>` | 线性渐变定义,配合 `fill="url(#id)"` 使用 | 渐变背景、渐变填充 |
118
+
119
+ **颜色:** 统一用 `rgba(R,G,B,A)`,对深浅背景都友好。
120
+ **虚线:** `stroke-dasharray="4,4"` 用于网格线 / 坐标轴。
121
+ **变换:** `transform="translate(x,y)"` / `rotate(deg cx cy)` / `scale(n)` 均支持。
122
+
123
+ ---
124
+ ### 元素计算
125
+
126
+ SVG 中只要涉及批量定位、等间距排布或数据映射,**建议额外运行一个 Python 脚本把坐标算出来再填入 SVG**,而不是手动估值。适用范围不限于数据图表——装饰性点阵、等间距圆、重复图案同样适用。
127
+
128
+ > **主动去算**:写 SVG 之前先运行脚本,把输出当注释贴在 `<svg>` 开头,再照着填坐标。估值几乎每次都需要反复调整,跳过这步反而更慢。
129
+
130
+ **数据图表(柱状图范式)**
131
+
132
+ ```python
133
+ W, H = 360, 260
134
+ origin_x, origin_y = 50, 216 # 左下角,SVG Y 轴向下
135
+ cw, ch = 290, 184
136
+
137
+ data, y_max = [120, 160, 90], 200
138
+ bar_w = int(cw / len(data) * 0.62)
139
+ for i, v in enumerate(data):
140
+ cx = round(origin_x + (i + 0.5) * cw / len(data))
141
+ y = round(origin_y - v / y_max * ch)
142
+ print(f"bar-{i}: x={cx - bar_w//2} y={y} w={bar_w} h={round(origin_y - y)}")
143
+ ```
144
+
145
+ 折线图:`x = origin_x + i/(n-1)*cw`,`y = origin_y - (v-y_min)/(y_max-y_min)*ch`。
146
+
147
+ **装饰性元素(等间距范式)**
148
+
149
+ ```python
150
+ n, total_w, cy, r = 8, 340, 40, 4
151
+ step = total_w / (n - 1)
152
+ for i in range(n):
153
+ print(f"circle-{i}: cx={round(i * step)} cy={cy} r={r}")
154
+ ```
155
+
156
+ **最大包围盒 → whiteboard 尺寸**
157
+
158
+ 所有元素坐标算完后,汇总出整体包围盒,直接作为 whiteboard 的 `width`/`height`:
159
+
160
+ ```python
161
+ # 每个元素登记 (x, y, w, h),含 stroke 外扩
162
+ elements = [
163
+ (10, 20, 80, 160), # bar-0
164
+ (107, 10, 80, 170), # bar-1
165
+ (204, 40, 80, 140), # bar-2
166
+ (0, 0, 300, 1), # x-axis
167
+ ]
168
+
169
+ xs = [x for x, y, w, h in elements]
170
+ ys = [y for x, y, w, h in elements]
171
+ x2 = [x + w for x, y, w, h in elements]
172
+ y2 = [y + h for x, y, w, h in elements]
173
+
174
+ wb_w = max(x2) - min(xs)
175
+ wb_h = max(y2) - min(ys)
176
+ print(f"whiteboard width={wb_w} height={wb_h}")
177
+ ```
178
+
179
+ 输出即 `<whiteboard width=... height=...>` 的值,无需手动估算。
180
+
181
+ ---
182
+ ### 布局模式
183
+
184
+ **全屏装饰层**
185
+ ```xml
186
+ <whiteboard width="960" height="540" topLeftX="0" topLeftY="0">
187
+ <svg xmlns="http://www.w3.org/2000/svg">
188
+ ...
189
+ </svg>
190
+ </whiteboard>
191
+ ```
192
+
193
+ > ⚠️ 全屏装饰 whiteboard 必须放在所有 `<shape>` / `<img>` / `<table>` 之前,否则会遮挡文字内容。XML 中元素位置越靠后,渲染层级越高。
194
+
195
+ **侧栏图表(与文字 shape 并排)**
196
+ ```xml
197
+ <!-- 左侧文字 -->
198
+ <shape type="text" topLeftX="60" topLeftY="120" width="500" height="340">...</shape>
199
+ <!-- 右侧图表 -->
200
+ <whiteboard width="340" height="340" topLeftX="580" topLeftY="120">
201
+ <svg xmlns="http://www.w3.org/2000/svg">
202
+ ...
203
+ </svg>
204
+ </whiteboard>
205
+ ```
206
+
207
+ **底部装饰条**
208
+ ```xml
209
+ <whiteboard width="960" height="100" topLeftX="0" topLeftY="440">
210
+ <svg xmlns="http://www.w3.org/2000/svg">
211
+ ...
212
+ </svg>
213
+ </whiteboard>
214
+ ```
215
+
216
+ ---
217
+
218
+ ### 禁止使用的 SVG 特性
219
+
220
+ 以下特性在 slide `<whiteboard>` 渲染端不支持或行为不可预测,必须避免:
221
+
222
+ | 禁止 | 原因 | 替代方案 |
223
+ |------|------|---------|
224
+ | `<radialGradient>` | 渲染失败 | 用 `<linearGradient>` 或 `rgba()` 透明度模拟深浅层次 |
225
+ | `<filter>`(阴影、模糊等) | 渲染失败 | 用半透明 `<rect>` 叠加模拟阴影 |
226
+ | `<clipPath>` / `<mask>` | 渲染失败 | 调整元素坐标和尺寸自然裁切 |
227
+ | `<pattern>` | 渲染失败 | 手动铺 `<circle>` / `<rect>` 点阵 |
228
+ | `skewX` / `skewY` / `matrix(...)` | 空间扭曲,降级渲染 | 用 `rotate` + `translate` 替代 |
229
+ | `<image>` 外链 URL | 不支持外链 | 先上传得到 file_token,再用 `<img>` 元素 |
230
+
231
+ ---
232
+
233
+
234
+ ## 模式二:Mermaid
235
+
236
+ ### 语法
237
+
238
+ ```xml
239
+ <whiteboard topLeftX="72" topLeftY="60" width="816" height="360">
240
+ <mermaid>
241
+ <![CDATA[
242
+ flowchart TD
243
+ A[检查 lark-cli 与 jq] --> B[编写每页 slide XML]
244
+ B --> C[通过 jq 生成 slides JSON]
245
+ C --> D[执行 slides +create]
246
+ D --> E[读取 xml_presentation_id]
247
+ E --> F[回读并验证创建结果]
248
+ ]]>
249
+ </mermaid>
250
+ </whiteboard>
251
+ ```
252
+
253
+ **关键点:**
254
+ - 内容用 `<![CDATA[...]]>` 包裹——Mermaid 语法里的 `[`、`>`、`-->` 是 XML 特殊字符,CDATA 避免转义问题
255
+ - whiteboard 只需 `topLeftX`、`topLeftY`、`width`、`height`
256
+
257
+ ### 支持的 Mermaid 图表类型
258
+
259
+ | 类型 | 关键字 | 适用场景 |
260
+ |------|--------|---------|
261
+ | 流程图 | `flowchart TD` / `flowchart LR` | 业务流程、决策树、工作流 |
262
+ | 时序图 | `sequenceDiagram` | 系统交互、API 调用链 |
263
+ | 甘特图 | `gantt` | 项目计划、里程碑 |
264
+ | 饼图 | `pie` | 占比数据 |
265
+ | 类图 | `classDiagram` | 对象关系、架构设计 |
266
+ | ER 图 | `erDiagram` | 数据库结构 |
267
+ | 状态图 | `stateDiagram-v2` | 状态机、生命周期 |
268
+ | 思维导图 | `mindmap` | 主题梳理、知识架构 |
269
+ | 用户旅程 | `journey` | 用户体验路径 |
270
+
271
+ ### Mermaid 布局建议
272
+
273
+ Mermaid 图表会自动撑满 whiteboard 区域。建议:
274
+ - 流程图留足高度,节点较多时适当增加 height(比如 400-480)
275
+ - 避免一页放超过 15 个节点,内容太密时考虑分页
276
+ - 推荐尺寸参考:
277
+
278
+ | 图表类型 | 建议 width | 建议 height |
279
+ |---------|-----------|------------|
280
+ | 流程图(5-8 节点) | 720-816 | 300-400 |
281
+ | 时序图(3-5 参与者) | 720-816 | 320-420 |
282
+ | 饼图 | 500-600 | 300-360 |
283
+ | 甘特图 | 816 | 280-360 |
284
+ | 思维导图 | 816 | 380-480 |
285
+
286
+ ---
287
+
288
+ ## 注意事项 & 已知问题
289
+
290
+ ### z-order(SVG 模式)
291
+
292
+ whiteboard 在 XML 中的位置决定渲染层级:在 shape 前 → 在下层;在 shape 后 → 在上层。全屏装饰 whiteboard 应放在所有 shape 之前。
293
+
294
+ ### Mermaid CDATA 必要性
295
+
296
+ Mermaid 语法包含 `[`、`>`、`-->`,不用 CDATA 直接写会破坏 XML 解析。始终使用 `<![CDATA[ ... ]]>`。
297
+
298
+ ---
299
+
300
+ ## 快速自检清单
301
+
302
+ **SVG 模式——结构检查:**
303
+ - [ ] `<svg>` 声明了 `xmlns="http://www.w3.org/2000/svg"`
304
+ - [ ] whiteboard 的 `width`/`height` 由所有元素的最大包围盒(含 stroke 外扩)计算得出,不手动估值
305
+ - [ ] `topLeftX + width ≤ 960`,`topLeftY + height ≤ 540`
306
+ - [ ] 无 `<radialGradient>` / `<filter>` / `<clipPath>`
307
+ - [ ] 文字 `y` 坐标为 baseline 位置,最小值 ≥ font-size(避免被裁切)
308
+
309
+ **SVG 模式——视觉品质检查:**
310
+ - [ ] 坐标轴、网格线、数值标注齐全,没有"裸柱子"或"裸折线"
311
+ - [ ] 字号有层级:标题 > 数值 > 轴标签,非全部相同
312
+ - [ ] 单一数据系列用同一颜色,多系列用不同颜色且对比充足
313
+ - [ ] 轴标签与图表元素互不遮挡,留有足够空间
314
+ - [ ] 坐标推导有注释(写明 originX/Y、chartW/H、数据映射公式)
315
+
316
+ **Mermaid 模式:**
317
+ - [ ] 内容包在 `<![CDATA[...]]>` 内
318
+ - [ ] CDATA 结束符 `]]>` 不出现在 Mermaid 代码本身中
319
+ - [ ] `topLeftX + width ≤ 960`,`topLeftY + height ≤ 540`
320
+ - [ ] 节点数量合理(单图不超过 15-20 个节点)
321
+
322
+ **通用:**
323
+ - [ ] XML 标签全部闭合,属性引号完整
324
+ - [ ] 如果失败,检查是否是偶发 5001000,重试一次
325
+
326
+ ---
327
+
328
+ ## 参考
329
+
330
+ - [lark-slides SKILL.md](../SKILL.md)