pi-feishu-cli 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 (407) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/src/bot.d.ts +29 -0
  4. package/dist/src/bot.js +75 -0
  5. package/dist/src/cards.d.ts +6 -0
  6. package/dist/src/cards.js +87 -0
  7. package/dist/src/config.d.ts +3 -0
  8. package/dist/src/config.js +28 -0
  9. package/dist/src/daemon.d.ts +2 -0
  10. package/dist/src/daemon.js +151 -0
  11. package/dist/src/extension.d.ts +2 -0
  12. package/dist/src/extension.js +124 -0
  13. package/dist/src/poller.d.ts +33 -0
  14. package/dist/src/poller.js +94 -0
  15. package/dist/src/renderer.d.ts +8 -0
  16. package/dist/src/renderer.js +31 -0
  17. package/dist/src/session-registry.d.ts +15 -0
  18. package/dist/src/session-registry.js +82 -0
  19. package/dist/src/types.d.ts +25 -0
  20. package/dist/src/types.js +1 -0
  21. package/dist/tests/bot.test.d.ts +1 -0
  22. package/dist/tests/bot.test.js +89 -0
  23. package/dist/tests/cards.test.d.ts +1 -0
  24. package/dist/tests/cards.test.js +39 -0
  25. package/dist/tests/config.test.d.ts +1 -0
  26. package/dist/tests/config.test.js +59 -0
  27. package/dist/tests/renderer.test.d.ts +1 -0
  28. package/dist/tests/renderer.test.js +61 -0
  29. package/dist/tests/session-registry.test.d.ts +1 -0
  30. package/dist/tests/session-registry.test.js +92 -0
  31. package/dist/tests/types.test.d.ts +1 -0
  32. package/dist/tests/types.test.js +30 -0
  33. package/package.json +35 -0
  34. package/skills/lark-approval/SKILL.md +56 -0
  35. package/skills/lark-apps/SKILL.md +92 -0
  36. package/skills/lark-apps/references/lark-apps-access-scope-get.md +104 -0
  37. package/skills/lark-apps/references/lark-apps-access-scope-set.md +126 -0
  38. package/skills/lark-apps/references/lark-apps-create.md +112 -0
  39. package/skills/lark-apps/references/lark-apps-html-publish.md +151 -0
  40. package/skills/lark-apps/references/lark-apps-list.md +95 -0
  41. package/skills/lark-apps/references/lark-apps-update.md +86 -0
  42. package/skills/lark-attendance/SKILL.md +57 -0
  43. package/skills/lark-base/SKILL.md +359 -0
  44. package/skills/lark-base/references/dashboard-block-data-config.md +350 -0
  45. package/skills/lark-base/references/examples.md +140 -0
  46. package/skills/lark-base/references/formula-field-guide.md +737 -0
  47. package/skills/lark-base/references/lark-base-advperm-disable.md +83 -0
  48. package/skills/lark-base/references/lark-base-advperm-enable.md +80 -0
  49. package/skills/lark-base/references/lark-base-base-copy.md +74 -0
  50. package/skills/lark-base/references/lark-base-base-create.md +68 -0
  51. package/skills/lark-base/references/lark-base-base-get.md +39 -0
  52. package/skills/lark-base/references/lark-base-cell-value.md +151 -0
  53. package/skills/lark-base/references/lark-base-dashboard-arrange.md +83 -0
  54. package/skills/lark-base/references/lark-base-dashboard-block-create.md +108 -0
  55. package/skills/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
  56. package/skills/lark-base/references/lark-base-dashboard-block-get.md +57 -0
  57. package/skills/lark-base/references/lark-base-dashboard-block-list.md +53 -0
  58. package/skills/lark-base/references/lark-base-dashboard-block-update.md +84 -0
  59. package/skills/lark-base/references/lark-base-dashboard-create.md +73 -0
  60. package/skills/lark-base/references/lark-base-dashboard-delete.md +44 -0
  61. package/skills/lark-base/references/lark-base-dashboard-get.md +59 -0
  62. package/skills/lark-base/references/lark-base-dashboard-list.md +52 -0
  63. package/skills/lark-base/references/lark-base-dashboard-update.md +69 -0
  64. package/skills/lark-base/references/lark-base-dashboard.md +240 -0
  65. package/skills/lark-base/references/lark-base-data-analysis-sop.md +88 -0
  66. package/skills/lark-base/references/lark-base-data-query.md +375 -0
  67. package/skills/lark-base/references/lark-base-field-create.md +104 -0
  68. package/skills/lark-base/references/lark-base-field-delete.md +51 -0
  69. package/skills/lark-base/references/lark-base-field-get.md +42 -0
  70. package/skills/lark-base/references/lark-base-field-list.md +44 -0
  71. package/skills/lark-base/references/lark-base-field-search-options.md +48 -0
  72. package/skills/lark-base/references/lark-base-field-update.md +97 -0
  73. package/skills/lark-base/references/lark-base-field.md +22 -0
  74. package/skills/lark-base/references/lark-base-form-create.md +87 -0
  75. package/skills/lark-base/references/lark-base-form-delete.md +64 -0
  76. package/skills/lark-base/references/lark-base-form-detail.md +198 -0
  77. package/skills/lark-base/references/lark-base-form-get.md +68 -0
  78. package/skills/lark-base/references/lark-base-form-list.md +73 -0
  79. package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
  80. package/skills/lark-base/references/lark-base-form-questions-delete.md +68 -0
  81. package/skills/lark-base/references/lark-base-form-questions-list.md +84 -0
  82. package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
  83. package/skills/lark-base/references/lark-base-form-questions.md +23 -0
  84. package/skills/lark-base/references/lark-base-form-submit.md +171 -0
  85. package/skills/lark-base/references/lark-base-form-update.md +82 -0
  86. package/skills/lark-base/references/lark-base-form.md +25 -0
  87. package/skills/lark-base/references/lark-base-history.md +16 -0
  88. package/skills/lark-base/references/lark-base-record-batch-create.md +58 -0
  89. package/skills/lark-base/references/lark-base-record-batch-update.md +53 -0
  90. package/skills/lark-base/references/lark-base-record-delete.md +62 -0
  91. package/skills/lark-base/references/lark-base-record-history-list.md +86 -0
  92. package/skills/lark-base/references/lark-base-record-share-link-create.md +72 -0
  93. package/skills/lark-base/references/lark-base-record-upsert.md +64 -0
  94. package/skills/lark-base/references/lark-base-record.md +31 -0
  95. package/skills/lark-base/references/lark-base-role-create.md +89 -0
  96. package/skills/lark-base/references/lark-base-role-delete.md +83 -0
  97. package/skills/lark-base/references/lark-base-role-get.md +87 -0
  98. package/skills/lark-base/references/lark-base-role-list.md +81 -0
  99. package/skills/lark-base/references/lark-base-role-update.md +94 -0
  100. package/skills/lark-base/references/lark-base-shortcut-field-properties.md +481 -0
  101. package/skills/lark-base/references/lark-base-table-create.md +62 -0
  102. package/skills/lark-base/references/lark-base-table-delete.md +51 -0
  103. package/skills/lark-base/references/lark-base-table-get.md +46 -0
  104. package/skills/lark-base/references/lark-base-table-list.md +43 -0
  105. package/skills/lark-base/references/lark-base-table-update.md +49 -0
  106. package/skills/lark-base/references/lark-base-table.md +20 -0
  107. package/skills/lark-base/references/lark-base-view-create.md +50 -0
  108. package/skills/lark-base/references/lark-base-view-delete.md +48 -0
  109. package/skills/lark-base/references/lark-base-view-get-card.md +38 -0
  110. package/skills/lark-base/references/lark-base-view-get-filter.md +38 -0
  111. package/skills/lark-base/references/lark-base-view-get-group.md +38 -0
  112. package/skills/lark-base/references/lark-base-view-get-sort.md +38 -0
  113. package/skills/lark-base/references/lark-base-view-get-timebar.md +38 -0
  114. package/skills/lark-base/references/lark-base-view-get-visible-fields.md +28 -0
  115. package/skills/lark-base/references/lark-base-view-get.md +38 -0
  116. package/skills/lark-base/references/lark-base-view-list.md +44 -0
  117. package/skills/lark-base/references/lark-base-view-rename.md +44 -0
  118. package/skills/lark-base/references/lark-base-view-set-card.md +55 -0
  119. package/skills/lark-base/references/lark-base-view-set-filter.md +181 -0
  120. package/skills/lark-base/references/lark-base-view-set-group.md +65 -0
  121. package/skills/lark-base/references/lark-base-view-set-sort.md +63 -0
  122. package/skills/lark-base/references/lark-base-view-set-timebar.md +51 -0
  123. package/skills/lark-base/references/lark-base-view-set-visible-fields.md +46 -0
  124. package/skills/lark-base/references/lark-base-view.md +44 -0
  125. package/skills/lark-base/references/lark-base-workflow-create.md +180 -0
  126. package/skills/lark-base/references/lark-base-workflow-disable.md +94 -0
  127. package/skills/lark-base/references/lark-base-workflow-enable.md +94 -0
  128. package/skills/lark-base/references/lark-base-workflow-get.md +147 -0
  129. package/skills/lark-base/references/lark-base-workflow-guide.md +718 -0
  130. package/skills/lark-base/references/lark-base-workflow-list.md +124 -0
  131. package/skills/lark-base/references/lark-base-workflow-schema.md +935 -0
  132. package/skills/lark-base/references/lark-base-workflow-update.md +167 -0
  133. package/skills/lark-base/references/lark-base-workflow.md +23 -0
  134. package/skills/lark-base/references/lark-base-workspace.md +18 -0
  135. package/skills/lark-base/references/lookup-field-guide.md +512 -0
  136. package/skills/lark-base/references/role-config.md +539 -0
  137. package/skills/lark-calendar/SKILL.md +154 -0
  138. package/skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
  139. package/skills/lark-calendar/references/lark-calendar-create.md +109 -0
  140. package/skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
  141. package/skills/lark-calendar/references/lark-calendar-room-find.md +113 -0
  142. package/skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
  143. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
  144. package/skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
  145. package/skills/lark-calendar/references/lark-calendar-update.md +105 -0
  146. package/skills/lark-contact/SKILL.md +45 -0
  147. package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
  148. package/skills/lark-contact/references/lark-contact-search-user.md +124 -0
  149. package/skills/lark-doc/SKILL.md +65 -0
  150. package/skills/lark-doc/references/lark-doc-create.md +89 -0
  151. package/skills/lark-doc/references/lark-doc-fetch.md +141 -0
  152. package/skills/lark-doc/references/lark-doc-md.md +71 -0
  153. package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
  154. package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
  155. package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
  156. package/skills/lark-doc/references/lark-doc-update.md +252 -0
  157. package/skills/lark-doc/references/lark-doc-whiteboard.md +100 -0
  158. package/skills/lark-doc/references/lark-doc-xml.md +169 -0
  159. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +56 -0
  160. package/skills/lark-doc/references/style/lark-doc-style.md +106 -0
  161. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +54 -0
  162. package/skills/lark-drive/SKILL.md +369 -0
  163. package/skills/lark-drive/references/lark-drive-add-comment.md +182 -0
  164. package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
  165. package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
  166. package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
  167. package/skills/lark-drive/references/lark-drive-delete.md +79 -0
  168. package/skills/lark-drive/references/lark-drive-download.md +31 -0
  169. package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
  170. package/skills/lark-drive/references/lark-drive-export.md +119 -0
  171. package/skills/lark-drive/references/lark-drive-import.md +159 -0
  172. package/skills/lark-drive/references/lark-drive-inspect.md +50 -0
  173. package/skills/lark-drive/references/lark-drive-move.md +120 -0
  174. package/skills/lark-drive/references/lark-drive-pull.md +137 -0
  175. package/skills/lark-drive/references/lark-drive-push.md +162 -0
  176. package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
  177. package/skills/lark-drive/references/lark-drive-search.md +266 -0
  178. package/skills/lark-drive/references/lark-drive-status.md +198 -0
  179. package/skills/lark-drive/references/lark-drive-task-result.md +302 -0
  180. package/skills/lark-drive/references/lark-drive-upload.md +67 -0
  181. package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
  182. package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
  183. package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
  184. package/skills/lark-drive/references/lark-drive-version-revert.md +198 -0
  185. package/skills/lark-event/SKILL.md +145 -0
  186. package/skills/lark-event/references/lark-event-im.md +86 -0
  187. package/skills/lark-im/SKILL.md +162 -0
  188. package/skills/lark-im/references/lark-im-chat-create.md +162 -0
  189. package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
  190. package/skills/lark-im/references/lark-im-chat-list.md +198 -0
  191. package/skills/lark-im/references/lark-im-chat-messages-list.md +148 -0
  192. package/skills/lark-im/references/lark-im-chat-search.md +136 -0
  193. package/skills/lark-im/references/lark-im-chat-update.md +84 -0
  194. package/skills/lark-im/references/lark-im-flag-cancel.md +198 -0
  195. package/skills/lark-im/references/lark-im-flag-create.md +67 -0
  196. package/skills/lark-im/references/lark-im-flag-list.md +100 -0
  197. package/skills/lark-im/references/lark-im-messages-mget.md +95 -0
  198. package/skills/lark-im/references/lark-im-messages-reply.md +228 -0
  199. package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
  200. package/skills/lark-im/references/lark-im-messages-search.md +232 -0
  201. package/skills/lark-im/references/lark-im-messages-send.md +229 -0
  202. package/skills/lark-im/references/lark-im-reactions.md +297 -0
  203. package/skills/lark-im/references/lark-im-threads-messages-list.md +111 -0
  204. package/skills/lark-mail/SKILL.md +648 -0
  205. package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
  206. package/skills/lark-mail/references/lark-mail-draft-create.md +123 -0
  207. package/skills/lark-mail/references/lark-mail-draft-edit.md +400 -0
  208. package/skills/lark-mail/references/lark-mail-forward.md +173 -0
  209. package/skills/lark-mail/references/lark-mail-message.md +230 -0
  210. package/skills/lark-mail/references/lark-mail-messages.md +108 -0
  211. package/skills/lark-mail/references/lark-mail-reply-all.md +206 -0
  212. package/skills/lark-mail/references/lark-mail-reply.md +242 -0
  213. package/skills/lark-mail/references/lark-mail-send-receipt.md +198 -0
  214. package/skills/lark-mail/references/lark-mail-send.md +216 -0
  215. package/skills/lark-mail/references/lark-mail-share-to-chat.md +198 -0
  216. package/skills/lark-mail/references/lark-mail-signature.md +98 -0
  217. package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
  218. package/skills/lark-mail/references/lark-mail-template-update.md +198 -0
  219. package/skills/lark-mail/references/lark-mail-thread.md +111 -0
  220. package/skills/lark-mail/references/lark-mail-triage.md +122 -0
  221. package/skills/lark-mail/references/lark-mail-watch.md +94 -0
  222. package/skills/lark-minutes/SKILL.md +139 -0
  223. package/skills/lark-minutes/references/lark-minutes-download.md +137 -0
  224. package/skills/lark-minutes/references/lark-minutes-search.md +206 -0
  225. package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
  226. package/skills/lark-okr/SKILL.md +133 -0
  227. package/skills/lark-okr/references/lark-okr-contentblock.md +359 -0
  228. package/skills/lark-okr/references/lark-okr-cycle-detail.md +84 -0
  229. package/skills/lark-okr/references/lark-okr-cycle-list.md +90 -0
  230. package/skills/lark-okr/references/lark-okr-entities.md +329 -0
  231. package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
  232. package/skills/lark-okr/references/lark-okr-progress-create.md +81 -0
  233. package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
  234. package/skills/lark-okr/references/lark-okr-progress-get.md +62 -0
  235. package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
  236. package/skills/lark-okr/references/lark-okr-progress-update.md +81 -0
  237. package/skills/lark-openapi-explorer/SKILL.md +153 -0
  238. package/skills/lark-shared/SKILL.md +144 -0
  239. package/skills/lark-sheets/SKILL.md +343 -0
  240. package/skills/lark-sheets/references/lark-sheets-cell-data.md +197 -0
  241. package/skills/lark-sheets/references/lark-sheets-cell-images.md +59 -0
  242. package/skills/lark-sheets/references/lark-sheets-cell-style-and-merge.md +141 -0
  243. package/skills/lark-sheets/references/lark-sheets-dropdown.md +133 -0
  244. package/skills/lark-sheets/references/lark-sheets-filter-views.md +193 -0
  245. package/skills/lark-sheets/references/lark-sheets-float-images.md +125 -0
  246. package/skills/lark-sheets/references/lark-sheets-formula.md +88 -0
  247. package/skills/lark-sheets/references/lark-sheets-row-column-management.md +151 -0
  248. package/skills/lark-sheets/references/lark-sheets-sheet-management.md +164 -0
  249. package/skills/lark-sheets/references/lark-sheets-spreadsheet-management.md +140 -0
  250. package/skills/lark-skill-maker/SKILL.md +85 -0
  251. package/skills/lark-slides/SKILL.md +296 -0
  252. package/skills/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
  253. package/skills/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
  254. package/skills/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
  255. package/skills/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
  256. package/skills/lark-slides/assets/templates/hr--employee_training.xml +912 -0
  257. package/skills/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
  258. package/skills/lark-slides/assets/templates/hr--onboarding.xml +933 -0
  259. package/skills/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
  260. package/skills/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
  261. package/skills/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
  262. package/skills/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
  263. package/skills/lark-slides/assets/templates/marketing--marketing_plan.xml +198 -0
  264. package/skills/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
  265. package/skills/lark-slides/assets/templates/marketing--product_whitepaper.xml +198 -0
  266. package/skills/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
  267. package/skills/lark-slides/assets/templates/misc--book_sharing.xml +198 -0
  268. package/skills/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
  269. package/skills/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
  270. package/skills/lark-slides/assets/templates/office--dark_general.xml +3763 -0
  271. package/skills/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
  272. package/skills/lark-slides/assets/templates/office--light_general.xml +3378 -0
  273. package/skills/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
  274. package/skills/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
  275. package/skills/lark-slides/assets/templates/office--work_report.xml +1099 -0
  276. package/skills/lark-slides/assets/templates/office--work_summary.xml +4420 -0
  277. package/skills/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
  278. package/skills/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
  279. package/skills/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
  280. package/skills/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
  281. package/skills/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
  282. package/skills/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
  283. package/skills/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
  284. package/skills/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
  285. package/skills/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
  286. package/skills/lark-slides/assets/templates/personal--self_intro.xml +696 -0
  287. package/skills/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
  288. package/skills/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
  289. package/skills/lark-slides/assets/templates/product--market_analysis.xml +898 -0
  290. package/skills/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
  291. package/skills/lark-slides/assets/templates/product--product_intro.xml +2838 -0
  292. package/skills/lark-slides/assets/templates/product--product_promotion.xml +687 -0
  293. package/skills/lark-slides/assets/templates/product--product_promotion_2.xml +198 -0
  294. package/skills/lark-slides/references/asset-planning.md +124 -0
  295. package/skills/lark-slides/references/examples.md +261 -0
  296. package/skills/lark-slides/references/lark-slides-create.md +137 -0
  297. package/skills/lark-slides/references/lark-slides-edit-workflows.md +142 -0
  298. package/skills/lark-slides/references/lark-slides-media-upload.md +128 -0
  299. package/skills/lark-slides/references/lark-slides-replace-slide.md +239 -0
  300. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +220 -0
  301. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
  302. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
  303. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +186 -0
  304. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
  305. package/skills/lark-slides/references/planning-layer.md +219 -0
  306. package/skills/lark-slides/references/slide-templates.md +201 -0
  307. package/skills/lark-slides/references/slides_demo.xml +226 -0
  308. package/skills/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
  309. package/skills/lark-slides/references/template-catalog.md +463 -0
  310. package/skills/lark-slides/references/template-index.json +198 -0
  311. package/skills/lark-slides/references/troubleshooting.md +198 -0
  312. package/skills/lark-slides/references/validation-checklist.md +102 -0
  313. package/skills/lark-slides/references/visual-planning.md +250 -0
  314. package/skills/lark-slides/references/xml-format-guide.md +369 -0
  315. package/skills/lark-slides/references/xml-schema-quick-ref.md +215 -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 +165 -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 +55 -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-subscribe-event.md +86 -0
  333. package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
  334. package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
  335. package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
  336. package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
  337. package/skills/lark-task/references/lark-task-update.md +37 -0
  338. package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
  339. package/skills/lark-vc/SKILL.md +168 -0
  340. package/skills/lark-vc/references/lark-vc-notes.md +126 -0
  341. package/skills/lark-vc/references/lark-vc-recording.md +153 -0
  342. package/skills/lark-vc/references/lark-vc-search.md +193 -0
  343. package/skills/lark-vc-agent/SKILL.md +121 -0
  344. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +247 -0
  345. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +133 -0
  346. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +111 -0
  347. package/skills/lark-whiteboard/SKILL.md +144 -0
  348. package/skills/lark-whiteboard/references/connectors.md +102 -0
  349. package/skills/lark-whiteboard/references/content.md +40 -0
  350. package/skills/lark-whiteboard/references/image.md +80 -0
  351. package/skills/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
  352. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +100 -0
  353. package/skills/lark-whiteboard/references/layout.md +374 -0
  354. package/skills/lark-whiteboard/references/schema.md +357 -0
  355. package/skills/lark-whiteboard/references/style.md +318 -0
  356. package/skills/lark-whiteboard/references/typography.md +73 -0
  357. package/skills/lark-whiteboard/routes/dsl.md +107 -0
  358. package/skills/lark-whiteboard/routes/mermaid.md +27 -0
  359. package/skills/lark-whiteboard/routes/svg.md +54 -0
  360. package/skills/lark-whiteboard/scenes/architecture.md +433 -0
  361. package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
  362. package/skills/lark-whiteboard/scenes/comparison.md +135 -0
  363. package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
  364. package/skills/lark-whiteboard/scenes/flowchart.md +198 -0
  365. package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
  366. package/skills/lark-whiteboard/scenes/funnel.md +198 -0
  367. package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
  368. package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
  369. package/skills/lark-whiteboard/scenes/milestone.md +139 -0
  370. package/skills/lark-whiteboard/scenes/organization.md +173 -0
  371. package/skills/lark-whiteboard/scenes/photo-showcase.md +198 -0
  372. package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
  373. package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
  374. package/skills/lark-whiteboard/scenes/treemap.md +198 -0
  375. package/skills/lark-wiki/SKILL.md +119 -0
  376. package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
  377. package/skills/lark-wiki/references/lark-wiki-member-add.md +66 -0
  378. package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
  379. package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
  380. package/skills/lark-wiki/references/lark-wiki-move.md +183 -0
  381. package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
  382. package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
  383. package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
  384. package/skills/lark-wiki/references/lark-wiki-node-get.md +56 -0
  385. package/skills/lark-wiki/references/lark-wiki-node-list.md +198 -0
  386. package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
  387. package/skills/lark-wiki/references/lark-wiki-space-list.md +198 -0
  388. package/skills/lark-workflow-meeting-summary/SKILL.md +104 -0
  389. package/skills/lark-workflow-standup-report/SKILL.md +120 -0
  390. package/skills/mmx-cli/SKILL.md +440 -0
  391. package/src/bot.ts +109 -0
  392. package/src/cards.ts +105 -0
  393. package/src/config.ts +33 -0
  394. package/src/daemon.ts +217 -0
  395. package/src/extension.ts +132 -0
  396. package/src/poller.ts +135 -0
  397. package/src/renderer.ts +47 -0
  398. package/src/session-registry.ts +90 -0
  399. package/src/types.ts +29 -0
  400. package/tests/bot.test.ts +104 -0
  401. package/tests/cards.test.ts +48 -0
  402. package/tests/config.test.ts +59 -0
  403. package/tests/renderer.test.ts +74 -0
  404. package/tests/session-registry.test.ts +94 -0
  405. package/tests/types.test.ts +35 -0
  406. package/tsconfig.json +16 -0
  407. package/vitest.config.ts +7 -0
@@ -0,0 +1,98 @@
1
+ # lark-slides xml_presentations get
2
+
3
+ ## 用途
4
+
5
+ 读取飞书幻灯片(PPT)演示文稿的完整 XML 内容信息。
6
+
7
+ ## 命令
8
+
9
+ ```bash
10
+ lark-cli slides xml_presentations get --as user --params '<json_params>'
11
+ ```
12
+
13
+ ## 参数说明
14
+
15
+ | 参数 | 类型 | 必需 | 说明 |
16
+ |------|------|------|------|
17
+ | `--params` | JSON string | 是 | 路径参数与查询参数,结构以 schema 为准 |
18
+
19
+ ### params JSON 结构
20
+
21
+ ```json
22
+ {
23
+ "xml_presentation_id": "slides_example_presentation_id",
24
+ "revision_id": -1
25
+ }
26
+ ```
27
+
28
+ | 字段 | 类型 | 必需 | 说明 |
29
+ |------|------|------|------|
30
+ | `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
31
+ | `revision_id` | integer | 否 | 版本号,`-1` 表示最新版本 |
32
+
33
+ ## 使用示例
34
+
35
+ ### 基础示例
36
+
37
+ ```bash
38
+ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}'
39
+ ```
40
+
41
+ ### 结合 jq 格式化输出
42
+
43
+ ```bash
44
+ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' | jq -r '.data.xml_presentation.content'
45
+ ```
46
+
47
+ ### 保存到文件
48
+
49
+ ```bash
50
+ lark-cli slides xml_presentations get --as user --params '{"xml_presentation_id":"slides_example_presentation_id"}' > presentation_data.json
51
+ ```
52
+
53
+ ## 返回值
54
+
55
+ 成功时返回演示文稿的完整信息:
56
+
57
+ ```json
58
+ {
59
+ "code": 0,
60
+ "data": {
61
+ "xml_presentation": {
62
+ "presentation_id": "slides_example_presentation_id",
63
+ "revision_id": 1,
64
+ "content": "<presentation xmlns=\"http://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
65
+ }
66
+ },
67
+ "msg": "success"
68
+ }
69
+ ```
70
+
71
+ ### 返回字段说明
72
+
73
+ | 字段 | 类型 | 说明 |
74
+ |------|------|------|
75
+ | `data.xml_presentation.presentation_id` | string | 演示文稿唯一标识 |
76
+ | `data.xml_presentation.revision_id` | integer | 版本号 |
77
+ | `data.xml_presentation.content` | string | XML 格式的完整内容 |
78
+
79
+ ## 常见错误
80
+
81
+ | 错误码 | 含义 | 解决方案 |
82
+ |--------|------|----------|
83
+ | 404 | 演示文稿不存在 | 检查 `xml_presentation_id` 是否正确 |
84
+ | 403 | 权限不足 | 检查是否拥有 `slides:presentation:read` scope,或是否有访问权限 |
85
+ | 400 | 参数格式错误 | 确保 `--params` 是合法的 JSON 字符串 |
86
+
87
+ ## 注意事项
88
+
89
+ 1. **执行前必做**: 使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
90
+ 2. 返回的 XML 在 `data.xml_presentation.content` 字段中
91
+ 3. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
92
+ 4. 建议将获取的 XML 保存为文件,便于后续编辑或备份
93
+
94
+ ## 相关命令
95
+
96
+ - [slides +create](lark-slides-create.md) - 创建空白 PPT
97
+ - [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面
98
+ - [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
@@ -0,0 +1,219 @@
1
+ # Planning Layer
2
+
3
+ 新建演示文稿或大幅改写页面时,必须先写 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`,再生成 XML。这个文件是 deck 的设计中间层,用来把叙事、页面角色、布局、视觉重点和文字密度固定下来,避免从用户提示直接跳到 XML。
4
+
5
+ 小型已有页编辑可豁免,例如只替换一个标题、改一个数字、插入一个块、上传并插入一张图。只要任务会重排多页、生成新 deck、替换整页结构,仍然需要规划层。
6
+
7
+ ## Required Flow
8
+
9
+ 1. 理解用户需求,必要时澄清主题、受众、页数、风格。
10
+ 2. 如果适合模板,先用 `template_tool.py search` 检索,锁定模板后用 `summarize` 获取主题和页型信息。
11
+ 3. 选择唯一 plan 目录:`.lark-slides/plan/<deck-or-task-id>/`。
12
+ 4. 先创建目录:`mkdir -p .lark-slides/plan/<deck-or-task-id>`。
13
+ 5. 写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`。
14
+ 6. 读取 `xml-schema-quick-ref.md`、`visual-planning.md` 和 `asset-planning.md`。
15
+ 7. 按 plan、visual planning 和 asset planning 规则逐页生成 XML,把 `layout_type`、`visual_focus`、`text_density` 转成具体页面几何和文本量约束,并把缺失素材转成可执行兜底视觉。
16
+ 8. 创建 PPT 后用 `xml_presentations.get` 回读,核对页面数量、关键元素和 plan 到 XML 的对应关系。
17
+
18
+ 模板不能代替 plan。模板搜索和摘要只能影响 `theme_style`、页面流、布局选择和局部布局骨架;最终仍必须有 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`。
19
+
20
+ ## Plan Path
21
+
22
+ Use a separate plan directory per deck or task so multiple presentations in the same workspace cannot overwrite each other.
23
+
24
+ Recommended IDs:
25
+
26
+ - New deck before creation: title slug plus date/time, such as `q3-review-20260507-1805`.
27
+ - Existing PPT rewrite: the `xml_presentation_id`.
28
+ - Ambiguous or untitled task: short task slug plus date/time.
29
+
30
+ Rules:
31
+
32
+ - Do not reuse `.lark-slides/plan/slide_plan.json` as a shared path.
33
+ - Create the directory before writing the file.
34
+ - Reuse the same plan path for XML generation and post-create verification for that deck.
35
+
36
+ ## Artifact Lifecycle
37
+
38
+ `.lark-slides/` is local agent state. It supports recovery, iteration, and later edits, but it should not be treated as source code or committed by default.
39
+
40
+ Keep:
41
+
42
+ - `.lark-slides/plan/<deck-or-task-id>/slide_plan.json` after successful creation or major rewrite. The plan is the editable design state for the deck.
43
+ - A small manifest when useful for follow-up work, such as `xml_presentation_id`, slide IDs, `revision_id`, plan path, and verification status.
44
+
45
+ Clean or avoid keeping:
46
+
47
+ - Transient XML payloads after successful creation and verification. Prefer `/tmp` for throwaway XML, or delete generated XML files after success.
48
+ - Stale XML drafts that no longer match the current presentation state.
49
+
50
+ Exception:
51
+
52
+ - If creation fails or partially succeeds, keep the relevant XML/debug payloads until recovery is complete. Record `xml_presentation_id` first, then fetch current state before retrying.
53
+
54
+ ## JSON Shape
55
+
56
+ ```json
57
+ {
58
+ "presentation_goal": "Explain the proposal and secure approval for the next phase.",
59
+ "audience": "Product and engineering leaders who know the domain but need a concise decision narrative.",
60
+ "theme_style": "Clean business style, light background, restrained blue accent, strong visual hierarchy.",
61
+ "visual_system": {
62
+ "background_strategy": "Content pages use one light base; cover and closing may use a related dark treatment with the same accent system.",
63
+ "motif": "A reusable left accent bar and consistent card/header treatments.",
64
+ "color_roles": {
65
+ "primary": "Used for the dominant structural motif and about 60-70% of visual weight.",
66
+ "secondary": "Used for grouped regions, comparison panels, or supporting categories.",
67
+ "accent": "Used only for key numbers, conclusions, or focus markers."
68
+ }
69
+ },
70
+ "typography_constraints": {
71
+ "title_max_lines": 2,
72
+ "body_max_lines_per_box": 2,
73
+ "footer_max_lines": 1,
74
+ "long_text_handling": "Shorten, split into multiple boxes, or move detail to speaker notes instead of shrinking into a tight box."
75
+ },
76
+ "verification_plan": {
77
+ "check_background_consistency": true,
78
+ "check_text_fit": true,
79
+ "check_visual_focus": true,
80
+ "check_asset_rendering": true
81
+ },
82
+ "slides": [
83
+ {
84
+ "page": 1,
85
+ "title": "Proposal Title",
86
+ "key_message": "The initiative is ready for a focused pilot.",
87
+ "layout_type": "title-cover",
88
+ "visual_focus": "Large title area with one concise supporting statement.",
89
+ "asset_need": {
90
+ "asset_type": "logo",
91
+ "purpose": "Signal product or team identity on the opening page.",
92
+ "suggested_query": "product logo",
93
+ "fallback_if_missing": "Use a small text badge and abstract shape motif instead of a real logo."
94
+ },
95
+ "text_density": "low",
96
+ "speaker_intent": "Frame the decision and establish the deck's point of view."
97
+ }
98
+ ]
99
+ }
100
+ ```
101
+
102
+ ## Required Fields
103
+
104
+ Top-level fields:
105
+
106
+ - `presentation_goal`: what the whole deck is trying to achieve.
107
+ - `audience`: target readers or listeners and their assumed background.
108
+ - `theme_style`: visual tone, palette direction, and professional style.
109
+ - `visual_system`: deck-level visual rules that must stay stable across pages, including background strategy, recurring motif, and color roles.
110
+ - `typography_constraints`: deck-level limits for line count, text box density, and how to handle long text before XML generation.
111
+ - `verification_plan`: explicit checks to perform after creation or major edits; include background consistency, text fit, visual focus, and asset rendering when relevant.
112
+ - `slides`: ordered page plans.
113
+
114
+ Each slide must include:
115
+
116
+ - `page`: 1-based page number.
117
+ - `title`: slide title.
118
+ - `key_message`: the one idea this page must land.
119
+ - `layout_type`: planned page structure.
120
+ - `visual_focus`: dominant visual object or region.
121
+ - `asset_need`: planning-only structured asset metadata; no search, download, or upload required. Follow `asset-planning.md`.
122
+ - `text_density`: `low`, `medium`, or `high`.
123
+ - `speaker_intent`: why the speaker needs this page and how it advances the story.
124
+
125
+ ## Layout Vocabulary
126
+
127
+ Use one of these `layout_type` values unless the user explicitly needs a custom structure:
128
+
129
+ - `title-cover`
130
+ - `section-divider`
131
+ - `two-column`
132
+ - `image-left-text-right`
133
+ - `image-right-text-left`
134
+ - `big-number`
135
+ - `timeline`
136
+ - `comparison`
137
+ - `architecture-diagram`
138
+ - `process-flow`
139
+ - `quote-highlight`
140
+ - `conclusion`
141
+
142
+ The value must affect XML geometry, not just appear as a label. For example, `timeline` should create a horizontal or vertical sequence, `comparison` should create distinct side-by-side regions, and `big-number` should reserve dominant space for a large metric.
143
+
144
+ ## Text Density Rules
145
+
146
+ - `low`: title plus 1 short statement, or 1-3 very short labels.
147
+ - `medium`: title plus 2-4 concise bullets or labeled regions.
148
+ - `high`: allowed only when the user needs detail; use tables, columns, or grouped regions instead of a long bullet list.
149
+
150
+ Do not let all pages become title + bullet slides. For decks of 4 or more pages, aim for at least 4 different `layout_type` values when the content allows it.
151
+
152
+ Text density must be realistic for the planned geometry. If a page needs long titles, bilingual labels, paper figure captions, legal disclaimers, or dense technical wording, record how the text will be shortened, split, or moved to speaker notes. Do not rely on small font sizes or tight boxes to make text fit.
153
+
154
+ ## Visual System Planning
155
+
156
+ Before generating XML, define a visual system that can survive the whole deck:
157
+
158
+ - `background_strategy`: specify the default background for normal content pages, and which page roles may intentionally differ. Do not let pages drift through near-identical but inconsistent background colors.
159
+ - `motif`: choose one or two reusable structural devices, such as a side bar, header rail, numbered node, card treatment, diagram lane, or section band. The motif should appear consistently enough that pages feel related.
160
+ - `color_roles`: assign primary, secondary, and accent roles. The same color must not mean unrelated things across pages.
161
+ - `cover_content_relationship`: if the cover uses a different dark or image-led treatment, state how it connects to content pages through shared colors, motifs, or geometry.
162
+ - `closing_relationship`: if the closing page mirrors the cover, state that explicitly so it looks intentional rather than like a new theme.
163
+
164
+ These are planning constraints, not decoration notes. They must affect coordinates, background fills, shape styles, and text placement in generated XML.
165
+
166
+ ## Iterative Deck State
167
+
168
+ When continuing an existing deck, update the same plan path rather than creating a new disconnected plan. Keep the plan aligned with what has actually been created.
169
+
170
+ Recommended optional fields for long-running work:
171
+
172
+ - `deck_status`: current slide count, target slide count if known, and last verified revision or timestamp.
173
+ - `created_slides`: page number, slide id when known, and the page role.
174
+ - `assets_used`: source, local path when applicable, uploaded token when known, and which page uses it.
175
+ - `open_issues`: known layout, text fit, asset, or consistency risks that still need correction.
176
+
177
+ Do not hard-code a page number just because a previous deck used that pattern. Plan by page role and evidence need, such as "method overview pages should use a figure when the source has a readable figure" instead of binding screenshots, charts, or diagrams to a fixed page index. The plan should describe decision rules, not a rigid template sequence.
178
+
179
+ ## Asset Planning
180
+
181
+ `asset_need` is metadata. It can describe a desired figure, diagram, chart, icon, logo, screenshot, or fallback shape-based visual, but it must not require web search, local download, or media upload.
182
+
183
+ Use an object for one planned asset, an array for multiple real needs, or `asset_type: "none"` when no asset is useful. Each planned asset must include:
184
+
185
+ - `asset_type`: one of `paper_figure`, `architecture_diagram`, `icon`, `logo`, `chart`, `infographic`, `screenshot`, `flow_diagram`, or `none`.
186
+ - `purpose`: why this asset helps the page's key message.
187
+ - `suggested_query`: short future lookup hint only; do not execute it unless separately requested.
188
+ - `fallback_if_missing`: concrete XML-native visual plan using shapes, arrows, labels, tables, simple charts, or placeholder panels.
189
+
190
+ For detailed rules and examples, read `asset-planning.md`.
191
+
192
+ Good examples:
193
+
194
+ - `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"Draw grouped boxes and arrows with short labels."}`
195
+ - `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Use a text label in a small badge."}`
196
+ - `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Draw a simple line chart with shapes and value labels."}`
197
+
198
+ ## XML Generation Contract
199
+
200
+ Before writing each slide XML, map the plan fields to concrete decisions:
201
+
202
+ - `key_message` determines the headline, dominant claim, or main takeaway.
203
+ - `layout_type` determines the coordinate structure and element types. Use `visual-planning.md` for concrete layout rules.
204
+ - `visual_focus` determines the largest visual region or emphasized object.
205
+ - `text_density` caps visible text volume.
206
+ - `asset_need` informs placeholder diagrams, icons, charts, screenshots, or shape-based fallback visuals only. Missing real assets must use `fallback_if_missing`, not blank regions.
207
+
208
+ After creating the PPT, fetch the presentation and verify:
209
+
210
+ - Page count matches the plan.
211
+ - Every page has the planned title and key message represented.
212
+ - At least several pages have visibly different XML layout structures.
213
+ - Planned `visual_focus` appears as a dominant visual region or object.
214
+ - Asset planning is proportional to the deck topic and length: technical, research, product, and analytical decks should include meaningful planned visuals where they clarify the story, and each planned asset has a visible fallback if no real asset was used.
215
+ - `text_density` is reflected in the amount of visible text.
216
+ - Pages are not crowded, and any planned `timeline`, `comparison`, or `architecture-diagram` page uses its matching visual structure.
217
+ - The actual backgrounds match `visual_system.background_strategy`; any dark, image-led, or emphasis page has an intentional relationship to the rest of the deck.
218
+ - Text boxes respect `typography_constraints`; long labels, captions, footer text, and conclusion bars are not squeezed into boxes that are too short for the intended line count.
219
+ - If real assets are used, the final XML contains renderable asset tokens or supported local placeholders for creation, not http URLs, stale local paths, or blank image boxes.
@@ -0,0 +1,201 @@
1
+ # Slide XML 模板
2
+
3
+ 可直接复制使用的 slide XML 模板。纯文本/形状模板可使用 `jq` 包装后传给 `xml_presentation.slide.create`:
4
+
5
+ ```bash
6
+ lark-cli slides xml_presentation.slide create --as user \
7
+ --params '{"xml_presentation_id":"YOUR_ID"}' \
8
+ --data "$(jq -n --arg content 'PASTE_XML_HERE' '{slide:{content:$content}}')"
9
+ ```
10
+
11
+ > **带图模板不要直接按上面的命令提交。** 新建 PPT 时可在 `+create --slides` 中使用 `src="@./local.png"`,CLI 会自动上传并替换为 `file_token`;给已有 PPT 添加或修改图片时,必须先用 `slides +media-upload` 拿到 `file_token`,再写进 `<img src="...">`。
12
+
13
+ ## 深色封面页
14
+
15
+ ```xml
16
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
17
+ <style><fill><fillColor color="linear-gradient(135deg,rgba(15,23,42,1) 0%,rgba(56,97,140,1) 100%)"/></fill></style>
18
+ <data>
19
+ <shape type="text" topLeftX="80" topLeftY="160" width="800" height="70">
20
+ <content><p textAlign="center"><strong><span color="rgb(255,255,255)" fontSize="44">主标题</span></strong></p></content>
21
+ </shape>
22
+ <shape type="text" topLeftX="80" topLeftY="250" width="800" height="35">
23
+ <content><p textAlign="center"><span color="rgb(148,163,184)" fontSize="20">副标题</span></p></content>
24
+ </shape>
25
+ <shape type="text" topLeftX="80" topLeftY="420" width="800" height="25">
26
+ <content><p textAlign="center"><span color="rgb(100,116,139)" fontSize="14">底部信息</span></p></content>
27
+ </shape>
28
+ </data>
29
+ </slide>
30
+ ```
31
+
32
+ ## 浅色内容页
33
+
34
+ ```xml
35
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
36
+ <style><fill><fillColor color="rgb(248,250,252)"/></fill></style>
37
+ <data>
38
+ <shape type="rect" topLeftX="60" topLeftY="40" width="4" height="35">
39
+ <fill><fillColor color="rgb(59,130,246)"/></fill>
40
+ </shape>
41
+ <shape type="text" topLeftX="76" topLeftY="36" width="600" height="45">
42
+ <content><p><strong><span color="rgb(15,23,42)" fontSize="28">页面标题</span></strong></p></content>
43
+ </shape>
44
+ <shape type="text" topLeftX="60" topLeftY="100" width="840" height="380">
45
+ <content textType="body" lineSpacing="multiple:1.8">
46
+ <p><span color="rgb(51,65,85)" fontSize="15">正文段落</span></p>
47
+ <ul>
48
+ <li><p><span color="rgb(51,65,85)" fontSize="15">要点一</span></p></li>
49
+ <li><p><span color="rgb(51,65,85)" fontSize="15">要点二</span></p></li>
50
+ <li><p><span color="rgb(51,65,85)" fontSize="15">要点三</span></p></li>
51
+ </ul>
52
+ </content>
53
+ </shape>
54
+ </data>
55
+ </slide>
56
+ ```
57
+
58
+ ## 数据卡片页(横排指标)
59
+
60
+ ```xml
61
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
62
+ <style><fill><fillColor color="rgb(248,250,252)"/></fill></style>
63
+ <data>
64
+ <shape type="text" topLeftX="60" topLeftY="36" width="600" height="45">
65
+ <content><p><strong><span color="rgb(15,23,42)" fontSize="28">数据概览</span></strong></p></content>
66
+ </shape>
67
+ <!-- 卡片 1 -->
68
+ <shape type="rect" topLeftX="60" topLeftY="100" width="260" height="140">
69
+ <fill><fillColor color="rgb(255,255,255)"/></fill>
70
+ <border color="rgba(0,0,0,0.08)" width="1"/>
71
+ </shape>
72
+ <shape type="text" topLeftX="60" topLeftY="115" width="260" height="50">
73
+ <content><p textAlign="center"><strong><span color="rgb(59,130,246)" fontSize="36">数值</span></strong></p></content>
74
+ </shape>
75
+ <shape type="text" topLeftX="60" topLeftY="175" width="260" height="25">
76
+ <content><p textAlign="center"><span color="rgb(100,116,139)" fontSize="14">指标名称</span></p></content>
77
+ </shape>
78
+ <!-- 卡片 2:topLeftX="350" -->
79
+ <!-- 卡片 3:topLeftX="640" -->
80
+ </data>
81
+ </slide>
82
+ ```
83
+
84
+ ## 带图版式
85
+
86
+ > **关键提醒**:`<img>` 的 `width:height` = 原图比例时才不会被裁剪。每个模板都标注了图框比例和建议原图比例,**选模板前先对照你的素材比例**,不要硬塞(如把横图放进竖框,会被左右裁掉大半)。把 `@./your-image.jpg` 替换为实际路径(仅 `+create --slides` 支持 `@` 占位符;其他场景需先用 `slides +media-upload` 拿 `file_token`)。
87
+
88
+ ### 封面右图(左字右图)
89
+
90
+ 图框 400×225(**16:9**),建议原图:横幅 16:9(桌面壁纸、产品 banner、landscape 照片)
91
+
92
+ ```xml
93
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
94
+ <style><fill><fillColor color="linear-gradient(135deg,rgba(15,23,42,1) 0%,rgba(56,97,140,1) 100%)"/></fill></style>
95
+ <data>
96
+ <shape type="text" topLeftX="60" topLeftY="180" width="450" height="80">
97
+ <content><p><strong><span color="rgb(255,255,255)" fontSize="44">主标题</span></strong></p></content>
98
+ </shape>
99
+ <shape type="text" topLeftX="60" topLeftY="270" width="450" height="40">
100
+ <content><p><span color="rgb(186,230,253)" fontSize="20">副标题</span></p></content>
101
+ </shape>
102
+ <line startX="60" startY="350" endX="180" endY="350">
103
+ <border color="rgb(59,130,246)" width="3"/>
104
+ </line>
105
+ <shape type="text" topLeftX="60" topLeftY="370" width="450" height="30">
106
+ <content><p><span color="rgb(203,213,225)" fontSize="13">底部信息</span></p></content>
107
+ </shape>
108
+ <!-- 图框 400×225 = 16:9;原图建议 16:9 横幅 -->
109
+ <img src="@./your-landscape.jpg" topLeftX="540" topLeftY="157" width="400" height="225"/>
110
+ </data>
111
+ </slide>
112
+ ```
113
+
114
+ ### 三卡片带图(上图下文)
115
+
116
+ 每个图框 240×180(**4:3**),建议原图:4:3 或接近正方形的图(产品照、截图、icon 类)
117
+
118
+ ```xml
119
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
120
+ <style><fill><fillColor color="rgb(248,250,252)"/></fill></style>
121
+ <data>
122
+ <shape type="text" topLeftX="60" topLeftY="40" width="600" height="45">
123
+ <content><p><strong><span color="rgb(15,23,42)" fontSize="28">核心亮点</span></strong></p></content>
124
+ </shape>
125
+ <line startX="60" startY="95" endX="140" endY="95">
126
+ <border color="rgb(59,130,246)" width="3"/>
127
+ </line>
128
+
129
+ <!-- 卡片 1 -->
130
+ <shape type="rect" topLeftX="60" topLeftY="130" width="270" height="360">
131
+ <fill><fillColor color="rgb(255,255,255)"/></fill>
132
+ <border color="rgba(0,0,0,0.08)" width="1"/>
133
+ </shape>
134
+ <!-- 图框 240×180 = 4:3;原图建议 4:3 -->
135
+ <img src="@./your-image-1.jpg" topLeftX="75" topLeftY="150" width="240" height="180"/>
136
+ <shape type="text" topLeftX="75" topLeftY="345" width="240" height="30">
137
+ <content><p><strong><span color="rgb(15,23,42)" fontSize="18">特性一</span></strong></p></content>
138
+ </shape>
139
+ <shape type="text" topLeftX="75" topLeftY="380" width="240" height="90">
140
+ <content><p><span color="rgb(71,85,105)" fontSize="14">简短描述文案,控制在两行以内。</span></p></content>
141
+ </shape>
142
+
143
+ <!-- 卡片 2:复制卡片 1,shape/img 的 topLeftX 改为 345 / 360 -->
144
+ <!-- 卡片 3:复制卡片 1,shape/img 的 topLeftX 改为 630 / 645 -->
145
+ </data>
146
+ </slide>
147
+ ```
148
+
149
+ ### 左右分栏(图在左,文在右)
150
+
151
+ 图框 360×540(**2:3 竖幅**),建议原图:2:3 或 3:4 竖幅(人像照、产品竖拍、海报)
152
+
153
+ > 如果你只有横幅图,不要硬塞进这个竖框 —— 改用"顶部横幅图 + 下方文字"的版式(把这里的图框改成 960×240 横条放在顶部)。
154
+
155
+ ```xml
156
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
157
+ <style><fill><fillColor color="rgb(255,255,255)"/></fill></style>
158
+ <data>
159
+ <!-- 图框 360×540 = 2:3;原图建议 2:3 或 3:4 竖幅 -->
160
+ <img src="@./your-portrait.jpg" topLeftX="0" topLeftY="0" width="360" height="540"/>
161
+
162
+ <shape type="text" topLeftX="410" topLeftY="80" width="490" height="50">
163
+ <content><p><strong><span color="rgb(15,23,42)" fontSize="30">场景标题</span></strong></p></content>
164
+ </shape>
165
+ <line startX="410" startY="140" endX="490" endY="140">
166
+ <border color="rgb(59,130,246)" width="3"/>
167
+ </line>
168
+ <shape type="text" topLeftX="410" topLeftY="160" width="490" height="50">
169
+ <content><p><span color="rgb(71,85,105)" fontSize="16">一句话描述这个场景的价值。</span></p></content>
170
+ </shape>
171
+ <shape type="text" topLeftX="410" topLeftY="230" width="490" height="250">
172
+ <content textType="body" lineSpacing="multiple:1.8">
173
+ <ul>
174
+ <li><p><span color="rgb(51,65,85)" fontSize="15">要点一</span></p></li>
175
+ <li><p><span color="rgb(51,65,85)" fontSize="15">要点二</span></p></li>
176
+ <li><p><span color="rgb(51,65,85)" fontSize="15">要点三</span></p></li>
177
+ </ul>
178
+ </content>
179
+ </shape>
180
+ </data>
181
+ </slide>
182
+ ```
183
+
184
+ ## 深色结尾页
185
+
186
+ ```xml
187
+ <slide xmlns="http://www.larkoffice.com/sml/2.0">
188
+ <style><fill><fillColor color="linear-gradient(135deg,rgba(15,23,42,1) 0%,rgba(56,97,140,1) 100%)"/></fill></style>
189
+ <data>
190
+ <shape type="text" topLeftX="80" topLeftY="190" width="800" height="55">
191
+ <content><p textAlign="center"><strong><span color="rgb(255,255,255)" fontSize="36">感谢语或行动号召</span></strong></p></content>
192
+ </shape>
193
+ <line startX="410" startY="260" endX="550" endY="260">
194
+ <border color="rgb(59,130,246)" width="2"/>
195
+ </line>
196
+ <shape type="text" topLeftX="80" topLeftY="280" width="800" height="30">
197
+ <content><p textAlign="center"><span color="rgb(148,163,184)" fontSize="16">补充说明</span></p></content>
198
+ </shape>
199
+ </data>
200
+ </slide>
201
+ ```