--- name: feishu-weekly-report description: "Generate weekly reports from Feishu work traces. Collect Feishu messages, docs, meetings, and tasks, then organize the results into the user's own report format or custom fields. Use when the user wants to summarize work done in Feishu, draft a weekly report, or map Feishu activity into a structured reporting template." --- # Feishu Weekly Report Use this skill to turn Feishu work traces into structured weekly report content. Typical requests: - "Summarize what I did in Feishu last week" - "Draft a weekly report from my Feishu activity" - "Collect Feishu messages, docs, meetings, and tasks, then organize them" - "Output the result using my report fields" - "Use my own weekly report template" Read these related skills first when needed: - `lark-shared` - `lark-im` - `lark-doc` - `lark-calendar` - `lark-vc` - `lark-task` - Read `lark-drive` only when file metadata is needed ## Time Range - Default range: this week, Monday to Friday - If today is before Friday, use Monday to today - If the user explicitly says "last week", use last Monday to last Friday - Always convert relative dates into explicit dates before querying ## Report Format Input This is a generic template skill. Do not bind it to one fixed weekly report form. Priority order: 1. The user explicitly provides report fields, a template, or form requirements 2. The user pastes required fields or form content 3. The user only says "generate a weekly report", in which case output a generic report draft If the user provides fields or a template: - Follow the user-provided field order exactly - Output only the requested fields - Do not invent extra sections If the user does not provide a format: - Use this generic field set: - `Summary` - `Key Work` - `Outputs` - `Risks / Blockers` - `Next Steps` If the user provides a Feishu form link but does not paste the fields: - Try to read the form structure first - Extract required fields and field names - Then output using those form fields ## Data Source Priority Collect data in this order. Use parallel calls when possible: 1. Historical meetings 2. Tasks 3. Messages 4. Document / file metadata ### 1. Historical Meetings - Use `lark-cli vc +search` first for historical meetings - Query by time range + `participant-ids=` - If no meeting results are found, fall back to `lark-cli calendar +agenda` Goal: - Identify meetings the user attended - Extract meeting topics - Follow up with notes or docs only when necessary ### 2. Tasks - Prefer `lark-cli task +get-related-tasks` - If that returns nothing, fall back to `lark-cli task tasks list --as user` - Focus on: - `summary` - `status` - `updated_at` - `completed_at` - `url` Goal: - Identify tasks the user pushed forward, completed, or followed up on ### 3. Messages Two-layer priority: 1. If `search:message` scope is available: - Use `lark-cli im +messages-search` - Filter with `sender= + time range` 2. If that scope is missing: - Use `lark-cli im chats list --as user --params '{"page_size":100,"sort_type":"ByActiveTimeDesc","user_id_type":"open_id"}'` - Take the most active chats - Run `lark-cli im +chat-messages-list` on high-signal chats - Extract messages sent by the user or threads strongly related to work themes Focus on: - Summaries, conclusions, links, and docs sent by the user - Clearly work-related discussion threads - High-signal terms such as product, release, feedback, bug, user, competitor, market, campaign, AI, demo ### 4. Document / File Metadata Two-layer priority: 1. If `search:docs:read` is available: - Use `lark-cli docs +search` - Prefer filters such as `creator_ids`, `open_time`, and `create_time` 2. If that scope is missing: - Extract doc / file / wiki links from messages - Use `lark-cli drive metas batch_query --as user --data ...` - Collect: - `title` - `url` - `latest_modify_time` - `latest_modify_user` Read document content only when needed: - `lark-cli docs +fetch --doc ` Only read a small number of highly relevant documents. Do not expand every document. ## Fallback Rules Do not stop when permissions are missing. Fall back instead: - Missing `search:message`: use `chats.list + chat-messages-list` - Missing `search:docs:read`: use doc links from messages + `drive metas batch_query` - Missing `space:document:retrieve`: do not list cloud drive contents; only use links already found in messages - If one data source is empty, continue with the others ## Summarization Method Extract facts first, then produce conclusions. Facts include: - Important messages sent by the user - Documents / files produced - Meetings attended - Tasks followed up or completed Then group them into themes. Common themes include: - User research / validation - Market / competitor research - Product issue investigation - Release / coordination / sync - Analysis / decision support ## Output Format Default output has 4 parts: 1. `Themes` - 3 to 5 grouped work themes 2. `Evidence` - Messages, docs, files, meetings, or tasks under each theme - For docs or files, show the title first, then the raw URL - Do not write `[link]` - Do not wrap URLs in Markdown hyperlink syntax 3. `Report Draft` - Organize content using the user's requested fields - If the user did not provide fields, use: - Summary - Key Work - Outputs - Risks / Blockers - Next Steps 4. `Uncertainties` - Clearly mark which judgments are inferred - State what still needs user confirmation If the user is filling in a Feishu weekly report form, switch to `form-ready mode`: - Output required fields first - If the user asks for a full version, then include optional fields - Do not add extra explanation or analysis paragraphs Form-ready mode rules: - By default, output only required fields - Keep each field as short as possible, ideally one sentence - Make the text ready to paste into a form - For week labels, prefer the format `Month + week-of-month`, such as `April, Week 3`; if the user requires another format, follow the user's template - Calculate week-of-month using the actual report coverage dates - If there is a field like `core outputs` or `results`, prefer `deliverable + result` - If there is a field like `AI usage` or `efficiency`, prefer `tool used + efficiency or impact gained` - Keep document citations in raw URL form after the title - Do not add intro, summary, explanation, or notes unless requested ## Weekly Report Writing Rules - Do not copy raw chat text directly - Prefer results, decisions, and progress over chronological narration - Merge similar work items instead of listing message-by-message activity - If evidence is weak, mark it as an inference - If there are clear document outputs, convert document titles into work outcomes - When adding document references, use: `《Document Name》:https://...` - If there are clear conclusions, write them as insights rather than "I read X" - Keep field content to one sentence when possible, unless the user asks for expansion - If the user provides field definitions, preserve the original field names ## Prohibited Behavior - Do not fabricate meetings, tasks, or documents - Do not attribute other people's work to the user without clear evidence - Do not conclude "no work was done" just because one source is empty - Do not read every chat or every document by default; start with high-signal sources ## Quick Execution Template When the user says "summarize my Feishu work this week" or "draft my weekly report", follow this sequence: 1. Get the current user's `open_id` 2. Compute the time range 3. Query `vc +search` 4. Query `task +get-related-tasks` 5. Query messages: - Use `search:message` if available - Otherwise inspect active chats and fetch messages chat by chat 6. Extract doc / file links from messages 7. Use `drive metas batch_query` to enrich metadata 8. Read 1 to 3 key documents with `docs +fetch` if necessary 9. If the user provided a report format, output strictly in that format 10. Otherwise output `Themes + Evidence + Report Draft + Uncertainties`