with one click
lark-authorize
// Friday 飞书授权引导:检查连接状态,按需配置应用凭证、登录授权并验证。当用户需要初始化飞书连接、修复未登录状态、配置 lark-cli、执行 /login 或确认飞书连接可用时使用。
// Friday 飞书授权引导:检查连接状态,按需配置应用凭证、登录授权并验证。当用户需要初始化飞书连接、修复未登录状态、配置 lark-cli、执行 /login 或确认飞书连接可用时使用。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | lark-authorize |
| version | 1.0.0 |
| description | Friday 飞书授权引导:检查连接状态,按需配置应用凭证、登录授权并验证。当用户需要初始化飞书连接、修复未登录状态、配置 lark-cli、执行 /login 或确认飞书连接可用时使用。 |
| metadata | {"requires":{"bins":["lark-cli"]}} |
前置条件: 先阅读
../lark-shared/SKILL.md。
本 Skill 用于引导用户完成 lark-cli 与飞书的连接。不要直接假设需要重新配置或重新登录;必须先检查当前状态,再根据返回结果决定下一步。
showOutputInTui: false,由 Agent 读取返回内容后总结。showOutputInTui: true。showOutputInTui: true 时必须选择合适的输出格式:--format pretty 适合说明性结果,--format table 适合列表,--format json 仅在用户需要原始 JSON 时使用。先执行:
lark-cli auth status
调用 run_lark_cli 时设置 showOutputInTui: false。
根据输出判断:
config init:进入 Step 2。@larksuite/cli 和 lark skills,不要继续执行后续步骤。仅当 Step 1 表明应用凭证未配置或配置无效时执行。
在后台运行此命令。命令会输出一个授权链接;提取该链接并发送给用户。用户在浏览器中完成配置后,命令会自动退出。
lark-cli config init --new
调用 run_lark_cli 时设置 showOutputInTui: true。
执行要求:
当 Step 1 表明未登录、授权缺失或 Step 2 刚完成配置后执行。
用户入口统一是 /login。本步骤是 Friday 在 /login 流程内部执行的授权动作;不要建议用户手动运行底层 lark-cli 登录命令。
在后台运行授权命令。命令会输出一个授权链接;提取该链接并发送给用户。用户在浏览器中完成登录授权后,命令会自动退出。
调用 run_lark_cli,参数为 ["auth", "login", "--recommend"],并设置 showOutputInTui: true。
执行要求:
最后执行:
lark-cli auth status
调用 run_lark_cli 时设置 showOutputInTui: false。
根据输出给出简短结论:
/login 完成授权,不要建议用户手动执行底层授权命令。仅当 Step 4 验证连接可用后执行。目标是在当前项目的 .gitx/memory.json 中形成或更新 project_context_index,供后续 commit message、排障、review 协作、需求状态和开发记录场景复用。
输入 context 可能包含 projectHints:
repositoryNamecwdNamegitRootbranchremoteUrlwebUrl根据 projectHints 先定位项目对应知识库,不要求用户手动指定文档。优先使用 repositoryName,其次使用 cwdName。建议用少量关键词只做知识库定位:
<项目名><项目名> 知识库<项目名> 项目<项目名> 文档开始预热前先调用 read_project_context_index 读取本地索引摘要和 fingerprint。随后只用少量飞书只读命令定位并遍历线上知识库目录,生成线上目录摘要,再调用 compare_project_context_index 比对本地与线上目录 fingerprint:
fingerprint 一致,不要立刻重复读取文档 outline。先对本地索引中的 documents 和 nonDocResources 调用 drive metas batch_query 批量读取元数据,基于 doc_type、doc_token、title、latest_modify_time、latest_modify_user 形成 metadataFingerprint。fingerprint 和 metadataFingerprint 都一致,复用本地 project_context_index,不要调用 docs +fetch,并在最终回答中说明“本地索引已是最新”。fingerprint 一致但 metadataFingerprint 不一致,只对 latest_modify_time 或元数据变化的 docx/doc 文档重新执行 docs +fetch --scope outline;未变化文档复用本地 outline。fingerprint 不一致,重新更新目录索引;再通过 drive metas batch_query 找出新增或变化节点,只对必要 docx/doc 文档读取 outline,最后调用 save_project_context_index 保存。title、path、obj_type、obj_token、node_token、space_id,不要为了算 fingerprint 读取全文。drive metas batch_query 一次最多 200 个 request_docs;文档很多时按批次查询。wiki 节点必须使用 node.obj_token 作为 doc_token,使用 node.obj_type 作为 doc_type,不要把 wiki token 当成 doc token。只允许执行以下只读命令,内部判断统一使用 showOutputInTui: false:
lark-cli docs +search --query "<关键词>" --format json
lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}' --format json
lark-cli wiki nodes list --params '{"space_id":"<space_id>","parent_node_token":"<node_token>"}' --format json
lark-cli drive metas batch_query --data '{"request_docs":[{"doc_token":"<obj_token>","doc_type":"<obj_type>"}],"with_url":true}' --format json
lark-cli docs +fetch --api-version v2 --doc "<文档URL或token>" --scope outline --max-depth 3 --format json
lark-cli docs +fetch --api-version v2 --doc "<文档URL或token>" --scope section --start-block-id "<标题block id>" --detail simple --format json
lark-cli docs +fetch --api-version v2 --doc "<文档URL或token>" --scope keyword --keyword "<关键词>" --detail simple --format json
权限补齐规则:
docs +search 返回未登录、token 失效、Permission denied、缺少 scope 或明确缺少 search:docs:read,不要立刻保存 missing 或空 project_context_index。load_skill 加载 lark-shared,按其规则在当前 TUI 内部发起最小 scope 授权:调用 run_lark_cli,参数使用 ["auth", "login", "--scope", "search:docs:read"],showOutputInTui: true,等待用户完成授权。docs +search 一次;只有这次重试仍然失败,才说明缺少权限并保存 missing 状态。wiki、drive metas batch_query 或 docs +fetch 返回缺少其它 user scope,也按 lark-cli 输出里的 scope 加载 lark-shared,用 ["auth", "login", "--scope", "<缺失scope>"] 补授权,并重试原命令一次。读取策略:
docs +search 只用于定位项目对应知识库或项目文档入口;不要把它当成最终资料集合。wiki spaces get_node 解析节点;不要把 wiki token 直接当成 doc token。wiki spaces get_node 返回中读取 node.obj_type、node.obj_token、node.title、node.space_id 和节点 token。确定 space_id 后,用 wiki nodes list 从项目知识库根节点或命中的目录节点开始遍历。wiki nodes list,直到覆盖该项目知识库中能访问到的文档节点;不要只按固定主题筛选。drive metas batch_query 做快速元数据比对,再决定哪些 docx/doc 文档需要轻量读取。obj_type 为 docx 或 doc 且本地没有 outline、属于新增节点或元数据已变化的节点,读取 docs +fetch --scope outline 获取目录;只在目录过薄或标题不足以判断内容时,用 keyword 或少量 section 补充摘要。obj_type 是 sheet 或 bitable 的节点,只记录标题、路径、token 和用途推断,不要用 docs fetch 强读内部表格数据。project_context_index 应说明已遍历范围、已索引数量、跳过数量和原因。project_context_index,说明没有命中项目资料。禁止执行:
docs +createdocs +updatedocs +media-insertdocs +media-downloadwiki +node-createwiki +move预热完成后,在最终回答中简短列出:
fingerprint保存到 save_project_context_index 的 project_context_index 结构包括:
drive metas batch_query 获取的 create_time、latest_modify_time、latest_modify_user、url 等轻量元数据