@double-codeing/flow2spec
Advanced tools
| /** | ||
| * Cursor 规则为 .mdc + frontmatter globs、alwaysApply。 | ||
| * Claude Code 仅识别 .claude/rules 下扩展名为 .md 的规则文件,路径范围用 paths(见 Claude Code 文档:Organize rules with .claude/rules)。 | ||
| */ | ||
| /** | ||
| * @param {string} mdcSource 完整 .mdc 文件正文 | ||
| * @returns {string} 写入 `.claude/rules/*.md` 的正文 | ||
| */ | ||
| function adaptRuleMdcToClaudeMd(mdcSource) { | ||
| let out = mdcSource; | ||
| // YAML:globs → paths(与 Cursor 语义等价) | ||
| out = out.replace(/^globs:/m, "paths:"); | ||
| // Claude Code 不按 Cursor 的 alwaysApply 解析;无 paths 的规则与会话同载 | ||
| out = out.replace(/^\s*alwaysApply:\s*(true|false)\s*\r?\n/m, ""); | ||
| // 正文与示例中的 .mdc 引用改为 .md,与落盘扩展名一致 | ||
| out = out.replace(/\.mdc\b/g, ".md"); | ||
| return out; | ||
| } | ||
| /** | ||
| * @param {string} agentRoot AGENTS[id].root,如 `.claude` | ||
| */ | ||
| function shouldWriteClaudeStyleRules(agentRoot) { | ||
| return agentRoot === ".claude"; | ||
| } | ||
| module.exports = { adaptRuleMdcToClaudeMd, shouldWriteClaudeStyleRules }; |
| --- | ||
| name: f2s-doc-add | ||
| description: 工作中把已落地能力解析进上下文(与 f2s-doc-arch 分工不同):多文件路径→适度深度解析→stock-docs 初稿→终稿→f2s-ctx-build 产出 Rules、Skills、docs-index;触发:f2s-doc-add、已有能力进知识库、多文件生成上下文 | ||
| --- | ||
| > **「配置根」**:当前 agent 对应的 AI 工具配置目录(`flow2spec init` 写入,常见 **`.cursor/`**、**`.claude/`**、**`.codex/`**)。下文 **`配置根/...`** 指该目录下的相对路径;**路径默认相对「配置根的父目录」**(即业务仓库根),除非用户给出绝对路径。 | ||
| # f2s-doc-add:多文件聚合 → 初稿 → 终稿 → Rules / Skills / 索引 | ||
| ## 使用时机(何时才用本技能) | ||
| 本技能面向**日常开发/维护中**这一场景:**某条能力或功能已经在代码里做好**(或已有对应说明分散在多个文件),你希望把它**系统化解析并写入 AI 可用的上下文**(`stock-docs` 终稿 + Rules + Skills + `docs-index`),便于后续对话与协作**照着知识库走**。 | ||
| - **典型**:补文档、做模块交接、把「已实现但只在代码里」的约定沉淀成可加载规则与技能。 | ||
| - **非典型(勿用本技能当首选)**:从零画整体架构蓝图、只要一份架构初稿——请用 **f2s-doc-arch** 及后续 **f2s-doc-final** / **f2s-ctx-build** 按步执行。 | ||
| --- | ||
| ## 与 f2s-doc-arch 的分工(必读) | ||
| | 技能 | 典型入口 | 产出侧重 | | ||
| |------|----------|----------| | ||
| | **f2s-doc-arch** | **一段说明**、**单个文档路径**,或确认后的**无参扫描** | **项目/模块架构说明初稿**(默认 `架构说明_初稿.md` 等),不写终稿、不直接跑 ctx-build | | ||
| | **f2s-doc-add**(本技能) | **工作中**为**已做好的能力**列出 **≥1 个相关文件路径**(实现、配置、说明等),多路径聚合 | 把该能力**解析进上下文**:**`stock-docs` 初稿** → **终稿** → **f2s-ctx-build** 生成 **Rules / Skills / docs-index** | | ||
| **不要混用**:仅要「架构说明初稿」、入口是文字或单文档时,用 **f2s-doc-arch**,**不要**用本技能代替。仅当用户明确要为**已存在实现的一批文件**做「进知识库 / 进上下文」的整条链时,用本技能。 | ||
| --- | ||
| 本技能在流程上衔接 **f2s-doc-final** 与 **f2s-ctx-build** 的约定(**不包含** f2s-doc-arch 的架构专述步骤):用户一次性提供**多个**本地文件路径,Agent **适度深度**阅读后先写 **`stock-docs` 初稿**,再在同一轮(或用户确认后的连续执行中)将初稿规范为 **终稿**,最后按 **`配置根/skills/f2s-ctx-build/SKILL.md`** 生成 **Rules、Skills、`docs-index.md`**(并按需更新 **`main.mdc`**)。 | ||
| **与 f2s-doc-final / f2s-ctx-build 的关系**:终稿形态、链接、`sourceDoc` 等**以 `f2s-doc-final`、`f2s-ctx-build` 原文为准**;本文件只规定**多源入参、读源策略、与 f2s-doc-arch 的边界**。 | ||
| --- | ||
| ## 入参 | ||
| | 参数 | 必填 | 说明 | | ||
| |------|------|------| | ||
| | **文件路径列表** | **是** | 一个或多个路径:空格/换行分隔,或对话中 `@` 多文件。支持 `.md`、`.txt`、常见源码与配置(`.js`、`.ts`、`.json`、`.yaml` 等)。路径相对**配置根的父目录**,或绝对路径。 | | ||
| | **方案名**(可选) | 否 | 用于 `<方案名>_初稿.md`、`<方案名>_终稿.md` 及后续 **Rule/Skill 主题命名**;不传则从路径共性、目录名、`package.json` 的 `name` 等推断,并做**合法文件名**(去非法字符、避免空名)。 | | ||
| | **初稿输出路径**(可选) | 否 | 默认 **`配置根/stock-docs/<方案名>_初稿.md`**。 | | ||
| | **终稿输出路径**(可选) | 否 | 默认 **`配置根/stock-docs/<方案名>_终稿.md`**。 | | ||
| 若用户**未给出任何可读路径**,**中止**并请其至少提供一条路径。 | ||
| --- | ||
| ## 与现有知识库重合时的处理(重要) | ||
| 执行前与读源后,应用 **`配置根/docs-index.md`**、**`配置根/rules/`**、**`配置根/skills/`** 及 **`配置根/stock-docs/`** 做一次**对照**(必要时结合对话里已加载的 Rules/Skills 摘要): | ||
| | 情况 | 做法 | | ||
| |------|------| | ||
| | 用户给出的路径**本身就在** `stock-docs/`、`rules/`、`skills/` 内,且与当前任务**同一主题**(同一方案、同一模块说明) | **优先在原文件上直接修改**:合并重复段落、补全缺口、统一术语与链接,使单份文档或单条 Rule/Skill **自洽、合理**;**不要**仅为走流程再新建一套并行的 `_初稿.md` / `_终稿.md`,除非用户明确要求「另存新文件」。 | | ||
| | 知识库里**已有**描述同一能力的终稿 / Rule / Skill,而用户给的是**外围代码或其它 MD** | 以**既有知识库文件为锚点**:把新读到的信息**吸收进**对应终稿或专题 Rule/Skill(更新正文与 `generatedAt`),并同步 **`docs-index.md`** 中该行的「简要说明」等;避免 **docs-index** 出现多行指向实质重复的主题。 | | ||
| | **无重合**或确认为**全新主题** | 按默认路径新建 **`<方案名>_初稿.md`** → **`_终稿.md`**,再执行步骤 4 **新建或追加** Rule/Skill 与索引行(仍遵守 **f2s-ctx-build** 的「同一终稿只占一行」)。 | | ||
| **原则**:知识库里**已经写过**的说明,以**修订原文件**为主,保证上下文**不重复、不打架**;新建文件仅在有明确增量主题或用户指定新方案名时使用。 | ||
| --- | ||
| ## 步骤 0:准备 | ||
| 1. 确保 **`配置根/stock-docs/`** 存在(不存在则创建)。 | ||
| 2. 解析路径列表:去重、展开用户 `@` 的文件;**不存在的路径**在初稿「来源与缺口」中列出,**不中断**(除非全部无效则中止)。 | ||
| 3. **对照**上文「与现有知识库重合时的处理」:决定本轮产出是**更新既有路径**还是**新建** `<方案名>_初稿.md` / `_终稿.md`,并在回复中**一句话说明**本次选择理由。 | ||
| --- | ||
| ## 步骤 1:适度深度解析(读源策略) | ||
| 对每个文件**依次**读取(可用工具分批,避免单次过大): | ||
| | 情况 | 策略 | | ||
| |------|------| | ||
| | 文本/Markdown/常规源码,体量 **≤ 约 500 行** | 尽量**通读**全文。 | | ||
| | **更大** 或响应体过长 | **适度深度**:优先读 **文件头/尾**、**导出/类/接口定义**、**配置块**、**README 式章节标题**;代码可结合目录与符号性段落归纳,**禁止**假装已读未读部分。 | | ||
| | **二进制**或无法解码 | 跳过并在初稿注明「无法解析」。 | | ||
| | **多文件** | 归纳:**模块边界**、**重复出现的概念**、**依赖/调用关系**、与 **`配置根`** 约定相关的目录(若有)。 | | ||
| 解析目标:足够支撑一份**结构清楚、有主有次**的初稿,而非逐字抄录。 | ||
| --- | ||
| ## 步骤 2:生成初稿 | ||
| 1. 若已判定在**既有文件**上修订:可将「初稿」阶段体现为**该文件内的增补段落**或**同路径覆盖**(合并读源结论),不必机械新建 `_初稿.md`。否则写入 **默认** **`配置根/stock-docs/<方案名>_初稿.md`**(或用户指定的初稿路径)。 | ||
| 2. 初稿**无固定版式**,建议包含: | ||
| - **概述**(这批文件共同说明什么); | ||
| - **来源清单**(路径 + 每文件一句话作用 + 是否部分阅读); | ||
| - **分文件/分模块归纳**(适度深度解析的结论); | ||
| - **交叉关系**(配置、入口、数据流等); | ||
| - **待确认项**(读源时未覆盖或推断处)。 | ||
| 3. 文末可加一句:**「本初稿由 f2s-doc-add 根据用户所列文件聚合生成。」** | ||
| --- | ||
| ## 步骤 3:基于初稿生成终稿(对齐 f2s-doc-final) | ||
| 1. **读取** **`配置根/template/终稿模版.md`**(若存在)作为章节提示;**不强制逐条套用**,以初稿事实与逻辑为主。 | ||
| 2. 将初稿**提炼、归纳**为终稿风格 Markdown(参见 **`配置根/skills/f2s-doc-final/SKILL.md`** 流程一): | ||
| - **一级标题** = 方案名(可与 `<方案名>` 一致或略润色); | ||
| - **至少**包含二级标题:**核心概念**、**业务规则**、**关键流程**; | ||
| - 按需补充:状态与流转、接口/API、配置与错误、实现位置与对接方式等。 | ||
| 3. 写入 **默认** **`配置根/stock-docs/<方案名>_终稿.md`**(或用户指定的终稿路径);若本轮锚定**已有终稿路径**,则在**该文件上**按终稿结构整理保存,并保证 **`sourceDoc` 仍指向该路径**(步骤 4 中 Rule/Skill 链接与 frontmatter 与之一致)。 | ||
| 若用户要求「先审初稿再出终稿」,可在初稿保存后**暂停**并等待确认;用户确认后从**同一份初稿**继续执行步骤 3~4。 | ||
| --- | ||
| ## 步骤 4:基于终稿生成 Rules、Skills 与索引(对齐 f2s-ctx-build) | ||
| 以 **步骤 3 产出或修订后的终稿**(单一 `stock-docs` 下的 `.md` 文件)为 **`sourceDoc` 锚定文档**,执行 **`配置根/skills/f2s-ctx-build/SKILL.md`** 中的要求,包括但不限于: | ||
| - **拆解与分工**:篇幅长、多块独立内容时,拆成多条专题 Rule / 多个 Skill + 总览;否则可单 Rule + 单 Skill。 | ||
| - **文档路径与链接约定**(**必守**):Rule 正文链向源文档用 **`../stock-docs/<终稿文件名>.md`**;Skill 用 **`../../stock-docs/<终稿文件名>.md`**;`docs-index.md` 中该文档格用 **`stock-docs/<终稿文件名>.md`** 作为 href;每条 Rule/Skill 的 frontmatter **`sourceDoc`** 为 **`配置根/stock-docs/<终稿文件名>.md`**,并带 **`generatedAt`**(东八区 ISO 8601)。 | ||
| - **`main.mdc`**:按 f2s-ctx-build「3.0」判断是否更新模块一览/公共能力入口。 | ||
| - **`docs-index.md`**:同一终稿路径**只占一行**;若已存在则**更新**该行的 Rules、Skills、简要说明。 | ||
| **禁止**将 **`req-docs/`** 下的文件作为本技能链最终 `sourceDoc` 指向;终稿必须在 **`stock-docs/`**。 | ||
| --- | ||
| ## 输出与自检 | ||
| 完成后向用户说明: | ||
| 1. **初稿**(若单独落盘)、**终稿**的磁盘路径,或写明「本轮仅在既有 `xxx.md` / 某 Rule / 某 Skill 上修订」; | ||
| 2. **新建或更新**的 Rule、Skill 路径及 **`docs-index`** 是否已更新; | ||
| 3. 提醒:若 **`main.mdc`** 已改,需扫一眼渐进式读取约定是否仍连贯。 | ||
| **自检**:对照 **`f2s-ctx-build`** 技能末尾「完成后自检(路径必查)」五项,核对链接与 `sourceDoc`。 | ||
| --- | ||
| ## 约束与注意 | ||
| - **与知识库重合时**:已述内容见上文「与现有知识库重合时的处理」;**禁止**在已有同主题终稿/Rules/Skills 时仍机械新建平行文件导致重复索引。 | ||
| - **适度深度**是硬性要求:大文件不得虚构未读段落细节;不确定处写入待确认或终稿「(待补充)」。 | ||
| - **版权与敏感**:用户给出的路径可能含密钥或内网信息;写入 `stock-docs` 前**脱敏**或删去秘钥,并在初稿/终稿注明「已脱敏」若已处理。 | ||
| - 本技能**不替代**单独执行 **f2s-doc-pdf**(PDF 须先转 MD 再作为路径列表之一传入)。 |
+1
-1
@@ -29,3 +29,3 @@ #!/usr/bin/env node | ||
| init 会: | ||
| 1. 将 templates/ 下内容复制到各所选 agent 的配置根目录下的 rules、skills、template(及预建 stock-docs/、req-docs/) | ||
| 1. 将 templates/ 下内容复制到各所选 agent 的配置根目录下的 rules、skills、template(及预建 stock-docs/、req-docs/)。Claude Code(.claude/)下规则为 .md,frontmatter 路径键为 paths(由模板 .mdc 的 globs 自动转换);Cursor(.cursor/)下仍为 .mdc 与 globs。 | ||
| 2. 工作流说明位于 skills 各子目录的 SKILL.md;写入 .claude/.codex 时主要为统一存放规则、技能与模版,供对应工具按各自方式加载 | ||
@@ -32,0 +32,0 @@ |
+49
-43
@@ -7,12 +7,12 @@ # Flow2Spec 使用说明 | ||
| | 章节 | 内容 | | ||
| |------|------| | ||
| | [一、init](#一init-做了什么) | 写入目录与模板 | | ||
| | [二、目录约定](#二文档目录约定) | `stock-docs/` vs `req-docs/`;完整结构见 [目录与路径约定](./README-目录与路径约定.md) | | ||
| | [三、推荐顺序](#三推荐执行顺序) | 链到 [命令说明 · 按使用顺序查找](./README-命令说明.md#按使用顺序查找) | | ||
| | [四、典型流程](#四典型流程) | 架构 / 上下文 / 按方案实现 / 全局技能 | | ||
| | [五、改造 implement-tech-design](#五implement-tech-designmdc-可自行改造) | 按项目改「按方案实现」规则 | | ||
| | [六、技能标识](#六技能与工作流标识) | `skills/<name>/SKILL.md` 速览 | | ||
| | [七、延伸](#七速查与相关文档) | 速查与 FAQ | | ||
| | [使用案例(另文)](./Flow2Spec-使用案例-模拟对话.md) | 真实输入、命令解释、场景与速查 | | ||
| | 章节 | 内容 | | ||
| | ---------- | ----------------------- | | ||
| | [一、init](#一init-做了什么) | 写入目录与模板 | | ||
| | [二、目录约定](#二文档目录约定) | `stock-docs/` vs `req-docs/`;完整结构见 [目录与路径约定](./README-目录与路径约定.md) | | ||
| | [三、推荐顺序](#三推荐执行顺序) | 链到 [命令说明 · 按使用顺序查找](./README-命令说明.md#按使用顺序查找) | | ||
| | [四、典型流程](#四典型流程) | 架构 / 上下文 / 按方案实现 / 全局技能 | | ||
| | [五、改造 implement-tech-design](#五implement-tech-designmdc-可自行改造) | 按项目改「按方案实现」规则 | | ||
| | [六、技能标识](#六技能与工作流标识) | `skills/<name>/SKILL.md` 速览 | | ||
| | [七、延伸](#七速查与相关文档) | 速查与 FAQ | | ||
| | [使用案例(另文)](./Flow2Spec-使用案例-模拟对话.md) | 真实输入、命令解释、场景与速查 | | ||
@@ -23,14 +23,16 @@ --- | ||
| 在**配置根父目录**执行 **`flow2spec init [agent ...]`**(未全局安装可用 **`npx @double-codeing/flow2spec init`**)。`agent` 省略时默认 **`cursor`** → **`.cursor/`**;可多个:`cursor claude codex`,各写一套相同结构。详见 **`flow2spec --help`**。 | ||
| 在**配置根父目录**执行 **`flow2spec init [agent ...]`**(未全局安装可用 **`npx @ctrip/flow2spec init`**)。`agent` 省略时默认 **`cursor`** → **`.cursor/`**;可多个:`cursor claude codex`,各写一套相同结构。详见 **`flow2spec --help`**。 | ||
| 对每个所选配置根:**覆盖写入** `templates/` 中的 `rules/`、`skills/`、`template/`,并预建 **`stock-docs/`**、**`req-docs/`**。Cursor 下 Agent 按场景加载 **`skills/<标识>/SKILL.md`**。 | ||
| | 子目录 | 用途 | | ||
| |--------|------| | ||
| | **skills/** | f2s-* 工作流 + **stock-docs-vs-req-docs** | | ||
| | **rules/** | 如 **implement-tech-design.mdc** | | ||
| | **template/** | 终稿模版、后端技术模版 | | ||
| | **stock-docs/** | 生成 Rules/Skills 的**存量源文档** | | ||
| | **req-docs/** | 需求澄清、技术方案、**按方案实现**用 MD | | ||
| **规则文件与工具差异**:**Cursor** 的 `rules/` 使用 **`.mdc`**,frontmatter 用 **`globs:`**、**`alwaysApply:`**。**Claude Code** 仅加载 **`.claude/rules/`** 下 **`.md`**(官方文档「Organize rules with .claude/rules」);`flow2spec init claude` 会把模板 **`.mdc`** 转为 **`.md`**,并将 **`globs:`** 改为 **`paths:`**、去掉 **`alwaysApply`**(无 `paths` 的规则与会话一并加载,等价于总览类 always 规则)。 | ||
| | 子目录 | 用途 | | ||
| | --------------- | ------------------------------------------ | | ||
| | **skills/** | f2s-\* 工作流 + **stock-docs-vs-req-docs** | | ||
| | **rules/** | Cursor:**\*.mdc**(如 **implement-tech-design.mdc**);Claude Code:**\*.md**(如 **implement-tech-design.md**) | | ||
| | **template/** | 终稿模版、后端技术模版 | | ||
| | **stock-docs/** | 生成 Rules/Skills 的**存量源文档** | | ||
| | **req-docs/** | 需求澄清、技术方案、**按方案实现**用 MD | | ||
| **注意**:再次 init 会覆盖模板;本地对模板的长期修改请用分支或备份。 | ||
@@ -44,6 +46,6 @@ | ||
| | 目录 | 用途 | | ||
| |------|------| | ||
| | **stock-docs/** | 终稿、架构说明等 → **f2s-ctx-build** 入参 | | ||
| | **req-docs/** | 技术方案等 → 对话提供路径 + **implement-tech-design** 写代码 | | ||
| | 目录 | 用途 | | ||
| | --------------- | ------------------------------------------------------------ | | ||
| | **stock-docs/** | 终稿、架构说明等 → **f2s-ctx-build** 入参 | | ||
| | **req-docs/** | 技术方案等 → 对话提供路径 + **implement-tech-design** 写代码 | | ||
@@ -56,9 +58,10 @@ 细则、链接写法、原稿/初稿/终稿:[README-目录与路径约定](./README-目录与路径约定.md)。 | ||
| **需求(可选)**:f2s-req-clarify → f2s-req-backend | ||
| **需求(可选)**:f2s-req-clarify → f2s-req-backend | ||
| **上下文**:f2s-doc-arch → f2s-doc-final → f2s-ctx-build | ||
| **上下文(架构说明)**:**f2s-doc-arch** → **f2s-doc-final** → **f2s-ctx-build** | ||
| **上下文(已落地能力→知识库)**:**f2s-doc-add**——**工作中**要把**已经做好的能力**从多份源码/说明里**解析进上下文**时用;独立技能,**不要**与「仅要架构初稿」的 f2s-doc-arch 混用(见 `skills/f2s-doc-add/SKILL.md`「使用时机」与分工表) | ||
| **实现**:可选 f2s-doc-pdf → **req-docs/** 下 MD + 说明「按方案实现」→ **implement-tech-design** | ||
| **实现**:可选 f2s-doc-pdf → **req-docs/** 下 MD + 说明「按方案实现」→ **implement-tech-design** | ||
| **知识库维护**:任意时机 **f2s-kb-fix** / **f2s-kb-feat**;**实现后**(或收尾)沉淀写库 → **f2s-kb-sync**;合并冲突 → **f2s-kb-merge** | ||
| **知识库维护**:任意时机 **f2s-kb-fix** / **f2s-kb-feat**;**实现后**(或收尾)沉淀写库 → **f2s-kb-sync**;合并冲突 → **f2s-kb-merge** | ||
@@ -73,2 +76,4 @@ 完整表与入参/输出:[README-命令说明 · 按使用顺序查找](./README-命令说明.md#按使用顺序查找)。 | ||
| **已落地能力 → 上下文**:在日常开发中,某能力**已实现**且材料分散在多文件时,加载 **f2s-doc-add**,给出**多个相关路径**:适度深度解析 → **`stock-docs/<方案名>_初稿.md`** → 终稿 → **f2s-ctx-build** 等价产物。 | ||
| **文档 → 上下文**:材料放 **stock-docs/**;PDF/杂乱 MD 用 **f2s-doc-final**(PDF 常先初稿再终稿);终稿路径交给 **f2s-ctx-build**。会话沉淀、大纲确认写库:**f2s-kb-sync**。冲突标记:**f2s-kb-merge**(见 [命令说明 §3.3](./README-命令说明.md#33-f2s-kb-merge))。 | ||
@@ -92,12 +97,13 @@ | ||
| | name | 用途 | | ||
| |------|------| | ||
| | f2s-doc-arch | 架构初稿 | | ||
| | f2s-doc-final | PDF/MD → 终稿模版 | | ||
| | f2s-ctx-build | 终稿 → Rules / Skills / docs-index | | ||
| | f2s-ctx-rm | 按文档删上下文 | | ||
| | f2s-doc-pdf | PDF → req-docs MD | | ||
| | f2s-req-clarify / f2s-req-backend | 需求澄清 / 后端技术方案 | | ||
| | f2s-kb-fix / f2s-kb-feat / f2s-kb-sync / f2s-kb-merge | 任意:纠错、新能力;典型实现后:写库;冲突:合并 | | ||
| | stock-docs-vs-req-docs | 两目录分工说明 | | ||
| | name | 用途 | | ||
| | ----------------------------------------------------- | ---------------------------------------------------- | | ||
| | f2s-doc-arch | **仅**架构说明类初稿(文字/单文档/扫描);**不**内含终稿与 ctx-build | | ||
| | f2s-doc-add | **工作中**:**已做好的能力** + 多文件路径→解析进上下文(初稿→终稿→Rules/Skills/索引);勿与 f2s-doc-arch 混用 | | ||
| | f2s-doc-final | PDF/MD → 终稿模版 | | ||
| | f2s-ctx-build | 终稿 → Rules / Skills / docs-index | | ||
| | f2s-ctx-rm | 按文档删上下文 | | ||
| | f2s-doc-pdf | PDF → req-docs MD | | ||
| | f2s-req-clarify / f2s-req-backend | 需求澄清 / 后端技术方案 | | ||
| | f2s-kb-fix / f2s-kb-feat / f2s-kb-sync / f2s-kb-merge | 任意:纠错、新能力;典型实现后:写库;冲突:合并 | | ||
| | stock-docs-vs-req-docs | 两目录分工说明 | | ||
@@ -114,11 +120,11 @@ 入参与输出细节仍以各 **SKILL.md** 与 [README-命令说明](./README-命令说明.md) 为准。 | ||
| - **按方案实现要改行为**:改 **implement-tech-design.mdc**(见上文第五节)。 | ||
| - **技能不触发**:确认已 init;对话里点名技能名或 `description` 里的词。 | ||
| - **按方案实现要改行为**:改 **implement-tech-design.mdc**(见上文第五节)。 | ||
| - **技能不触发**:确认已 init;对话里点名技能名或 `description` 里的词。 | ||
| - **顺序搞不清**:看 [README-命令说明](./README-命令说明.md) 开头总表。 | ||
| | 文档 | 说明 | | ||
| |------|------| | ||
| | 文档 | 说明 | | ||
| | - | -------------------------------------------- | | ||
| | [Flow2Spec-使用案例-模拟对话](./Flow2Spec-使用案例-模拟对话.md) | 真实输入 + 命令解释 + Agent 示意,全文同版式 | | ||
| | [README-命令说明](./README-命令说明.md) | 入参、输出、顺序、§6 速查 | | ||
| | [README-目录与路径约定](./README-目录与路径约定.md) | 路径、链接、产物阶段 | | ||
| | [README-体系与原理](./README-体系与原理.md) | main、docs-index、拆解原则 | | ||
| | [README-命令说明](./README-命令说明.md) | 入参、输出、顺序、§6 速查 | | ||
| | [README-目录与路径约定](./README-目录与路径约定.md) | 路径、链接、产物阶段 | | ||
| | [README-体系与原理](./README-体系与原理.md) | main、docs-index、拆解原则 | |
+35
-28
@@ -14,14 +14,15 @@ # 工作流与技能说明 | ||
| | 阶段 | 步骤 | 技能 / 命令 | 一句话 | 详见 | | ||
| | ------------ | ---- | -------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | | ||
| | 首次 | — | `flow2spec init [agent ...]` | 写入配置根模板 | [§1](#1-flow2spec-initcli) | | ||
| | 需求与方案 | 1 | **f2s-req-clarify** | PRD/需求反问至清楚 | [§2.0.1](#201-f2s-req-clarify) | | ||
| | 需求与方案 | 2 | **f2s-req-backend** | 澄清后出后端技术文档 | [§2.0.2](#202-f2s-req-backend) | | ||
| | 上下文生成 | 1~3 | **f2s-doc-arch** → **f2s-doc-final** → **f2s-ctx-build** | 初稿→终稿→Rules/Skills/索引 | [§2.1~2.3](#21-f2s-doc-arch-技能) | | ||
| | 上下文生成 | 配合 | **f2s-ctx-rm** | 按文档删产物 | [§2.4](#24-f2s-ctx-rm-技能) | | ||
| | 上下文生成 | 可选 | **f2s-doc-pdf** | PDF→MD(req-docs) | [§2.5](#25-f2s-doc-pdf-技能) | | ||
| | 提问与实现 | — | **按技术方案实现** | 提供 **`req-docs/`** 下方案 MD 路径,并说明「按方案实现」 | [§3.1](#31-按技术方案实现) | | ||
| | 任意时机 | 按需 | **f2s-kb-fix** / **f2s-kb-feat** | 纠错 / 新能力(不限于实现后) | [§3.2](#32-f2s-kb-fix--f2s-kb-feat--f2s-kb-sync) | | ||
| | 实现后 | 按需 | **f2s-kb-sync** | 会话或现状沉淀写库(典型在实现后) | [§3.2](#32-f2s-kb-fix--f2s-kb-feat--f2s-kb-sync) | | ||
| | merge/rebase | — | **f2s-kb-merge** | 上下文类冲突合并 | [§3.3](#33-f2s-kb-merge) | | ||
| | 阶段 | 步骤 | 技能 / 命令 | 一句话 | 详见 | | ||
| | ------------ | ---- | -------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------ | | ||
| | 首次 | — | `flow2spec init [agent ...]` | 写入配置根模板 | [§1](#1-flow2spec-initcli) | | ||
| | 需求与方案 | 1 | **f2s-req-clarify** | PRD/需求反问至清楚 | [§2.0.1](#201-f2s-req-clarify) | | ||
| | 需求与方案 | 2 | **f2s-req-backend** | 澄清后出后端技术文档 | [§2.0.2](#202-f2s-req-backend) | | ||
| | 上下文生成 | 1~3 | **f2s-doc-arch** → **f2s-doc-final** → **f2s-ctx-build** | 初稿→终稿→Rules/Skills/索引 | [§2.1~2.3](#21-f2s-doc-arch-技能) | | ||
| | 上下文生成 | 可选 | **f2s-doc-add** | **工作中**:**已做好的能力** + 多个相关文件路径→解析进上下文(`stock-docs` 初稿→终稿→同 **f2s-ctx-build** 产物) | [§2.1.1](#211-f2s-doc-add-技能) | | ||
| | 上下文生成 | 配合 | **f2s-ctx-rm** | 按文档删产物 | [§2.4](#24-f2s-ctx-rm-技能) | | ||
| | 上下文生成 | 可选 | **f2s-doc-pdf** | PDF→MD(req-docs) | [§2.5](#25-f2s-doc-pdf-技能) | | ||
| | 提问与实现 | — | **按技术方案实现** | 提供 **`req-docs/`** 下方案 MD 路径,并说明「按方案实现」 | [§3.1](#31-按技术方案实现) | | ||
| | 任意时机 | 按需 | **f2s-kb-fix** / **f2s-kb-feat** | 纠错 / 新能力(不限于实现后) | [§3.2](#32-f2s-kb-fix--f2s-kb-feat--f2s-kb-sync) | | ||
| | 实现后 | 按需 | **f2s-kb-sync** | 会话或现状沉淀写库(典型在实现后) | [§3.2](#32-f2s-kb-fix--f2s-kb-feat--f2s-kb-sync) | | ||
| | merge/rebase | — | **f2s-kb-merge** | 上下文类冲突合并 | [§3.3](#33-f2s-kb-merge) | | ||
@@ -36,4 +37,4 @@ **汇总**:init →(可选需求链)→ arch → final → ctx-build →(可选 pdf)→ req-docs + implement-tech-design →(随时 **fix** / **feat**;实现后或收尾 **sync**);冲突用 **f2s-kb-merge**。更细速查见 [§6](#6-快速参考按阶段)。 | ||
| | ---- | ----------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | 用法 | `npx @double-codeing/flow2spec init` 或全局安装后 `flow2spec init [cursor \| claude \| codex ...]`;默认 **cursor** | | ||
| | 写入 | 各配置根下 `stock-docs/`、`req-docs/`、`template/`、`rules/`、`skills/`(见 [Flow2Spec使用说明](./Flow2Spec使用说明.md#一init-做了什么)) | | ||
| | 用法 | `npx @ctrip/flow2spec init` 或全局安装后 `flow2spec init [cursor \| claude \| codex ...]`;默认 **cursor** | | ||
| | 写入 | 各配置根下 `stock-docs/`、`req-docs/`、`template/`、`rules/`、`skills/`(见 [Flow2Spec使用说明](./Flow2Spec使用说明.md#一init-做了什么))。**`.claude/`** 下 **`rules/*.md`**(`globs`→`paths`);**`.cursor/`** 下 **`rules/*.mdc`** | | ||
| | 结果 | Agent 按场景加载 `skills/*/SKILL.md` | | ||
@@ -53,4 +54,8 @@ | ||
| 入参可选(说明文字或文档路径;无参=扫描代码须先确认)。输出默认 **`stock-docs/<项目名>架构说明_初稿.md`**。可接 **f2s-doc-final** → **f2s-ctx-build**。 | ||
| **定位**:**仅**「项目/模块**架构说明初稿**」;**不是** f2s-doc-add。入参可选(说明文字或文档路径;无参=扫描代码须先确认)。输出默认 **`stock-docs/<项目名>架构说明_初稿.md`**。可接 **f2s-doc-final** → **f2s-ctx-build**。 | ||
| ### 2.1.1 f2s-doc-add | ||
| **定位**:**工作中**要把**已经做好的某条能力**(实现与说明分散在多文件)**解析进 AI 上下文**时用本技能;**多文件路径**聚合→初稿→终稿→上下文产物。**独立技能**,与 **f2s-doc-arch** 分工见 **`skills/f2s-doc-add/SKILL.md`**(含「使用时机」)。入参:**多个**本地文件路径(必填,空格/换行/`@`);可选方案名、初稿/终稿输出路径。行为:**适度深度**读源 → **`stock-docs/<方案名>_初稿.md`** → 按 **`template/终稿模版.md`** 与 **f2s-doc-final** 思路出 **`_终稿.md`** → 按 **f2s-ctx-build** 生成/更新 **Rules、Skills、`docs-index.md`**(及按需 **`main.mdc`**)。详见 **`skills/f2s-doc-add/SKILL.md`**(在对话中加载该技能后执行)。 | ||
| ### 2.2 f2s-doc-final | ||
@@ -108,3 +113,4 @@ | ||
| 需求:f2s-req-clarify → f2s-req-backend → req-docs/*_技术方案.md | ||
| 上下文:f2s-doc-arch → f2s-doc-final → f2s-ctx-build → main + Rules + Skills + docs-index | ||
| 上下文(架构):f2s-doc-arch → f2s-doc-final → f2s-ctx-build → main + Rules + Skills + docs-index | ||
| 上下文(已落地能力→知识库):f2s-doc-add →(工作中多文件解析进上下文;内含终稿与 f2s-ctx-build 等价步骤,与 f2s-doc-arch 分工不同) | ||
| 实现:(f2s-doc-pdf)→ req-docs/*.md + implement-tech-design → 代码 | ||
@@ -118,15 +124,16 @@ 随时:f2s-kb-fix | f2s-kb-feat;实现后/收尾:f2s-kb-sync;冲突 → f2s-kb-merge | ||
| | 阶段 | 想做的事 | 技能 / 步骤 | | ||
| | ---------- | ------------------------ | -------------------------------------------------------- | | ||
| | 首次 | 初始化 | `flow2spec init` … | | ||
| | 上下文生成 | 初稿 / 终稿 / 生成上下文 | **f2s-doc-arch** / **f2s-doc-final** / **f2s-ctx-build** | | ||
| | | 删某文档上下文 | **f2s-ctx-rm** | | ||
| | | 更新某文档产物 | 改文档后再 **f2s-ctx-build** 同路径 | | ||
| | 需求与方案 | 澄清 / 后端方案 | **f2s-req-clarify** / **f2s-req-backend** | | ||
| | 提问与实现 | PDF→MD | **f2s-doc-pdf** → **req-docs/xx技术方案.md** | | ||
| | | 写代码 | 提供 **req-docs/\*.md** + 按方案实现 | | ||
| | 任意时机 | 纠错 / 新能力 | **f2s-kb-fix** / **f2s-kb-feat** | | ||
| | 实现后 | 会话或现状写库 | **f2s-kb-sync** | | ||
| | 合并冲突 | 索引与规则等 | **f2s-kb-merge** | | ||
| | 阶段 | 想做的事 | 技能 / 步骤 | | ||
| | ---------- | ------------------------ | ----------- | | ||
| | 首次 | 初始化 | `flow2spec init` … | | ||
| | 上下文生成 | 架构:初稿→终稿→索引 | **f2s-doc-arch** → **f2s-doc-final** → **f2s-ctx-build** | | ||
| | | 已落地能力→进上下文 | **f2s-doc-add**(`skills/f2s-doc-add/SKILL.md`:**工作中**多路径聚合,**非** f2s-doc-arch) | | ||
| | | 删某文档上下文 | **f2s-ctx-rm** | | ||
| | | 更新某文档产物 | 改文档后再 **f2s-ctx-build** 同路径 | | ||
| | 需求与方案 | 澄清 / 后端方案 | **f2s-req-clarify** / **f2s-req-backend** | | ||
| | 提问与实现 | PDF→MD | **f2s-doc-pdf** → **req-docs/xx技术方案.md** | | ||
| | | 写代码 | 提供 **req-docs/\*.md** + 按方案实现 | | ||
| | 任意时机 | 纠错 / 新能力 | **f2s-kb-fix** / **f2s-kb-feat** | | ||
| | 实现后 | 会话或现状写库 | **f2s-kb-sync** | | ||
| | 合并冲突 | 索引与规则等 | **f2s-kb-merge** | | ||
| **相关文档**:[Flow2Spec使用说明](./Flow2Spec使用说明.md) | [Flow2Spec-使用案例-模拟对话](./Flow2Spec-使用案例-模拟对话.md) | [README-目录与路径约定](./README-目录与路径约定.md) | [README-体系与原理](./README-体系与原理.md) |
@@ -9,3 +9,3 @@ # 目录与路径约定 | ||
| |--------------|----------------|------| | ||
| | **stock-docs/** | `.cursor/stock-docs/` | 存量源文档(终稿/初稿/架构等)→ **f2s-ctx-build** | | ||
| | **stock-docs/** | `.cursor/stock-docs/` | 存量源文档(终稿/初稿/架构等)→ **f2s-ctx-build**;**f2s-doc-arch**(架构初稿)、**f2s-doc-add**(**工作中**已落地能力、多文件聚合进上下文)的初稿/终稿亦在此,**勿**与 **req-docs** 混用 | | ||
| | **req-docs/** | `.cursor/req-docs/` | 技术方案、澄清文档等 → **implement-tech-design** 按方案写代码 | | ||
@@ -19,2 +19,11 @@ | **rules/** | `.cursor/rules/` | **main.mdc**(唯一 alwaysApply)+ 专题 `*-context.mdc` | | ||
| ### 1.1 Cursor 与 Claude Code:`rules/` 扩展名 | ||
| | 配置根 | 规则文件扩展名 | 路径范围(frontmatter) | 说明 | | ||
| |--------|----------------|-------------------------|------| | ||
| | **`.cursor/`**(Cursor) | **`.mdc`** | **`globs:`** + **`alwaysApply:`** | Cursor 约定 | | ||
| | **`.claude/`**(Claude Code) | **`.md`** | **`paths:`**(无 `paths` 则与会话同载) | Claude Code 不识别 `.mdc`;`flow2spec init claude` 由模板自动转换 | | ||
| 在 **`.claude/`** 下手工维护规则时,请使用 **`.md`** 与 **`paths:`**;勿复制 Cursor 的 **`globs:`** / **`.mdc`** 以免不生效。Claude Code **不会**把 **`.mdx`** 当作项目规则加载;请勿用 **`.mdx`** 作为 `rules/` 内规则扩展名。 | ||
| --- | ||
@@ -44,3 +53,3 @@ | ||
| | 原稿 | 未纳入体系前的材料 | 任意 PDF、杂乱 MD | | ||
| | 初稿 | **f2s-doc-final**(PDF 首次)或 **f2s-doc-arch** | `*_初稿.md`、`*架构说明_初稿.md` | | ||
| | 初稿 | **f2s-doc-final**(PDF 首次)、**f2s-doc-arch**(架构说明),或 **f2s-doc-add**(**工作中**把**已落地能力**从多文件聚合成的初稿) | `*_初稿.md`、`*架构说明_初稿.md` 等;**f2s-doc-add** 与 **f2s-doc-arch** 分工见各自 `SKILL.md` | | ||
| | 终稿 | **f2s-doc-final** 规范输出 | `*_终稿.md` → **f2s-ctx-build** 入参 | | ||
@@ -47,0 +56,0 @@ |
+36
-7
| const path = require("path"); | ||
| const fs = require("fs"); | ||
| const { AGENTS, SUBDIRS, normalizeAgentIds } = require("./agents"); | ||
| const { adaptRuleMdcToClaudeMd, shouldWriteClaudeStyleRules } = require("./claudeRulesAdapter"); | ||
@@ -25,2 +26,36 @@ function ensureDirs(cwd, agentRoot) { | ||
| /** 复制 templates/rules:Cursor 保留 .mdc;Claude Code 写入 .md 并转换 frontmatter(globs→paths,去掉 alwaysApply) */ | ||
| function copyRulesTemplates(cwd, agentRoot, templatesDir) { | ||
| const rulesSrc = path.join(templatesDir, "rules"); | ||
| const rulesDest = path.join(cwd, agentRoot, "rules"); | ||
| if (!fs.existsSync(rulesSrc)) return; | ||
| if (!fs.existsSync(rulesDest)) fs.mkdirSync(rulesDest, { recursive: true }); | ||
| const claudeStyle = shouldWriteClaudeStyleRules(agentRoot); | ||
| if (claudeStyle) { | ||
| for (const name of fs.readdirSync(rulesDest)) { | ||
| if (name.endsWith(".mdc")) { | ||
| fs.unlinkSync(path.join(rulesDest, name)); | ||
| } | ||
| } | ||
| } | ||
| for (const name of fs.readdirSync(rulesSrc)) { | ||
| const srcPath = path.join(rulesSrc, name); | ||
| const st = fs.statSync(srcPath); | ||
| if (st.isDirectory()) { | ||
| copyRecursive(srcPath, path.join(rulesDest, name)); | ||
| continue; | ||
| } | ||
| if (!name.endsWith(".mdc")) { | ||
| fs.copyFileSync(srcPath, path.join(rulesDest, name)); | ||
| continue; | ||
| } | ||
| const raw = fs.readFileSync(srcPath, "utf8"); | ||
| const body = claudeStyle ? adaptRuleMdcToClaudeMd(raw) : raw; | ||
| const destName = claudeStyle ? name.replace(/\.mdc$/i, ".md") : name; | ||
| fs.writeFileSync(path.join(rulesDest, destName), body, "utf8"); | ||
| } | ||
| } | ||
| /** 将 templates 下全部内容复制到指定配置根目录(如 .cursor、.claude) */ | ||
@@ -31,9 +66,3 @@ function copyTemplatesToAgentRoot(cwd, agentRoot) { | ||
| const rulesSrc = path.join(templatesDir, "rules"); | ||
| const rulesDest = path.join(destRoot, "rules"); | ||
| if (fs.existsSync(rulesSrc)) { | ||
| for (const name of fs.readdirSync(rulesSrc)) { | ||
| copyRecursive(path.join(rulesSrc, name), path.join(rulesDest, name)); | ||
| } | ||
| } | ||
| copyRulesTemplates(cwd, agentRoot, templatesDir); | ||
@@ -40,0 +69,0 @@ const skillsSrc = path.join(templatesDir, "skills"); |
+1
-1
| { | ||
| "name": "@double-codeing/flow2spec", | ||
| "version": "2.2.1", | ||
| "version": "2.2.2", | ||
| "description": "flow2spec init:落盘 .cursor/.claude/.codex 等配置根的 rules、skills、stock-docs/req-docs,文档驱动、f2s 可写回知识库工作流。", | ||
@@ -5,0 +5,0 @@ "homepage": "https://github.com/Lands-1203/Flow2Spec#readme", |
+6
-5
@@ -17,8 +17,8 @@ # Flow2Spec | ||
| # 在目标代码仓库(配置根的父目录)执行(默认仅写入 .cursor/) | ||
| npx @double-codeing/flow2spec init | ||
| npx @ctrip/flow2spec init | ||
| # 指定 AI 工具配置目录(可多选) | ||
| npx @double-codeing/flow2spec init claude | ||
| npx @double-codeing/flow2spec init cursor claude codex | ||
| npx @ctrip/flow2spec init claude | ||
| npx @ctrip/flow2spec init cursor claude codex | ||
| # 或全局安装后 | ||
| npm install -g @double-codeing/flow2spec | ||
| npm install -g @ctrip/flow2spec | ||
| flow2spec init | ||
@@ -39,3 +39,4 @@ ``` | ||
| |------|----------------| | ||
| | **沉淀知识库** | **f2s-doc-arch** → **f2s-doc-final** → **f2s-ctx-build**(终稿进 `stock-docs/`,产出 Rules、Skills、索引) | | ||
| | **沉淀知识库(架构说明)** | **f2s-doc-arch** → **f2s-doc-final** → **f2s-ctx-build**:架构初稿→终稿→Rules、Skills、索引(终稿在 `stock-docs/`) | | ||
| | **沉淀知识库(已落地能力→上下文)** | **f2s-doc-add**:**工作中**某能力**已做好**,用**一批相关文件路径**把它解析进知识库(初稿→终稿→Rules/Skills/索引);**与**「架构说明」**那条技能链不同** | | ||
| | **按方案写代码** | **`req-docs/`** 下技术方案 MD + **`implement-tech-design`**;仅有 PDF 时可用 **f2s-doc-pdf** | | ||
@@ -42,0 +43,0 @@ | **纠错与扩展** | **f2s-kb-feat**、**f2s-kb-fix**(任意时机) | |
| --- | ||
| name: f2s-ctx-build | ||
| ## name: f2s-ctx-build | ||
| description: 根据 stock-docs 文档生成 Rules、Skills 与文档索引;触发:生成项目上下文、f2s-ctx-build、终稿生成上下文 | ||
| --- | ||
| > **「配置根」**:当前 agent 对应的 AI 工具配置目录(`flow2spec init` 写入,常见 **`.cursor/`**、**`.claude/`**、**`.codex/`**)。下文 **`配置根/...`** 指该目录下的相对路径。 | ||
| > **「配置根」**:当前 agent 对应的 AI 工具配置目录(`flow2spec init` 写入,常见 `**.cursor/`**、`**.claude/**`、`**.codex/**`)。下文 `**配置根/...**` 指该目录下的相对路径。 | ||
| # 根据文档生成项目上下文(Rules、Skills、文档索引) | ||
| 用户会在本技能后附带**一个参数**:要么是一个 **URL**(如 `https://xxx.com/doc`),要么是一个**本地路径**,且路径应指向 **配置根/stock-docs/** 下的 Markdown(PDF/初稿/终稿/架构说明等**存量上下文源**,用于生成 Rules、Skills)。**不要**把 **`配置根/req-docs/`**(按方案实现代码的技术方案目录)当作本技能入参;若用户只持有该目录下的方案,应提示先将符合《终稿模版》的文档复制或整理到 **`配置根/stock-docs/`** 再执行。请按以下步骤执行,用你的**大模型能力**分析文档并生成完整架构。 | ||
| 用户会在本技能后附带**一个参数**:要么是一个 **URL**(如 `https://xxx.com/doc`),要么是一个**本地路径**,且路径应指向 **配置根/stock-docs/** 下的 Markdown(PDF/初稿/终稿/架构说明等**存量上下文源**,用于生成 Rules、Skills)。**不要**把 `**配置根/req-docs/`**(按方案实现代码的技术方案目录)当作本技能入参;若用户只持有该目录下的方案,应提示先将符合《终稿模版》的文档复制或整理到 `**配置根/stock-docs/**` 再执行。请按以下步骤执行,用你的**大模型能力**分析文档并生成完整架构。 | ||
@@ -18,4 +19,4 @@ **文档产物阶段约定**:doc 中的产物一般分为 **原稿**、**初稿**、**终稿**;本技能生成的 **Rules、Skills 文件名与目录名不带 `_终稿` 等后缀**,与现有约定一致(如 `<主题>-context.mdc`、`<主题>-context/SKILL.md`)。 | ||
| 2. **分工**: | ||
| - **Rules**:承担**约束、约定、作用范围**;一条 alwaysApply 的索引入口 + 若干条用 globs 限定在相关路径的专题规则;正文写「必须/禁止/约定」类内容。 | ||
| - **Skills**:承担**领域知识、操作步骤、示例**;一个总览 skill + 若干专题 skill;description 写清触发词与使用场景,正文写概念、流程、方法表、示例。 | ||
| - **Rules**:承担**约束、约定、作用范围**;一条 alwaysApply 的索引入口 + 若干条用 globs 限定在相关路径的专题规则;正文写「必须/禁止/约定」类内容。 | ||
| - **Skills**:承担**领域知识、操作步骤、示例**;一个总览 skill + 若干专题 skill;description 写清触发词与使用场景,正文写概念、流程、方法表、示例。 | ||
@@ -27,3 +28,3 @@ --- | ||
| - 若用户给出的是 **HTTPS/HTTP URL**:使用你可用的网络请求能力(如 web fetch)拉取该 URL 的页面内容。若你所在环境无法访问该 URL(如内网),则回复用户说明「请将页面内容复制到项目内 `配置根/stock-docs/xxx.md`,再执行本技能并传入路径 `配置根/stock-docs/xxx.md`」。 | ||
| - 若用户给出的是**本地路径**:从配置根的父目录读取该文件(须为 **`配置根/stock-docs/…`**,如 `配置根/stock-docs/功能描述.md`)。若路径落在 **`配置根/req-docs/`**(技术方案目录),应提醒用户:本技能入参须为 **stock-docs** 下的存量源文档;请先将符合《终稿模版》的内容整理到 **`stock-docs/`** 再执行。 | ||
| - 若用户给出的是**本地路径**:从配置根的父目录读取该文件(须为 `**配置根/stock-docs/…`**,如 `配置根/stock-docs/功能描述.md`)。若路径落在 `**配置根/req-docs/**`(技术方案目录),应提醒用户:本技能入参须为 **stock-docs** 下的存量源文档;请先将符合《终稿模版》的内容整理到 `**stock-docs/`** 再执行。 | ||
@@ -38,10 +39,13 @@ 得到的内容可能是 Markdown、HTML 或富文本,请先提取出**正文**(若是 HTML 可提取 body 内的文本或转成可读的 Markdown)。 | ||
| | 写入位置 | 文档所在目录(固定) | 引用该文档时的写法 | | ||
| |----------|----------------------|--------------------| | ||
| | **配置根/rules/*.mdc** | 文档在 `配置根/stock-docs/<文件名>.md` | 链接 **必须** 写为 `[文档标题](../stock-docs/<文件名>.md)`,即 href 为 **`../stock-docs/<文件名>.md`**(从 配置根/rules 到 配置根/stock-docs 的相对路径)。 | | ||
| | **配置根/skills/<主题>/SKILL.md** | 同上 | 链接 **必须** 写为 `[文档标题](../../stock-docs/<文件名>.md)`,即 href 为 **`../../stock-docs/<文件名>.md`**(从 配置根/skills/xxx 到 配置根/stock-docs 的相对路径)。 | | ||
| | **配置根/docs-index.md** | 同上 | 文档路径列:显示可写 `配置根/stock-docs/<文件名>.md`;链接 href **必须** 为 **`stock-docs/<文件名>.md`**(因 docs-index 位于配置根下,同级的 **stock-docs** 目录即 `stock-docs/<文件名>.md`)。示例:`[配置根/stock-docs/技术方案设计.md](stock-docs/技术方案设计.md)`。 | | ||
| | **frontmatter 的 sourceDoc** | 同上 | **必须** 写为 **`配置根/stock-docs/<文件名>.md`**(与用户传入的本地路径一致;若用户传的是相对路径如 `配置根/stock-docs/xxx.md`,即用该值)。 | | ||
| | 写入位置 | 文档所在目录(固定) | 引用该文档时的写法 | | ||
| | ---------------------------- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | **配置根/rules/*.mdc** | 文档在 `配置根/stock-docs/<文件名>.md` | 链接 **必须** 写为 `[文档标题](../stock-docs/<文件名>.md)`,即 href 为 `**../stock-docs/<文件名>.md`**(从 配置根/rules 到 配置根/stock-docs 的相对路径)。 | | ||
| | **配置根/skills/<主题>/SKILL.md** | 同上 | 链接 **必须** 写为 `[文档标题](../../stock-docs/<文件名>.md)`,即 href 为 `**../../stock-docs/<文件名>.md`**(从 配置根/skills/xxx 到 配置根/stock-docs 的相对路径)。 | | ||
| | **配置根/docs-index.md** | 同上 | 文档路径列:显示可写 `配置根/stock-docs/<文件名>.md`;链接 href **必须** 为 `**stock-docs/<文件名>.md`**(因 docs-index 位于配置根下,同级的 **stock-docs** 目录即 `stock-docs/<文件名>.md`)。示例:`[配置根/stock-docs/技术方案设计.md](stock-docs/技术方案设计.md)`。 | | ||
| | **frontmatter 的 sourceDoc** | 同上 | **必须** 写为 `**配置根/stock-docs/<文件名>.md`**(与用户传入的本地路径一致;若用户传的是相对路径如 `配置根/stock-docs/xxx.md`,即用该值)。 | | ||
| **正确示例(按位置抄写格式):** | ||
| - Rule 内:`[技术方案设计](../stock-docs/技术方案设计.md)` | ||
@@ -53,9 +57,10 @@ - Skill 内:`[技术方案设计](../../stock-docs/技术方案设计.md)` | ||
| **常见错误(禁止):** | ||
| - **禁止** 在 Rule 内使用 `../../stock-docs/` 或 `req-docs/`(配置根下技术方案目录,非 stock-docs)—— 会 404。 | ||
| - **禁止** 在 Skill 内使用 `../stock-docs/` 或 `req-docs/`(配置根下技术方案目录,非 stock-docs)—— 会 404。 | ||
| - **禁止** 在 docs-index 内使用 `../stock-docs/` 或 `配置根/stock-docs/xxx.md` 作为链接 href —— 应仅为 `stock-docs/<文件名>.md`。 | ||
| - **禁止** 在链接或 sourceDoc 中混用目录:生成上下文的链出与 **sourceDoc** 仅指向 **`stock-docs/`**;勿把 **`配置根/req-docs/`** 下的技术方案当作本技能产物的链出目标。 | ||
| - **禁止** 在 sourceDoc 中写相对路径如 `../stock-docs/xxx.md` 或 **`配置根/req-docs/xxx.md`** —— 必须为 `配置根/stock-docs/<文件名>.md`。 | ||
| - **禁止** 在链接或 sourceDoc 中混用目录:生成上下文的链出与 **sourceDoc** 仅指向 `**stock-docs/`**;勿把 `**配置根/req-docs/**` 下的技术方案当作本技能产物的链出目标。 | ||
| - **禁止** 在 sourceDoc 中写相对路径如 `../stock-docs/xxx.md` 或 `**配置根/req-docs/xxx.md`** —— 必须为 `配置根/stock-docs/<文件名>.md`。 | ||
| **记忆要点**:默认文档目录为 **`配置根/stock-docs/`**(与项目约定一致);Rule 内链出用 `../stock-docs/`,Skill 内链出用 `../../stock-docs/`,docs-index 内链出用 `stock-docs/`;sourceDoc 用 `配置根/stock-docs/<文件名>.md`。生成后自检所有链接与 sourceDoc,确保层级正确、与项目约定目录一致。 | ||
| **记忆要点**:默认文档目录为 `**配置根/stock-docs/`**(与项目约定一致);Rule 内链出用 `../stock-docs/`,Skill 内链出用 `../../stock-docs/`,docs-index 内链出用 `stock-docs/`;sourceDoc 用 `配置根/stock-docs/<文件名>.md`。生成后自检所有链接与 sourceDoc,确保层级正确、与项目约定目录一致。 | ||
@@ -83,2 +88,3 @@ --- | ||
| **main.mdc 与 docs-index.md 的区别** | ||
| - **main.mdc**(`配置根/rules/main.mdc`):**项目的总概述和索引**,固定命名 **main**,**唯一** alwaysApply 的 rule。给 AI 看的「体系结构 + 模块一览 + 公共能力入口」,让 AI 大致知道项目结构,需要时再去读各模块的 rule/skill;并在正文中**强制约定**「先查 `docs-index.md` 再下钻」(见 3.0 正文第 4 点),以落实渐进式读取。 | ||
@@ -96,5 +102,5 @@ - **docs-index.md**(`配置根/docs-index.md`):**需求/文档索引**,按文档列出的表格(文档路径、Rules、Skills、简要说明),供人与 AI 查「某文档对应哪些产物」。不参与 alwaysApply,**须由 main 正文显式要求 Agent 在定位文档↔产物时优先读取**,否则不会自动进入上下文。 | ||
| 4. **全文索引与渐进式读取(必填)**:须单独成段或小节,至少包含以下语义(可压缩措辞,不可删掉任一条): | ||
| - **映射表位置**:「文档路径 ↔ Rules / Skills」的完整表在 **`配置根/docs-index.md`**(`docs-index` 非 alwaysApply,不会自动进上下文,须按需打开)。 | ||
| - **读取顺序**:当要根据**某份 stock-docs 文档、某需求/模块名**定位应遵循的规则或应加载的技能时,**应先读取 `docs-index.md`**,在表中找到对应行,再按 **Rules**、**Skills** 列给出的路径打开 `.mdc` / `SKILL.md`;需要长文细节时再打开 **stock-docs** 链出的源文档;仍不足再下钻**业务源码**。 | ||
| - **避免**:在未查 `docs-index.md`、未锁定相关 Rule/Skill 前,对工作区做**无范围**的大面积检索,或通读与当前问题**无关**的长文档。 | ||
| - **映射表位置**:「文档路径 ↔ Rules / Skills」的完整表在 `**配置根/docs-index.md`**(`docs-index` 非 alwaysApply,不会自动进上下文,须按需打开)。 | ||
| - **读取顺序**:当要根据**某份 stock-docs 文档、某需求/模块名**定位应遵循的规则或应加载的技能时,**应先读取 `docs-index.md`**,在表中找到对应行,再按 **Rules**、**Skills** 列给出的路径打开 `.mdc` / `SKILL.md`;需要长文细节时再打开 **stock-docs** 链出的源文档;仍不足再下钻**业务源码**。 | ||
| - **避免**:在未查 `docs-index.md`、未锁定相关 Rule/Skill 前,对工作区做**无范围**的大面积检索,或通读与当前问题**无关**的长文档。 | ||
| 5. 文末可再单列一行链接提示:**全文索引文件**:`配置根/docs-index.md`(与第 4 点呼应即可)。 | ||
@@ -107,7 +113,10 @@ - **main.mdc 的更新时机**:每次执行本技能时,**可能**会更新 main.mdc,**也可能**不更新。 | ||
| - **路径**:`配置根/rules/<主题>-context.mdc`(或拆解后的多条,如 common-interface-ctx.mdc) | ||
| - **格式**: | ||
| - **路径**:`配置根/rules/<主题>-ctx.mdc`(或拆解后的多条,如 common-interface-ctx.mdc) | ||
| - **按配置根区分(必守)**: | ||
| - `**.cursor/`(Cursor)**:规则文件扩展名 `**.mdc`**;路径范围用 `**globs:**`;专题规则 `**alwaysApply: false**`;总览 `**main.mdc**` 唯一 `**alwaysApply: true**`。 | ||
| - `**.claude/`(Claude Code)**:规则须为 `**.md`**(Claude Code 不加载 `.mdc`);路径范围用 `**paths:**`,**不要**写 `**globs:`**;**不要**写 `**alwaysApply`**(无 `paths` 的规则与会话一并加载)。若项目同时存在 `.cursor/` 与 `.claude/`,生成或更新 `**.claude/rules/**` 时须按上表写 `**.md**` + `**paths:**`。`flow2spec init claude` 已对包内模板做自动转换,手工新增规则时请对齐官方文档。 | ||
| - **格式**(以 **Cursor `.mdc`** 为默认表述;**Claude** 将 `globs`→`paths`、扩展名 `.md` 即可): | ||
| - frontmatter:`description: <一句话说明本规则>`,**禁止** `alwaysApply: true`(唯一 alwaysApply 为 main.mdc) | ||
| - **globs(必填)**:按主题限定在相关路径,例如功能模块 → `globs: "**/functions/<模块名>/**"`;接口与 ctx → `globs: "**/functions/**/*.js"`;消息队列消费 → `globs: "**/qmq/**/*.js"` 或项目约定的 MQ 消费目录;公共工具 → `globs: "**/utils/common.js"` 或项目约定的工具路径。 | ||
| - `alwaysApply: false` | ||
| - **globs(必填,仅 Cursor)**:按主题限定在相关路径,例如功能模块 → `globs: "**/functions/<模块名>/**"`;接口与 ctx → `globs: "**/functions/**/*.js"`;消息队列消费 → `globs: "**/qmq/**/*.js"` 或项目约定的 MQ 消费目录;公共工具 → `globs: "**/utils/common.js"` 或项目约定的工具路径。**Claude Code 下改为 `paths:`,键名同列表写法。** | ||
| - `alwaysApply: false`(仅 Cursor;Claude 专题规则不写此项) | ||
| - **版本管理(必填)**:`sourceDoc: <本次命令入参,即 配置根/stock-docs/xxx.md>`,`generatedAt: "<当前时间东八区北京时间,ISO 8601 如 2026-01-28T20:00:00+08:00>"` | ||
@@ -129,3 +138,2 @@ - 正文:提炼的**核心概念、关键流程、规则要点**(Markdown,简洁可读)+ **文档链接**(链接 href 必须为 `../stock-docs/<文件名>.md`,见「文档路径与链接约定」) | ||
| - **操作**:若文件不存在,先创建表头: | ||
| ```markdown | ||
@@ -137,7 +145,6 @@ # 需求/文档索引 | ||
| ``` | ||
| 然后**追加一行**,且**必须填写 Rules、Skills 列**: | ||
| - **Rules**:本次生成的 Rule 路径,多个用顿号或空格分隔,如 `配置根/rules/<主题>-context.mdc` 或 `配置根/rules/common-interface-ctx.mdc`。注意:main.mdc 不在此列逐文档列出(main 为总索引,与单文档非一对一)。 | ||
| - **Skills**:本次生成的 Skill 路径,多个用顿号或空格分隔,如 `配置根/skills/<主题>-context/SKILL.md` 或 `配置根/skills/common-modules-context/SKILL.md`、`配置根/skills/common-modules-mq-usage/SKILL.md`。 | ||
| - **文档路径与链接(必守)**:文档路径列显示 `配置根/stock-docs/<文件名>.md`;链接 **必须** 为 `[配置根/stock-docs/<文件名>.md](stock-docs/<文件名>.md)`,即 href 只能是 **`stock-docs/<文件名>.md`**(见上文「文档路径与链接约定」)。勿写成 `../stock-docs/` 或误指 **`req-docs/`**。 | ||
| - **文档路径与链接(必守)**:文档路径列显示 `配置根/stock-docs/<文件名>.md`;链接 **必须** 为 `[配置根/stock-docs/<文件名>.md](stock-docs/<文件名>.md)`,即 href 只能是 `**stock-docs/<文件名>.md`**(见上文「文档路径与链接约定」)。勿写成 `../stock-docs/` 或误指 `**req-docs/**`。 | ||
| - 行示例:`| <文档标题> | [配置根/stock-docs/<文件名>.md](stock-docs/<文件名>.md) | <Rules 路径> | <Skills 路径> | <一两句摘要> |` | ||
@@ -170,3 +177,3 @@ - 若文件已存在且表头无 Rules、Skills 列,则先补全表头再追加;追加时仍须填写 Rules、Skills 列。 | ||
| - 公共工具约定 → `globs: "**/utils/common.js"` 或项目约定路径 | ||
| - 每条 rule 的 frontmatter 中 **且必须含** `sourceDoc`、`generatedAt`(同上),正文写该主题的**核心概念、关键流程、规则要点**,可带简短示例;单条建议 <50 行。生成功能模块 rule 后必须在 main.mdc 的「模块一览」中追加/更新对应行。 | ||
| - 每条 rule 的 frontmatter 中 **且必须含** `sourceDoc`、`generatedAt`(同上),正文写该主题的**核心概念、关键流程、规则要点**,可带简短示例;单条建议 <50 行。生成功能模块 rule 后必须在 main.mdc 的「模块一览」中追加/更新对应行。 | ||
@@ -190,3 +197,3 @@ **Skills 拆分建议:** | ||
| 若用户提供的是 **URL**,请将你拉取到的**原始正文**保存到项目内 **`配置根/stock-docs/<主题>.md`**(或项目约定的文档目录),以便后续引用。主题名可从文档标题或 URL 路径推断,并做合法文件名处理。 | ||
| 若用户提供的是 **URL**,请将你拉取到的**原始正文**保存到项目内 `**配置根/stock-docs/<主题>.md`**(或项目约定的文档目录),以便后续引用。主题名可从文档标题或 URL 路径推断,并做合法文件名处理。 | ||
@@ -198,11 +205,12 @@ --- | ||
| - 所有路径均相对于**配置根的父目录**。 | ||
| - **文档路径与链接(必守)**:一律按上文「文档路径与链接约定」执行。Rule 内链到文档 **仅允许** `../stock-docs/<文件名>.md`;Skill 内链到文档 **仅允许** `../../stock-docs/<文件名>.md`;docs-index 内链到文档 **仅允许** `stock-docs/<文件名>.md`。sourceDoc 仅允许 `配置根/stock-docs/<文件名>.md`。勿将 **`配置根/req-docs/`** 下的技术方案当作本技能产物的链出目标(链出**仅**指向 **stock-docs**)。 | ||
| - **文档路径与链接(必守)**:一律按上文「文档路径与链接约定」执行。Rule 内链到文档 **仅允许** `../stock-docs/<文件名>.md`;Skill 内链到文档 **仅允许** `../../stock-docs/<文件名>.md`;docs-index 内链到文档 **仅允许** `stock-docs/<文件名>.md`。sourceDoc 仅允许 `配置根/stock-docs/<文件名>.md`。勿将 `**配置根/req-docs/`** 下的技术方案当作本技能产物的链出目标(链出**仅**指向 **stock-docs**)。 | ||
| - **版本管理**:每条 Rule 与每条 Skill 的 frontmatter 必须含 `sourceDoc`(`配置根/stock-docs/xxx.md`)、`generatedAt`(东八区北京时间 ISO 8601 +08:00),便于更新时索源与重新生成。 | ||
| - 生成前可先确认 `配置根/rules`、`配置根/skills`、`配置根/stock-docs` 目录存在,不存在则创建。 | ||
| - **完成后自检(路径必查)**: | ||
| 1. 每个 `.mdc` 中指向源文档的链接 href 是否为 **`../stock-docs/<文件名>.md`**(不是 `../../stock-docs/` 或误链到 `req-docs/`)。 | ||
| 2. 每个 `配置根/skills/**/SKILL.md` 中指向源文档的链接 href 是否为 **`../../stock-docs/<文件名>.md`**(不是 `../stock-docs/` 或误链到 `req-docs/`)。 | ||
| 3. `docs-index.md` 中该文档行的链接 href 是否为 **`stock-docs/<文件名>.md`**(不是 `../stock-docs/` 或裸路径)。 | ||
| 4. 所有 Rule/Skill 的 frontmatter 中 `sourceDoc` 是否为 **`配置根/stock-docs/<文件名>.md`**。 | ||
| 5. 链接目标与项目约定的文档目录一致(若约定为 `配置根/stock-docs/`,则勿用 **`配置根/req-docs/`** 作为链接目标)。 | ||
| 1. 每个 `.mdc` 中指向源文档的链接 href 是否为 `**../stock-docs/<文件名>.md`**(不是 `../../stock-docs/` 或误链到 `req-docs/`)。 | ||
| 2. 每个 `配置根/skills/**/SKILL.md` 中指向源文档的链接 href 是否为 `**../../stock-docs/<文件名>.md**`(不是 `../stock-docs/` 或误链到 `req-docs/`)。 | ||
| 3. `docs-index.md` 中该文档行的链接 href 是否为 `**stock-docs/<文件名>.md**`(不是 `../stock-docs/` 或裸路径)。 | ||
| 4. 所有 Rule/Skill 的 frontmatter 中 `sourceDoc` 是否为 `**配置根/stock-docs/<文件名>.md**`。 | ||
| 5. 链接目标与项目约定的文档目录一致(若约定为 `配置根/stock-docs/`,则勿用 `**配置根/req-docs/**` 作为链接目标)。 | ||
| 完成后用一句话总结:已生成 Rules、Skills、文档索引及(若适用)配置根/stock-docs 下的原文备份;并确认「文档路径与链接约定」已遵守。 | ||
@@ -11,2 +11,4 @@ --- | ||
| **与 f2s-doc-add 的分工**:本技能**只**负责「架构说明类**初稿**」这一环,默认**不**在同一技能内写终稿、不直接执行 **f2s-ctx-build**。若用户在工作中要把**已做好的能力**依据多份相关文件路径**一次**解析进上下文(初稿→终稿→Rules/Skills/索引),应使用 **`配置根/skills/f2s-doc-add/SKILL.md`**,**勿用本技能冒充该流程**。 | ||
| --- | ||
@@ -13,0 +15,0 @@ |
@@ -33,3 +33,3 @@ --- | ||
| - 若该约定为项目级或模块级: | ||
| - 在项目约定的规则目录(如 `配置根/rules/`)下新增或更新一条规则,写清「必须/禁止」及适用范围(globs 等)。 | ||
| - 在项目约定的规则目录(如 `配置根/rules/`)下新增或更新一条规则,写清「必须/禁止」及适用范围(**Cursor**:`globs` + **`.mdc`**;**Claude Code** 的 **`.claude/rules/`**:**`.md`** + **`paths:`**,勿写 **`.mdc`** / **`globs:`**)。 | ||
| - 在项目约定的技能目录(如 `配置根/skills/`)下新增或更新一个 Skill,写清触发词与正确/错误示例,便于后续实现与 AI 按规则执行。 | ||
@@ -36,0 +36,0 @@ - 规则与 Skill 中可引用文档作为约定出处。 |
| --- | ||
| name: f2s-req-clarify | ||
| description: 针对 PRD/需求先在对话中分组反问,澄清完成后再输出澄清文档;触发:需求澄清、PRD 澄清 | ||
| description: 针对 PRD/需求反问直到清楚,再可用 f2s-req-backend 出技术方案;触发:需求澄清、PRD 澄清 | ||
| --- | ||
@@ -10,24 +10,4 @@ | ||
| ## 阶段划分(必须遵守) | ||
| **行为**:找出需求中的模糊表述、未定义概念、缺失信息、矛盾、与实现相关但未说明的点 → 分组、具体可答地反问 → 根据回答迭代追问,直到流程、边界、异常、关键概念无歧义。不替用户做业务假设,不清楚就问。 | ||
| ### 阶段一:反问(默认从此开始) | ||
| - 阅读 PRD/描述后,找出模糊表述、未定义概念、缺失信息、矛盾、与实现相关但未说明的点。 | ||
| - **必须把分组、具体可答的反问输出在对话中**(用户可见的回复正文),便于用户逐条答复。**禁止**在本阶段写入 `.cursor/req-docs/` 或输出一份完整的「需求澄清文档」正文(不要一上来就甩整篇 MD)。 | ||
| - 根据用户回答**迭代追问**,直到流程、边界、异常、关键概念无歧义。不替用户做业务假设,不清楚就问。 | ||
| ### 阶段二:澄清文档(仅在信息已足够清晰后) | ||
| - **仅当**流程、边界、异常、关键概念已无歧义(或用户明确表示「可以定稿 / 先按当前理解出文档」)时,再输出一份可直接落盘的「需求澄清文档」(Markdown)。 | ||
| - 文档至少包含:背景与目标、范围(包含/不包含)、关键流程、边界与异常、关键概念定义、验收标准、未决问题(若有)。 | ||
| - 建议保存路径:**`.cursor/req-docs/`**(由用户或 Agent 在定稿后落盘)。 | ||
| - 输出完文档后,再提示使用 **f2s-req-backend**(可附带已定稿要点)生成技术方案。**本技能阶段不输出**技术方案或接口设计。 | ||
| ## 禁止 | ||
| - **禁止**在首次处理需求时直接输出完整澄清文档或创建 `req-docs` 澄清终稿(除非用户明确要求跳过反问、直接根据已有材料生成文档)。 | ||
| - **禁止**用「仅附件/仅工具写入」代替在对话中展示问题:阶段一反问须出现在**对话框**中。 | ||
| ## 与用户协作提示(可写在阶段二末尾) | ||
| - 若用户希望保留反问记录,可在定稿文档中增加「澄清过程摘要」小节,概括对话中已确认的结论(非必须)。 | ||
| **结束**:当信息已足够清晰时,必须输出一份可直接落盘的「需求澄清文档」(Markdown)。文档至少包含:背景与目标、范围(包含/不包含)、关键流程、边界与异常、关键概念定义、验收标准、未决问题(如有)。建议保存到 **`.cursor/req-docs/`**。输出完文档后,再提示使用 **f2s-req-backend 技能**(可附带需求条件)生成技术方案,供后续代码实现。不在此阶段输出技术方案或接口设计。 |
| --- | ||
| name: stock-docs-vs-req-docs | ||
| description: 文档目录 stock-docs 与 req-docs 分工;触发词:stock-docs、req-docs、配置根文档、PDF 终稿、技术方案放哪、f2s-ctx-build 路径 | ||
| description: 文档目录 stock-docs 与 req-docs 分工;触发词:stock-docs、req-docs、f2s-ctx-build、f2s-doc-arch、f2s-doc-add、已落地能力、技术方案放哪、PDF 终稿 | ||
| --- | ||
@@ -12,2 +12,3 @@ | ||
| - 实现或命令执行时需要选择 **`配置根/stock-docs/`** 还是 **`配置根/req-docs/`**。 | ||
| - 区分 **f2s-doc-arch**(架构说明**初稿**)与 **f2s-doc-add**(**工作中**把**已落地能力**从多文件解析进上下文):二者产物都落在 **stock-docs/**,与 **req-docs** 无关;分工见 **`skills/f2s-doc-arch/SKILL.md`**、**`skills/f2s-doc-add/SKILL.md`**。 | ||
@@ -18,4 +19,4 @@ ## 核心对照 | ||
| |------|------|------| | ||
| | **stock-docs** | 配置根下 | 存量上下文源 → **f2s-ctx-build** 技能、终稿/初稿/架构说明 | | ||
| | **req-docs** | 配置根下(如 `.cursor/req-docs/`) | 需求与技术方案 → 按 `implement-tech-design` **写代码**、f2s-doc-pdf 输出 | | ||
| | **stock-docs** | 配置根下 | **存量上下文源** → **f2s-ctx-build** 入参;**f2s-doc-final** 的初稿/终稿;**f2s-doc-arch** 的架构初稿;**f2s-doc-add** 聚合读源后的初稿与终稿(与 f2s-doc-arch 分工不同,见该 SKILL「使用时机」) | | ||
| | **req-docs** | 配置根下(如 `.cursor/req-docs/`) | 需求与技术方案 → 按 `implement-tech-design` **写代码**、**f2s-doc-pdf** 输出 | | ||
@@ -26,5 +27,6 @@ ## 常见错误 | ||
| - 在 Rule 内链到 **`req-docs/`**(应链到 **stock-docs** 中的源文档)。 | ||
| - 把 **f2s-doc-add** / **f2s-doc-arch** 产出的初稿、终稿误存到 **req-docs**(应始终在 **stock-docs/**)。 | ||
| ## 详细约定 | ||
| 见 Flow2Spec 包内 `docs/README-目录与路径约定.md`;工作流以配置根 **`skills/<技能名>/SKILL.md`**(如 **f2s-ctx-build**)为准。 | ||
| 见 Flow2Spec 包内 **`docs/README-目录与路径约定.md`**;技能顺序与 **f2s-doc-arch** / **f2s-doc-add** 见 **`docs/README-命令说明.md`**。具体步骤以配置根 **`skills/<技能名>/SKILL.md`**(如 **f2s-ctx-build**、**f2s-doc-add**)为准。 |
Sorry, the diff of this file is not supported yet
2648380
0.85%33
6.45%194
36.62%94
1.08%