Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion .Knowledge/stock-docs/项目里程碑.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# 项目里程碑

> **范围**:整个项目
> **更新时间**:`2026-08-04`
> **更新时间**:`2026-08-19`

## 总览

| 阶段 | 时间 | 摘要 |
| --- | --- | --- |
| M29 · DeepSeek Harness 原生插件落地 | 2026-08-19 | Core 提供宿主中立资源与版本检查 API;独立仓 [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness) 发布 `@double-coding/flow2spec-deepseek-harness` 原生 Cordis 插件 |
| M28 · DeepSeek Harness 项目级技能适配 | 2026-08-14 | 新增 `flow2spec init dsh`,将 Flow2Spec 技能分发到 `.dsh/skills/`,规则镜像到 `.dsh/topics/`,并适配根 `AGENTS.md` 入口;未装原生插件时仍可用 |
| M27 · npm 组织名拼写修正与迁移 | 2026-08-04 | 修正 npm 组织名 codeing → coding,新包发布在 @double-coding/flow2spec 3.2.11;旧包 @double-codeing/flow2spec 3.2.10 收官 + npm deprecate 全版本告知;README/CLI 增加双语迁移公告,f2s-kb-upgrade 步骤 -1 增加 D 分支自动完成组织名迁移(仅存在于旧包收官版) |
| M26 · 知识库自动合并引擎与协作边界加固 | 2026-08 | 新增 `flow2spec kb` 五命令、结构化 delta、topic revision 乐观锁与技能自动合并链路;强化 developerId 降级与空 content 校验边界,版本进入 3.2.8 |
| M25 · 多人任务按 developerId 隔离 | 2026-07 | 新增协作开关与 developerId 解析链路,将个人任务进度隔离到独立任务根,同时保持共享知识库统一协作 |
Expand Down Expand Up @@ -35,6 +37,20 @@
| M2 · OpenSpec 退场与 f2s 技能化 | 2026-04-23 | 删除 OpenSpec/opsx 依赖;完整转换为 f2s 自研技能路线;需求澄清、技术方案与技能模板化能力成型 |
| M1 · CLI 初始化与 OpenSpec 协作流 | 2026-02 ~ 2026-04 | Flow2Spec 作为可安装 CLI 初始化;早期围绕 OpenSpec/opsx 变更流组织 AI 协作 |

## M29 · DeepSeek Harness 原生插件落地

- 独立仓 [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness) 发布原生 Cordis 插件 `@double-coding/flow2spec-deepseek-harness`
- 插件在 Harness 进程内调用 Flow2Spec Core,不复制 CLI、Skills 或知识库算法
- 通过 Cordis 生命周期加载项目 `.Knowledge/` 与 `f2s-*` 技能;提供 status / init / doctor / route / kb / update 命令与工作区设置卡片
- Core `3.4.x` 提供 `resources.skillCatalog()`、`resources.unifiedEntry()`、`update.check()`,供原生插件消费
- `flow2spec init dsh` 作为未安装插件时的项目级兼容入口保留

## M28 · DeepSeek Harness 项目级技能适配

- 新增 `flow2spec init dsh`:把 Flow2Spec 技能写入 `.dsh/skills/<skill-name>/SKILL.md`
- 规则长文镜像到 `.dsh/topics/`,并写入 `.dsh/AGENTS.md` 目录指针
- 仓库根没有 `AGENTS.md` 时生成 Harness 兼容入口;已有入口不覆盖

## M27 · npm 组织名拼写修正与迁移

- 发现旧组织名 `@double-codeing` 存在拼写错误(多了一个 `e`),启动迁移到 `@double-coding`
Expand Down
4 changes: 2 additions & 2 deletions .Knowledge/topics/f2s-flow2spec-milestones.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: flow2spec-milestones
revision: 0
revision: 1
summary: flow2spec-milestones
primary: feature
confidence: inferred
Expand All @@ -16,7 +16,7 @@ confidence: inferred

当用户询问「项目里程碑」「版本演进」「开源和内部仓区别」「双语 PPT」「Cursor 插件提交」时:

1. 读 [项目里程碑](../stock-docs/项目里程碑.md):**版本能力表** + M1–M18(最新阶段在前)。
1. 读 [项目里程碑](../stock-docs/项目里程碑.md):**版本能力表** + M1–M29(最新阶段在前)。
2. 演示路径:内部 `flow2spec-intro-draft` + `sync-pages.sh`;开源 `flow2spec-intro-public`(中)与 `-public-en`(英)+ `sync-gh-pages.sh`。
3. 架构细节 → `flow2spec架构说明_终稿.md`;演示约定 → `flow2spec-presentations` 主题。

Expand Down
5 changes: 3 additions & 2 deletions .Knowledge/topics/flow2spec-dsh-adapter.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: flow2spec-dsh-adapter
revision: 1
revision: 2
summary: "DeepSeek Harness 项目级技能初始化与目录适配"
primary: feature
confidence: inferred
Expand All @@ -17,7 +17,8 @@ tags: [module]
- `flow2spec init dsh` 将 Flow2Spec 技能复制到 `.dsh/skills/<skill-name>/SKILL.md`。
- 将模板规则长文镜像到 `.dsh/topics/*.md`,并写入 `.dsh/AGENTS.md` 目录指针。
- 根目录没有 `AGENTS.md` 时生成 Harness 兼容的完整入口;已有入口不会被覆盖。
- 原生 Cordis 插件不在本适配范围内,属于后续路线图事项。
- 原生 Cordis 插件已落地:独立仓 [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness),npm 包 `@double-coding/flow2spec-deepseek-harness`。
- `flow2spec init dsh` 仍作为未安装原生插件时的项目级兼容入口。

## 维护边界

Expand Down
4 changes: 3 additions & 1 deletion README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ Flow2Spec adds a spec-driven workflow layer to AI coding agents. It creates a sm

```bash
npx @double-coding/flow2spec@latest init
# DeepSeek Harness projects:
# Native DeepSeek Harness plugin:
# https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness
# Project-level adapter without the plugin:
flow2spec init dsh
```

Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ Flow2Spec adds a spec-driven workflow layer to AI coding agents. It creates a sm

```bash
npx @double-coding/flow2spec@latest init
# DeepSeek Harness projects:
# Native DeepSeek Harness plugin:
# https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness
# Project-level adapter without the plugin:
flow2spec init dsh
```

Expand Down
4 changes: 3 additions & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ Flow2Spec 是给 AI 编码工具使用的 Spec-driven 工作流层。它会在

```bash
npx @double-coding/flow2spec@latest init
# DeepSeek Harness 项目:
# DeepSeek Harness 原生插件:
# https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness
# 未装插件时的项目级适配:
flow2spec init dsh
```

Expand Down
19 changes: 17 additions & 2 deletions docs/en/milestones.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
# Project Milestones

> **Scope**: whole project
> **Updated**: `2026-08-04`
> **Updated**: `2026-08-19`

## Overview

| Stage | Time | Summary |
| --- | --- | --- |
| M28 · DeepSeek Harness project skill adapter | 2026-08-14 | Added `flow2spec init dsh`, distributing Flow2Spec skills to `.dsh/skills/`, mirroring rules to `.dsh/topics/`, and adapting the repository-root `AGENTS.md` entry; native Cordis plugin work remains on the roadmap |
| M29 · DeepSeek Harness native plugin | 2026-08-19 | Core shipped host-neutral resource and update-check APIs; the [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness) repo published the `@double-coding/flow2spec-deepseek-harness` native Cordis plugin |
| M28 · DeepSeek Harness project skill adapter | 2026-08-14 | Added `flow2spec init dsh`, distributing Flow2Spec skills to `.dsh/skills/`, mirroring rules to `.dsh/topics/`, and adapting the repository-root `AGENTS.md` entry; remains the fallback when the native plugin is not installed |
| M27 · npm org rename typo fix & migration | 2026-08-04 | Fixed npm org name typo codeing → coding; new package published as @double-coding/flow2spec 3.2.11; legacy @double-codeing/flow2spec 3.2.10 farewell release + npm deprecate all versions; README/CLI added bilingual migration notice; f2s-kb-upgrade Step -1 added D branch for automatic org rename migration (legacy pkg only) |
| M26 · Automated knowledge merge engine and collaboration hardening | 2026-08 | Added five `flow2spec kb` commands, structured deltas, topic-revision optimistic locking, and an automatic skill merge path; tightened developerId fallbacks and blank-content validation; version reached 3.2.8 |
| M25 · Per-developer task isolation | 2026-07 | Added collaboration settings and developerId resolution, isolating personal progress under separate task roots while retaining one shared knowledge base |
Expand Down Expand Up @@ -38,6 +39,20 @@
| M2 · OpenSpec removal and f2s skills | 2026-04-23 | Removed OpenSpec/opsx; converted to f2s skill workflow; requirements clarification and technical proposal generation established |
| M1 · CLI bootstrap and OpenSpec workflow | 2026-02 ~ 2026-04 | Flow2Spec started as an installable CLI; early AI collaboration organized around OpenSpec/opsx change flows |

## M29 · DeepSeek Harness Native Plugin

- Published the native Cordis plugin `@double-coding/flow2spec-deepseek-harness` from [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness)
- The plugin calls Flow2Spec Core inside the Harness process and does not copy the CLI, skills, or knowledge algorithms
- Loads project `.Knowledge/` and `f2s-*` skills through Cordis lifecycle hooks; adds status / init / doctor / route / kb / update commands and a workspace settings card
- Core `3.4.x` added `resources.skillCatalog()`, `resources.unifiedEntry()`, and `update.check()` for native hosts
- `flow2spec init dsh` remains the project-level fallback when the plugin is not installed

## M28 · DeepSeek Harness Project Skill Adapter

- Added `flow2spec init dsh` to write Flow2Spec skills to `.dsh/skills/<skill-name>/SKILL.md`
- Mirrored long-form rules to `.dsh/topics/` and wrote the `.dsh/AGENTS.md` directory pointer
- Generated a Harness-compatible root `AGENTS.md` only when missing; existing entries are preserved

## M27 · npm Org Rename Typo Fix & Migration

- Discovered a typo in the legacy org name `@double-codeing` (extra `e`); migrated to `@double-coding`
Expand Down
4 changes: 2 additions & 2 deletions docs/en/usage-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Before executing any **`f2s-*` skill**, the Agent needs to obtain the actual val
| **Cursor** | `.cursor/rules/f2s-config-check.mdc` (`alwaysApply`) | Config reading remains rule-based: **Read(`flow2spec.config.json`)** before entering skill body. Cursor hooks are used for update checks only, not automatic config reads. |
| **Claude Code** | `.claude/hooks/f2s-config-session.js` + `.claude/hooks/f2s-config-inject.js` + `.claude/settings.json` | `SessionStart` injects one config summary; `PreToolUse` only guards **`f2s-*` Skill** calls by reminding the agent that the first skill-body action must be **Read**. Neither replaces the disk read. |
| **Codex** | root `AGENTS.md` mandatory step + `.codex/topics/f2s-config-check.md` + `{{FLOW2SPEC_PROJECT_CONFIG}}` field-semantics table + `.codex/hooks/f2s-config-session.js` | `SessionStart` injects one configuration summary; config reading still relies on text rules and **Read** as a hard requirement; the table explains field semantics only, does not write current values, and disk Read is authoritative. Codex has no Claude-style `PreToolUse` guard, so when `subAgent=true` the skill body must explicitly decide whether to split; even when it does not split, it must output the no-split reason. |
| **DeepSeek Harness** | root `AGENTS.md` (generated only when absent) + `.dsh/skills/` + `.dsh/topics/` | Harness loads project instructions from repository-root `AGENTS.md` and discovers project skills from `.dsh/skills/<name>/SKILL.md`; Flow2Spec mirrors long-form rules to `.dsh/topics/`. Native Cordis plugin integration is outside this adapter. |
| **DeepSeek Harness** | native plugin `@double-coding/flow2spec-deepseek-harness`; or `flow2spec init dsh` writing root `AGENTS.md` (generated only when absent) + `.dsh/skills/` + `.dsh/topics/` | Prefer the [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness) native Cordis plugin. Without the plugin, Harness loads project instructions from repository-root `AGENTS.md` and discovers project skills from `.dsh/skills/<name>/SKILL.md`; Flow2Spec mirrors long-form rules to `.dsh/topics/`. |
| **Knowledge Base (optional)** | When `.Knowledge/manifest-routing` hits **`config-precheck`** | `.Knowledge/topics/f2s-config-precheck.md` is a **routing summary** that links to the Codex long-form article; Flow2Spec does **not** maintain a second full copy in `.Knowledge`, nor does it replace a `Read` of the JSON. |

For field semantics and default value rules, see [Commands Reference § 6) Sub-Agent Configuration](./commands-reference.md). For the design perspective, see [Design Principles § 4.5.1](./design-principles.md).
Expand Down Expand Up @@ -138,7 +138,7 @@ In interactive terminals, the Flow2Spec CLI checks the latest npm version with a

After `flow2spec init codex`, Codex projects include `.codex/hooks.json`, `.codex/hooks/f2s-config-session.js`, and `.codex/hooks/f2s-update-check.js`. On Codex `SessionStart` for `startup|resume`, the first script injects one configuration summary and the second checks the knowledge-base version automatically. When the hook is first generated or changed, trust it through `/hooks` in Codex. Set `updateCheck.enabled=false` in `flow2spec.config.json` to skip only the version check.

After `flow2spec init dsh`, Flow2Spec writes project skills to `.dsh/skills/`, mirrors long-form rules to `.dsh/topics/`, and writes `.dsh/AGENTS.md` as a directory pointer. If the repository has no root `AGENTS.md`, init generates a Harness-compatible full entry; an existing root file is preserved.
Prefer the native Cordis plugin `@double-coding/flow2spec-deepseek-harness` from [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness). Without the plugin, run `flow2spec init dsh`: Flow2Spec writes project skills to `.dsh/skills/`, mirrors long-form rules to `.dsh/topics/`, and writes `.dsh/AGENTS.md` as a directory pointer. If the repository has no root `AGENTS.md`, init generates a Harness-compatible full entry; an existing root file is preserved.

After `flow2spec init cursor`, Cursor projects include `.cursor/hooks.json` and `.cursor/hooks/f2s-update-check.js`. The hook runs on Cursor `sessionStart` and injects upgrade reminders through `additional_context`. Set `updateCheck.enabled=false` in `flow2spec.config.json` to skip the check.

Expand Down
4 changes: 2 additions & 2 deletions docs/使用说明.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ flow2spec init [cursor|claude|codex|dsh ...] --reset-knowledge
| **Cursor** | `.cursor/rules/f2s-config-check.mdc`(`alwaysApply`) | 配置读取走文本约束:技能正文前先 **Read(`flow2spec.config.json`)**;Cursor hook 仅用于版本更新检测,不自动读取配置。 |
| **Claude Code** | `.claude/hooks/f2s-config-session.js` + `.claude/hooks/f2s-config-inject.js` + `.claude/settings.json` | `SessionStart` 仅注入一次配置摘要;`PreToolUse` 仅在调用 **`f2s-*` Skill** 时做守门提示,提醒首步必须 **Read**。两者都不替代磁盘 Read。 |
| **Codex** | 根 `AGENTS.md` 顶部强制步骤 + `.codex/topics/f2s-config-check.md` + `{{FLOW2SPEC_PROJECT_CONFIG}}` 字段语义表 + `.codex/hooks/f2s-config-session.js` | `SessionStart` 注入一次配置摘要;配置读取仍以文本约束 + **Read** 为硬要求;表格只说明字段语义,不写当前值,配置真值以磁盘 **Read** 为准。Codex 无 Claude 的 `PreToolUse` 守门,`subAgent=true` 时需在技能正文前段显式判断是否拆子;即使不拆,也必须输出不拆原因。 |
| **DeepSeek Harness** | 根 `AGENTS.md`(缺少时由 init 生成) + `.dsh/skills/` + `.dsh/topics/` | Harness 从仓库根 `AGENTS.md` 加载项目说明,并从 `.dsh/skills/<name>/SKILL.md` 发现项目技能;Flow2Spec 将规则长文镜像到 `.dsh/topics/`。本轮适配不包含原生 Cordis 插件。 |
| **DeepSeek Harness** | 原生插件 `@double-coding/flow2spec-deepseek-harness`;或 `flow2spec init dsh` 写入根 `AGENTS.md`(缺少时生成) + `.dsh/skills/` + `.dsh/topics/` | 优先安装 [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness) 原生 Cordis 插件。未装插件时,Harness 从仓库根 `AGENTS.md` 加载项目说明,并从 `.dsh/skills/<name>/SKILL.md` 发现项目技能;Flow2Spec 将规则长文镜像到 `.dsh/topics/`。 |
| **知识库(可选)** | `.Knowledge/manifest-routing` 命中 **`config-precheck`** 时 | `.Knowledge/topics/f2s-config-precheck.md` 为**路由摘要**,链向 Codex 长文;**不**在 `.Knowledge` 再维护第二份全文,也**不**替代 Read JSON。 |


Expand Down Expand Up @@ -125,7 +125,7 @@ Flow2Spec CLI 在交互式执行 `flow2spec version` / `flow2spec init` 时会

Codex 项目执行 `flow2spec init codex` 后会写入 `.codex/hooks.json`、`.codex/hooks/f2s-config-session.js` 与 `.codex/hooks/f2s-update-check.js`:前者在 Codex `SessionStart` 的 `startup|resume` 事件注入一次配置摘要,后者自动检查知识库版本;首次生成或 hook 内容变化后,需要在 Codex 中通过 `/hooks` 信任该项目 hook。`flow2spec.config.json` 中 `updateCheck.enabled=false` 时仅跳过版本检查,不影响配置摘要注入。

DeepSeek Harness 项目执行 `flow2spec init dsh` 后,Flow2Spec 会把项目级技能写入 `.dsh/skills/`,把规则长文镜像到 `.dsh/topics/`,并生成 `.dsh/AGENTS.md` 目录指针。若仓库根没有 `AGENTS.md`,init 会生成一份适配 Harness 的完整入口;若已有该文件则保留用户内容,不覆盖。
DeepSeek Harness 优先安装原生 Cordis 插件 `@double-coding/flow2spec-deepseek-harness`(独立仓 [Flow2Spec-DeepSeek-Harness](https://github.com/double-coding-lab/Flow2Spec-DeepSeek-Harness))。未装插件时执行 `flow2spec init dsh`:Flow2Spec 会把项目级技能写入 `.dsh/skills/`,把规则长文镜像到 `.dsh/topics/`,并生成 `.dsh/AGENTS.md` 目录指针。若仓库根没有 `AGENTS.md`,init 会生成一份适配 Harness 的完整入口;若已有该文件则保留用户内容,不覆盖。

Cursor 项目执行 `flow2spec init cursor` 后会写入 `.cursor/hooks.json` 与 `.cursor/hooks/f2s-update-check.js`,在 Cursor `sessionStart` 自动检查知识库版本;脚本通过 `additional_context` 把升级提示注入会话。`flow2spec.config.json` 中 `updateCheck.enabled=false` 时跳过检查。

Expand Down
Loading
Loading