@amaster.ai/pi-lark 0.1.4 → 0.1.6

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 (416) hide show
  1. package/package.json +3 -3
  2. package/skills/lark-approval/SKILL.md +99 -0
  3. package/skills/lark-approval/references/lark-approval-approvals-get.md +128 -0
  4. package/skills/lark-approval/references/lark-approval-approvals-search.md +103 -0
  5. package/skills/lark-approval/references/lark-approval-initiate.md +221 -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-approval/references/lark-approval-instances-cancel.md +78 -0
  9. package/skills/lark-approval/references/lark-approval-instances-cc.md +105 -0
  10. package/skills/lark-approval/references/lark-approval-instances-get.md +145 -0
  11. package/skills/lark-approval/references/lark-approval-instances-initiated.md +128 -0
  12. package/skills/lark-approval/references/lark-approval-tasks-add-sign.md +120 -0
  13. package/skills/lark-approval/references/lark-approval-tasks-approve.md +81 -0
  14. package/skills/lark-approval/references/lark-approval-tasks-query.md +85 -0
  15. package/skills/lark-approval/references/lark-approval-tasks-reject.md +73 -0
  16. package/skills/lark-approval/references/lark-approval-tasks-remind.md +82 -0
  17. package/skills/lark-approval/references/lark-approval-tasks-rollback.md +89 -0
  18. package/skills/lark-approval/references/lark-approval-tasks-transfer.md +91 -0
  19. package/skills/lark-apps/SKILL.md +110 -0
  20. package/skills/lark-apps/references/lark-apps-access-scope-get.md +28 -0
  21. package/skills/lark-apps/references/lark-apps-access-scope-set.md +40 -0
  22. package/skills/lark-apps/references/lark-apps-automation.md +164 -0
  23. package/skills/lark-apps/references/lark-apps-cloud-dev.md +120 -0
  24. package/skills/lark-apps/references/lark-apps-create.md +40 -0
  25. package/skills/lark-apps/references/lark-apps-db-execute.md +228 -0
  26. package/skills/lark-apps/references/lark-apps-db.md +162 -0
  27. package/skills/lark-apps/references/lark-apps-env-pull.md +37 -0
  28. package/skills/lark-apps/references/lark-apps-env.md +48 -0
  29. package/skills/lark-apps/references/lark-apps-file.md +96 -0
  30. package/skills/lark-apps/references/lark-apps-get.md +43 -0
  31. package/skills/lark-apps/references/lark-apps-git-credential.md +37 -0
  32. package/skills/lark-apps/references/lark-apps-html-publish.md +62 -0
  33. package/skills/lark-apps/references/lark-apps-init.md +36 -0
  34. package/skills/lark-apps/references/lark-apps-list.md +37 -0
  35. package/skills/lark-apps/references/lark-apps-local-dev.md +78 -0
  36. package/skills/lark-apps/references/lark-apps-observability.md +48 -0
  37. package/skills/lark-apps/references/lark-apps-openapi-key.md +79 -0
  38. package/skills/lark-apps/references/lark-apps-plugin-install.md +36 -0
  39. package/skills/lark-apps/references/lark-apps-plugin-list.md +23 -0
  40. package/skills/lark-apps/references/lark-apps-plugin-uninstall.md +25 -0
  41. package/skills/lark-apps/references/lark-apps-release-create.md +32 -0
  42. package/skills/lark-apps/references/lark-apps-release-get.md +28 -0
  43. package/skills/lark-apps/references/lark-apps-release-list.md +31 -0
  44. package/skills/lark-apps/references/lark-apps-role.md +133 -0
  45. package/skills/lark-apps/references/lark-apps-session-messages-list.md +53 -0
  46. package/skills/lark-apps/references/lark-apps-update.md +30 -0
  47. package/skills/lark-attendance/SKILL.md +57 -0
  48. package/skills/lark-base/SKILL.md +161 -0
  49. package/skills/lark-base/references/dashboard-block-data-config.md +376 -0
  50. package/skills/lark-base/references/formula-field-guide.md +737 -0
  51. package/skills/lark-base/references/lark-base-cell-value.md +158 -0
  52. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +717 -0
  53. package/skills/lark-base/references/lark-base-dashboard.md +247 -0
  54. package/skills/lark-base/references/lark-base-data-analysis-sop.md +210 -0
  55. package/skills/lark-base/references/lark-base-data-query-guide.md +61 -0
  56. package/skills/lark-base/references/lark-base-data-query.md +454 -0
  57. package/skills/lark-base/references/lark-base-field-create.md +105 -0
  58. package/skills/lark-base/references/lark-base-field-json.md +527 -0
  59. package/skills/lark-base/references/lark-base-field-update.md +173 -0
  60. package/skills/lark-base/references/lark-base-form-detail.md +71 -0
  61. package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
  62. package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
  63. package/skills/lark-base/references/lark-base-form-submit.md +170 -0
  64. package/skills/lark-base/references/lark-base-record-batch-create.md +57 -0
  65. package/skills/lark-base/references/lark-base-record-batch-update.md +52 -0
  66. package/skills/lark-base/references/lark-base-record-history-list.md +43 -0
  67. package/skills/lark-base/references/lark-base-record-upsert.md +63 -0
  68. package/skills/lark-base/references/lark-base-role-guide.md +65 -0
  69. package/skills/lark-base/references/lark-base-view-set-filter.md +191 -0
  70. package/skills/lark-base/references/lark-base-workflow-guide.md +830 -0
  71. package/skills/lark-base/references/lark-base-workflow-schema.md +1071 -0
  72. package/skills/lark-base/references/lookup-field-guide.md +512 -0
  73. package/skills/lark-base/references/role-config.md +549 -0
  74. package/skills/lark-calendar/SKILL.md +198 -0
  75. package/skills/lark-calendar/references/lark-calendar-create.md +83 -0
  76. package/skills/lark-calendar/references/lark-calendar-meeting.md +40 -0
  77. package/skills/lark-calendar/references/lark-calendar-recurring.md +90 -0
  78. package/skills/lark-calendar/references/lark-calendar-room-find.md +109 -0
  79. package/skills/lark-calendar/references/lark-calendar-rsvp.md +38 -0
  80. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +59 -0
  81. package/skills/lark-calendar/references/lark-calendar-schedule-fuzzy-time.md +88 -0
  82. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +122 -0
  83. package/skills/lark-calendar/references/lark-calendar-suggestion.md +121 -0
  84. package/skills/lark-calendar/references/lark-calendar-update.md +100 -0
  85. package/skills/lark-contact/SKILL.md +55 -0
  86. package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
  87. package/skills/lark-contact/references/lark-contact-search-user.md +123 -0
  88. package/skills/lark-doc/SKILL.md +84 -0
  89. package/skills/lark-doc/references/lark-doc-create.md +80 -0
  90. package/skills/lark-doc/references/lark-doc-fetch.md +140 -0
  91. package/skills/lark-doc/references/lark-doc-history.md +107 -0
  92. package/skills/lark-doc/references/lark-doc-md.md +76 -0
  93. package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
  94. package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
  95. package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
  96. package/skills/lark-doc/references/lark-doc-mindnote.md +128 -0
  97. package/skills/lark-doc/references/lark-doc-resource-cover.md +70 -0
  98. package/skills/lark-doc/references/lark-doc-update.md +260 -0
  99. package/skills/lark-doc/references/lark-doc-whiteboard.md +158 -0
  100. package/skills/lark-doc/references/lark-doc-word-stat.md +93 -0
  101. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +35 -0
  102. package/skills/lark-doc/references/lark-doc-xml.md +182 -0
  103. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +47 -0
  104. package/skills/lark-doc/references/style/lark-doc-style.md +68 -0
  105. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +48 -0
  106. package/skills/lark-doc/scripts/doc_word_stat.py +1243 -0
  107. package/skills/lark-drive/SKILL.md +232 -0
  108. package/skills/lark-drive/references/lark-drive-add-comment.md +193 -0
  109. package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
  110. package/skills/lark-drive/references/lark-drive-comment-location.md +205 -0
  111. package/skills/lark-drive/references/lark-drive-comments-guide.md +80 -0
  112. package/skills/lark-drive/references/lark-drive-cover.md +79 -0
  113. package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
  114. package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
  115. package/skills/lark-drive/references/lark-drive-delete.md +103 -0
  116. package/skills/lark-drive/references/lark-drive-download.md +31 -0
  117. package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
  118. package/skills/lark-drive/references/lark-drive-export.md +174 -0
  119. package/skills/lark-drive/references/lark-drive-files-list.md +183 -0
  120. package/skills/lark-drive/references/lark-drive-import.md +178 -0
  121. package/skills/lark-drive/references/lark-drive-inspect.md +52 -0
  122. package/skills/lark-drive/references/lark-drive-list-comments.md +125 -0
  123. package/skills/lark-drive/references/lark-drive-member-add.md +66 -0
  124. package/skills/lark-drive/references/lark-drive-move.md +122 -0
  125. package/skills/lark-drive/references/lark-drive-permission-guide.md +53 -0
  126. package/skills/lark-drive/references/lark-drive-preview.md +87 -0
  127. package/skills/lark-drive/references/lark-drive-pull.md +137 -0
  128. package/skills/lark-drive/references/lark-drive-push.md +189 -0
  129. package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
  130. package/skills/lark-drive/references/lark-drive-search.md +273 -0
  131. package/skills/lark-drive/references/lark-drive-secure-label.md +52 -0
  132. package/skills/lark-drive/references/lark-drive-status.md +135 -0
  133. package/skills/lark-drive/references/lark-drive-task-result.md +355 -0
  134. package/skills/lark-drive/references/lark-drive-upload.md +101 -0
  135. package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
  136. package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
  137. package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
  138. package/skills/lark-drive/references/lark-drive-version-revert.md +35 -0
  139. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-analysis.md +249 -0
  140. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-discovery.md +253 -0
  141. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-execution.md +200 -0
  142. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-planning.md +336 -0
  143. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-rollback.md +308 -0
  144. package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +232 -0
  145. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +168 -0
  146. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +424 -0
  147. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +207 -0
  148. package/skills/lark-drive/references/lark-drive-workflow.md +131 -0
  149. package/skills/lark-event/SKILL.md +155 -0
  150. package/skills/lark-event/references/lark-event-approval.md +170 -0
  151. package/skills/lark-event/references/lark-event-im.md +87 -0
  152. package/skills/lark-event/references/lark-event-minutes.md +54 -0
  153. package/skills/lark-event/references/lark-event-task.md +78 -0
  154. package/skills/lark-event/references/lark-event-vc.md +106 -0
  155. package/skills/lark-event/references/lark-event-whiteboard.md +67 -0
  156. package/skills/lark-im/SKILL.md +249 -0
  157. package/skills/lark-im/references/card/card-2.0-schema.md +107 -0
  158. package/skills/lark-im/references/card/components/button.md +63 -0
  159. package/skills/lark-im/references/card/components/chart.md +57 -0
  160. package/skills/lark-im/references/card/components/checker.md +38 -0
  161. package/skills/lark-im/references/card/components/collapsible_panel.md +46 -0
  162. package/skills/lark-im/references/card/components/column_set.md +53 -0
  163. package/skills/lark-im/references/card/components/date_picker.md +34 -0
  164. package/skills/lark-im/references/card/components/div.md +36 -0
  165. package/skills/lark-im/references/card/components/form.md +51 -0
  166. package/skills/lark-im/references/card/components/header.md +34 -0
  167. package/skills/lark-im/references/card/components/hr.md +17 -0
  168. package/skills/lark-im/references/card/components/img.md +34 -0
  169. package/skills/lark-im/references/card/components/img_combination.md +30 -0
  170. package/skills/lark-im/references/card/components/input.md +43 -0
  171. package/skills/lark-im/references/card/components/interactive_container.md +46 -0
  172. package/skills/lark-im/references/card/components/markdown.md +56 -0
  173. package/skills/lark-im/references/card/components/multi_select_person.md +40 -0
  174. package/skills/lark-im/references/card/components/multi_select_static.md +40 -0
  175. package/skills/lark-im/references/card/components/overflow.md +36 -0
  176. package/skills/lark-im/references/card/components/person.md +30 -0
  177. package/skills/lark-im/references/card/components/person_list.md +31 -0
  178. package/skills/lark-im/references/card/components/picker_datetime.md +34 -0
  179. package/skills/lark-im/references/card/components/picker_time.md +34 -0
  180. package/skills/lark-im/references/card/components/recycling_container.md +35 -0
  181. package/skills/lark-im/references/card/components/select_img.md +42 -0
  182. package/skills/lark-im/references/card/components/select_person.md +39 -0
  183. package/skills/lark-im/references/card/components/select_static.md +43 -0
  184. package/skills/lark-im/references/card/components/table.md +53 -0
  185. package/skills/lark-im/references/card/lark-im-card-create.md +180 -0
  186. package/skills/lark-im/references/card/lark-im-card-style.md +281 -0
  187. package/skills/lark-im/references/card/resource/colors.md +34 -0
  188. package/skills/lark-im/references/card/resource/icons.md +38 -0
  189. package/skills/lark-im/references/lark-im-card-action-reply.md +175 -0
  190. package/skills/lark-im/references/lark-im-chat-create.md +162 -0
  191. package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
  192. package/skills/lark-im/references/lark-im-chat-list.md +166 -0
  193. package/skills/lark-im/references/lark-im-chat-members-list.md +83 -0
  194. package/skills/lark-im/references/lark-im-chat-messages-list.md +157 -0
  195. package/skills/lark-im/references/lark-im-chat-search.md +142 -0
  196. package/skills/lark-im/references/lark-im-chat-update.md +84 -0
  197. package/skills/lark-im/references/lark-im-feed-group-list-item.md +68 -0
  198. package/skills/lark-im/references/lark-im-feed-group-list.md +65 -0
  199. package/skills/lark-im/references/lark-im-feed-group-query-item.md +44 -0
  200. package/skills/lark-im/references/lark-im-feed-groups.md +452 -0
  201. package/skills/lark-im/references/lark-im-feed-shortcut-create.md +97 -0
  202. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +103 -0
  203. package/skills/lark-im/references/lark-im-feed-shortcut-remove.md +48 -0
  204. package/skills/lark-im/references/lark-im-flag-cancel.md +67 -0
  205. package/skills/lark-im/references/lark-im-flag-create.md +67 -0
  206. package/skills/lark-im/references/lark-im-flag-list.md +100 -0
  207. package/skills/lark-im/references/lark-im-message-enrichment.md +54 -0
  208. package/skills/lark-im/references/lark-im-messages-mget.md +99 -0
  209. package/skills/lark-im/references/lark-im-messages-reply.md +277 -0
  210. package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
  211. package/skills/lark-im/references/lark-im-messages-search.md +234 -0
  212. package/skills/lark-im/references/lark-im-messages-send.md +279 -0
  213. package/skills/lark-im/references/lark-im-reactions.md +299 -0
  214. package/skills/lark-im/references/lark-im-threads-messages-list.md +115 -0
  215. package/skills/lark-mail/SKILL.md +290 -0
  216. package/skills/lark-mail/assets/templates/job-application--resume.html +33 -0
  217. package/skills/lark-mail/assets/templates/newsletter--weekly-brief.html +50 -0
  218. package/skills/lark-mail/assets/templates/research--market-report.html +256 -0
  219. package/skills/lark-mail/assets/templates/weekly--personal-report.html +43 -0
  220. package/skills/lark-mail/assets/templates/weekly--team-report.html +9 -0
  221. package/skills/lark-mail/references/lark-mail-calendar-invite.md +36 -0
  222. package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
  223. package/skills/lark-mail/references/lark-mail-draft-create.md +127 -0
  224. package/skills/lark-mail/references/lark-mail-draft-edit.md +404 -0
  225. package/skills/lark-mail/references/lark-mail-forward.md +239 -0
  226. package/skills/lark-mail/references/lark-mail-html.md +333 -0
  227. package/skills/lark-mail/references/lark-mail-lint-html.md +243 -0
  228. package/skills/lark-mail/references/lark-mail-message-modify.md +48 -0
  229. package/skills/lark-mail/references/lark-mail-message-trash.md +41 -0
  230. package/skills/lark-mail/references/lark-mail-message.md +233 -0
  231. package/skills/lark-mail/references/lark-mail-messages.md +108 -0
  232. package/skills/lark-mail/references/lark-mail-recall.md +66 -0
  233. package/skills/lark-mail/references/lark-mail-recipient-search.md +59 -0
  234. package/skills/lark-mail/references/lark-mail-reply-all.md +213 -0
  235. package/skills/lark-mail/references/lark-mail-reply.md +249 -0
  236. package/skills/lark-mail/references/lark-mail-rules.md +31 -0
  237. package/skills/lark-mail/references/lark-mail-send-as.md +44 -0
  238. package/skills/lark-mail/references/lark-mail-send-receipt.md +120 -0
  239. package/skills/lark-mail/references/lark-mail-send-status.md +46 -0
  240. package/skills/lark-mail/references/lark-mail-send.md +222 -0
  241. package/skills/lark-mail/references/lark-mail-share-to-chat.md +87 -0
  242. package/skills/lark-mail/references/lark-mail-signature.md +98 -0
  243. package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
  244. package/skills/lark-mail/references/lark-mail-template-update.md +150 -0
  245. package/skills/lark-mail/references/lark-mail-template.md +54 -0
  246. package/skills/lark-mail/references/lark-mail-thread.md +111 -0
  247. package/skills/lark-mail/references/lark-mail-triage.md +131 -0
  248. package/skills/lark-mail/references/lark-mail-watch.md +94 -0
  249. package/skills/lark-markdown/SKILL.md +70 -0
  250. package/skills/lark-markdown/references/lark-markdown-create.md +114 -0
  251. package/skills/lark-markdown/references/lark-markdown-diff.md +156 -0
  252. package/skills/lark-markdown/references/lark-markdown-fetch.md +79 -0
  253. package/skills/lark-markdown/references/lark-markdown-overwrite.md +85 -0
  254. package/skills/lark-markdown/references/lark-markdown-patch.md +160 -0
  255. package/skills/lark-minutes/SKILL.md +207 -0
  256. package/skills/lark-minutes/references/lark-minutes-detail.md +62 -0
  257. package/skills/lark-minutes/references/lark-minutes-download.md +135 -0
  258. package/skills/lark-minutes/references/lark-minutes-search.md +202 -0
  259. package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +107 -0
  260. package/skills/lark-minutes/references/lark-minutes-summary.md +120 -0
  261. package/skills/lark-minutes/references/lark-minutes-todo.md +136 -0
  262. package/skills/lark-minutes/references/lark-minutes-update.md +39 -0
  263. package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
  264. package/skills/lark-note/SKILL.md +94 -0
  265. package/skills/lark-note/references/lark-note-detail.md +26 -0
  266. package/skills/lark-note/references/lark-note-transcript.md +23 -0
  267. package/skills/lark-okr/SKILL.md +122 -0
  268. package/skills/lark-okr/references/lark-okr-alignments.md +180 -0
  269. package/skills/lark-okr/references/lark-okr-batch-create.md +106 -0
  270. package/skills/lark-okr/references/lark-okr-contentblock.md +427 -0
  271. package/skills/lark-okr/references/lark-okr-cycle-detail.md +91 -0
  272. package/skills/lark-okr/references/lark-okr-cycle-list.md +93 -0
  273. package/skills/lark-okr/references/lark-okr-entities.md +329 -0
  274. package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
  275. package/skills/lark-okr/references/lark-okr-indicator-update.md +80 -0
  276. package/skills/lark-okr/references/lark-okr-indicators.md +223 -0
  277. package/skills/lark-okr/references/lark-okr-patch.md +104 -0
  278. package/skills/lark-okr/references/lark-okr-progress-create.md +85 -0
  279. package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
  280. package/skills/lark-okr/references/lark-okr-progress-get.md +93 -0
  281. package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
  282. package/skills/lark-okr/references/lark-okr-progress-update.md +85 -0
  283. package/skills/lark-okr/references/lark-okr-reorder.md +81 -0
  284. package/skills/lark-okr/references/lark-okr-weight.md +96 -0
  285. package/skills/lark-openapi-explorer/SKILL.md +153 -0
  286. package/skills/lark-shared/SKILL.md +211 -0
  287. package/skills/lark-shared/references/lark-wiki-token-routing.md +42 -0
  288. package/skills/lark-sheets/SKILL.md +234 -0
  289. package/skills/lark-sheets/references/lark-sheets-batch-update.md +200 -0
  290. package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
  291. package/skills/lark-sheets/references/lark-sheets-chart.md +332 -0
  292. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +181 -0
  293. package/skills/lark-sheets/references/lark-sheets-filter-view.md +137 -0
  294. package/skills/lark-sheets/references/lark-sheets-filter.md +130 -0
  295. package/skills/lark-sheets/references/lark-sheets-float-image.md +159 -0
  296. package/skills/lark-sheets/references/lark-sheets-formula-translation.md +276 -0
  297. package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
  298. package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
  299. package/skills/lark-sheets/references/lark-sheets-pivot-table.md +171 -0
  300. package/skills/lark-sheets/references/lark-sheets-range-operations.md +297 -0
  301. package/skills/lark-sheets/references/lark-sheets-read-data.md +235 -0
  302. package/skills/lark-sheets/references/lark-sheets-search-replace.md +111 -0
  303. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +212 -0
  304. package/skills/lark-sheets/references/lark-sheets-sparkline.md +149 -0
  305. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +205 -0
  306. package/skills/lark-sheets/references/lark-sheets-workbook.md +420 -0
  307. package/skills/lark-sheets/references/lark-sheets-write-cells.md +575 -0
  308. package/skills/lark-sheets/scripts/sheets_df.py +32 -0
  309. package/skills/lark-skill-maker/SKILL.md +85 -0
  310. package/skills/lark-slides/SKILL.md +285 -0
  311. package/skills/lark-slides/references/asset-planning.md +135 -0
  312. package/skills/lark-slides/references/examples.md +91 -0
  313. package/skills/lark-slides/references/iconpark-index.json +41901 -0
  314. package/skills/lark-slides/references/iconpark.md +46 -0
  315. package/skills/lark-slides/references/lark-slides-create.md +156 -0
  316. package/skills/lark-slides/references/lark-slides-edit-workflows.md +144 -0
  317. package/skills/lark-slides/references/lark-slides-media-upload.md +127 -0
  318. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +89 -0
  319. package/skills/lark-slides/references/lark-slides-replace-pages.md +95 -0
  320. package/skills/lark-slides/references/lark-slides-replace-slide.md +240 -0
  321. package/skills/lark-slides/references/lark-slides-screenshot.md +97 -0
  322. package/skills/lark-slides/references/lark-slides-whiteboard.md +331 -0
  323. package/skills/lark-slides/references/lark-slides-xml-get.md +100 -0
  324. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +125 -0
  325. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
  326. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +189 -0
  327. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +99 -0
  328. package/skills/lark-slides/references/planning-layer.md +246 -0
  329. package/skills/lark-slides/references/slide-templates.md +201 -0
  330. package/skills/lark-slides/references/slides_chart_demo.xml +1 -0
  331. package/skills/lark-slides/references/slides_demo.xml +226 -0
  332. package/skills/lark-slides/references/slides_xml_schema_definition.xml +3054 -0
  333. package/skills/lark-slides/references/troubleshooting.md +45 -0
  334. package/skills/lark-slides/references/validation-checklist.md +119 -0
  335. package/skills/lark-slides/references/visual-planning.md +255 -0
  336. package/skills/lark-slides/references/xml-format-guide.md +433 -0
  337. package/skills/lark-slides/references/xml-schema-quick-ref.md +249 -0
  338. package/skills/lark-slides/scripts/iconpark_tool.py +362 -0
  339. package/skills/lark-slides/scripts/iconpark_tool_test.py +177 -0
  340. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1220 -0
  341. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +1170 -0
  342. package/skills/lark-task/SKILL.md +168 -0
  343. package/skills/lark-task/references/lark-task-assign.md +38 -0
  344. package/skills/lark-task/references/lark-task-comment.md +28 -0
  345. package/skills/lark-task/references/lark-task-complete.md +27 -0
  346. package/skills/lark-task/references/lark-task-create.md +70 -0
  347. package/skills/lark-task/references/lark-task-followers.md +35 -0
  348. package/skills/lark-task/references/lark-task-get-my-tasks.md +61 -0
  349. package/skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
  350. package/skills/lark-task/references/lark-task-reminder.md +36 -0
  351. package/skills/lark-task/references/lark-task-reopen.md +27 -0
  352. package/skills/lark-task/references/lark-task-search.md +41 -0
  353. package/skills/lark-task/references/lark-task-set-ancestor.md +32 -0
  354. package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
  355. package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
  356. package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
  357. package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
  358. package/skills/lark-task/references/lark-task-update.md +37 -0
  359. package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
  360. package/skills/lark-vc/SKILL.md +205 -0
  361. package/skills/lark-vc/references/lark-vc-detail.md +44 -0
  362. package/skills/lark-vc/references/lark-vc-recording.md +152 -0
  363. package/skills/lark-vc/references/lark-vc-search.md +163 -0
  364. package/skills/lark-vc/references/vc-domain-boundaries.md +196 -0
  365. package/skills/lark-vc-agent/SKILL.md +201 -0
  366. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +315 -0
  367. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +141 -0
  368. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +105 -0
  369. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +91 -0
  370. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-message-send.md +134 -0
  371. package/skills/lark-whiteboard/SKILL.md +47 -0
  372. package/skills/lark-whiteboard/elements/connectors.md +102 -0
  373. package/skills/lark-whiteboard/elements/content.md +40 -0
  374. package/skills/lark-whiteboard/elements/image.md +80 -0
  375. package/skills/lark-whiteboard/elements/layout.md +374 -0
  376. package/skills/lark-whiteboard/elements/schema.md +357 -0
  377. package/skills/lark-whiteboard/elements/style.md +318 -0
  378. package/skills/lark-whiteboard/elements/typography.md +73 -0
  379. package/skills/lark-whiteboard/references/lark-whiteboard-query.md +60 -0
  380. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +122 -0
  381. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +97 -0
  382. package/skills/lark-whiteboard/routes/dsl.md +107 -0
  383. package/skills/lark-whiteboard/routes/mermaid.md +27 -0
  384. package/skills/lark-whiteboard/routes/svg-edit.md +85 -0
  385. package/skills/lark-whiteboard/routes/svg.md +54 -0
  386. package/skills/lark-whiteboard/scenes/architecture.md +433 -0
  387. package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
  388. package/skills/lark-whiteboard/scenes/comparison.md +135 -0
  389. package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
  390. package/skills/lark-whiteboard/scenes/flowchart.md +185 -0
  391. package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
  392. package/skills/lark-whiteboard/scenes/funnel.md +101 -0
  393. package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
  394. package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
  395. package/skills/lark-whiteboard/scenes/milestone.md +139 -0
  396. package/skills/lark-whiteboard/scenes/organization.md +173 -0
  397. package/skills/lark-whiteboard/scenes/photo-showcase.md +126 -0
  398. package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
  399. package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
  400. package/skills/lark-whiteboard/scenes/treemap.md +216 -0
  401. package/skills/lark-wiki/SKILL.md +114 -0
  402. package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
  403. package/skills/lark-wiki/references/lark-wiki-member-add.md +67 -0
  404. package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
  405. package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
  406. package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
  407. package/skills/lark-wiki/references/lark-wiki-move.md +185 -0
  408. package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
  409. package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
  410. package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
  411. package/skills/lark-wiki/references/lark-wiki-node-get.md +57 -0
  412. package/skills/lark-wiki/references/lark-wiki-node-list.md +95 -0
  413. package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
  414. package/skills/lark-wiki/references/lark-wiki-space-list.md +68 -0
  415. package/skills/lark-workflow-meeting-summary/SKILL.md +122 -0
  416. package/skills/lark-workflow-standup-report/SKILL.md +122 -0
@@ -0,0 +1,228 @@
1
+ # apps +db-execute
2
+
3
+ 经妙搭服务端在应用数据库执行 SQL。运行时命令事实以 `lark-cli apps +db-execute --help` 为准。
4
+
5
+ > **写 SQL 前先看文末「平台 SQL 规范」**:妙搭底层是 PostgreSQL + 一层平台约束,SQL 内容不符合会被服务端直接拒或建出行为不对的表。最容易踩的三条:① 建业务表必须带 4 个审计列(`_created_at`/`_updated_at`/`_created_by`/`_updated_by`)+ 启用 RLS + 4 条 policy,一次调用里写全;② 人员字段用内置复合类型 `user_profile`(写入 `ROW('<user_id>')::user_profile`,查询解引用 `(field).user_id`);③ `CREATE/DROP DATABASE·SCHEMA·USER·ROLE`、非白名单 `CREATE EXTENSION`、平台保留表 `auth`/`users` 会被硬拒,`online` 环境禁 DDL。
6
+
7
+ ## 何时用
8
+
9
+ 用于通过妙搭服务端执行应用数据库 SQL。不要从环境变量里取连接串裸连数据库;本地调试也走这个 shortcut。写什么样的 SQL(平台约束、建表模板、`user_profile`、审计列、禁用 SQL、PG 陷阱)见文末「平台 SQL 规范」。
10
+
11
+ ## 命令骨架
12
+
13
+ - 必填:`--app-id`,以及 `--sql` / `--file` 二选一(互斥)。
14
+ - `--sql`:内联 SQL 文本;传 `-` 时从 stdin 读。绝对路径文件经 stdin 传入:`--sql - < <absolute-path>`(shell 解析路径,CLI 仅接收内容)。
15
+ - `--file`:`.sql` 文件路径,需为工作目录内的相对路径(如 `--file ./migration.sql`);绝对路径、或经 `..`/符号链接越出工作目录的路径会被拒绝。文件不在工作目录内时,改用 `--sql - < <文件路径>` 经 stdin 传入。
16
+ - `--environment` 枚举:`dev` / `online`,**不传则由服务端按应用是否开启多环境自动选择(多环境→`dev`,未开启多环境→`online`)**;要固定环境就显式传 `--environment dev|online`。**未开启多环境的应用显式传 `--environment dev` 会报错(无 dev 分支)——这类应用不传 `--environment`(走 `online`)或显式 `--environment online`**。旧名 `--env` 已**移除**:传入会报 validation 错(提示改用 `--environment`),一律用 `--environment`。
17
+ - risk 是 `high-risk-write`(SQL 可含 DML/DDL):任何执行都需 `--yes`,否则返回 `confirmation_required` / exit 10。`--dry-run` 预览不需要 `--yes`。
18
+ - **不会自动为你包事务,事务边界需自己在 SQL 里控制**:多语句默认逐条独立提交,中间某条失败时前序语句已生效、不会回滚;若需要「要么全部成功、要么全部回滚」的原子性,请在 SQL 内显式写 `BEGIN … COMMIT`(详见下「Agent 规则」)。
19
+
20
+ ## 示例
21
+
22
+ ```bash
23
+ lark-cli apps +db-execute --app-id app_xxx --environment dev --sql "select * from orders limit 5" --yes
24
+ lark-cli apps +db-execute --app-id app_xxx --environment dev --file ./migration.sql --dry-run
25
+ # 绝对路径文件 / cwd 不固定:经 stdin 传入
26
+ lark-cli apps +db-execute --app-id app_xxx --environment dev --sql - --yes < /Users/.../migrations/0001_init.sql
27
+ ```
28
+
29
+ ## 输出契约
30
+
31
+ - 成功默认 JSON 的 `data` 按 SQL 类型自适应(不透传后端原始串):
32
+ - 单 SELECT → `data` 是行数组 `[{...}]`(空 → `[]`),直接 `-q '.data[].col'` 取字段。
33
+ - 单 DML → `data = {command, rows_affected}`(如 `{"command":"INSERT","rows_affected":1}`)。
34
+ - 单 DDL → `data = {command}`(如 `{"command":"CREATE_TABLE"}`)。
35
+ - 多语句 → `data` 是元素数组:SELECT 为 `{command:"SELECT", rows:[...]}`,DML 为 `{command, rows_affected}`,DDL 为 `{command}`。
36
+ - pretty 会按 SELECT/DML/DDL 自适应渲染;多语句会逐条显示 Statement 摘要。
37
+ - 失败返回 typed `error`(`type:"api"`、`subtype:"server_error"`、`code`、`message`、`hint`):失败位置在 `message` 的「(at statement N of M)」;前序是否落地 / 是否整批回滚写在 `hint`——事务内失败「Transaction rolled back; no changes persisted.」;非事务多语句前序已落地「Earlier statements were committed and not rolled back; fix statement N and re-run the remaining statements.」;首句即失败(无前序落地)「No statements were applied; fix the SQL and re-run.」。据此决定整段重跑还是只跑剩余语句。
38
+
39
+ ## Agent 规则
40
+
41
+ - 该命令为 high-risk-write,执行一律需 `--yes`;无 `--yes` 会返回 `confirmation_required` / exit 10。
42
+ - **只读查询、以及不删除/不丢失既有数据且可撤回的语句**:已授权时可直接带 `--yes` 执行。
43
+ - **会删除或丢失既有数据、或难以撤回的语句**:先 `--dry-run` 预览(无需 `--yes`),向用户确认后再带 `--yes` 执行;不要在用户不知情时自动补 `--yes`。
44
+ - 多语句失败时,失败前的语句可能已经 commit 落地。不要整批重跑;按错误 message/hint 修失败语句,并从剩余语句继续。
45
+ - 如果需要原子性,让用户在 SQL 内显式写 `BEGIN` / `COMMIT`,不要假设 CLI 会包事务。
46
+ - 不要把数据库连接串从 env 中取出来裸连。
47
+
48
+ ---
49
+
50
+ # 平台 SQL 规范
51
+
52
+ 上面讲命令怎么调,这里讲**该写出什么样的 SQL**:妙搭底层是 PostgreSQL + 一层平台约束(RLS、审计列、`user_profile` 复合类型、禁用 SQL 白名单),不符合会被服务端直接拒或建出行为不对的表。看表 / 看结构用 [`+db-table-list`/`+db-table-get`](lark-apps-db.md),别手写系统表查询模拟。
53
+
54
+ ## 平台禁用 SQL(硬拒绝)
55
+
56
+ 以下命中会被服务端拒,`error`(`type:"api"`)的 message/hint 会说明原因——先按 hint 修再重试,不要反复重试同一句。
57
+
58
+ | 类别 | 禁止 |
59
+ |---|---|
60
+ | 数据库级 | `CREATE / DROP / ALTER DATABASE` |
61
+ | Schema 级 | `CREATE / DROP SCHEMA` |
62
+ | 用户 / 角色级 | `CREATE / DROP USER`、`CREATE / DROP / ALTER ROLE` |
63
+ | Owner 切换 | `REASSIGN OWNED` / `DROP OWNED` |
64
+
65
+ ## 建表规范(CREATE TABLE)
66
+
67
+ 新建业务表必须:4 个审计列 + 启用 RLS + 4 条默认 policy,**放在同一次 `+db-execute` 调用里**(RLS / policy / COMMENT / INDEX 一起)。裸表名,不写 `public.` 或 schema 前缀。
68
+
69
+ ```sql
70
+ CREATE TABLE IF NOT EXISTS <table> (
71
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
72
+ -- ... 业务列 ...
73
+ name varchar(100) NOT NULL,
74
+ _created_at TIMESTAMP(3) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
75
+ _created_by user_profile DEFAULT (
76
+ CASE
77
+ WHEN current_setting('app.user_id', TRUE) = '' THEN NULL
78
+ ELSE concat('(', current_setting('app.user_id', TRUE), ')')::user_profile
79
+ END
80
+ ),
81
+ _updated_at TIMESTAMP(3) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
82
+ _updated_by user_profile DEFAULT (
83
+ CASE
84
+ WHEN current_setting('app.user_id', TRUE) = '' THEN NULL
85
+ ELSE concat('(', current_setting('app.user_id', TRUE), ')')::user_profile
86
+ END
87
+ )
88
+ );
89
+
90
+ ALTER TABLE <table> ENABLE ROW LEVEL SECURITY;
91
+
92
+ CREATE POLICY service_role_bypass_policy ON <table>
93
+ TO service_role USING (true);
94
+
95
+ CREATE POLICY "修改全部数据" ON <table>
96
+ AS PERMISSIVE FOR ALL TO authenticated USING (true);
97
+
98
+ CREATE POLICY "查看全部数据" ON <table>
99
+ AS PERMISSIVE FOR SELECT TO authenticated, anon USING (true);
100
+
101
+ CREATE POLICY "修改本人数据" ON <table>
102
+ AS PERMISSIVE FOR ALL TO authenticated USING (
103
+ (current_setting('app.user_id'::text) = ANY (ARRAY[]::text[]))
104
+ AND (current_setting('app.user_id'::text) = ((_created_by).user_id)::text)
105
+ );
106
+ ```
107
+
108
+ 建表流程:先 `+db-table-list` / `+db-table-get` 确认表不存在或看现有结构 → 生成 DDL → 向用户展示影响并取得授权 → `+db-execute ... --yes` 执行。
109
+
110
+ ## 审计列
111
+
112
+ - 平台自动维护的四列固定叫 `_created_at` / `_updated_at` / `_created_by` / `_updated_by`(**下划线开头**)。查询 / 排序 / 过滤一律用这些名字,别写 `created_at`。
113
+ - `_created_at` / `_updated_at` 在 INSERT 时可省略(有默认值);需要业务归属时显式写 `_created_by` / `_updated_by`。
114
+ - UPDATE 业务字段时建议同步 `_updated_at = CURRENT_TIMESTAMP` 和 `_updated_by`。
115
+
116
+ ## `user_profile` 复合类型
117
+
118
+ 平台内置类型 `(user_id varchar, name varchar, email varchar, avatar text, status integer)`,无需创建。**业务 SQL 只允许访问 `(field).user_id`**,不要依赖 `name` / `email` / `avatar` / `status`(可能为空或过期)。
119
+
120
+ ```sql
121
+ -- 写入 / 更新:用 ROW()::user_profile,更新时替换整个字段,不改单个属性
122
+ INSERT INTO teacher (teacher_profile, class_id)
123
+ VALUES (ROW('<user_id>')::user_profile, gen_random_uuid());
124
+
125
+ UPDATE teacher SET teacher_profile = ROW('<user_id>')::user_profile
126
+ WHERE (teacher_profile).user_id = '<old_user_id>';
127
+
128
+ -- 查询 / 过滤:解引用取 user_id;raw SQL 返回给前端前必须解引用,别直接返回复合类型
129
+ SELECT (teacher_profile).user_id AS teacher_profile, class_id FROM teacher;
130
+
131
+ -- 索引 / 唯一性:表达式列用三重括号;表达式唯一性用 CREATE UNIQUE INDEX,
132
+ -- 不能用 ALTER TABLE ADD CONSTRAINT UNIQUE(不支持表达式列)
133
+ CREATE INDEX idx_teacher_user_id ON teacher (((teacher_profile).user_id));
134
+ CREATE UNIQUE INDEX uk_teacher_user_id ON teacher (((teacher_profile).user_id));
135
+ ```
136
+
137
+ ## DDL 规则
138
+
139
+ | 场景 | 做法 |
140
+ |---|---|
141
+ | 加列 | `ALTER TABLE <t> ADD COLUMN IF NOT EXISTS <col> <type>`,相关 `COMMENT ON` 同次执行 |
142
+ | 加索引 | `CREATE INDEX IF NOT EXISTS idx_<t>_<cols> ON <t>(...)` |
143
+ | JSONB 类型声明 | 必须 `COMMENT ON COLUMN <t>.<col> IS '@type { ... }'` 声明 TypeScript 类型,和 CREATE / ALTER 同次调用 |
144
+ | 加 NOT NULL 列 | 必须带 `DEFAULT` 让存量行自动填:`ADD COLUMN <col> <type> NOT NULL DEFAULT <值>` |
145
+ | 删表 / 删列 | 有业务数据默认禁止;必须用户明确授权后才执行,并说明数据丢失风险 |
146
+ | 强约束 | `UNIQUE` / `FOREIGN KEY` / `NOT NULL` 默认谨慎,不确定不加 |
147
+
148
+ **多环境库加约束前先查 online 存量**:`dev` 干净不代表 `online` 干净,约束发布到 online 会撞线上存量数据而失败。发布前一律先用 `--environment online` 查清楚,按约束类型分三种:
149
+
150
+ - **加唯一约束(`UNIQUE` / 唯一索引)**:线上不能有重复值。先查重复,有则先清理再加:
151
+
152
+ ```bash
153
+ lark-cli apps +db-execute --app-id app_xxx --environment online --sql \
154
+ "SELECT <cols>, count(*) FROM t GROUP BY <cols> HAVING count(*) > 1" --yes
155
+ ```
156
+
157
+ - **已有列改 `NOT NULL`(收紧约束)**:线上该列不能有 NULL。先查 NULL 行数,有就先回填(`UPDATE t SET <col> = <默认值> WHERE <col> IS NULL`)再加约束:
158
+
159
+ ```bash
160
+ lark-cli apps +db-execute --app-id app_xxx --environment online --sql \
161
+ "SELECT count(*) FROM t WHERE <col> IS NULL" --yes
162
+ ```
163
+
164
+ - **新加 `NOT NULL` 字段**:必须带 `DEFAULT`,且要求线上该表**无存量数据**,否则发布报错。线上已有数据时别直接加,改走三步安全变更:先 `ADD COLUMN <col> <type>`(可空)→ 回填 `UPDATE t SET <col> = <值>` → 再 `ALTER COLUMN <col> SET NOT NULL`。先查线上行数判断走哪条:
165
+
166
+ ```bash
167
+ lark-cli apps +db-execute --app-id app_xxx --environment online --sql \
168
+ "SELECT count(*) FROM t" --yes
169
+ ```
170
+
171
+ ## SELECT 规则
172
+
173
+ | 规则 | 要求 |
174
+ |---|------------------------------------------------------------------|
175
+ | 行数 | 结果集有硬上限(平台限制 1000 行),超限**报错而非静默截断**;大表必须显式 `LIMIT`、聚合或游标分页 |
176
+ | 分页 | 大表优先游标分页 `WHERE id > <last_id> ORDER BY id LIMIT n`,避免大 `OFFSET` |
177
+ | user_profile | 返回给前端前解引用:`(owner).user_id AS owner` |
178
+ | 统计 | 总数用 `count(*)`、分组用 `GROUP BY`,别把全量拉到 agent 侧再统计 |
179
+ | 慢查询 | 用 `EXPLAIN (ANALYZE, BUFFERS)`;大表 Seq Scan 考虑加索引 |
180
+
181
+ ## DML 规则
182
+
183
+ **INSERT**
184
+ - UUID 主键省略,交给 `DEFAULT gen_random_uuid()`;外键 UUID 用子查询取父表 id,不手写。
185
+ - NOT NULL 且无默认值的列必须给值;批量 INSERT 每行列数一致。
186
+ - 需要幂等用 `ON CONFLICT ... DO NOTHING / DO UPDATE`。
187
+ - 标量子查询必须保证单行,非唯一条件加 `ORDER BY ... LIMIT 1`。
188
+
189
+ **UPDATE**
190
+ - **必须有明确 `WHERE`,禁止无条件 UPDATE**。
191
+ - 用户说「修改 / 更新 / 改一下」数据时用 UPDATE,**禁止 DELETE + INSERT** 模式。
192
+ - 更新 `user_profile` / 复合类型时替换整个字段。
193
+ - 批量更新前影响范围不明确,先 `SELECT count(*)` 给用户确认。
194
+
195
+ **DELETE / TRUNCATE**(属会丢数据的高影响操作,按上面「Agent 规则」的确认流程走)
196
+ - 已有表 / 已有数据默认禁止;先 `SELECT count(*)` 展示命中行数、取得用户明确授权,再带 `--yes` 执行。
197
+ - `TRUNCATE` 影响整表,视同高风险删除。
198
+
199
+ ```sql
200
+ UPDATE task
201
+ SET status = 'done', _updated_at = CURRENT_TIMESTAMP, _updated_by = ROW('<user_id>')::user_profile
202
+ WHERE id = (SELECT id FROM task WHERE title = '梳理需求' ORDER BY _created_at DESC LIMIT 1);
203
+ ```
204
+
205
+ ## 常见 PostgreSQL 陷阱
206
+
207
+ | 陷阱 | 正确做法 |
208
+ |---|---|
209
+ | 表名带 schema 前缀 | 业务表一律裸表名 `FROM orders`,别写 `public.orders` |
210
+ | 保留字作标识符 | 避免 `user` / `order` / `desc` / `offset` / `references` 等 |
211
+ | 内联 COMMENT | 禁止 `col TEXT COMMENT 'xx'`,用独立 `COMMENT ON COLUMN` |
212
+ | 手写系统表查结构 | 常规结构查询用 `+db-table-list` / `+db-table-get`,别手写 `information_schema` / `pg_indexes` 模拟 |
213
+ | 空数组类型不明 | 写 `ARRAY[]::text[]` 或 `'{}'::text[]` |
214
+ | `ROUND` 报错 | 用 `ROUND(num::numeric, n)` 或 `ROUND(num::double precision)` |
215
+ | `DISTINCT` + 窗口函数 | 分两层查询,先 DISTINCT 再窗口函数 |
216
+ | MySQL 方言 | 不用 `SHOW TABLES` / `DESCRIBE` / 内联 `COMMENT`;用 `+db-table-*` 和 `COMMENT ON` |
217
+ | 多语句以为自动回滚 | `A; B; C` 不自动包事务,B 失败时 A 已提交;要原子性显式 `BEGIN; ... COMMIT;`(见上「命令骨架」「Agent 规则」) |
218
+
219
+ ## 数据类型与设计
220
+
221
+ | 项目 | 规则 |
222
+ |---|---|
223
+ | 主键 | 默认 `id uuid PRIMARY KEY DEFAULT gen_random_uuid()` |
224
+ | 命名 | 表名单数、全小写、snake_case、无冗余后缀 |
225
+ | 枚举 / 状态 | 用 `varchar(255)`,值用小写英文 + 下划线 |
226
+ | JSONB | 必须 `COMMENT ON COLUMN ... IS '@type { ... }'` 声明类型 |
227
+ | 附件 / 图片 | URL 用 `TEXT`,命名 `xxx_url` |
228
+ | 约束 | `UNIQUE` / `FOREIGN KEY` / `NOT NULL` 默认谨慎,新增 NOT NULL 列优先带 `DEFAULT` |
@@ -0,0 +1,162 @@
1
+ # apps db 域命令
2
+
3
+ 管理妙搭应用数据库:看表与结构、初始化与发布多环境、数据搬运、变更治理、时间点恢复、用量。逐条跑 SQL(SELECT/DML/DDL)走 [`+db-execute`](lark-apps-db-execute.md)(单独一篇)。运行时命令事实以 `lark-cli apps +<cmd> --help` 为准;认证、`--as user`、exit 码、`_notice` 等通用处理见 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 与本域 [`SKILL.md`](../SKILL.md)。
4
+
5
+ ## 何时用
6
+
7
+ 用户要看应用里有哪些表 / 某张表的结构、把单库应用拆成 dev/online 多环境、把数据导进导出表、查谁在什么时候改了表结构或表数据、开关行级审计、把开发环境的库结构发布到线上、把库恢复到过去某个时间点、或看数据库用量时。逐条执行 SQL 走 [`+db-execute`](lark-apps-db-execute.md);文件存储(上传/下载文件)走 [`lark-apps-file.md`](lark-apps-file.md)。**建表 / 改表 / 写 SQL 的平台内容规范**(审计列、RLS、`user_profile`、禁用 SQL、PG 陷阱)见 [`lark-apps-db-execute.md`](lark-apps-db-execute.md) 的「平台 SQL 规范」。
8
+
9
+ ## 命令一览
10
+
11
+ | 命令 | 做什么 | 关键参数 |
12
+ |---|---|---|
13
+ | `+db-table-list` | 列出某环境的数据表 | `--environment`、`--page-size`/`--page-token` |
14
+ | `+db-table-get` | 看单张表的结构(字段/索引/约束/DDL) | `--table`、`--environment`、`--format` |
15
+ | `+db-env-create` | 把单库应用初始化为 dev/online 多环境(高危) | `--environment`、`--sync-data`、`--yes` |
16
+ | `+db-data-export` | 把一张表的数据导出到本地文件 | `--table`、`--output`、`--limit`、`--environment` |
17
+ | `+db-data-import` | 把本地 csv/json 文件导进一张表(高危) | `--file`、`--table`、`--environment`、`--yes` |
18
+ | `+db-changelog-list` | 查表结构变更(DDL)历史 | `--table`、`--change-id`、`--since`/`--until`、`--environment` |
19
+ | `+db-audit-status` | 看哪些表开了行级审计、保留期 | `--table`、`--environment` |
20
+ | `+db-audit-enable` | 给某表开启行级变更审计 | `--table`、`--retention`、`--environment` |
21
+ | `+db-audit-disable` | 关闭某表的行级审计 | `--table`、`--environment` |
22
+ | `+db-audit-list` | 列出表的行级变更事件(增删改追溯) | `--table`(可重复)、`--since`/`--until`、`--environment` |
23
+ | `+db-env-diff` | 预览开发环境待发布到线上的结构变更 | `--app-id` |
24
+ | `+db-env-migrate` | 把开发环境的结构变更发布到线上(高危) | `--app-id`、`--yes` |
25
+ | `+db-recovery-diff` | 预览把库恢复到某时间点会带来的变更 | `--target` |
26
+ | `+db-recovery-apply` | 把库恢复到某个时间点、覆盖当前数据(高危) | `--target`、`--yes` |
27
+ | `+db-quota-get` | 查数据库存储用量 | `--environment` |
28
+
29
+ ## 约定(先读)
30
+
31
+ - **环境 `--environment dev|online`(可省略)**:看表、看结构、数据导入导出、变更追溯、审计、配额都按环境区分。省略 `--environment` 时 CLI 不带该参数、由服务端按应用形态自动选分支——多环境应用走 `dev`、未开多环境的走 `online`;要固定环境就显式传。唯一会报错的组合:对未开多环境的应用显式传 `--environment dev`(无 `dev` 分支)。写操作建议先在 `dev` 验(仅多环境应用有 `dev`)。旧名 `--env` 已**移除**:传入会报 validation 错(提示改用 `--environment`),一律用 `--environment`。`+db-env-diff`/`+db-env-migrate` 是「dev→online 发布」语义,**没有** `--environment`。
32
+ - **本地文件 / `--output` 用工作目录内相对路径**:导入 `--file ./orders.csv`、导出 `--output ./out.csv`;绝对路径、或经 `..`/符号链接越出工作目录的 `--output` 会被拒(validation / exit 2)。路径在别处先 `cd` 过去或改成相对路径。
33
+ - **高危操作必须带 `--yes`**:`+db-env-create`、`+db-data-import`、`+db-env-migrate`、`+db-recovery-apply` 缺省会被确认关卡拦下;动手前先用对应的预览命令或 `--dry-run` 看清影响。
34
+ - **时间参数按口语自然传**(`--since`/`--until`/`--target`),格式见末尾。
35
+
36
+ ## 各命令
37
+
38
+ ### 表与结构
39
+
40
+ **`+db-table-list`**:列出某环境的数据表。分页 `--page-size`(默认 20)/ `--page-token`(上一页 cursor)。每项给表名、描述、估算行数、大小、列数;要完整列定义 / 索引 / 约束用 `+db-table-get`。只知道业务对象名时,先用它定位可能的表名。
41
+
42
+ ```bash
43
+ lark-cli apps +db-table-list --app-id app_xxx
44
+ lark-cli apps +db-table-list --app-id app_xxx --environment dev --page-size 50
45
+ ```
46
+
47
+ **`+db-table-get`**:看单张表的结构。默认 JSON 给结构化的字段 / 索引 / 约束 / 估算行数 / 大小;`--format pretty` 直接输出建表 DDL 文本(给用户看建表语句或做迁移参照时用)。
48
+
49
+ ```bash
50
+ lark-cli apps +db-table-get --app-id app_xxx --table orders
51
+ lark-cli apps +db-table-get --app-id app_xxx --table orders --environment dev --format pretty
52
+ ```
53
+
54
+ ### 多环境数据库(初始化 + 发布)
55
+
56
+ **`+db-env-create`(高危)**:把存量单库应用初始化为 dev/online 两套库,不可逆,必须带 `--yes`。`--environment` 目前只支持 `dev`(默认 `dev`);`--sync-data` 把现有 online 数据复制到新环境(不传则不复制)。注意:`+create --app-type full_stack` 新建的应用通常已自带多环境,重复初始化会返回冲突错误(应用已是多环境)——按 `error.hint` 转述状态即可,别重复初始化。
57
+
58
+ ```bash
59
+ lark-cli apps +db-env-create --app-id app_xxx --environment dev --dry-run
60
+ lark-cli apps +db-env-create --app-id app_xxx --environment dev --sync-data --yes
61
+ ```
62
+
63
+ **`+db-env-diff`**:预览开发环境里待发布到线上的表结构变更,不落地。发布前先看这个。无待发布变更时明确返回「无变更」。
64
+
65
+ **`+db-env-migrate`(高危)**:把开发环境的结构变更正式发布到线上,不可逆,必须带 `--yes`,返回实际发布的变更条数。发布是异步的,命令会等到完成再返回结果。
66
+
67
+ > 预览与发布同一端点,故 `+db-env-diff` 也需 `spark:app:write` scope(不是纯只读权限)。
68
+
69
+ ```bash
70
+ lark-cli apps +db-env-diff --app-id app_xxx
71
+ lark-cli apps +db-env-migrate --app-id app_xxx --yes
72
+ ```
73
+
74
+ ### 数据导入导出
75
+
76
+ **`+db-data-export`**:把一张表导出到本地文件。导出格式**只由 `--output` 的扩展名决定**——`.csv` / `.json` / `.sql`,缺省按 `<表名>.csv` 落在当前目录。注意:全局 `--format json|pretty` 只控制**命令自身输出**(成功摘要 / 错误信封)的渲染,**不影响导出文件的格式**;`--output` 后缀必须是 `.csv/.json/.sql` 之一,否则报 validation 错误(exit 2),且不支持导出到 stdout。两道体量约束:
77
+
78
+ - `--limit`(1..5000,默认 5000)是**行数上限守卫**:表的行数超过它会被整体拒掉(不是「只导前 N 行」);
79
+ - 导出产物 >1 MB 也会被拒。
80
+
81
+ 超大表别硬导:先用 `+db-execute` 加 `WHERE` / `LIMIT` 缩小范围、分批导。
82
+
83
+ ```bash
84
+ lark-cli apps +db-data-export --app-id app_xxx --table orders --output ./orders.csv
85
+ lark-cli apps +db-data-export --app-id app_xxx --table orders --output ./orders.json --environment dev
86
+ ```
87
+
88
+ **`+db-data-import`(高危)**:把本地 csv/json 文件的数据导进表。文件需是 `.csv`/`.json`、≤1 MB,必须带 `--yes`。目标表缺省取文件名去掉**最后一个**扩展名(如 `orders.csv`→`orders`,`orders.2026.csv`→`orders.2026`);文件名带点号时建议显式传 `--table` 以免落到意外的表名。
89
+
90
+ ```bash
91
+ lark-cli apps +db-data-import --app-id app_xxx --table orders --file ./orders.csv --environment dev --yes
92
+ ```
93
+
94
+ **导入/导出限额**:体积 ≤ **1 MB**、行数 ≤ **5000**,导入导出都一样,超限会被拒。超限就分批——导入拆成 ≤1 MB / ≤5000 行的多个文件,导出用 `WHERE` / `LIMIT` 缩小范围。
95
+
96
+ ### 变更追溯与审计
97
+
98
+ **`+db-changelog-list`**:查表结构变更(DDL)历史——谁、什么时候、改了哪张表、做了什么。可按 `--table` 过滤、按 `--change-id` 精确定位某条、用 `--since`/`--until` 圈时间区间,分页 `--page-size`/`--page-token`。
99
+
100
+ ```bash
101
+ lark-cli apps +db-changelog-list --app-id app_xxx --table orders --since 7d
102
+ ```
103
+
104
+ **`+db-audit-status`**:看审计开关状态。给 `--table` 看单表,不给则列出所有已配置的表(开没开、保留期)。
105
+
106
+ **`+db-audit-enable` / `+db-audit-disable`**:开 / 关某张表的行级变更审计。`--retention` 设保留期,取值 `7d`/`30d`/`180d`/`360d`/`forever`(默认 `7d`)。不要对已经开启审计的表重复 enable——不确定就先用 `+db-audit-status` 查。
107
+
108
+ ```bash
109
+ lark-cli apps +db-audit-enable --app-id app_xxx --table orders --retention 30d
110
+ lark-cli apps +db-audit-disable --app-id app_xxx --table orders
111
+ ```
112
+
113
+ **`+db-audit-list`**:列出表的行级变更事件(INSERT/UPDATE/DELETE 的前后值与操作人)。`--table` 必填、可重复传多张表;`--since`/`--until` 圈时间。
114
+ - **多表查询**:会先帮用户把不存在、或没开审计的表过滤掉再查,被过滤的表及原因列在结果的 `skipped` 里——据此告诉用户哪些表没纳入及为什么。
115
+ - **单表查询**:不预过滤,表不存在 / 未开审计会直接报错(按 `error.hint` 转述给用户,引导先 `+db-audit-enable`)。
116
+
117
+ ```bash
118
+ lark-cli apps +db-audit-list --app-id app_xxx --table orders --since 24h
119
+ lark-cli apps +db-audit-list --app-id app_xxx --table orders --table users
120
+ ```
121
+
122
+ ### 时间点恢复(PITR)
123
+
124
+ **`+db-recovery-diff`**:预览把库恢复到 `--target` 时间点会带来哪些变更(受影响的表、行数、预计耗时),不落地。同样需 `spark:app:write` scope。
125
+
126
+ **`+db-recovery-apply`(高危)**:把库恢复到某个时间点,**会覆盖当前数据**,不可逆,必须带 `--yes`。
127
+
128
+ - 可恢复窗口最长 **7 天**,且不早于**最近一次 `+db-env-migrate`**;超出窗口的目标会被拒。
129
+ - 目标时间点与当前库一致时返回 `no_changes`(空操作),不算失败。
130
+ - 动手前务必先 `+db-recovery-diff` 给用户确认。
131
+
132
+ ```bash
133
+ lark-cli apps +db-recovery-diff --app-id app_xxx --target 2h
134
+ lark-cli apps +db-recovery-apply --app-id app_xxx --target 2026-04-15T10:00:00Z --yes
135
+ ```
136
+
137
+ ### 配额
138
+
139
+ **`+db-quota-get`**:查数据库存储用量(已用量、表数、视图数;配额接入后还会给总配额与使用率)。
140
+
141
+ ```bash
142
+ lark-cli apps +db-quota-get --app-id app_xxx --environment dev
143
+ ```
144
+
145
+ ## 时间格式(`--since` / `--until` / `--target`)
146
+
147
+ 按用户口语自然传入即可,支持:
148
+ - 相对时间 `7d` / `2h` / `30s`(从现在往前推)
149
+ - 日期 `2026-04-15`
150
+ - 日期时间 `2026-04-15T10:00:00`
151
+ - 带时区的 ISO 8601 `2026-04-15T10:00:00Z` / `2026-04-15T10:00:00+08:00`
152
+
153
+ > **时区**:不带时区的 `日期` / `日期时间` 按**运行机器的本地时区**解析(再归一化到 UTC)。CI(UTC)与本地(如 UTC+8)跑同一条命令,时间边界会差几小时;要精确锁定时区时显式写 ISO 8601 带偏移(如 `...+08:00` / `...Z`)。`--target`(PITR 恢复)尤其建议带时区,避免恢复到非预期时间点。
154
+
155
+ ## Agent 规则
156
+
157
+ - 用户说「本地 / 开发库 / 调试库」优先 `--environment dev`,线上排查用 `--environment online`;数据面写操作(导入 / 审计开关)建议先在 `dev` 验再动 `online`。**注意省略 `--environment` 时写操作会落到服务端选中的分支——单环境应用即 `online`(生产)**:不确定应用是否多环境时,写操作显式传 `--environment`;显式 `dev` 在单环境应用上会安全报错(无 dev 分支),正好当「是否多环境」的探针用。
158
+ - 看表用 `+db-table-list`,看结构用 `+db-table-get`(要建表语句加 `--format pretty`);`+db-env-create` 仅用于存量单库拆多环境,新建的 full_stack 应用一般不需要。
159
+ - 四个高危命令(`+db-env-create`、`+db-data-import`、`+db-env-migrate`、`+db-recovery-apply`)动手前先看清影响再带 `--yes`:发布 / 恢复先跑对应预览 `+db-env-diff` / `+db-recovery-diff`,导入无预览命令、可先 `--dry-run` 看请求或先在 `--environment dev` 验;不要静默追加 `--yes`,遇 confirmation_required(exit 10)按 lark-shared 协议向用户确认不可逆风险后再补 `--yes` 重试。
160
+ - 导入 / 导出的本地路径用工作目录内相对路径;超大表导出会被行数 / 体积上限拒,改用 `+db-execute` 分批。
161
+ - `+db-audit-list` 多表查询时,把结果里 `skipped` 的表(不存在 / 未开审计)连同原因一并向用户说明,不要让用户以为这些表「没有变更」。
162
+ - 恢复是覆盖式且不可逆:`+db-recovery-apply` 前必须先 `+db-recovery-diff`,并明确告知用户会覆盖当前数据。
@@ -0,0 +1,37 @@
1
+ # apps +env-pull
2
+
3
+ > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)(认证 / 全局参数 / 安全)。
4
+
5
+ 把妙搭应用 dev 启动期环境变量拉取到本地项目根的 `.env.local`。身份固定 `--as user`;scope `spark:app:read`。`--app-id` 必填,目标项目根默认当前工作目录(`--project-path` 可指定)。
6
+
7
+ 这个命令是 dev-only 的本地恢复工具:内部固定 `POST env_vars`,body 为 `env=dev`。它没有 `--env` flag,也不管理线上环境变量。
8
+
9
+ ## 何时别用(核心反模式)
10
+
11
+ **通常不需要手动跑**——脚手架的 `npm run dev` 在起本地开发时会自动后台拉取(非阻塞)。手动再跑会重复做同样的事,并用服务端返回值覆盖 `.env.local` 里的同名 key;本地无关行和注释会保留。
12
+
13
+ 只在这些兜底场景用:
14
+
15
+ - 不通过 `npm run dev` 启动(直接跑 `node` / IDE debug)。
16
+ - `.env.local` 被改坏 / 删除,想重新同步。
17
+
18
+ ## 行为
19
+
20
+ - **合并、不清空**:写入 `.env.local` 时保留你手写的内容与注释——命中的 key 替换值,新 key 追加,不整体覆盖。
21
+ - **安全护栏**:返回的 envelope **不会回显任何 env key / value**(防止 token / 数据库凭据泄漏到日志或 CI 输出)。要看实际值请直接读 `.env.local`。
22
+
23
+ ## 示例
24
+
25
+ ```bash
26
+ lark-cli apps +env-pull --app-id <app_id>
27
+ ```
28
+
29
+ ## 失败处理
30
+
31
+ `missing_scope`(没拿到 `spark:app:read`)时,按 lark-shared 引导 `lark-cli auth login --domain apps`。其余失败优先转述 `error.hint` / `error.message`。
32
+
33
+ ## 参考
34
+
35
+ - [lark-apps](../SKILL.md) — 妙搭应用全部命令 + 心智模型
36
+ - [lark-apps-local-dev](lark-apps-local-dev.md) — 本地全栈开发端到端流程
37
+ - [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
@@ -0,0 +1,48 @@
1
+ # apps env
2
+
3
+ > **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)(认证 / 全局参数 / 安全)。
4
+
5
+ 管理妙搭应用环境变量。查看用 `+env-list`,设置用 `+env-set`,删除用 `+env-delete`。没有单变量 get 命令;要确认某个 key 是否存在,使用 list 后用 `--jq` 过滤。
6
+
7
+ 环境 flag 使用 `--environment`;不要使用旧的 `--env`,也不要使用短选项。
8
+
9
+ ## 查看
10
+
11
+ `+env-list` 默认查 dev,且默认不返回 value。只有显式传 `--include-values` 后,响应中才可能出现变量值;不要在公开日志里展示带值输出。
12
+
13
+ 接口契约:list 使用 `POST env_vars`,body 固定包含 `env` 和 CLI 场景 `scene=2`;set 使用 `POST create_or_update_env_var`;delete 使用 `POST delete_env_vars`。`--include-values` 只控制 CLI 输出是否展示 value,不作为服务端查询参数发送。
14
+
15
+ ```bash
16
+ lark-cli apps +env-list --app-id <app_id>
17
+ lark-cli apps +env-list --app-id <app_id> --environment online
18
+ lark-cli apps +env-list --app-id <app_id> --include-values --jq '.data.items[] | select(.key == "FOO")'
19
+ ```
20
+
21
+ ## 设置
22
+
23
+ dev 环境设置不需要 `--yes`。设置 online 环境需要人类确认并显式传 `--yes`;如果用户在同一轮已经明确说“确认/直接执行”,视为已确认,直接带 `--yes`,不要再次追问。`--dry-run` 可用于预览请求且不需要 `--yes`。变量值支持直接传 `<value>`,也支持 `@file` 或 stdin 输入。
24
+
25
+ 回复中只说明 app/env/key 和执行结果;不要回显真实 value。需要举例时使用 `<value>`、`@file` 或 stdin。
26
+
27
+ ```bash
28
+ lark-cli apps +env-set --app-id <app_id> --key FOO --value <value>
29
+ lark-cli apps +env-set --app-id <app_id> --key FOO --value @./secret.txt
30
+ lark-cli apps +env-set --app-id <app_id> --environment online --key FOO --value <value> --dry-run
31
+ lark-cli apps +env-set --app-id <app_id> --environment online --key FOO --value <value> --yes
32
+ ```
33
+
34
+ ## 删除
35
+
36
+ `+env-delete` 是 high-risk-write。尊重 exit 10 confirmation protocol:先让用户确认 app/env/key 和删除后果,再传 `--yes`。不要自动补 `--yes`。如果只是认证失败后让用户重登,重登完成不等于删除确认;继续删除前仍需确认。
37
+
38
+ ```bash
39
+ lark-cli apps +env-delete --app-id <app_id> --key FOO --dry-run
40
+ lark-cli apps +env-delete --app-id <app_id> --key FOO --yes
41
+ lark-cli apps +env-delete --app-id <app_id> --environment online --key FOO --yes
42
+ ```
43
+
44
+ ## 反模式
45
+
46
+ - 不要把 `+env-pull` 当成环境变量管理命令;它只是刷新本地 `.env.local` 的兜底工具。
47
+ - 不要为了看一个变量臆造名为 env-get 的 apps shortcut;用 `+env-list --include-values` 加 `--jq`。
48
+ - 不要把真实 secret 写进示例或对话输出;需要示例时使用 `<value>`、`@file` 或 stdin。
@@ -0,0 +1,96 @@
1
+ # apps file 域命令(应用存储)
2
+
3
+ 管理妙搭应用的文件存储:上传 / 下载本地文件、列出与查看已存文件、生成临时分享链接、批量删除、查看用量。运行时命令事实以 `lark-cli apps +<cmd> --help` 为准;认证、`--as user`、exit 码、`_notice` 等通用处理见 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 与本域 [`SKILL.md`](../SKILL.md)。
4
+
5
+ ## 何时用
6
+
7
+ 用户要在某个妙搭应用里上传 / 下载 / 列出 / 删除文件、拿文件的临时分享链接、或看存储用量时。普通飞书云盘走 [`lark-drive`](../../lark-drive/SKILL.md);数据库里的表数据走 `+db-*`。
8
+
9
+ ## 命令一览
10
+
11
+ | 命令 | 做什么 | 关键参数 |
12
+ |---|---|---|
13
+ | `+file-list` | 列出文件,可按名/路径/类型/大小/上传时间过滤 | `--app-id`、过滤器、`--page-size`/`--page-token` |
14
+ | `+file-get` | 查单个文件的元数据 | `--app-id`、`--path` |
15
+ | `+file-sign` | 生成有时效的下载链接(用于分享 / 直接下载) | `--app-id`、`--path`、`--expires-in` |
16
+ | `+file-download` | 把远端文件保存到本地 | `--app-id`、`--path`、`--output` |
17
+ | `+file-upload` | 上传本地文件到应用存储 | `--app-id`、`--file` |
18
+ | `+file-delete` | 按路径批量删除文件 | `--app-id`、`--path`(可重复)、`--yes` |
19
+ | `+file-quota-get` | 查应用的文件存储用量 | `--app-id` |
20
+
21
+ ## 寻址与约定(先读)
22
+
23
+ - **远端文件统一用 `--path` 精确寻址**(远端路径,带前导 `/`)。只知道文件名时,先用 `+file-list --name <名>` 定位拿到 `path`,再做后续操作。
24
+ - **本地文件 / 输出路径用工作目录内的相对路径**(如 `--file ./report.pdf`、`--output ./out.png`);路径在别处时先 `cd` 过去或改成相对路径。
25
+ - 上传只接收本地 `--file`:文件名沿用本地文件名,远端路径由平台分配、全局唯一(无需也无法手填)。
26
+ - file 域不区分环境,没有 `--env`。
27
+
28
+ ## 各命令
29
+
30
+ ### +file-list
31
+ 列出应用文件,支持精确过滤:`--name`(文件名)、`--path`(远端路径)、`--type`(MIME 类型)、`--size-gt`/`--size-lt`(字节)、`--uploaded-since`/`--uploaded-until`(上传时间区间,时间格式见末尾)。分页 `--page-size`(默认 20)/ `--page-token`。列表每项给名称、路径、大小、类型、上传时间(pretty 表格即这 5 列);上传者、下载地址(如有)仅在 JSON 输出里,单文件详情用 `+file-get`。
32
+
33
+ ```bash
34
+ lark-cli apps +file-list --app-id app_xxx
35
+ lark-cli apps +file-list --app-id app_xxx --type image/png --uploaded-since 7d
36
+ ```
37
+
38
+ ### +file-get
39
+ 按 `--path` 查单个文件的元数据。路径不存在时返回明确的「文件不存在」错误。
40
+
41
+ ```bash
42
+ lark-cli apps +file-get --app-id app_xxx --path /1858537546760216.png
43
+ ```
44
+
45
+ ### +file-sign
46
+ 为指定文件生成一个**有时效的下载链接**——适合发给用户分享、或直接下载。`--expires-in` 设有效期秒数(默认 1 天,最长 30 天)。`pretty` 模式只输出链接本身,便于复制 / 管道;要把到期时间一并告诉用户时用默认 JSON 输出(含到期时间)。
47
+
48
+ ```bash
49
+ lark-cli apps +file-sign --app-id app_xxx --path /1858537546760216.png --expires-in 3600
50
+ ```
51
+
52
+ ### +file-download
53
+ 把远端文件保存到本地。`--output` 指定保存路径,缺省时按远端文件名保存到当前目录。
54
+
55
+ ```bash
56
+ lark-cli apps +file-download --app-id app_xxx --path /1858537546760216.png --output ./logo.png
57
+ ```
58
+
59
+ ### +file-upload
60
+ 上传一个本地文件。文件名沿用本地文件名(特殊字符做 URL 编码透传;以 `.` 开头的隐藏文件名会加 `_` 前缀,避免下载回本地时覆盖隐藏文件),远端路径由平台分配。单文件上限 100 MB。
61
+
62
+ ```bash
63
+ lark-cli apps +file-upload --app-id app_xxx --file ./report.pdf
64
+ ```
65
+
66
+ ### +file-delete(高危)
67
+ 按路径批量删除,`--path` 可重复传多个。删除是高危操作,必须带 `--yes`;缺省会被确认关卡拦下。**逐项返回结果**:部分文件删除失败(如某个路径不存在)不影响其余文件,整体仍算成功,失败项在结果里单独标出原因。
68
+
69
+ ```bash
70
+ lark-cli apps +file-delete --app-id app_xxx --path /1858537546760216.png --yes
71
+ lark-cli apps +file-delete --app-id app_xxx --path /a.png --path /b.png --yes
72
+ ```
73
+
74
+ ### +file-quota-get
75
+ 查应用的文件存储用量(已用量、文件数;配额接入后还会给总配额与使用率)。
76
+
77
+ ```bash
78
+ lark-cli apps +file-quota-get --app-id app_xxx
79
+ ```
80
+
81
+ ## 时间格式(`--uploaded-since` / `--uploaded-until`)
82
+
83
+ 按用户口语自然传入即可,支持:
84
+ - 相对时间 `7d` / `2h` / `30s`(从现在往前推)
85
+ - 日期 `2026-04-15`
86
+ - 日期时间 `2026-04-15T10:00:00`
87
+ - 带时区的 ISO 8601 `2026-04-15T10:00:00Z` / `2026-04-15T10:00:00+08:00`
88
+
89
+ > **时区**:不带时区的 `日期` / `日期时间` 按**运行机器的本地时区**解析(再归一化到 UTC 发给服务端)。CI(UTC)与本地(如 UTC+8)跑同一条命令,过滤边界会差几小时;要精确到某时区时显式写 ISO 8601 带偏移(如 `...+08:00` / `...Z`)。
90
+
91
+ ## Agent 规则
92
+
93
+ - 寻址一律用 `--path`;用户只给文件名时先 `+file-list --name <名>` 定位,多个同名再让用户确认。
94
+ - 上传 / 下载的本地路径用工作目录内相对路径;不在当前目录就 `cd` 过去或改相对路径。
95
+ - 用户要「分享链接 / 临时下载地址」时用 `+file-sign`,把返回的链接转述给用户。
96
+ - 删除前判断意图:已明确要删且授权时可直接带 `--yes`;不确定删哪些时先 `+file-list` 给用户确认。批量删除部分失败不报错,按逐项结果向用户说明哪些成功、哪些没删掉及原因。
@@ -0,0 +1,43 @@
1
+ # apps +get
2
+
3
+ 按 app_id 查询单个应用详情。运行时命令事实以 `lark-cli apps +get --help` 为准。
4
+
5
+ ## 何时用
6
+
7
+ 需要查看一个应用的类型、名称、描述、发布状态等详情时使用。如果只是按应用名模糊搜索定位 app_id,用 `+list --keyword`。
8
+
9
+ ## 命令骨架
10
+
11
+ - 必填:`--app-id`。
12
+ - 返回应用的完整信息:`app_id`、`app_type`、`name`、`description`、`icon_url`、`created_at`、`updated_at`、`is_published`。
13
+
14
+ ## 示例
15
+
16
+ ```bash
17
+ lark-cli apps +get --app-id app_xxx
18
+ lark-cli apps +get --app-id app_xxx --dry-run
19
+ lark-cli apps +get --app-id app_xxx -q '.data.app.app_type'
20
+ ```
21
+
22
+ ## 输出契约
23
+
24
+ - 成功读取 `data.app` 对象,包含以下字段:
25
+
26
+ | 字段 | 类型 | 说明 |
27
+ |------|------|------|
28
+ | `app_id` | string | 应用唯一标识 |
29
+ | `app_type` | string | 应用类型(如 HTML、FULL_STACK、MODERN_HTML) |
30
+ | `name` | string | 应用显示名称 |
31
+ | `description` | string | 应用功能说明 |
32
+ | `icon_url` | string | 应用图标 URL |
33
+ | `created_at` | string | 创建时间(ISO 8601 UTC) |
34
+ | `updated_at` | string | 最后更新时间(ISO 8601 UTC) |
35
+ | `is_published` | boolean | 是否已发布 |
36
+
37
+ - pretty 输出展示核心字段:`app_id`、`app_type`、`name`、`is_published`、`updated_at`。
38
+ - `is_published=true` 只代表应用历史上有发布版本,不代表最新代码已部署。
39
+
40
+ ## Agent 规则
41
+
42
+ - 用户已有 `app_id` 想查看详情时用 `+get`;只有应用名时用 `+list --keyword`。
43
+ - 不要把 `cli_` 开头的飞书应用 ID 传给 `+get`,只接受 `app_` 开头的应用 ID。