From bb-spec-workflow
Reverse-spec-ification for onboarding. When the target project has no .bb-spec/docs/spec/INDEX.md, read existing code and docs and distill the already-enforced implicit conventions into a set of ≤100-line spec documents, in the exact directory and index structure /spec uses. Split large projects into parallel subagents by functional area. TRIGGER — /init / reverse-generate specs for an existing project / document existing conventions / onboard a project to the bb-spec workflow. | 项目初始化反向 spec 化。当目标项目还没有 `.bb-spec/docs/spec/INDEX.md` 时,阅读现存代码与文档,把"已经在执行的隐式规范"沉淀为一组 ≤ 100 行的 spec 文档,纳入与 `/spec` 完全一致的目录与索引结构。庞大项目按独立功能区拆 subagent 并发提取。常见触发:用户输入 `/init`、"给现有项目反向生成 spec"、"把现有规范文档化"、"项目要接入 bb-spec 工作流"。
How this skill is triggered — by the user, by Claude, or both
Slash command
/bb-spec-workflow:initThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`/spec` 从对话正向产出规则;`/init` **从已有代码与文档反向提炼规则**。落点完全对齐 `/spec`:同一份 `INDEX.md`、同一套 frontmatter、同一份 ≤ 100 行的"一文一规则"格式,使 `/plan`、`/exec`、`/revise` 可直接接力。
/spec 从对话正向产出规则;/init 从已有代码与文档反向提炼规则。落点完全对齐 /spec:同一份 INDEX.md、同一套 frontmatter、同一份 ≤ 100 行的"一文一规则"格式,使 /plan、/exec、/revise 可直接接力。
name + description)、路径 ${DOCS_DIR}/spec/<分区>/<name>.md、按分区分组的 INDEX.md——任何不一致都会破坏后续 /plan 闭环来源:file:line,无来源不准落盘,禁凭空抽象/spec)cat .bb-spec.yaml 2>/dev/null 取 base_dir(缺省 .bb-spec);${DOCS_DIR} = <base_dir>/docs,spec 目录即 ${DOCS_DIR}/spec/。
ls ${DOCS_DIR}/spec/INDEX.md 2>/dev/null:
跳过:告知"已有 INDEX.md,未做任何改动"并退出增量补全:读完现有 INDEX.md + 全部已有 spec 后,仅提炼"既有未覆盖的规则",与既有文档互不重叠全量重做:先 mv ${DOCS_DIR}/spec ${DOCS_DIR}/spec.bak.<时间戳> 备份再走全流程,过程中可参考 .bak主 agent 自做,产出"分区清单候选",不下钻代码细节:
ls、根目录 README* / CLAUDE.md / docs/ / ARCHITECTURE.md / CONTRIBUTING.mdpackage.json / go.mod / pyproject.toml / Cargo.toml / pom.xml / Dockerfile / *.tf 等codegraph_status + codegraph_files <顶层目录>,否则 ls -la <主源码目录>git log --oneline -50 粗看历史里反复出现的模块名 / 主题词回显给用户:栈 / 主源码目录 / README 与 CLAUDE.md 提示的核心主题 / 已有显式文档清单(或"无")。
按优先级切分(同一项目可混用):
输出分区候选清单(分区名 + 一句话描述 + 大致涉及目录),并把横切关注点单列一区,用 AskUserQuestion 让用户选:确认 / 调整分区 / 合并 / 拆分
逐项自问,发现问题先调整再展示:
质检后展示最终分区,等"确认"再进步骤 4。
每分区派 1 个 Agent(subagent_type: bb-spec-workflow:rule-extractor,只读、禁写盘,模型由 agent 定义指定),同一条消息内并发发出。prompt 传入:
partition_name:分区名scan_scope:扫描范围(目录列表 / glob)project_stack:语言、框架(便于判断哪些是框架自带保证)existing_index:已有 spec INDEX.md 内容;无则"无既有 spec"提取任务、输出结构、五条筛选标准与禁止事项均由 agent 定义自包含。
降级:项目很小或用户在步骤 3 选"不拆",主 agent 读取插件 agents/rule-extractor.md 直接执行一份等价提取任务,跳过并发。
主 agent 收集所有 subagent 返回的候选清单:
file:line 互斥)不硬选,候选条目加 conflict: <描述>,进步骤 7 让用户裁决.md,套用模板(与 /spec 完全一致):---
name: <kebab-case,与文件名一致>
description: <≤ 80 字>
---
# <规则标题>
## 目的
<一句话>
## 逻辑
<3-10 行>
## 约束
<每条约束必须可测,且在「验收」里有对应项;禁止"健壮/友好/高性能"类无判定标准的表述。>
- <约束 1>
- <约束 2>
## 例子
<具体场景。结尾标注:来源:file:line[, file:line]>
## 验收
- [ ] <可测试验收项 1>
- [ ] <可测试验收项 2>
路径 ${DOCS_DIR}/spec/<分区>/<name>.md,强制按分区建子目录(与 /spec 一致):禁扁平放置(如 <分区>-<name>.md 或裸 <name>.md);分区即便只 1 条规则也建子目录,避免后续迁移;<分区> 用 kebab-case,与 INDEX.md 分组标题一一对应。
# Spec 索引
> 每条一行。读者先扫此页判断相关性,再打开具体文件。
## <分区 1>
- [name](path.md) — description
## <分区 2>
- ...
按分区分组,同分区字母序。若步骤 0 选"增量补全",在既有 INDEX.md 上追加新条目,不动既有条目。
落盘后主 agent 快速扫一遍:同一术语命名是否一致(用户 vs User vs Account)/ 约束是否互斥(A 说"超时 5s",B 说"超时 10s")/ 例子是否冲突。把发现的不一致 + 步骤 5 标注的代码冲突合成清单输出,让用户裁决——禁自作主张改任何一份 spec。
## /init 完成简报
- 模式:全新生成 / 增量补全 / 全量重做(已备份至 <bak 路径>)
- 分区:N 个(<逐项列出>)
- 派工:M 个 rule-extractor agent(并发) / 主 agent 直跑
- 产出:新增 K 条 spec(<分区>/<name> — <description>)
- 跳过候选:J 条(理由:框架自带保证 / 孤例 / 实现细节)
- 待用户裁决冲突:L 条(<一句话描述> — <file:line> vs <file:line>)
- 下一步:解决冲突后运行 `/plan` 基于这套 spec 生成实施计划;或 `/spec` 补本次未覆盖的新需求
/init 仅在"项目首次接入 bb-spec 工作流"或"用户主动要求批量反向梳理"时使用,不要当日常工具。单条新增 / 修订规则走 /spec。/init 跑完后,后续维护一律走 /spec(编辑既有文件 + 跨文档 review)。
npx claudepluginhub 0xbb2b/bb-spec --plugin bb-spec-workflowGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.