Install
openclaw skills install @51comic/code-to-skill建筑规范→AI Skill转换器。将建筑设计规范、国家标准(GB)、行业规程、法律法规转化为可查询的条文系统——按触发条件索引每一条条文,保留应/宜/可/不应/不得的法律效力措辞原文,提取数据表格为结构化JSON,绘制跨规范引用关系图。输入'把这个规范做成skill'/'查这条规范'/'建立规范知识库'即可使用。面向中国建筑设计规范(GB 50xxx系列)优化,也可适配任何地区的技术法规。需先安装book-to-skill作为PDF提取引擎。| Convert building codes/GB standards/regulations into structured queryable skills — indexing clauses by trigger, preserving mandatory-force wording, extracting tables as JSON. Use when user says 'code to skill' or '把规范做成skill'.
openclaw skills install @51comic/code-to-skill将建筑设计规范、国家标准(GB)、行业规程、法律法规转化为结构化的、可查询的 AI Skill。
Transforms building codes and regulations into queriable rule systems — indexing every clause by its trigger conditions and preserving mandatory-force wording exactly.
书需要提炼(Distill),但规范需要索引(Index)。
建筑规范不是叙事文本。它是一套以编号条文构成的决策规则系统:"当条件 X 满足时,应/宜/可/不应/不得执行 Y",每个条文有明确的法律效力层级。这个 Skill 的工作不是概括这些规则,而是让每一条条文都能按使用场景被检索到。
Books need distillation; codes need indexing.
A building code is not a narrative. It is a system of numbered clauses, each acting as a decision rule: "When condition X, requirement Y applies, with force Z."
三条不可违反的规则 · Three Inviolable Rules:
与 book-to-skill 的对比:
| book-to-skill | code-to-skill | |
|---|---|---|
| 输入 · Input | 书籍、论文、文档 | 建筑规范、GB 标准、法规 |
| 核心动作 · Action | 蒸馏 → 概括 | 索引 → 映射 |
| 措辞规则 · Wording | 不复制原文 | 不改写条文 |
| 输出格式 · Output | chapters/chNN-*.md(摘要) | clauses/chNN-*.md(原文 + 元数据) |
| 数据输出 · Data | cheatsheet.md(可视化) | tables/*.json(结构化,可查询) |
| 导航方式 · Navigation | patterns.md + 词汇表 | mandatory-map.md + cross-refs.md |
触发: 用户提供规范 PDF 路径 动作: 执行全部步骤(Step 0–10) 产物: 完整 Skill:SKILL.md + clauses/ + tables/ + cross-refs.md + mandatory-map.md
触发: 用户说 "analyze"、"先分析" 或 "I want to review before generating" 动作: 执行 Step 0–4,生成提取报告后停止 产物: 分析报告,供用户审查后决定是否继续
触发: 用户已有规范 Skill,要添加地方标准补充或新版本 动作: 执行 Step 0–2,然后合并新条文/表格 产物: 更新后的已有 Skill
如果没有提供参数,停止并回复:
"code-to-skill requires a regulation PDF path. Usage:
code-to-skill <path-to-regulation.pdf> [regulation-slug]"
全过程:
gb-50016-2018),将其视为 REGULATION_SLUG。提取前与用户确认:
"确认以下信息:
- 规范编号:如 GB 50016-2014(2018 修订版)
- 是否包含条文说明:PDF 是否有条文说明部分?(条文说明解释了立法意图,Skill 中会单独标注为非强制性参考)
- 目标使用场景:设计阶段查阅?校审阶段核对?施工阶段参考?"
记录为:REGULATION_ID、HAS_EXPLANATORY_NOTES、USE_CASE。
本步骤与兄弟 skill book-to-skill 共享 scripts/extract.py 引擎。
操作流程:
先用 glob 或 find 工具在以下路径查找 extract.py,找到后向用户确认路径再执行:
skills/book-to-skill/scripts/extract.py(workspace 内)~/.openclaw/workspace/*/skills/book-to-skill/scripts/extract.py~/.agents/skills/book-to-skill/scripts/extract.py~/.claude/skills/book-to-skill/scripts/extract.py如果找不到,提示用户:"请先安装 book-to-skill:openclaw skills install book-to-skill",然后停止。
找到后用以下命令提取(规范几乎总是 text 模式):
python3 <extract.py路径> <规范PDF路径> --mode text --install-missing ask
产出 <tempdir>/book_skill_work/full_text.txt 和 metadata.json。读 metadata.json 查看提取结果。
展示以下报告:
📋 规范编号: <REGULATION_ID>
📄 页数: ~<N> | 字数: ~<N> | 总 Token: ~<N>K
📊 结构预估:
检测到的条文(编号条款): ~<N> 条
数据表格: ~<N> 个
引用其他规范: ~<N> 个
💰 Token 成本预估:
输入(读取 + 提示): ~<N>K tokens
输出(生成文件): ~<N>K tokens
合计: ~<N>K tokens
📁 将生成的文件:
SKILL.md + clause-index.md + <N> 个条文文件 + <N> 个表格文件 +
mandatory-map.md + cross-refs.md + terminology.md
➡ 是否开始全量转换?(输入 "analyze only" 可先预览分析报告)
等待用户确认后再继续。
# 查看全文大小
wc -w "$FULL_TEXT_PATH"
# 查找条文编号模式
grep -n -E "^[0-9]+\.[0-9]+\.[0-9]+" "$FULL_TEXT_PATH" | head -60
# 按行范围提取某一段
sed -n '<start>,<end>p' "$FULL_TEXT_PATH"
# 确认表格是否存在
grep -c -i "表[0-9]" "$FULL_TEXT_PATH"
中国规范常用的编号格式:3.2.1、第3.2.1条。
读取 full_text.txt 前 8,000 个字符,识别:
然后扫描全文:
# 提取所有条文编号
grep -oP '^\s*\d+\.\d+\.\d+' "$FULL_TEXT_PATH" | sort -uV > /tmp/clause_numbers.txt
wc -l /tmp/clause_numbers.txt
# 识别所有数据表格
grep -oP '表\d+[\.\-]\d+' "$FULL_TEXT_PATH" | sort -uV > /tmp/table_ids.txt
wc -l /tmp/table_ids.txt
# 识别对其他 GB 标准的引用
grep -oP 'GB\s*\d{4,6}' "$FULL_TEXT_PATH" | sort -u > /tmp/cross_references.txt
wc -l /tmp/cross_references.txt
如果是 "仅分析" 模式: 在此时输出分析报告并停止。
询问用户:
"规范包含 条条文和 个数据表。要全量处理还是只做核心章节?
- 全量 — 所有条文 + 所有表格 + 条文说明
- 核心章节 — 只看你常用的几章(请指定章节号)
- 按主题筛选 — 只看某一类内容"
记录为 SCOPE。
从规范编号导出 slug:{前缀}-{编号}-{年份} → 如 gb-50016-2018。
对于 OpenClaw:<workspace>/skills/<REGULATION_SLUG>/。
如果目标已存在,询问:更新/覆盖/重命名。
mkdir -p "$SKILLS_HOME/<REGULATION_SLUG>/clauses"
mkdir -p "$SKILLS_HOME/<REGULATION_SLUG>/tables"
⚠️ 关键:必须保留原文措辞,绝不改写。这是 code-to-skill 与 book-to-skill 最核心的区别。
对 Step 3 中识别的每个章节,读取 full_text.txt 对应段落,创建 clauses/ch<NN>-<描述>.md:
# <章节号> <章节标题>
---
## 条文 <X.X.X> <简短主题>
### 原文
> <完整原文 — 逐字复制,不改写。
> 保留所有 应/宜/可/不应/不得。
> 如有子项 (1. 2. 3.),保留编号。>
### 强制等级
- [ ] 应 (Shall — 强制性要求)
- [ ] 宜 (Should — 推荐性要求)
- [ ] 可 (May — 允许性规定)
- [ ] 不应 (Shall Not — 禁止性要求)
- [ ] 不得 (Must Not — 绝对禁止)
### 触发条件
<条件 → 结果逻辑,用白话解释>
### 关联条文
- 本条 → <条文编号> (<关联关系>)
- 关联规范:<GB xxxx> §<章节>
### 关联数据
- 数据来源:<表号> → [查看数据](../tables/<表号>.md)
### 搜索关键词
`<关键词1>` `<关键词2>` `<关键词3>`
| 关键词 | 标注 | 含义 |
|---|---|---|
应 | 应 (Shall) | 强制性要求,违反=不合规 |
不应 | 不应 (Shall Not) | 强制性禁止 |
不得 | 不得 (Must Not) | 绝对禁止(最强等级) |
严禁 | 不得 (Must Not) | 绝对禁止 |
必须 | 应 (Shall) | 强制性要求 |
宜 | 宜 (Should) | 推荐,但不强制 |
不宜 | 不宜 (Should Not) | 不推荐,但不禁止 |
可 | 可 (May) | 允许,可选择 |
如果一个条文包含多个子项且强制等级不同,需要对每个子项分别标注。
如果 HAS_EXPLANATORY_NOTES=true,在条文后追加:
### 条文说明
> <条文说明 — 解释立法意图。⚠️ 本部分不具有法律强制力。>
tables/*.md + tables/*.json对 Step 3 中识别的每个数据表:
Markdown 格式 (tables/<表号>.md) — 供 Agent 阅读:
# <表号>: <表格描述>
<!-- 来源: <REGULATION_ID> §<章节> -->
| <列1> | <列2> | ... |
|-------|-------|-----|
| ... | ... | ... |
## 使用说明
- **适用条件**:在什么设计场景下使用此表
- **引用该表的条文**:3.2.1, 3.2.5, ...
- **注意事项**:表格附注和注意事项
JSON 格式 (tables/<表号>.json) — 供程序化查询:
{
"table_id": "<表号>",
"description": "<表格描述>",
"source": "<REGULATION_ID> §<章节>",
"columns": ["列1", "列2"],
"rows": [{"列1": "值", "列2": "值"}],
"referenced_by": ["3.2.1", "3.2.5"],
"notes": ["附注1"],
"units": {"列1": "m", "列2": "h"}
}
cross-refs.md# 交叉引用图 — <REGULATION_ID>
## 内部交叉引用
- 3.2.1 → 3.2.5(耐火等级补充规定)
- 5.5.21 → 5.5.17(疏散宽度与疏散人数联动)
...
## 外部交叉引用
| 本规范条文 | 引用规范 | 引用章节 | 关联关系 |
|----------|---------|---------|---------|
| 3.4.1 | GB 50045 | §6 | 高层建筑叠加 |
| 5.5.21 | GB 50084 | §7.1 | 喷淋联动 |
...
## 入站引用(可选)
| 外部规范 | 外部章节 | 引用了本规范哪条 |
...
⚠️ Token 限制:保持在 4,000 tokens 以内。
生成 $SKILLS_HOME/<REGULATION_SLUG>/SKILL.md:
---
name: <regulation-slug>
description: "规范: <REGULATION_ID> — <标题>。按条件查询条文、查阅数据表格、检查跨规范引用关系。"
---
# <REGULATION_ID>
**发布机关**: <发布机关> | **版本**: <年份> | **条文**: ~<N> | **数据表**: <N>
## 如何使用
- 不传参 → 加载规范总纲和强制性等级分布
- 传关键词如 "防火间距"、"疏散宽度" → 匹配条文并展示原文
- 传条文编号如 "5.5.21" → 直接加载该条 + 关联数据表
- "有哪些章节?" → 浏览完整条文索引
- "查表格" → 浏览所有数据表
Agent 每次回答会返回:
1. 条文**原文**(应/宜/可法律效力措辞完整保留)
2. 关联数据表
3. 关联的其他规范条文
---
## 条文索引
| 条文编号 | 主题 | 强制等级 | 触发关键词 |
|---------|------|:---:|---------|
| [3.1.1](clauses/ch03.md#条文-311) | 适用范围 | 应 | `适用范围` `总则` |
...
---
## 章节概览
| 章节 | 内容 | 条文数 | 数据表 |
|------|------|:---:|:---:|
| [1 总则](clauses/ch01-scope.md) | 适用范围和基本原则 | <N> | 0 |
| [2 术语](clauses/ch02-terms.md) | 关键术语定义 | <N> | 0 |
...
---
## 强制性等级分布
| 类型 | 数量 | 说明 |
|------|:---:|------|
| 🔴 应/必须 (Shall) | <N> | 违反 = 不合规 |
| 🟠 不应/不得 (Shall Not) | <N> | 违反 = 不合规 |
| 🟡 宜 (Should) | <N> | 推荐,非强制 |
| 🟢 可 (May) | <N> | 允许项 |
---
## 数据表索引
| 表号 | 描述 | 文件 |
|------|------|------|
| 表3.2.1 | 厂房耐火等级 | [JSON](tables/3.2.1.json) / [MD](tables/3.2.1.md) |
...
---
## 关联规范
- GB <编号> — <标题>(<N> 处引用)
...
---
## ⚠️ 重要提示
1. **条文原文不可改写** — 本 Skill 中的条文均为原文引用,法律效力措辞(应/宜/可/不应/不得)完整保留
2. **条文说明为非强制性参考** — 标注为「条文说明」的内容解释了立法意图,但本身不具有法律强制力
3. **版本差异** — 本 Skill 基于 <REGULATION_ID> 版本生成。如有修订版颁布,应重新生成
4. **地方标准补充** — 本 Skill 仅包含国家标准。地方标准可能有更严格要求,需另行补充
5. **不替代专业判断** — 本 Skill 是规范查阅工具,不能替代注册建筑师/工程师的专业判断
---
## 文件清单
- [clause-index.md](clause-index.md) — 完整条文编号索引
- [clauses/](clauses/) — 按章节分组的条文原文
- [tables/](tables/) — 结构化数据表(Markdown + JSON)
- [cross-refs.md](cross-refs.md) — 跨规范引用关系图
- [mandatory-map.md](mandatory-map.md) — 法律效力矩阵
- [terminology.md](terminology.md) — 规范术语定义
找到 book-to-skill skill 目录下的 tools/scan_generated_skill.py,确认路径后执行:
python3 <book-to-skill目录>/tools/scan_generated_skill.py <生成的规范skill目录>
逐项检查:
full_text.txt 原文逐字对比。tables/ 目录中均存在。如发现问题,先修正。严重问题(强制等级标注错误)→ 停止并请用户审查。
清理提取临时文件(通过 exec 或文件工具删除 <tempdir>/book_skill_work/):
rm -rf /tmp/book_skill_work
输出报告:
✅ 规范 Skill 已创建: $SKILLS_HOME/<REGULATION_SLUG>/
📋 规范编号: <REGULATION_ID>
📄 页数: ~<N> | 条文: <N> 条 | 数据表: <N> 个
已生成文件:
SKILL.md — 主索引 + 强制性等级分布
clause-index.md — 完整条文编号索引
clauses/ — <N> 个条文文件(原文保留)
tables/ — <N> 个数据表(.md + .json)
cross-refs.md — 交叉引用关系图
mandatory-map.md — 法律效力矩阵
terminology.md — 规范术语定义
──────────────────────────────────────────
总 Token 量: ~<N> tokens(条文按需加载)
使用方法:
问 "<REGULATION_SLUG>" → 加载规范总纲
问 "<REGULATION_SLUG> 防火间距" → 查找并展示相关条文
问 "<REGULATION_SLUG> 5.5.21" → 加载指定条文 + 关联数据表
问 "<REGULATION_SLUG> 有什么数据表?" → 浏览所有数据表
当需要对已有规范 Skill 做补充时:
先读取 SKILL.md 和 cross-refs.md,了解现状。
supplements/<地方标准编号>.md,列出差异条文version-history.md 中记录版本变化| 共享资源 | 路径 |
|---|---|
| 文本提取引擎 | skills/book-to-skill/scripts/extract.py |
| 安全扫描工具 | skills/book-to-skill/tools/scan_generated_skill.py |
| Python 引擎 | skills/book-to-skill/book_to_skill/ |
两个 skill 共存于 workspace 中,互不修改。提取引擎的搜索路径覆盖两个位置。