@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,267 @@
1
+ # im +messages-reply
2
+
3
+ > **Prerequisite:** Read [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) first to understand authentication, global parameters, and safety rules.
4
+
5
+ Reply to a specific message. Supports both user identity (`--as user`) and bot identity (`--as bot`). Also supports thread replies.
6
+
7
+ This skill maps to the shortcut: `lark-cli im +messages-reply` (internally calls `POST /open-apis/im/v1/messages/:message_id/reply`).
8
+
9
+ ## Safety Constraints
10
+
11
+ Replies sent by this tool are visible to other people. Before calling it, you **must** confirm with the user:
12
+
13
+ 1. Which message to reply to
14
+ 2. The reply content
15
+ 3. Which identity to use (user or bot)
16
+
17
+ **Do not** send a reply without explicit user approval.
18
+
19
+ When using `--as bot`, the reply is sent in the app's name, so make sure the app has already been added to the target chat.
20
+
21
+ When using `--as user`, the reply is sent as the authorized end user and requires the `im:message.send_as_user` and `im:message` scopes.
22
+
23
+ ## Choose The Right Content Flag
24
+
25
+ ### Default Selection Rule For Agents
26
+
27
+ - Prefer `--markdown` for headings, lists, links, summaries, investigation notes, or Markdown-looking content.
28
+ - Use `--text` for exact plain text: logs, code, indentation-sensitive text, or literal Markdown.
29
+ - Use `--content` for exact `post` JSON, titles, multiple locales, cards, or unsupported structures.
30
+
31
+ | Need | Recommended flag | Why |
32
+ |------|------|------|
33
+ | Reply with headings, lists, links, summaries, or investigation notes | `--markdown` | Best default for lightweight formatting; converted to Feishu `post` JSON |
34
+ | Reply with plain text exactly as written | `--text` | Preserves literal text; no Markdown conversion |
35
+ | Precisely control the reply payload | `--content` | You provide the exact JSON |
36
+ | Reply with media | `--image` / `--file` / `--video` / `--audio` | Shortcut uploads URLs, or cwd-relative local files automatically |
37
+
38
+ ### `--text` vs `--markdown`
39
+
40
+ - Use `--markdown` for lightweight formatted replies.
41
+ - Use `--text` for exact plain text, especially logs, code, indentation, or literal Markdown characters.
42
+ - Use `--content` when you need exact `post` JSON, a card, a title, multiple locales, or any structure that `--markdown` cannot express reliably.
43
+
44
+ ## What `--markdown` Really Does
45
+
46
+ `--markdown` accepts Markdown-like input and converts it to the Feishu `post` payload required by the reply API.
47
+
48
+ The shortcut:
49
+
50
+ 1. Forces `msg_type=post`
51
+ 2. Resolves remote Markdown images like `![x](https://...)`
52
+ 3. Normalizes the Markdown for Feishu post rendering
53
+ 4. Wraps the final content as:
54
+
55
+ ```json
56
+ {"zh_cn":{"content":[[{"tag":"md","text":"..."}]]}}
57
+ ```
58
+
59
+ This makes `--markdown` the simplest path for lightweight formatted replies.
60
+
61
+ ### Markdown Boundaries
62
+
63
+ - It does **not** promise full CommonMark / GitHub Flavored Markdown support.
64
+ - It always becomes a `post` payload with a single `zh_cn` locale.
65
+ - It does **not** let you set a `post` title.
66
+ - Headings are rewritten:
67
+ - `# Title` becomes `#### Title`
68
+ - `##` to `######` are normalized to `#####` when the content contains H1-H3
69
+ - Consecutive headings are separated with blank lines after heading normalization.
70
+ - Block spacing and line breaks may be normalized during conversion.
71
+ - Code blocks are preserved as code blocks.
72
+ - Excess blank lines are compressed.
73
+ - Already-uploaded `img_xxx` image keys are the most reliable Markdown image input.
74
+ - Local paths (e.g. `![x](./a.png)`) are **not** supported directly in `--markdown` and will not be auto-uploaded.
75
+ - Remote URLs (`https://...`) will be auto-downloaded and uploaded at runtime; if the download or upload fails, the image is removed with a warning.
76
+
77
+ If you need a title, multiple locales, cards, unsupported rich structures, or byte-for-byte post JSON control, use `--msg-type post --content ...`.
78
+
79
+ ### Image Constraint for `--markdown`
80
+
81
+ When using `--markdown` with images, prefer pre-uploading via `images.create` and referencing `![alt](img_xxx)` for predictable results. Remote URLs may work but are not guaranteed.
82
+
83
+ **Steps:**
84
+
85
+ ```bash
86
+ # 1. Upload image to get image_key
87
+ lark-cli im images create --data '{"image_type":"message"}' --file ./diagram.png
88
+ # Returns: {"image_key":"img_v3_xxxx"}
89
+
90
+ # 2. Use image_key in --markdown reply
91
+ lark-cli im +messages-reply --message-id om_xxx --markdown $'## Result\n\n![diagram](img_v3_xxxx)\n\nSee above for details.'
92
+ ```
93
+
94
+ ## Preserving Formatting
95
+
96
+ If the reply contains multiple lines, code blocks, indentation, tabs, or a lot of escaping, prefer `$'...'` for either `--markdown` or `--text`.
97
+
98
+ ### When formatting must be preserved
99
+
100
+ Use `--text` plus `$'...'`:
101
+
102
+ ```bash
103
+ lark-cli im +messages-reply --message-id om_xxx --text $'Received\nI will check this today.\nOwner: alice'
104
+ ```
105
+
106
+ ```bash
107
+ lark-cli im +messages-reply --message-id om_xxx --text $'```sql\nselect * from jobs;\n```'
108
+ ```
109
+
110
+ This keeps the reply as plain text instead of converting it to a `post`.
111
+
112
+ ## Commands
113
+
114
+ ```bash
115
+ # Reply with a formatted update
116
+ lark-cli im +messages-reply --message-id om_xxx --markdown $'## Reply\n\n- item 1\n- item 2'
117
+
118
+ # Reply with a plain one-line message
119
+ lark-cli im +messages-reply --message-id om_xxx --text "Received"
120
+
121
+ # Equivalent manual JSON
122
+ lark-cli im +messages-reply --message-id om_xxx --content '{"text":"Received"}'
123
+
124
+ # Reply as a bot
125
+ lark-cli im +messages-reply --message-id om_xxx --text "bot reply" --as bot
126
+
127
+ # Reply with preserved multi-line text
128
+ lark-cli im +messages-reply --message-id om_xxx --text $'Line 1\nLine 2\n indented line'
129
+
130
+ # Reply inside the thread (message appears in the target thread)
131
+ lark-cli im +messages-reply --message-id om_xxx --text "Let's discuss this" --reply-in-thread
132
+
133
+ # Reply with Markdown containing an image (must pre-upload via images.create)
134
+ lark-cli im images create --data '{"image_type":"message"}' --file ./screenshot.png
135
+ # Use the returned image_key
136
+ lark-cli im +messages-reply --message-id om_xxx --markdown $'## Screenshot\n\n![screenshot](img_v3_xxxx)\n\nConfirmed.'
137
+
138
+ # If you need exact post structure, send JSON directly
139
+ lark-cli im +messages-reply --message-id om_xxx --msg-type post --content '{"zh_cn":{"title":"Reply","content":[[{"tag":"text","text":"Detailed content"}]]}}'
140
+
141
+ # Reply with a local image (uploaded automatically before sending)
142
+ lark-cli im +messages-reply --message-id om_xxx --image ./photo.png
143
+
144
+ # Reply with a local file (uploaded automatically before sending)
145
+ lark-cli im +messages-reply --message-id om_xxx --file ./report.pdf
146
+
147
+ # Reply with a local video (--video-cover is required as the video cover)
148
+ lark-cli im +messages-reply --message-id om_xxx --video ./demo.mp4 --video-cover ./cover.png
149
+
150
+ # Reply with a voice message
151
+ lark-cli im +messages-reply --message-id om_xxx --audio ./voice.opus
152
+
153
+ # With an idempotency key
154
+ lark-cli im +messages-reply --message-id om_xxx --text "Received" --idempotency-key my-unique-id
155
+
156
+ # Preview the request without executing it
157
+ lark-cli im +messages-reply --message-id om_xxx --markdown $'## Test\n\nhello' --dry-run
158
+ ```
159
+
160
+ ## Media Input Rules
161
+
162
+ - Media flags accept an existing key (`img_xxx` / `file_xxx`), an `http://` or `https://` URL, or a local file path.
163
+ - Local paths must be relative to the current working directory and stay within it after resolving `..` and symlinks.
164
+ - Absolute paths such as `/tmp/photo.png` are rejected. Run the command from the file's directory and pass `./photo.png`, or copy the file into the current directory first.
165
+ - `--audio` sends a voice message and accepts only Opus audio (`.opus` or Ogg Opus `.ogg`) for local paths and URLs. For `mp3`, `wav`, or other non-Opus audio, convert to `.opus` before using `--audio`, or use `--file` to send the original audio as an attachment.
166
+
167
+ ## Parameters
168
+
169
+ | Parameter | Required | Description |
170
+ |------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
171
+ | `--message-id <id>` | Yes | ID of the message being replied to (`om_xxx`) |
172
+ | `--msg-type <type>` | No | Message type (default `text`). If you use `--text` / `--markdown` / media flags, the effective type is inferred automatically. Explicitly setting a conflicting `--msg-type` fails validation |
173
+ | `--content <json>` | One content option | Exact reply content as JSON. The JSON must match the effective `--msg-type` |
174
+ | `--text <string>` | One content option | Plain text reply. Use when exact text and formatting preservation matter |
175
+ | `--markdown <string>` | One content option | Best default for lightweight formatted replies such as headings, lists, links, summaries, and investigation notes. Internally converted to `post` JSON with Feishu-specific normalization |
176
+ | `--image <path\|url\|key>` | One content option | Cwd-relative local image path, URL, or `image_key` (`img_xxx`) |
177
+ | `--file <path\|url\|key>` | One content option | Cwd-relative local file path, URL, or `file_key` (`file_xxx`) |
178
+ | `--video <path\|url\|key>` | One content option | Cwd-relative local video path, URL, or `file_key` (`file_xxx`); **must be used together with `--video-cover`** |
179
+ | `--video-cover <path\|url\|key>` | **Required with `--video`** | Cwd-relative local cover image path, URL, or `image_key` (`img_xxx`) |
180
+ | `--audio <path\|url\|key>` | One content option | Voice-message audio key, URL, or cwd-relative local path. Local paths and URLs must be Opus (`.opus` or Ogg Opus `.ogg`) |
181
+ | `--reply-in-thread` | No | Reply inside the thread. The reply appears in the target message's thread instead of the main chat stream |
182
+ | `--idempotency-key <key>` | No | Idempotency key; the same key sends only one reply within 1 hour |
183
+ | `--as <identity>` | No | Identity type: `bot` or `user` (default `bot`) |
184
+ | `--dry-run` | No | Print the request only, do not execute it |
185
+
186
+ > **Mutual exclusivity rule:** `--text`, `--markdown`, `--content`, and `--image`/`--file`/`--video`/`--audio` cannot be used together. Media flags are also mutually exclusive with each other.
187
+ >
188
+ > **Video cover rule:** `--video` **must** be accompanied by `--video-cover`. Omitting `--video-cover` when using `--video` will fail validation. `--video-cover` cannot be used without `--video`.
189
+
190
+ ## Common Mistakes
191
+
192
+ - Choosing `--text` for headings, lists, links, summaries, or investigation notes. Use `--markdown`.
193
+ - Choosing `--markdown` when you actually need exact plain text. If exact line breaks, spacing, logs, code, or literal Markdown characters matter, use `--text`, usually with `$'...'`.
194
+ - Assuming `--markdown` supports every Markdown feature. It is converted into a Feishu `post` payload and normalized first.
195
+ - Putting local image paths inside Markdown like `![x](./a.png)`. `--markdown` does not auto-upload those paths.
196
+ - **Using local file paths inside Markdown image syntax** (e.g. `![x](./a.png)`) with `--markdown`. Local paths are not auto-uploaded and will not render as an image. Pre-upload via `images.create` to get an `image_key` instead.
197
+ - Using `--content` without making the JSON match the effective `--msg-type`.
198
+ - Explicitly setting `--msg-type` to something that conflicts with `--text`, `--markdown`, or media flags.
199
+ - Mixing `--text`, `--markdown`, or `--content` with media flags in one command.
200
+
201
+ ## Return Value
202
+
203
+ ```json
204
+ {
205
+ "message_id": "om_xxx",
206
+ "chat_id": "oc_xxx",
207
+ "create_time": "1234567890"
208
+ }
209
+ ```
210
+
211
+ ## Usage Scenarios
212
+
213
+ ### Scenario 1: Reply in the main chat stream
214
+
215
+ ```bash
216
+ lark-cli im +messages-reply --message-id om_xxx --text "OK, I will handle it"
217
+ ```
218
+
219
+ The reply appears in the main chat stream and references the target message.
220
+
221
+ ### Scenario 2: Reply inside a thread
222
+
223
+ ```bash
224
+ lark-cli im +messages-reply --message-id om_xxx --text "Let me take a look at this" --reply-in-thread
225
+ ```
226
+
227
+ The reply appears in the target message's thread and does not show up in the main chat stream.
228
+
229
+ ## @Mention Format
230
+
231
+ The `<at>` syntax differs by message type. The shortcut only normalizes mentions for `text` and `post`; `interactive` card content is passed through verbatim, so cards must use the card-native syntax below.
232
+
233
+ ### `text`
234
+
235
+ - `<at user_id="ou_xxx">name</at>` — the inner text is the mentioned user's display name and is optional (`<at user_id="ou_xxx"></at>` also works)
236
+ - @all: `<at user_id="all"></at>`
237
+
238
+ ### `post`
239
+
240
+ - Inside a `text` or `md` element, the same inline form as `text` works: `<at user_id="ou_xxx">name</at>`
241
+ - Or use a dedicated `at` element node: `{"tag":"at","user_id":"ou_xxx"}` (use `"all"` to mention everyone)
242
+
243
+ ### `interactive` (card)
244
+
245
+ Card content is **not** normalized — use the card-native `<at>` syntax inside a `lark_md` / `markdown` element:
246
+
247
+ - single user by open_id: `<at id=ou_xxx></at>`
248
+ - multiple users: `<at ids=ou_xxx1,ou_xxx2></at>`
249
+ - by email: `<at email=user@example.com></at>`
250
+
251
+ ## Notes
252
+
253
+ - `--message-id` must be a valid message ID in `om_xxx` format
254
+ - `--content` must be valid JSON
255
+ - When using `--content`, you are responsible for making the JSON structure match the effective `msg_type`
256
+ - `--reply-in-thread` adds `reply_in_thread=true` to the API request
257
+ - `--reply-in-thread` is mainly meaningful in chats that support thread replies
258
+ - `--image`/`--file`/`--video`/`--audio`/`--video-cover` support existing keys, URLs, and cwd-relative local file paths; the shortcut uploads local paths and URLs first, then sends the reply; both the upload and send steps use the same identity (UAT when `--as user`, TAT when `--as bot`)
259
+ - If the provided media value starts with `img_` or `file_`, it is treated as an existing key and used directly
260
+ - `--markdown` always sends `msg_type=post`
261
+ - If you explicitly set `--msg-type` and it conflicts with the chosen content flag, validation fails
262
+ - When using `--video`, `--video-cover` is required as the video cover
263
+ - `--dry-run` uses placeholder image keys for remote Markdown images and placeholder media keys for local uploads
264
+ - Failures return error codes and messages
265
+ - `--as user` uses a user access token (UAT) and requires the `im:message.send_as_user` and `im:message` scopes; the reply is sent as the authorized end user
266
+ - `--as bot` uses a tenant access token (TAT), and requires the `im:message:send_as_bot` scope
267
+ - When using `--markdown` with images, pre-uploading via `images.create` to obtain an `image_key` is recommended for reliability; remote URLs may be auto-resolved at runtime, but if download/upload fails the image is removed with a warning; local paths are not supported
@@ -0,0 +1,94 @@
1
+ # im +messages-resources-download
2
+
3
+ > **Prerequisite:** Read [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) first to understand authentication, global parameters, and safety rules.
4
+
5
+ Download image or file resources from a message. Supports **automatic chunked download for large files** using HTTP Range requests. Resources are identified by the combination of `message_id` + `file_key`, both of which come directly from message content returned by `im +chat-messages-list`.
6
+
7
+ > **Note:** read-only message commands render resource keys in message content, but they do not download binaries automatically. Use this command whenever you need to fetch the actual image/file bytes or save them to a specific path.
8
+
9
+ This skill maps to the shortcut: `lark-cli im +messages-resources-download` (internally calls `GET /open-apis/im/v1/messages/{message_id}/resources/{file_key}`).
10
+
11
+ ## Commands
12
+
13
+ ```bash
14
+ # Download an image (save to the current directory)
15
+ lark-cli im +messages-resources-download --message-id om_xxx --file-key img_v3_xxx --type image
16
+
17
+ # Download a file
18
+ lark-cli im +messages-resources-download --message-id om_xxx --file-key file_v3_xxx --type file
19
+
20
+ # Specify the output path
21
+ lark-cli im +messages-resources-download --message-id om_xxx --file-key img_v3_xxx --type image --output ./photo.png
22
+
23
+ # Download as a bot
24
+ lark-cli im +messages-resources-download --message-id om_xxx --file-key img_v3_xxx --type image --as bot
25
+
26
+ # Preview the request without executing it
27
+ lark-cli im +messages-resources-download --message-id om_xxx --file-key img_v3_xxx --type image --dry-run
28
+ ```
29
+
30
+ ## Parameters
31
+
32
+ | Parameter | Required | Description |
33
+ |------|------|------|
34
+ | `--message-id <id>` | Yes | Message ID (`om_xxx` format) |
35
+ | `--file-key <key>` | Yes | Resource key (`img_xxx` or `file_xxx`) |
36
+ | `--type <type>` | Yes | Resource type: `image` or `file` |
37
+ | `--output <path>` | No | Output path (relative paths only; `..` traversal is not allowed). When omitted, the server's original filename from `Content-Disposition` is used if available; otherwise defaults to `file_key`. File extension is automatically inferred from `Content-Disposition` or `Content-Type` if not provided |
38
+ | `--as <identity>` | No | Identity type: `user` (default) or `bot` |
39
+ | `--dry-run` | No | Print the request only, do not execute it |
40
+
41
+ ## Large File Download (Auto Chunking)
42
+
43
+ When downloading large files, the command automatically uses **HTTP Range requests** for reliable chunked downloading:
44
+
45
+ | Behavior | Details |
46
+ |----------|---------|
47
+ | Probe chunk | First 128 KB to detect file size and Content-Type |
48
+ | Chunk size | 8 MB per subsequent request |
49
+ | Workers | Single-threaded sequential download (ensures reliability) |
50
+ | Retries | Up to 2 retries for transient request failures, with exponential backoff |
51
+
52
+ **Benefits:**
53
+ - Reduces the impact of transient request failures during large downloads
54
+ - Preserves the server's original filename via `Content-Disposition` (supports RFC 5987 UTF-8 encoding); falls back to `Content-Type`-based extension inference
55
+ - Validates file size integrity after download completion
56
+
57
+ ## `file_key` Sources
58
+
59
+ Different resource markers in message content correspond to different `file_key` and `type` values:
60
+
61
+ | Message Type | Marker in Content | `file_key` Format | `--type` |
62
+ |---------|-------------|---------------|--------|
63
+ | Image | `img_xxx` | `img_xxx` | `image` |
64
+ | File | `file_xxx` | `file_xxx` | `file` |
65
+ | Audio | `file_xxx` | `file_xxx` | `file` |
66
+ | Video | `file_xxx` | `file_xxx` | `file` |
67
+
68
+ ## Usage Scenario
69
+
70
+ ### Scenario: Extract and download an image from a message
71
+
72
+ ```bash
73
+ # Step 1: Fetch messages and find one containing an image
74
+ lark-cli im +chat-messages-list --chat-id oc_xxx
75
+ # In the response you see: { "msg_type": "image", "content": "{\"image_key\":\"img_v3_xxx\"}" }
76
+
77
+ # Step 2: Download the image
78
+ lark-cli im +messages-resources-download --message-id om_xxx --file-key img_v3_xxx --type image
79
+ ```
80
+
81
+ ## Common Errors and Troubleshooting
82
+
83
+ | Symptom | Root Cause | Solution |
84
+ |---------|---------|---------|
85
+ | Download failed | `file_key` does not match the `message_id` | Make sure the `file_key` came from that message's content |
86
+ | Hit error code 234002 or 14005 | No permission, **not** missing API scope | no access to this chat or file was deleted — do not retry, return the error to the user |
87
+ | Permission denied | `im:message:readonly` is not authorized | Run `auth login --scope "im:message:readonly"` |
88
+ | File size mismatch | Chunked download integrity check failed | Network instability during download; retry the command |
89
+ | Content-Range error | Server returned invalid range header | Transient API issue; retry the command |
90
+
91
+ ## References
92
+
93
+ - [lark-im](../SKILL.md) - all message-related commands
94
+ - [lark-shared](../../lark-shared/SKILL.md) - authentication and global parameters
@@ -0,0 +1,234 @@
1
+ # im +messages-search
2
+
3
+ > **Prerequisite:** Read [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) first to understand authentication, global parameters, and safety rules.
4
+
5
+ Search Feishu messages across conversations. This shortcut automatically performs a multi-step workflow: search for message IDs, batch fetch message details, then enrich the results with chat context.
6
+
7
+ By default each result message also carries a `reactions` block (counts + details from `im.reactions.batch_query`) when the server has reactions for it, and `update_time` for messages that were actually edited. With `--page-all`, every page is enriched; pass `--no-reactions` to skip the extra round-trip. See [message enrichment](lark-im-message-enrichment.md) for the full contract.
8
+
9
+ > **User identity only** (`--as user`). Bot identity is not supported.
10
+
11
+ This skill maps to the shortcut: `lark-cli im +messages-search` (internally calls `POST /open-apis/im/v1/messages/search` + batched `GET /open-apis/im/v1/messages/mget`, then batch-fetches chat context).
12
+
13
+ ## Commands
14
+
15
+ ```bash
16
+ # Search by keyword
17
+ lark-cli im +messages-search --query "project progress"
18
+
19
+ # Restrict search to a specific group chat
20
+ lark-cli im +messages-search --query "weekly report" --chat-id oc_xxx
21
+
22
+ # Filter by sender (comma-separated)
23
+ lark-cli im +messages-search --query "requirement" --sender ou_xxx,ou_yyy
24
+
25
+ # Filter by attachment type
26
+ lark-cli im +messages-search --query "report" --include-attachment-type file
27
+
28
+ # Filter by chat type (group / p2p)
29
+ lark-cli im +messages-search --query "progress" --chat-type group
30
+
31
+ # Filter by sender type (user / bot)
32
+ lark-cli im +messages-search --query "reminder" --sender-type bot
33
+
34
+ # Exclude bot senders
35
+ lark-cli im +messages-search --query "reminder" --exclude-sender-type bot
36
+
37
+ # Only messages that @me
38
+ lark-cli im +messages-search --query "announcement" --is-at-me
39
+
40
+ # Only messages that @mention specific users (results also include messages that @all)
41
+ lark-cli im +messages-search --query "release" --at-chatter-ids ou_xxx,ou_yyy
42
+
43
+ # Combined filters + time range
44
+ lark-cli im +messages-search --query "meeting" --sender ou_xxx --chat-type group --start "2026-03-13T00:00:00+08:00" --end "2026-03-20T23:59:59+08:00"
45
+
46
+ # Specific time range (ISO 8601)
47
+ lark-cli im +messages-search --query "release" --start "2026-03-01T00:00:00+08:00" --end "2026-03-10T00:00:00+08:00"
48
+
49
+ # Output format options
50
+ lark-cli im +messages-search --query "test" --format pretty
51
+ lark-cli im +messages-search --query "test" --format table
52
+ lark-cli im +messages-search --query "test" --format csv
53
+
54
+ # Pagination
55
+ lark-cli im +messages-search --query "test" --page-token <PAGE_TOKEN>
56
+
57
+ # Auto-pagination across multiple pages
58
+ lark-cli im +messages-search --query "test" --page-all --format json
59
+
60
+ # Auto-pagination with an explicit page cap
61
+ lark-cli im +messages-search --query "test" --page-limit 5 --format json
62
+
63
+ # Preview the request without executing it
64
+ lark-cli im +messages-search --query "test" --dry-run
65
+ ```
66
+
67
+ ## Parameters
68
+
69
+ | Parameter | Required | Description |
70
+ |------|------|------|
71
+ | `--query <text>` | No | Search keyword (may be empty when used with other filters) |
72
+ | `--chat-id <id>` | No | Restrict to chat IDs, comma-separated (`oc_xxx,oc_yyy`) |
73
+ | `--sender <ids>` | No | Sender open_ids, comma-separated (`ou_xxx`) |
74
+ | `--include-attachment-type <type>` | No | Attachment filter: `file` / `image` / `video` / `link` |
75
+ | `--chat-type <type>` | No | Chat type: `group` / `p2p` |
76
+ | `--sender-type <type>` | No | Sender type: `user` / `bot` |
77
+ | `--exclude-sender-type <type>` | No | Exclude messages from `user` or `bot` senders |
78
+ | `--is-at-me` | No | Only return messages that mention `@me` |
79
+ | `--at-chatter-ids <ids>` | No | Filter by @mentioned user open_ids, comma-separated (`ou_xxx,ou_yyy`). Matched results also include messages that `@all` |
80
+ | `--start <time>` | No | Start time with local timezone offset required (e.g. `2026-03-24T00:00:00+08:00`) |
81
+ | `--end <time>` | No | End time with local timezone offset required (e.g. `2026-03-25T23:59:59+08:00`) |
82
+ | `--page-size <n>` | No | Page size (default 20, range 1-50) |
83
+ | `--page-token <token>` | No | Pagination token for the next page |
84
+ | `--page-all` | No | Automatically paginate through all result pages (up to 40 pages) |
85
+ | `--page-limit <n>` | No | Max pages to fetch when auto-pagination is enabled (default 20, max 40). Setting it explicitly also enables auto-pagination |
86
+ | `--format <fmt>` | No | Output format: `json` (default) / `pretty` / `table` / `ndjson` / `csv` |
87
+ | `--as <identity>` | No | Identity type (defaults to and only supports `user`) |
88
+ | `--dry-run` | No | Print the request only, do not execute it |
89
+
90
+ ## Core Constraints
91
+
92
+ ### 1. Provide at least one filter whenever possible
93
+
94
+ All parameters are optional, but you should usually provide at least one filter (`--query`, `--sender`, `--chat-id`, etc.). Otherwise the search scope may be too broad and return low-signal results.
95
+
96
+ ### 2. Two-step orchestration is automatic
97
+
98
+ The shortcut automatically performs:
99
+
100
+ 1. The **search API** returns matching `message_id` values
101
+ 2. The **mget API** fetches full message content for those message IDs in batch
102
+ 3. Chat context lookup is fetched in batch and attached to each message
103
+
104
+ The user does not need to manage the orchestration manually. When search results span multiple pages, the shortcut can also paginate automatically with `--page-all` or `--page-limit`.
105
+
106
+ ### 3. Conversation context is enriched automatically
107
+
108
+ In JSON output, each message automatically includes conversation context:
109
+
110
+ | Field | Description |
111
+ |------|------|
112
+ | `chat_type` | Conversation type: `p2p` / `group` |
113
+ | `chat_name` | Group name (for groups) or the other participant's name (for p2p chats) |
114
+ | `chat_partner` | For p2p only: the other participant's `open_id` and `name` |
115
+
116
+ In pretty output, the `chat` column shows the chat name for groups, or `"p2p"` for direct messages.
117
+
118
+ Each message in JSON output contains:
119
+
120
+ | Field | Description |
121
+ |------|------|
122
+ | `message_id` | Message ID |
123
+ | `msg_type` | Message type: `text`, `image`, `file`, `interactive`, `post`, `audio`, `video`, `system`, etc. |
124
+ | `create_time` | Creation time |
125
+ | `sender` | Sender information (includes `name` for user senders) |
126
+ | `content` | Message content |
127
+ | `chat_id` | ID of the conversation the message belongs to |
128
+ | `deleted` | Whether the message has been recalled (`true` = recalled) |
129
+ | `updated` | Whether the message has been edited after sending |
130
+ | `mentions` | Array of @mentions in the message; each item contains `{id, key, name}`. Present only when the message contains @mentions |
131
+ | `thread_id` | Thread ID (`omt_xxx`) if the message has replies in a thread. Present only when replies exist |
132
+
133
+ ### 4. Pagination behavior
134
+
135
+ - Default behavior is still **single-page**.
136
+ - `--page-token` is the manual continuation mechanism when you already have a token from a previous response.
137
+ - `--page-all` enables auto-pagination and uses a default cap of **40 pages**.
138
+ - `--page-limit <n>` enables auto-pagination with an explicit cap. If you pass `--page-limit` without `--page-all`, auto-pagination is still enabled.
139
+ - When auto-pagination stops because of the configured page cap, the response still includes the last `has_more` / `page_token` so you can continue manually.
140
+
141
+ ### 5. Search results contain follow-up clues
142
+
143
+ In JSON output, each message includes `chat_id` and `thread_id` (when present). Use them with other shortcuts for deeper inspection:
144
+
145
+ ```bash
146
+ # View the full message stream for the conversation that contains the search result
147
+ lark-cli im +chat-messages-list --chat-id <chat_id>
148
+
149
+ # View replies in the thread that contains the search result
150
+ lark-cli im +threads-messages-list --thread <thread_id>
151
+ ```
152
+
153
+ ## Resource Rendering
154
+
155
+ Search results reuse the same content formatter as other read commands. Image messages are rendered as placeholders such as `![Image](img_xxx)`; resource binaries are **not** downloaded automatically.
156
+
157
+ Use `im +messages-resources-download` if you need to fetch the underlying image or file bytes from a specific message.
158
+
159
+ ## AI Usage Guidance
160
+
161
+ ### Query boundary for activity review
162
+
163
+ Use `--query` only for real message keywords. If the user asks for activity review such as "最近一周我和哪些 Bot 有过交互" or "整理我和某人的聊天记录", and the useful constraints are sender type, chat, person, or time range, keep `--query ""` and rely on those filters. Do not put generic instruction words such as "看看", "总结", "交互内容", or "聊天记录" into `--query`; those words often over-constrain message search and hide the relevant messages.
164
+
165
+ This guidance applies only when using user identity. `im +messages-search` is user-only; if the user explicitly asks for application/bot identity, do not try `--as bot`. For bot identity with a named group and history/listing intent, resolve the group with `im +chat-search --as bot`, then list messages with `im +chat-messages-list --as bot --chat-id <chat_id>`.
166
+
167
+ ```bash
168
+ # Review recent bot interactions without forcing a keyword
169
+ lark-cli im +messages-search --query "" --sender-type bot --start "<YYYY-MM-DDT00:00:00+08:00>" --end "<YYYY-MM-DDT23:59:59+08:00>" --page-all --format json
170
+ ```
171
+
172
+ Replace the time placeholders at execution time. For example, "最近一周" means computing the start date and end date from the current day before running the command; do not copy date literals from this reference into answers for relative requests.
173
+
174
+ For activity summaries, validate evidence by message IDs and chat context. The final answer should cite or retain the `message_id`, sender, chat, and create time for each important item. If the row's source data contains concrete `om_...` message IDs or `ou_...` user IDs, treat those IDs as strong recall targets during verification; do not rely only on a high-level keyword match.
175
+
176
+ ### Resolving chat_id from a chat name
177
+
178
+ When the user refers to a chat by name and you need its `chat_id` for the `--chat-id` filter, use [`+chat-search`](lark-im-chat-search.md) first:
179
+
180
+ ```bash
181
+ # Step 1: Find the chat_id by name
182
+ lark-cli im +chat-search --query "<chat name keyword>" --format json
183
+
184
+ # Step 2: Use the chat_id to narrow down message search
185
+ lark-cli im +messages-search --query "keyword" --chat-id <chat_id>
186
+ ```
187
+
188
+ **Do not use `im chats search` or `+chat-list` — always use the `+chat-search` shortcut.**
189
+
190
+ ## Work Summary / Report Generation
191
+
192
+ When the user asks you to summarize work, generate a weekly report, or compile activity from chat messages, you should **paginate through all available results** to get a complete picture. A single page is rarely enough for thorough summarization.
193
+
194
+ ### Strategy
195
+
196
+ 1. **Start with targeted filters** — use `--chat-id`, `--sender`, `--start`, `--end` to narrow the scope as much as possible before paginating.
197
+ 2. **Prefer auto-pagination** — for report and summary tasks, use `--page-all --format json` by default. If you need a bounded run, use `--page-limit <n> --format json`.
198
+ 3. **Accumulate before summarizing** — collect all pages of messages first, then analyze and summarize. Do not summarize after the first page alone — you will miss important context.
199
+ 4. **Fall back to `--page-token` when resuming** — if auto-pagination hits the configured page cap and the response still has `has_more=true`, continue from the returned `page_token`.
200
+ 5. **Use `--format json`** — JSON output includes `has_more` and `page_token` fields needed for pagination. `pretty` and `table` formats are useful for reading but not for resuming pagination reliably.
201
+
202
+ ### Example: Weekly work summary from a project chat
203
+
204
+ ```bash
205
+ # Preferred: fetch automatically
206
+ lark-cli im +messages-search --query "" --chat-id oc_xxx --sender ou_me --start "2026-03-18T00:00:00+08:00" --end "2026-03-25T23:59:59+08:00" --page-size 50 --page-all --format json
207
+
208
+ # If you need to cap the run explicitly
209
+ lark-cli im +messages-search --query "" --chat-id oc_xxx --sender ou_me --start "2026-03-18T00:00:00+08:00" --end "2026-03-25T23:59:59+08:00" --page-size 50 --page-limit 5 --format json
210
+
211
+ # If the bounded run still returns has_more=true, continue manually
212
+ lark-cli im +messages-search --query "" --chat-id oc_xxx --sender ou_me --start "2026-03-18T00:00:00+08:00" --end "2026-03-25T23:59:59+08:00" --page-size 50 --page-token <token_from_previous_run> --format json
213
+ ```
214
+
215
+ ### Key points
216
+
217
+ - **Always paginate exhaustively** for summary tasks. A single page of 20-50 messages is usually insufficient for a meaningful work summary.
218
+ - Prefer `--page-all`; use `--page-limit` only when you need to bound runtime or output volume.
219
+ - If the user does not specify a time range, default to the current week (Monday to today) for weekly reports, or ask for clarification.
220
+ - When summarizing, group messages by topic/thread rather than by chronological order for better readability.
221
+
222
+ ## Common Errors and Troubleshooting
223
+
224
+ | Symptom | Root Cause | Solution |
225
+ |---------|---------|---------|
226
+ | Too few results | The time range is too narrow or the keyword is too specific | Expand the time range and try broader keywords |
227
+ | No results | Missing permission or no match | Confirm `search:message` is authorized and relax the filters |
228
+ | Permission denied | Search scope not authorized | Run `auth login --scope "search:message"` |
229
+
230
+ ## References
231
+
232
+ - [lark-im](../SKILL.md) - all message-related commands
233
+ - [lark-im-threads-messages-list](lark-im-threads-messages-list.md) - inspect thread replies
234
+ - [lark-shared](../../lark-shared/SKILL.md) - authentication and global parameters