四层体系文档生成器
> 让一个不懂体系文件的中小老板,用一份配置,在 3 分钟内拿到一套四层齐套、术语一致、能直接拿去内审的体系文件骨架。
>
> 本文件所有 @scripts/...、@references/...、@templates/... 路径均相对技能根目录。
> 执行命令前先进入技能根目录(cd 到 SKILL.md 所在目录),或用绝对路径调用。
使用边界(先读)
- 本技能提供通用流程梳理方法与文档撰写工具,不提供认证、评审、备案,也不构成任何合规背书。
- 产出物是企业内部管理文件(质量手册 / 程序文件 / 作业指导书 / 记录清单),不代表通过任何标准或法规的符合性评价。
- 企业若需对外声明符合某项标准或法规,应自行确认适用版本与要求,并由具备资质的机构完成评价。
- 本技能不预置任何标准编号;需要写依据时由使用者自行填写,留空则封面不显示依据行。
你能产出什么
一份 process.yaml 配置 → 三件产物(命名:{文件编号}_{流程名}_{类型}_{版本}.xxx):
| 产物 | 内容 |
|---|---|
*_体系文件_A0.docx |
四层:第一章质量手册 / 第二章程序文件(步骤表·分支表·QC·异常)/ 第三章 SOP(系统操作规范 + 人工补录项)/ 第四章质量记录清单(系统字段配置)+ 附图 + 修订记录 |
*_系统字段清单_A0.xlsx |
主表=系统字段配置清单(取值来源着色:绿=自动/蓝=同步/黄=人工)+ 附表=人工补录表(仅系统采集不到的字段,带下拉验证与日期格式) |
*_流程图_A0.png |
岗位泳道图:每个岗位一条横向泳道(左侧标岗位名 + 职责),发起方泳道置顶,步骤框落在其岗位泳道内(框内「步骤号 + 段落名 + 动作要点」),跨泳道箭头表示任务移交,判断菱形的否支用红色虚线落回目标步骤或挂终止/跳转落点框。客户等外部方也是独立泳道,开始 / 结束落在同一条发起方泳道(开始标注「XX 发起」、结束标注「结果回到 XX」),闭环一眼可见;字体或依赖缺失时自动降级为 docx 内文字流程表 |
七条铁律(不可绕过)
- 事实不编(最高优先级):涉及岗位、系统、页面、字段、步骤内容、时限、下拉选项、
参照文件的,一律不许自行判断与生成。没问到的写__待确认__,由校对器拦下。
这是前五条成立的前提 —— 写得再合规,内容是假的也没用。详见下方"第 0 步"。 - 先校验后生成:29 条人工经验原则库(
@references/principles_README.md)是硬闸门,FAIL 即拒绝生成。禁止用--no-check跳关,除非用户明确要求只看排版草稿。 - 系统载体优先(P-09):留痕默认落在业务系统(CRM/OA/在线客服等),系统自动采集项(时间戳/操作人/单号/状态流转)禁止写成"由 XX 填写";线下纸质表单只承接系统采集不到的信息且须注明原因。线下留痕占比 > 30% 直接 FAIL。
- 访谈即真相源:所有业务内容只来自
interview_record.md(或用户逐条确认的答案),并记录src回溯编号。禁止编造客户真实业务数据、真实公司名、真实系统截图。 - 去 AI 感:产物措辞遵守 P-08 措辞禁忌(禁止"赋能/抓手/闭环/链路"等黑话;禁止"应及时跟进"类无量化动词)。
- 样张必审:生成后必须让用户打开三件产物实测(重点:docx 附图是否显示、页脚"第 X 页 / 共 Y 页"、xlsx 下拉与日期列),有问题逐项修,不得自称完成。
- 可以提议,不能默认:可以降低用户的回答成本(给选项让他挑),但不许替他做决定。提议必须显式呈现并等他确认。
- 闭环必须回到发起方(P-04-005):流程从谁开始,就回到谁结束。客户 / 供方 / 合作方只要发起或接收,就必须作为独立角色登记在
positions;
客户发起 → 结束标志是「客户收到答复 / 客户确认接受」,内部归档、系统结案只是留痕,不能当终点。
触发描述提到客户但角色表里没有客户 → 校验直接拦。
运行环境与依赖(首次使用先跑一次自检)
| 运行时 | 用途 | 缺失后果 |
|---|---|---|
Node ≥ 18 + docx + js-yaml |
原则校验、docx/xlsx 生成 | 硬阻断,无法产出 |
Python ≥ 3.9 + matplotlib |
流程图 PNG | 软降级,自动改为 docx 内文字流程表 |
| 中文字体(如 Noto Sans CJK / 微软雅黑) | PNG 中文渲染 | 软降级,同上 |
自检(在技能根目录执行):
node -e "const d=require('./scripts/_deps.js');d.need('docx');d.need('js-yaml');console.log('node deps ok')"
python -c "import matplotlib; print('mpl ok')"
> 不要用裸 node -e "require('docx')" 自检——它只查当前目录的 node_modules,
> 在全局安装的场景下会误报缺失。_deps.js 走的是与生成脚本完全一致的多路径探测。
缺失时安装(任选其一):
npm i -g docx js-yaml # 全局安装
npm i docx js-yaml && export NODE_PATH=$(npm root -g) # 本地安装后指定路径
pip install matplotlib
@scripts/_deps.js 已内置多路径探测:NODE_PATH → 全局 npm(Windows APPDATA / Linux、macOS 常见路径)→ ~/.workbuddy/binaries/node/workspace/node_modules → /usr/local/lib/node_modules。全找不到才报缺失并以退出码 3 终止,不会静默生成半成品。
工作流程
第 0 步:访谈采集(★ 硬性前置,不可跳过)
> 为什么必须先做这一步:实测发现,若跳过访谈直接写配置,AI 会自行"合理补全"
> 岗位名、系统名、页面名、栏位名、时限数值、下拉选项、参照文件。
> 这些内容写法全部合规,前 23 条原则一条都拦不住,但现场根本找不到。
> 产物交付即失效。所以访谈不是"建议先做",而是强制门禁。
照 @references/interview_03_执行清单.md 跑五轮,一次只问一个问题,答完并确认后才问下一个:
> 逐题制(v1.4.1 起,实测修正):禁止把多个问题列成清单一次性发出。
> 哪怕同一轮只有 3~5 个问题,也必须逐个提问、逐个澄清、逐个记录——
> 使用人回答一条,你确认一条(模糊就追问、答不上就给选项),然后才发下一题。
> 一次抛多个问题会导致:漏答、只答最后一题、答案互相污染。轮次(L0~L4)只控制
> 提问顺序与出口检查,不控制消息条数;执行清单里的 [ ] 勾选项是 AI 自己的
> 进度表,不是发给使用人的消息。
| 轮次 | 要拿到什么 | 出口标准 |
|---|---|---|
| L0 边界 | 发起点、发起岗位、触发渠道、结束点、交付物、结果回流 | 能说全"因 X 启动→Y 动手→做到 Z 算完→W 告知发起人" |
| L1 角色与系统 | 涉及哪些岗位、系统名称、有哪些页面、页面里有哪些栏位、系统自动带什么、必须人工录什么、参照文件清单 | 岗位 / 系统 / 页面三张白名单齐了 |
| L2 步骤逐条 | 有哪些工作步骤、每步谁做、每步做什么、时间要求、在哪操作、留痕落哪 | 步骤念得下来,每步五要素齐全 |
| L3 分支与异常 | 判断点与否支去向、上个月真实出过的异常、处置时限与升级条件、QC 点 | 每一步的意外都有去处 |
| L4 表单与归档 | 记录单据、保存期限、编号规则、下拉选项的实际取值 | 字段全部对得上系统 |
执行要点:
- 逐题提问:每条消息只含一个问题;对方回答后,先复述确认("我记的是:……对吗?"),再发下一题
- 用
@templates/interview_record.md承接答案;对方答不上来就留空,脚本会判为缺口 - 提问要给选项不要开放式(话术见
@references/interview_02_提问话术库.md) - 听到"跟进/处理/协调"必须追到具体动作;听到"一般是/大概是"必须追问到确定值
- 对方说"你们定就行" → 不许直接定,先给 2~4 个选项让他挑
访谈结束跑通过线检查:
python scripts/interview_lint.py <interview_record.md>
# 必答要素完成率必须 100%,缺一条就回去补问。低于放行线不许派生配置。
第 1 步:从访谈派生配置
python scripts/interview_derive.py <interview_record.md> -o process.yaml
- 未答字段自动落
__待确认__占位,不是默认值 - 已答字段自动带上
src: IR-<轮次>-<要素编号>,供后续溯源 - 派生完打开
process.yaml补齐余下的润色与 capture 取舍
> 只有在不方便走访谈流程的场合(内部练习、演示)才手写 process.yaml,
> 但必须在 meta.demo: true 显式承认内容为通用虚构,否则 P-10 会持续告警。
> 需要了解每个字段的含义时,随时对照 @templates/process.schema.yaml(v1.4),
> 模板内嵌全部字段说明与原则编号锚点,照注释写即可,不要自创字段。
第 2 步:补齐润色区段
打开派生的 process.yaml,补两处只有 AI 能补、且本就该 AI 补的内容
(这两处是文字润色,不涉及事实,不会违反 P-10):
manual(第一章质量手册:质量方针、质量目标、适用范围的规范表述)sop(第三章执行指引)与capture取值来源的最终取舍
> ⚠️ 补写时仍须遵守 P-08 措辞禁忌(禁止赋能/抓手/闭环/链路等黑话)。
> 若发现自己正在往 steps / positions / systems / forms 里加新的事实
> ——停下,那是第 0 步没访谈到位,回去补问。
第 3 步:校验
node scripts/check_principles.js <process.yaml>
- 退出码 0 且
0 FAIL才能进下一步;WARN 不阻断但要在交付时告知用户。 - FAIL 报告含原则编号 + 位置 + 命中原文,按编号查
@references/principles_README.md对应条文修正。 - ★ 改 FAIL 的唯一正确方式是回到源头:教科书式补写会被下一条原则再拦一次。
P-10-*命中 → 回第 0 步补访谈;P-01~09命中 → 按条文规范写法。
第 4 步:生成(一条命令)
node scripts/build_all.js <process.yaml>
编排器自动:校验 → xlsx → PNG → docx → 计时(指标 ≤ 180s)。产物落在配置同级 output/ 目录,可用 -d 改路径。
Python 解释器自动探测(优先 managed venv);可用 --python <路径> 或环境变量 S1_PYTHON 指定。matplotlib/中文字体缺失时流程图自动降级,不视为失败。
第 5 步:样张评审(交付前必做)
逐项向用户确认,禁止批量问"还有没有问题":
- docx:四层章节齐全?目录页码?页眉页脚?附图显示?表格列宽?
- xlsx:主表取值来源着色?附表下拉箭头?日期列格式?
- PNG:泳道是否齐全(一个岗位一条,顺序与
positions一致)?每个步骤框是否落在其role对应的泳道里?跨岗位流转有无箭头?左侧岗位职责是否印出?否支虚线是否指到对的步骤(回流)或写明落点(终止/跳转)? - 责任人写法口径(P-08-002):责任人只在 role 列体现、操作内容不重述岗位名——用户是否认可?
- ★ 事实核对(本次新增,最关键):让用户拿产物对照自己的现场,逐项确认:
- 系统名、页面名、栏位名 —— 在他那里真的存在吗?
- 时限数值 —— 他们做得到吗?
- 下拉选项、编号规则、参照文件(模板/手册)—— 真的有这些东西吗?
> 核验发现对不上的,回第 0 步补访谈,而不是在配置里直接改。
> 直接改等于绕过事实来源,下次重生成又会回到原样。
第 6 步:校验器自查(可选,建议首次使用时做一次)
本包不附带示例与反例用例——避免把演示数据误当成真实模板套用。要确认校验器真的在拦,用你自己的配置做一次"故意写错"的自查:
- 复制一份
process.yaml - 任选一种典型错误改进去:①判断分支只写"是"支、不写"否"支去向;②整条流程全部要求人工填纸质表;③把某处
system/page改成现场根本不存在的名字 - 跑
node scripts/check_principles.js <该文件>,必须拿到 FAIL 且带原则编号
若明显写错却仍是 0 FAIL,说明配置没被真正读到——先修路径,别急着生成。
目录索引
scripts/ 工具链(interview_lint / interview_derive / check_principles /
build_all / build_doc / build_form / build_flowchart)
templates/ process.schema.yaml(v1.4,含 src 来源标记与 pages 页面白名单)
interview_record.md(访谈记录,★ 真相源)
references/ principles_01~10 · 29 条原则库(10 维度,含 P-10 事实来源)
principles_README.md(原则库索引)
interview_00~03 · 访谈体系(总纲 · 要素清单 34 项 · 话术库 · 执行清单)
> 平台要求两级目录结构(根目录 / 二级目录 / 文件),故 @references/ 下文件按
> interview_ / principles_ 前缀平铺,不设子目录。
失败处理
| 现象 | 处理 |
|---|---|
MODULE_NOT_FOUND: docx/js-yaml |
脚本内置 _deps.js 多路径探测;仍失败则提示用户安装到全局 npm |
| 流程图中文乱码/方块 | 字体缺失,已自动降级为文字流程表,告知用户不影响内容 |
| 校验 FAIL | 不生成、不妥协,按原则编号逐条修配置 |
P-10-001 残留 __待确认__ |
回去补访谈,不允许把占位符改成"看起来合理"的值 |
P-10-002 事实字段缺 src |
补写来源编号 IR-<轮次>-<要素编号>;拿不出来源 = 内容是你编的,删掉重问 |
P-10-003 通用默认值无来源 |
命中"CRM 系统/客服专员/4 个工作小时内"等默认词,须经受访人确认或标注 src |
P-10-004/005 页面/文件不在白名单 |
补 systems[].pages 或 manual.references,或承认该内容不存在并改掉 |
| 用户要求"先出个大概看看" | 可用 --no-check --no-flow 出排版草稿,但必须明示"未过原则校验,不可交付",且草稿须保留 __待确认__ 高亮 |
| 用户答不上某要素 | 留空,由 interview_lint.py 记为缺口。禁止替他填 |