Skip to content
Report library
Purpose / Other

Lark Base Skill Security Audit

What the author says it does (original text)

飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。

Independent security check

Do not install or run it yet

Files checked
26
Risks found
5
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.No risks found
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 4
High risk

Persistent workflows can send record fields to arbitrary external HTTP endpoints

Source references: 5
What we found

Workflows support HTTP requests whose URL, headers, and body can combine literal text with references to prior-step record fields. The supplied example sends a lead name, mobile number, company, owner, and record ID to an external CRM.

Why this matters

If the destination, field selection, or trigger is wrong, every workflow run may repeatedly disclose customer or business data to an external system after the workflow is enabled.

This capability creates a plausible data-export risk, though the example is not self-executing malicious code. If a user creates and enables a persistent Workflow containing `HTTPClientAction`, its URL, headers, and body can combine text with prior record fields and send them externally; the example includes a phone number, company, owner, and record ID. Users should verify the destination, fields, trigger, and enabled state before authorization.

SKILL.md:252In the instructions
Workflow 本身是 Base Block,其内部是一张由 `next` / `children` 连接的 steps 执行图;触发器、动作、条件分支和循环都是 step 类型。它适合定时执行、Record 新增或变更联动、消息通知、记录读写和跨系统调用。Workflow 分为三条操作路径:1. **读取配置:** `+workflow-list` 定位流程,`+workflow-get` 读取 `title`、`status` 和完整 `steps` 执行图。2. **写入配置:** `+workflow-create` 创建完整定义,`+workflow-update` 更新完整定义;构造或修改配置前读取 [Workflow](references/lark-base-workflow.md),由该入口继续路由 step 类型和 schema。3. **运行状态控制:** `+workflow-enable` / `+workflow-disable` 启用或停用已有 Workflow,不修改 steps 执行图。
Show 4 other places
references/lark-base-workflow.md:651In the instructions
    {      "id": "step_call_crm_api",      "type": "HTTPClientAction",      "title": "调用 CRM 同步接口",      "next": "step_add_sync_log",      "data": {        "method": "POST",        "url": [          { "value_type": "text", "value": "https://api.example-crm.com/v1/leads/sync" }        ],        "headers": [          { "key": "Content-Type", "value": [{ "value_type": "text", "value": "application/json" }] },          { "key": "X-System", "value": [{ "value_type": "text", "value": "lark_base_workflow" }] }        ],        "body_type": "raw",        "raw_body": [          { "value_type": "text", "value": "{\"lead_name\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldLeadName" },          { "value_type": "text", "value": "\",\"mobile\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldMobile" },          { "value_type": "text", "value": "\",\"company\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldCompany" },          { "value_type": "text", "value": "\",\"owner\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldOwner" },          { "value_type": "text", "value": "\",\"source_record_id\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.recordId" },          { "value_type": "text", "value": "\"}" }        ],        "response_type": "json",        "response_value": "{\"success\":true,\"message\":\"lead synced successfully\"}"      }
SKILL.md:250In the instructions
## Workflow BlockWorkflow 本身是 Base Block,其内部是一张由 `next` / `children` 连接的 steps 执行图;触发器、动作、条件分支和循环都是 step 类型。它适合定时执行、Record 新增或变更联动、消息通知、记录读写和跨系统调用。Workflow 分为三条操作路径:1. **读取配置:** `+workflow-list` 定位流程,`+workflow-get` 读取 `title`、`status` 和完整 `steps` 执行图。2. **写入配置:** `+workflow-create` 创建完整定义,`+workflow-update` 更新完整定义;构造或修改配置前读取 [Workflow](references/lark-base-workflow.md),由该入口继续路由 step 类型和 schema。3. **运行状态控制:** `+workflow-enable` / `+workflow-disable` 启用或停用已有 Workflow,不修改 steps 执行图。
references/lark-base-workflow-schema.md:396In the instructions
| 字段 | 必填 | 说明 ||------|-----|------|| `method` | 否 | 请求方法:`GET` / `POST` / `PUT` / `PATCH` / `DELETE`,默认 `POST` || `url` | 是 | ValueInfo[],请求 URL,支持 `text` / `ref` 拼接 || `queries` | 否 | KeyValue[],查询参数 || `headers` | 否 | KeyValue[],请求头 || `body_type` | 否 | 请求体类型:`none` / `raw` / `form-data` / `form-urlencoded`,默认 `raw` || `raw_body` | 否 | ValueInfo[],原始请求体,仅 `body_type=raw` 时使用 || `form_body` | 否 | KeyValue[],表单数据,仅 `body_type=form-data` 或 `body_type=form-urlencoded` 时使用 || `response_type` | 否 | 响应类型:`none` / `text` / `json`,默认 `json` || `response_value` | 否 | string,JSON 字符串形式的响应结果示例;仅当 `response_type=json` 时必填 |
references/lark-base-workflow.md:657In the instructions
        "method": "POST",        "url": [          { "value_type": "text", "value": "https://api.example-crm.com/v1/leads/sync" }        ],        "headers": [          { "key": "Content-Type", "value": [{ "value_type": "text", "value": "application/json" }] },          { "key": "X-System", "value": [{ "value_type": "text", "value": "lark_base_workflow" }] }        ],        "body_type": "raw",        "raw_body": [          { "value_type": "text", "value": "{\"lead_name\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldLeadName" },          { "value_type": "text", "value": "\",\"mobile\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldMobile" },          { "value_type": "text", "value": "\",\"company\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldCompany" },          { "value_type": "text", "value": "\",\"owner\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.fldOwner" },          { "value_type": "text", "value": "\",\"source_record_id\":\"" },          { "value_type": "ref", "value": "$.step_button_trigger.recordId" },          { "value_type": "text", "value": "\"}" }        ],
Medium risk

The field extension sends same-table field content to an LLM and keeps automatic writeback enabled

Source references: 6
What we found

The built-in extension performs LLM inference using prompt segments and `field_ref` values from the same row. After configuration, automatic updates are forcibly enabled with no parameter to disable them, and a column refresh may create many generation jobs.

Why this matters

Referenced fields may contain customer information, internal notes, or other sensitive data that is repeatedly processed by the model. Generated output is written back to the target field and may alter business data.

The source supports this risk. The extension feeds referenced fields from the same row into an LLM prompt and writes output to a target field; automatic updates are forcibly enabled after installation with no disable parameter. Configuration and manual refresh require `--yes`, and a full-column refresh requires an explicit request, but ongoing processing can still broaden which sensitive data is modeled and overwritten. Users can request model/retention disclosure and restrict fields and records.

references/lark-base-field-extension.md:3In the instructions
字段插件用于扩展基础字段能力,当同行其他单元格更新时,触发 LLM 推理生成新单元格。当前公开支持的插件 ID 只有 `builtin_llm_completion`,已确认可用于文本、单选、数字字段,让目标字段基于 prompt 和字段引用生成内容,并可手动触发该字段的单元格异步更新任务。
Show 5 other places
references/lark-base-field-extension.md:127In the instructions
`field_ref` 只能引用当前表中的其他字段,不能引用目标字段自身;附件字段和其他不支持字段不要作为引用字段。
references/lark-base-field-extension.md:167In the instructions
- 目标字段必须是当前字段插件已支持的字段类型;当前已确认支持文本、单选、数字字段。不要把字段插件当成任意字段类型都可用的通用能力。- 写入插件配置后,自动更新会强制开启;当前不提供关闭自动更新的参数。- 读取接口中的 `field_ref.field` 通常返回字段名称;字段名称不可用时可能返回字段 ID。- `+field-extension-update` 不返回 `input_schemas`。- `+field-extension-update-cells --type column` 可能触发大量 AI 生成任务,单元格越多耗时通常越久;除非用户明确要求整列刷新,否则优先按 `--type row` 精确更新目标记录。
references/lark-base-field-extension.md:1In the instructions
# base field-extension字段插件用于扩展基础字段能力,当同行其他单元格更新时,触发 LLM 推理生成新单元格。当前公开支持的插件 ID 只有 `builtin_llm_completion`,已确认可用于文本、单选、数字字段,让目标字段基于 prompt 和字段引用生成内容,并可手动触发该字段的单元格异步更新任务。
references/lark-base-field-extension.md:69In the instructions
1. 定位 Base、Table 和目标 Field。目标 Field 是承载插件输出的已有字段,不是 prompt 中被引用的输入字段。2. 用 `+field-extension-get` 读取当前配置。返回 `current_extension=null` 表示未配置、无法识别或存量配置无法转换。3. 构造 `+field-extension-update --json`。安装或更新时传 `extension_id=builtin_llm_completion` 和 `inputs.prompt`;清空时传 `{}`。4. 配置成功后,只有用户明确要立即生成或刷新已有单元格时,才调用 `+field-extension-update-cells` 发起异步生成任务。5. 需要验收结果时,等待任务完成或稍后用记录读取命令抽样查看目标字段单元格;`update_cells` 只返回任务 ID,不直接返回生成结果。
references/lark-base-field-extension.md:157In the instructions
## 权限和风险- `+field-extension-get` 是只读命令,权限 `base:field:read`。- `+field-extension-update` 是高风险写命令,权限 `base:field:update`,会改变目标字段的自动生成配置,执行时必须带 `--yes`。- `+field-extension-update-cells` 是高风险写命令,权限 `base:record:update`,会触发目标字段单元格异步写回,执行时必须带 `--yes`。- 用户需要具备管理目标表或目标字段插件的权限才能触发更新任务;如果接口返回权限不足,先按 Base 权限或高级权限角色确认用户权限。
Medium risk

Every record read is instructed to create a local NDJSON copy

Source references: 4
What we found

The main instructions require all reads to write projected records to an NDJSON path. The analysis workflow also creates a same-named manifest containing source, schema, and version metadata.

Why this matters

Base data crosses from cloud access controls onto local storage. If the output directory is shared, synchronized, backed up, or committed to version control, record contents and metadata may become accessible to others.

The risk is explicitly supported: the main Skill requires “all reads” to be written to local NDJSON, and the analysis workflow creates a manifest containing source, scope, revision, and schema metadata. This is local analytical processing, not evidence of exfiltration or malicious activity, but it leaves disk copies that may contain business records and personal data, with no stated retention or cleanup policy. Users can restrict output paths, projections, permissions, and retention.

SKILL.md:117In the instructions
所有读取都重复传 `--field-id` 做最小字段投影,并统一写入 NDJSON artifact:`--format ndjson --output <path>.ndjson`。每行是一条 Record JSON,stdout 摘要包含 `records_count` 和 `has_more` 用于分页判断。
Show 3 other places
references/lark-base-record-query-and-analysis-sop.md:64In the instructions
`--output ./records.ndjson` 生成记录文件和同名 `.manifest.json`。高频 manifest 字段:| 字段 | 分析用途 || --- | --- || `records_count` / `has_more` / `next_offset` | 判断当前块大小、是否完整以及下一块起点 || `base_token` / `table_id` / `query_context` | 固定来源表和读取范围 || `rev` | 检查多块或复用 artifact 时的数据版本一致性 || `timezone` | 解释 Base 本地日历边界 || `columns.*.field_id/field_type/physical_type` | 确认 NDJSON 实际列类型与稳定字段标识 || `columns.*.stats/example/hint` | 估算空值、数组展开规模和文本体量;只描述本次导出 || `record_file_size_bytes` | 决定一次读取还是分块处理 artifact |NDJSON 每行是一条 Record,以字段 `name` 为 key,并额外包含系统 `record_id`;`field_id` 位于 manifest。字段改名会改变 NDJSON key,跨批次或长期脚本应通过 manifest 复核 `field_id → name`。
references/lark-base-record-query-and-analysis-sop.md:62In the instructions
## 5. Manifest 与 NDJSON 结构`--output ./records.ndjson` 生成记录文件和同名 `.manifest.json`。高频 manifest 字段:| 字段 | 分析用途 || --- | --- || `records_count` / `has_more` / `next_offset` | 判断当前块大小、是否完整以及下一块起点 || `base_token` / `table_id` / `query_context` | 固定来源表和读取范围 || `rev` | 检查多块或复用 artifact 时的数据版本一致性 || `timezone` | 解释 Base 本地日历边界 || `columns.*.field_id/field_type/physical_type` | 确认 NDJSON 实际列类型与稳定字段标识 || `columns.*.stats/example/hint` | 估算空值、数组展开规模和文本体量;只描述本次导出 || `record_file_size_bytes` | 决定一次读取还是分块处理 artifact |NDJSON 每行是一条 Record,以字段 `name` 为 key,并额外包含系统 `record_id`;`field_id` 位于 manifest。字段改名会改变 NDJSON key,跨批次或长期脚本应通过 manifest 复核 `field_id → name`。
references/lark-base-record-query-and-analysis-sop.md:87In the instructions
| `location` | `{lng,lat,full_address}|null` | 地理计算用坐标,文本范围分析用地址 || `user`、`group_chat`、`created_by`、`updated_by` | `array<{id,name}>` | 连接与去重使用 `id`,展示使用 `name` || `link` | `array<{id}>` | `id` 是 Field schema 指定目标表中的 `record_id` || `attachment` | `array<{file_token,size,name}>` | 文件 token 是稳定定位信息;数组展开会改变粒度 |
Medium risk

Form attachment submission reads and uploads specified local files

Source references: 5
What we found

`+form-submit` accepts local file paths. The CLI validates and uploads those files in parallel to Base Drive Media, then places the returned file tokens into the form submission. `--yes` confirms submission, but the described flow does not say it previews file contents again.

Why this matters

A mistaken path could upload private documents, images, or other local files to the target Base, where they may become visible according to that Base or form’s access rules.

Legitimate use of this code

The upload behavior is real, but in context it is the intended function when the user explicitly submits attachments through a shared form, not hidden arbitrary file collection. Paths must be listed in `attachments`; the CLI validates regular files and size before uploading them to the target Base. A real submission requires `--yes` and prior form-detail lookup for the correct Base. Users should still provide only intended paths because file contents leave the local machine.

This assessment concerns the code and conditions shown, not proof that harm has occurred.
references/lark-base-form-submit.md:113In the instructions
**附件字段的填写方式与 `fields` 中的普通单元格完全不同**,不能在 `fields` 里传 `file_token` 或其他附件格式。必须将附件字段单独放在 `--json` 的顶层 `attachments` 对象中,值为**本地文件路径数组**(不是 token):```json{  "attachments": {    "附件字段名": ["./report.pdf", "./photo.png"],    "另一个附件字段": ["./doc.docx"]  }}```CLI 收到路径后会自动完成以下流程:1. 校验所有文件(存在性、大小 ≤2GB、常规文件)2. 并行上传到 Base Drive Media(并发上限 5,跨字段重复路径自动去重)3. 获取 `file_token` 后合并到最终表单提交内容中
Show 4 other places
references/lark-base-form-submit.md:169In the instructions
- **本命令为高风险写操作(high-risk-write),必须额外传递 `--yes` 确认**,否则返回 `confirmation_required` 并以非零码退出;`--dry-run` 预览除外- 本命令仅支持通过表单分享链接(share_token)提交,不支持通过 base_token + table_id + view_id 方式提交- **当 `--json` 包含 `attachments` 时,必须额外提供 `--base-token`**,因为附件上传到 Base Drive Media 需要指定目标 Base- 附件字段只需在 `--json.attachments` 中提供本地路径即可,CLI 自动完成校验、并行上传、Token 获取和合并写入- 限流:单应用 20 QPS,单用户 5 QPS- 权限要求:`base:form:update`;使用 attachments 时还需 `docs:document.media:upload`
references/lark-base-form-submit.md:5In the instructions
通过表单分享链接填写并提交多维表格表单。仅支持分享模式(share_token),支持填写普通字段值和上传本地文件作为附件。> **⚠️ 高风险写操作(high-risk-write):** 本命令会向表单写入并提交数据,属于高风险写操作,必须额外传递 `--yes` 进行确认,否则会返回 `confirmation_required` 错误并退出。当用户明确要求提交且目标表单无歧义时,直接附加 `--yes`,无需再次询问。
references/lark-base-form-submit.md:11In the instructions
**在调用 `+form-submit` 之前,必须先使用 `+form-detail` 获取表单详情。** 原因如下:1. **字段类型匹配**:每个题目的 `type` 决定了值的格式(文本、数字、选项、人员、日期等),需根据类型正确构造 `fields` 中的值2. **必填校验**:通过 `questions[].required` 判断哪些题目为必填项,避免遗漏3. **显示条件过滤**:部分题目带有 `filter`(显示/隐藏逻辑),需根据用户已填的其他题目值判断该题目是否应该出现——**不应填写被 filter 隐藏的题目**4. **获取 base_token(附件场景必用)**:`+form-detail` 返回的 `data.base_token` 是该表单所属的多维表格标识。当表单包含附件字段时,提交时必须通过 `--base-token` 传入此值,因为附件需要上传到该 Base 的 Drive Media 中
references/lark-base-form-submit.md:111In the instructions
#### attachments(附件上传)**附件字段的填写方式与 `fields` 中的普通单元格完全不同**,不能在 `fields` 里传 `file_token` 或其他附件格式。必须将附件字段单独放在 `--json` 的顶层 `attachments` 对象中,值为**本地文件路径数组**(不是 token):```json{  "attachments": {    "附件字段名": ["./report.pdf", "./photo.png"],    "另一个附件字段": ["./doc.docx"]  }}```CLI 收到路径后会自动完成以下流程:1. 校验所有文件(存在性、大小 ≤2GB、常规文件)2. 并行上传到 Base Drive Media(并发上限 5,跨字段重复路径自动去重)3. 获取 `file_token` 后合并到最终表单提交内容中
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 1
High risk

An “edit” role receives record deletion and view-editing rights by default

Source references: 5
What we found

The permission instructions say that `perm=edit` automatically includes record deletion and view editing even when the user did not explicitly request them. This conflicts with the same document’s stated rule that unrequested permissions should remain closed.

Why this matters

Members given ordinary edit access could delete business records or create and modify shared views, exceeding what the user may expect “edit” to authorize.

The source supports this risk. Although the role policy claims default denial, table-level `edit` explicitly adds record deletion and view editing unless the user opts out. A request merely to edit a table can therefore grant stronger permissions, increasing the impact of accidental deletion or shared-view changes. Users can ask that both capabilities require explicit authorization.

references/lark-base-role-config.md:460In the instructions
|------|--------|----------|| `record_operations` 中的 `delete` | **包含**(`perm = edit` 时) | 用户明确限制时才排除 || `view_rule.allow_edit` | **`true`**(`perm = edit` 时) | 用户明确限制"不可编辑视图"或 `perm = read_only` 时设为 `false` |
Show 4 other places
references/lark-base-role-config.md:481In the instructions
**注意**:- 用户未提及时,表权限为 `edit` 时默认同时包含 `add` 和 `delete`,默认不包含 `delete` 的情况仅适用于用户明确限制操作的场景- 阅读范围默认对齐编辑范围:用户仅描述可编辑范围、未说明阅读范围时,可阅读范围与可编辑范围保持一致,不主动扩大- 当可读范围与可编辑范围一致时,**不得**生成 `read_filter_rule_group`;应设置 `other_record_all_read = false` 且 `read_filter_rule_group = null`
references/lark-base-role-config.md:439In the instructions
## 默认权限策略与风控规则构造角色配置 JSON 时,采用 **默认拒绝与权限最小化** 策略。用户未明确提及的权限一律不开放,不因"合理猜测""常见做法"主动扩展权限范围。
references/lark-base-role-config.md:454In the instructions
### 默认开启项(条件性)以下能力在特定条件下**默认开启**,用户明确限制时才排除:| 能力 | 默认值 | 排除条件 ||------|--------|----------|| `record_operations` 中的 `delete` | **包含**(`perm = edit` 时) | 用户明确限制时才排除 || `view_rule.allow_edit` | **`true`**(`perm = edit` 时) | 用户明确限制"不可编辑视图"或 `perm = read_only` 时设为 `false` |
references/lark-base-role-config.md:479In the instructions
### 记录操作默认策略**注意**:- 用户未提及时,表权限为 `edit` 时默认同时包含 `add` 和 `delete`,默认不包含 `delete` 的情况仅适用于用户明确限制操作的场景- 阅读范围默认对齐编辑范围:用户仅描述可编辑范围、未说明阅读范围时,可阅读范围与可编辑范围保持一致,不主动扩大- 当可读范围与可编辑范围一致时,**不得**生成 `read_filter_rule_group`;应设置 `other_record_all_read = false` 且 `read_filter_rule_group = null`
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

8 instruction sections

The Skill operates Lark Base as the user by default, uses bot identity only when explicitly requested, and first resolves a URL, title, or keyword to identify the target Base.

View source
SKILL.md:17In the instructions
操作 Base 优先使用 `--as user`;用户明确要求应用身份时使用 `--as bot`。权限失败按 `lark-shared` 以原身份修复 scope 或资源 ACL;只有用户明确同意更换操作者时才切换身份。
SKILL.md:23In the instructions
1. **URL 或分享链接:** `lark-cli base +url-resolve --url '<url>' --as user`。Base URL 根据返回的 `resource_type` / `block_type` 及 `table_id`、`view_id`、`record_id`、`dashboard_id`、`workflow_id`、`docx_token`、`share_token` 等坐标进入对应模块;BaseApp `/app/` URL 返回 `app_token`,并在链接携带时返回 `workspace_token` 和 `page_id`。实体类型以解析结果为准。2. **Base 标题或关键词:** `lark-cli base +title-resolve --title '<keyword>' --as user`。单一结果直接取得 `base_token`;多个候选结合标题、所有者和更新时间消歧,仍无法唯一确定时请用户选择。随后按下方 Base Block 资源模型定位目标实体。3. **已有 Base 候选列表:** 用户要列出已有 Base 候选,且需要按最近访问、owner、创建人、时间、类型等维度筛选/排序时,转 `lark-cli drive +search --doc-types bitable --as user`。按标题/关键词定位单个 Base 仍用 `+title-resolve`。常见候选列表命令:

The Skill is not read-only: it can create, move, rename, and delete Base resources and modify fields, records, views, forms, dashboards, workflows, and advanced permissions.

View source
SKILL.md:59In the instructions
每个 Base Block 都有 `id`、`type`、可修改的 `name`、所在 Folder 的 `parent_id`,并在同级目录中具有顺序。`+base-block-list` 是统一发现入口;`+base-block-create` 创建 Block,`+base-block-rename` 修改名称,`+base-block-move` 通过 `--parent-id` 调整目录并通过 `--before-id` / `--after-id` 调整顺序,`+base-block-delete` 删除 Block。类型专属内容再由对应模块命令处理。创建时已经明确类型专属初始内容,可直接使用对应构造命令一次完成:Table 用 `+table-create --fields`,Dashboard 用 `+dashboard-create` 设置主题,Workflow 用 `+workflow-create --json` 提交完整定义;Folder 和 Docx 使用 `+base-block-create`。
SKILL.md:262In the instructions
**读取 AdvPerm:** `+base-get` 查看 `is_advanced`,`+role-list` / `+role-get` 查看角色。**写入 AdvPerm:** `+advperm-enable` / `+advperm-disable` 启停高级权限,`+role-create` / `+role-update` / `+role-delete` 管理角色。先读 [权限与角色](references/lark-base-advanced-permission-and-role.md),由该入口继续路由权限 JSON 协议。

The general execution rules require distinguishing full replacement from delta updates and using `--yes` only after confirming the target and impact when a confirmation gate exists.

View source
SKILL.md:276In the instructions
- Update 先确认命令是完整替换还是 delta:完整替换使用可信当前配置做 read-modify-write,delta 只提交目标变更。- 优先用写入返回确认结果;返回不足以确认或任务明确要求核验时再读回目标。- 命令具有 confirmation gate 时,确认目标和影响后使用 `--yes`。

The Skill declares an external `lark-cli` binary dependency. The supplied material primarily specifies how to invoke it, so these documents do not establish how that binary handles credentials, network requests, or data internally.

View source
SKILL.md:6In the instructions
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli base --help"---
Start here · InstructionsSKILL.md
lark-base
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source. 5 more sections are available in the original file.

File reference map

References: 40
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records26 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • references/lark-base-advanced-permission-and-role.mdFull text included
  • references/lark-base-app-block-data-config.mdFull text included
  • references/lark-base-app.mdFull text included
  • references/lark-base-dashboard.mdFull text included
  • references/lark-base-field-create.mdFull text included
  • references/lark-base-field-extension.mdFull text included
  • references/lark-base-field-update.mdFull text included
  • references/lark-base-filter-condition.mdFull text included
  • references/lark-base-form-detail.mdFull text included
  • references/lark-base-form-questions-create.mdFull text included
  • references/lark-base-form-questions-update.mdFull text included
  • references/lark-base-form-submit.mdFull text included
  • references/lark-base-record-history-list.mdFull text included
  • references/lark-base-record-query-and-analysis-sop.mdFull text included
  • references/lark-base-template-center.mdFull text included
  • references/lark-base-view-set-filter.mdFull text included
  • references/lark-base-workflow.mdFull text included
  • references/lark-base-dashboard-block-config.mdFull text included
  • references/lark-base-dashboard-block-get-data.mdFull text included
  • references/lark-base-data-query.mdFull text included
  • references/lark-base-field-formula.mdFull text included
  • references/lark-base-field-lookup.mdFull text included
  • references/lark-base-field-schema.mdFull text included
  • references/lark-base-role-config.mdFull text included
  • references/lark-base-workflow-schema.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • references/lark-base-advanced-permission-and-role.mdSupporting file
  • references/lark-base-app-block-data-config.mdSupporting file
  • references/lark-base-app.mdSupporting file
  • references/lark-base-dashboard-block-config.mdSupporting file
  • references/lark-base-dashboard-block-get-data.mdSupporting file
  • references/lark-base-dashboard.mdSupporting file
  • references/lark-base-data-query.mdSupporting file
  • references/lark-base-field-create.mdSupporting file
  • references/lark-base-field-extension.mdSupporting file
  • references/lark-base-field-formula.mdSupporting file
  • references/lark-base-field-lookup.mdSupporting file
  • references/lark-base-field-schema.mdSupporting file
  • references/lark-base-field-update.mdSupporting file
  • references/lark-base-filter-condition.mdSupporting file
  • references/lark-base-form-detail.mdSupporting file
  • references/lark-base-form-questions-create.mdSupporting file
  • references/lark-base-form-questions-update.mdSupporting file
  • references/lark-base-form-submit.mdSupporting file
  • references/lark-base-record-history-list.mdSupporting file
  • references/lark-base-record-query-and-analysis-sop.mdSupporting file
  • references/lark-base-role-config.mdSupporting file
  • references/lark-base-template-center.mdSupporting file
  • references/lark-base-view-set-filter.mdSupporting file
  • references/lark-base-workflow-schema.mdSupporting file
  • references/lark-base-workflow.mdSupporting file

Operations mentioned in code and instructions

Run commands
SKILL.md:119In the instructions
```bash# Example: 行数较大时先筛选 Status 包含 Doing 的记录,再导出 20 条作为局部预览
SKILL.md:134In the instructions
```bash# jq:对服务端筛选结果追加名称格式筛选,再投影必要字段
SKILL.md:179In the instructions
```bash# 新增:成功时返回 record_id_list
Read files
SKILL.md:142In the instructions
with open("records-preview.ndjson", encoding="utf-8") as stream:    rows = (json.loads(line) for line in stream if line.strip())
Connect to websites
SKILL.md:157In the instructions
  "标题": "Created from shortcut", // text: string  "官网": "[官网](https://example.com)", // text(url): 裸 URL 或 Markdown link  "联系电话": "13800000000", // text(phone): 合法电话号码字符串
references/lark-base-data-query.md:83In the instructions
```texthttps://example.feishu.cn/base/<base_token>?table=<block_id>```
references/lark-base-field-create.md:50In the instructions
- 每个字段对象最少包含:`name`、`type`。- 所有字段类型都支持可选 `description`;支持纯文本,也支持 Markdown 链接,如 `协作约定可参考[团队字段约定](https://example.com/field-spec)`。- 需要字段默认值时传 `default_value`,直接使用字段对应 CellValue;`datetime` / `user` 的动态填充用 `$slot`。完整规则见 [Field Schema](lark-base-field-schema.md)。
Lines read
8,496
File checksum (to compare versions)
8d9d1ce419e9228044b85e4add939edc8b9c836521336914b9970b57a5137d48