File contents BKN 草案落盘
公约:../_shared/contract.md
委托技能
技能
用途
必须
bkn-archive
归档路径生成、ARCHIVE_ID/TIMESTAMP、回读校验
是
bkn-openbkn
openbkn bkn validate 结构校验
是
执行前必须读取 references/SPECIFICATION.llm.md 获取规范模板 ,不可凭记忆生成 .bkn 格式。
落盘路径必须走 bkn-archive ,确保双轨路径(根段 archives/)和回读校验。
做什么
将用户确认的对象/关系/动作清单转化为 .bkn 文件目录,落盘到归档路径。
输入
已确认的对象/关系/动作清单(含 存储位置 标记)
network_context:网络名称、领域
mode:create(新建) | patch(更新) | copy(复制)
流程
读取 ../bkn-archive/SKILL.md,获取 ARCHIVE_ID + TIMESTAMP + 归档路径
读取 references/SPECIFICATION.llm.md,按 BKN v2.0.1 规范生成 .bkn 文件
业务规则放置 :遵循 references/SPECIFICATION.llm.md 的"业务规则放置"章节
输出规则 :遵循 references/SPECIFICATION.llm.md 的"输出规则"章节
落盘到 {network_dir}/bkn/(即 archives/{ARCHIVE_ID}/{TIMESTAMP}/{NETWORK_DIR_NAME}/bkn/)
network.bkn 放入 bkn/ 根
object_types/、relation_types/、action_types/、concept_groups/ 等子目录均在 bkn/ 下创建
network.bkn 的 id 使用 {network_name} 的 slug 化形式(中文转拼音或英文直用,全小写、连字符分隔,如 bu-profit-settlement),补齐 icon: icon-dip-graph、color: #0e5fc5
推送后若平台返回新 kn_id,委托 bkn-backfill 回填更新 network.bkn 中的 id
禁止使用空字符串 "" 作为 id,平台 validator 会拒绝
对象类分配随机颜色
存储位置处理 :
platform 对象 :生成完整 BKN 格式(含 Data Source、Logic Properties 等)
local 对象 (仅用于模型内部逻辑推理,无外部数据源):
省略 ### Data Source 节
省略 Mapped Field 列 (Data Properties 表格中不生成此列)
省略 ### Logic Properties 节
省略 Incremental Key
仅保留 Data Properties(定义对象的基本属性结构)
注意 :relation_types 和 action_types 中的关系/动作可以引用 local 对象的属性,draft 阶段照常生成对应关系/动作文件
Data Source 处理 (仅 platform 对象):
若此时已完成资源绑定(有 binding_decision_list)→ 写入真实 resource_id
若尚未绑定 → 省略整个 ### Data Source 小节 ,不写占位符
禁止写 待绑定 或任何占位文本 ,平台会将其解析为 view ID 导致推送失败
Mapped Field 同理:无绑定时写 -,不写占位
Description 仅写稳定业务语义
关系映射属性交叉验证 (生成关系文件后必须执行):
遍历所有 relation_types/*.bkn,对每个关系文件:
解析 Endpoint 中的 Source 对象 ID 和 Target 对象 ID
解析 Mapping Rules 中的 Source Property 和 Target Property
确认 Source Property 存在于 Source 对象 object_types/{source_id}.bkn 的 Data Properties 中
确认 Target Property 存在于 Target 对象 object_types/{target_id}.bkn 的 Data Properties 中
若任一属性不存在 → 修正映射规则中的属性名 使其与目标对象 Data Properties 中的实际属性名一致;若无法确定正确属性名,记录错误并提示
对 action_types/*.bkn 同理:确认 Parameter Binding 中引用的属性存在于 Bound Object 的 Data Properties 中
委托 bkn-openbkn 执行 openbkn bkn validate {network_dir}/bkn/
对照校验清单复核
用户复核
输出
.bkn 文件目录(位于 {network_dir}/bkn/)
validate 结果
root SKILL.md (可选):在 BKN 目录根添加 {network_dir}/SKILL.md(与 network.bkn 同级),包含简短概述 + 索引表(object | path | relation | path | action | path),方便 agent 定位 .bkn 文件
校验清单
生成后必须逐项检查:
数据类型选型
生成 Data Properties 时,Type 必须从规范合法类型中选择:
语义
选型
数量、金额、单价
decimal
计数、序号、版本号
integer
比率、百分比
float
禁止使用 number ——平台不认识此类型,推送时报 InvalidParameter。
Action Type 选型
Bound Object 表的 Action Type 列只允许三个值:
值
语义
add
新增(不可写 create,是后端保留字)
modify
修改(不可写 update,是后端保留字)
delete
删除
当前平台版本不支持 query。如有只读操作需求,暂用 modify 并在 Description 标注。
资源索引
类型
规范章节
模板
示例
Network
knowledge_network
assets/templates/network_type.bkn.template
references/examples/k8s-network/network.bkn
Object
object_type
assets/templates/object_type.bkn.template
references/examples/k8s-network/object_types/pod.bkn
Relation
relation_type
assets/templates/relation_type.bkn.template
references/examples/k8s-network/relation_types/pod_belongs_node.bkn
Action
action_type
assets/templates/action_type.bkn.template
references/examples/k8s-network/action_types/restart_pod.bkn
Concept group
concept_group
assets/templates/concept_group.bkn.template
references/examples/k8s-network/concept_groups/k8s.bkn
完整规范:references/SPECIFICATION.llm.md。
约束
本 skill 不做建模决策,只做清单 → 文件的转换
Description 不写映射猜测信息
不写任何占位符文本("待绑定"/"待确认"/"TBD"等),占位值会被平台当作真实 ID 解析
1 --- 2 name: bkn-draft 3 description: 将确认后的建模清单生成 .bkn 文件。 4 --- 5 6 # BKN 草案落盘 7 8 公约:`../_shared/contract.md` 9 10 ## 委托技能 11 12 | 技能 | 用途 | 必须 | 13 |------|------|------| 14 | `bkn-archive` | 归档路径生成、ARCHIVE_ID/TIMESTAMP、回读校验 | 是 | 15 | `bkn-openbkn` | `openbkn bkn validate` 结构校验 | 是 | 16 17 **执行前必须读取 `references/SPECIFICATION.llm.md` 获取规范模板**,不可凭记忆生成 `.bkn` 格式。 18 **落盘路径必须走 `bkn-archive`**,确保双轨路径(根段 `archives/`)和回读校验。 19 20 ## 做什么 21 22 将用户确认的对象/关系/动作清单转化为 `.bkn` 文件目录,落盘到归档路径。 23 24 ## 输入 25 26 - 已确认的对象/关系/动作清单(含 `存储位置` 标记) 27 - `network_context`:网络名称、领域 28 - `mode`:`create`(新建) | `patch`(更新) | `copy`(复制) 29 30 ## 流程 31 32 1. 读取 `../bkn-archive/SKILL.md`,获取 `ARCHIVE_ID` + `TIMESTAMP` + 归档路径 33 2. 读取 `references/SPECIFICATION.llm.md`,按 BKN v2.0.1 规范生成 .bkn 文件 34 - **业务规则放置**:遵循 `references/SPECIFICATION.llm.md` 的"业务规则放置"章节 35 - **输出规则**:遵循 `references/SPECIFICATION.llm.md` 的"输出规则"章节 36 3. 落盘到 `{network_dir}/bkn/`(即 `archives/{ARCHIVE_ID}/{TIMESTAMP}/{NETWORK_DIR_NAME}/bkn/`) 37 - `network.bkn` 放入 `bkn/` 根 38 - `object_types/`、`relation_types/`、`action_types/`、`concept_groups/` 等子目录均在 `bkn/` 下创建 39 4. `network.bkn` 的 `id` 使用 `{network_name}` 的 slug 化形式(中文转拼音或英文直用,全小写、连字符分隔,如 `bu-profit-settlement`),补齐 `icon: icon-dip-graph`、`color: #0e5fc5` 40 - 推送后若平台返回新 `kn_id`,委托 `bkn-backfill` 回填更新 `network.bkn` 中的 `id` 41 - 禁止使用空字符串 `""` 作为 id,平台 validator 会拒绝 42 5. 对象类分配随机颜色 43 6. **存储位置处理**: 44 - **`platform` 对象**:生成完整 BKN 格式(含 Data Source、Logic Properties 等) 45 - **`local` 对象**(仅用于模型内部逻辑推理,无外部数据源): 46 - **省略 `### Data Source` 节** 47 - **省略 `Mapped Field` 列**(Data Properties 表格中不生成此列) 48 - **省略 `### Logic Properties` 节** 49 - **省略 `Incremental Key`** 50 - 仅保留 `Data Properties`(定义对象的基本属性结构) 51 - **注意**:`relation_types` 和 `action_types` 中的关系/动作可以引用 local 对象的属性,draft 阶段照常生成对应关系/动作文件 52 7. **Data Source 处理**(仅 platform 对象): 53 - 若此时已完成资源绑定(有 `binding_decision_list`)→ 写入真实 `resource_id` 54 - 若尚未绑定 → **省略整个 `### Data Source` 小节**,不写占位符 55 - **禁止写 `待绑定` 或任何占位文本**,平台会将其解析为 view ID 导致推送失败 56 8. `Mapped Field` 同理:无绑定时写 `-`,不写占位 57 9. Description 仅写稳定业务语义 58 10. **关系映射属性交叉验证**(生成关系文件后必须执行): 59 - 遍历所有 `relation_types/*.bkn`,对每个关系文件: 60 1. 解析 Endpoint 中的 Source 对象 ID 和 Target 对象 ID 61 2. 解析 Mapping Rules 中的 Source Property 和 Target Property 62 3. 确认 Source Property 存在于 Source 对象 `object_types/{source_id}.bkn` 的 Data Properties 中 63 4. 确认 Target Property 存在于 Target 对象 `object_types/{target_id}.bkn` 的 Data Properties 中 64 5. 若任一属性不存在 → **修正映射规则中的属性名**使其与目标对象 Data Properties 中的实际属性名一致;若无法确定正确属性名,记录错误并提示 65 - 对 `action_types/*.bkn` 同理:确认 Parameter Binding 中引用的属性存在于 Bound Object 的 Data Properties 中 66 11. 委托 `bkn-openbkn` 执行 `openbkn bkn validate {network_dir}/bkn/` 67 12. 对照校验清单复核 68 13. 用户复核 69 70 ## 输出 71 72 - `.bkn` 文件目录(位于 `{network_dir}/bkn/`) 73 - validate 结果 74 - **root SKILL.md**(可选):在 BKN 目录根添加 `{network_dir}/SKILL.md`(与 `network.bkn` 同级),包含简短概述 + 索引表(object | path | relation | path | action | path),方便 agent 定位 `.bkn` 文件 75 76 ## 校验清单 77 78 生成后必须逐项检查: 79 80 - [ ] `network.bkn` 在根目录;frontmatter 符合规范(`type: knowledge_network`、`id`、`name`) 81 - [ ] 每个 `.bkn` 有有效的 YAML frontmatter(`type`、`id`、`name`) 82 - [ ] 文件放在与 `type` 匹配的文件夹下(`object_types/`、`relation_types/`、`action_types/`、`concept_groups/`);文件名 = `{id}.bkn` 83 - [ ] Network Overview 列出**所有**定义 ID — 无遗漏/多余 84 - [ ] 关系/动作引用已存在的 object-type ID;概念分组只列出已存在的对象 85 - [ ] **关系映射属性存在性**:所有 relation_types 的 Mapping Rules 中 Source/Target Property 在对应对象 Data Properties 中存在 86 - [ ] **动作参数属性存在性**:所有 action_types 的 Parameter Binding 中引用的属性在 Bound Object 的 Data Properties 中存在 87 - [ ] Parameter binding 的 `Source` ∈ `property` | `input` | `const`;YAML 块(如 trigger)可解析 88 - [ ] 标题层级无跳跃(`#` → `##` → `###` → `####`) 89 - [ ] 业务规则只在允许位置(见 `references/SPECIFICATION.llm.md` 的"业务规则放置"章节) 90 91 ## 数据类型选型 92 93 生成 Data Properties 时,Type 必须从规范合法类型中选择: 94 95 | 语义 | 选型 | 96 |------|------| 97 | 数量、金额、单价 | `decimal` | 98 | 计数、序号、版本号 | `integer` | 99 | 比率、百分比 | `float` | 100 101 **禁止使用 `number`**——平台不认识此类型,推送时报 `InvalidParameter`。 102 103 ## Action Type 选型 104 105 Bound Object 表的 Action Type 列只允许三个值: 106 107 | 值 | 语义 | 108 |------|------| 109 | `add` | 新增(不可写 `create`,是后端保留字) | 110 | `modify` | 修改(不可写 `update`,是后端保留字) | 111 | `delete` | 删除 | 112 113 当前平台版本不支持 `query`。如有只读操作需求,暂用 `modify` 并在 Description 标注。 114 115 ## 资源索引 116 117 | 类型 | 规范章节 | 模板 | 示例 | 118 |------|----------|------|------| 119 | Network | `knowledge_network` | `assets/templates/network_type.bkn.template` | `references/examples/k8s-network/network.bkn` | 120 | Object | `object_type` | `assets/templates/object_type.bkn.template` | `references/examples/k8s-network/object_types/pod.bkn` | 121 | Relation | `relation_type` | `assets/templates/relation_type.bkn.template` | `references/examples/k8s-network/relation_types/pod_belongs_node.bkn` | 122 | Action | `action_type` | `assets/templates/action_type.bkn.template` | `references/examples/k8s-network/action_types/restart_pod.bkn` | 123 | Concept group | `concept_group` | `assets/templates/concept_group.bkn.template` | `references/examples/k8s-network/concept_groups/k8s.bkn` | 124 125 完整规范:`references/SPECIFICATION.llm.md`。 126 127 ## 约束 128 129 - 本 skill 不做建模决策,只做清单 → 文件的转换 130 - Description 不写映射猜测信息 131 - 不写任何占位符文本("待绑定"/"待确认"/"TBD"等),占位值会被平台当作真实 ID 解析
openbkn-ai/bkn-engineering/tree/main/skills/bkn-creator/internal/bkn-draft commit 5237fd3467
Frequently asked questions How do I install the Bkn Draft skill? Run npx skillmds@latest add openbkn-ai/bkn-draft in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Bkn Draft skill do? 将确认后的建模清单生成 .bkn 文件。 It is listed under Coding & Dev Tools on SkillMD.
Is Bkn Draft safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Bkn Draft? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Bkn Draft free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Bkn Draft? openbkn-ai (@openbkn-ai) published this skill. Their other Agent Skills are listed on their SkillMD profile.