@chenguangyao/devflow-kit 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +232 -0
- package/LICENSE +21 -0
- package/README.md +539 -0
- package/bin/devflow.js +9 -0
- package/docs/RFC-001-devflow-kit.md +617 -0
- package/docs/RFC-002-workflow-kernel.md +134 -0
- package/docs/enterprise-integration-supplement.md +274 -0
- package/docs/internal-gitlab-setup.md +426 -0
- package/docs/marketplace-skills.md +231 -0
- package/docs/migration-from-arb.md +232 -0
- package/docs/tooling-overview.md +774 -0
- package/docs/workflow-orchestration.md +695 -0
- package/docs/workflow-ui-prototype.html +271 -0
- package/package.json +52 -0
- package/schemas/config.schema.json +51 -0
- package/schemas/delta.schema.json +22 -0
- package/schemas/state.schema.json +130 -0
- package/schemas/status-surface.schema.json +197 -0
- package/schemas/workflow-confirmation-surface.schema.json +70 -0
- package/schemas/workflow-picker.schema.json +94 -0
- package/scripts/postinstall.js +101 -0
- package/scripts/render-workflow-ui-prototype.js +271 -0
- package/skills/apply/SKILL.md +313 -0
- package/skills/apply/references/discipline-checklist.md +145 -0
- package/skills/apply/references/subagent-implementer-prompt.md +113 -0
- package/skills/apply/references/subagent-orchestration.md +150 -0
- package/skills/apply/references/subagent-reviewer-prompt.md +180 -0
- package/skills/apply/references/tdd-loop.md +287 -0
- package/skills/apply/references/when-plan-is-wrong.md +279 -0
- package/skills/apply/references/worktree-swarm.md +292 -0
- package/skills/archive/SKILL.md +229 -0
- package/skills/archive/references/conflict-resolution.md +336 -0
- package/skills/archive/references/knowledge-deposit.md +381 -0
- package/skills/archive/references/spec-merge.md +365 -0
- package/skills/brainstorm/SKILL.md +123 -0
- package/skills/brainstorm/references/proposal-template.md +244 -0
- package/skills/brainstorm/references/question-catalog.md +168 -0
- package/skills/brainstorm/references/session-template.md +184 -0
- package/skills/ci-fix/SKILL.md +63 -0
- package/skills/ci-fix/references/loop.md +25 -0
- package/skills/code-review/SKILL.md +279 -0
- package/skills/code-review/references/escalation-playbook.md +192 -0
- package/skills/code-review/references/language-cheatsheets/go.md +175 -0
- package/skills/code-review/references/language-cheatsheets/java-spring-mybatis.md +246 -0
- package/skills/code-review/references/language-cheatsheets/python.md +170 -0
- package/skills/code-review/references/language-cheatsheets/vue.md +199 -0
- package/skills/code-review/references/output-template.md +275 -0
- package/skills/code-review/references/review-checklist.md +251 -0
- package/skills/complexity-grading/SKILL.md +259 -0
- package/skills/deliver/SKILL.md +271 -0
- package/skills/deliver/references/delivery-modes.md +299 -0
- package/skills/deliver/references/notify.md +359 -0
- package/skills/deliver/references/pr-description.md +319 -0
- package/skills/dependency-upgrade/SKILL.md +57 -0
- package/skills/dependency-upgrade/references/risk-matrix.md +38 -0
- package/skills/df-orchestrator/SKILL.md +407 -0
- package/skills/df-orchestrator/references/complexity-grading.md +177 -0
- package/skills/df-orchestrator/references/escalation-matrix.md +191 -0
- package/skills/df-orchestrator/references/routing-rules.md +290 -0
- package/skills/df-orchestrator/references/workflow-state-machine.md +208 -0
- package/skills/frontend-quality/SKILL.md +61 -0
- package/skills/frontend-quality/references/checklist.md +35 -0
- package/skills/handoff-resume/SKILL.md +59 -0
- package/skills/handoff-resume/references/handoff-template.md +54 -0
- package/skills/plan/SKILL.md +166 -0
- package/skills/plan/references/task-breakdown.md +207 -0
- package/skills/plan/references/task-sequencing.md +143 -0
- package/skills/plan/references/task-template.md +248 -0
- package/skills/requirement-analysis/SKILL.md +499 -0
- package/skills/requirement-analysis/references/acceptance-criteria.md +183 -0
- package/skills/requirement-analysis/references/code-recon.md +151 -0
- package/skills/requirement-analysis/references/edge-case-catalog.md +164 -0
- package/skills/requirement-analysis/references/requirement-template.md +339 -0
- package/skills/requirement-analysis/references/scope-negotiation.md +162 -0
- package/skills/security-hardening/SKILL.md +60 -0
- package/skills/security-hardening/references/checklist.md +42 -0
- package/skills/tech-spec/SKILL.md +388 -0
- package/skills/tech-spec/references/api-contract-design.md +172 -0
- package/skills/tech-spec/references/decision-records.md +110 -0
- package/skills/tech-spec/references/design-template.md +301 -0
- package/skills/tech-spec/references/rollout-and-rollback.md +203 -0
- package/skills/tech-spec/references/spec-delta-conventions.md +250 -0
- package/skills/tech-spec/references/transaction-patterns.md +212 -0
- package/skills/test-spec/SKILL.md +219 -0
- package/skills/test-spec/references/coverage-strategy.md +218 -0
- package/skills/test-spec/references/edge-case-to-test.md +143 -0
- package/skills/test-spec/references/test-case-template.md +276 -0
- package/skills/verify/SKILL.md +232 -0
- package/skills/verify/references/nfr-verification.md +292 -0
- package/skills/verify/references/report-templates.md +510 -0
- package/skills/verify/references/self-test-guide.md +240 -0
- package/skills/verify/references/verify-rollback-map.md +247 -0
- package/src/cli/commands/_helpers.js +108 -0
- package/src/cli/commands/_submit.js +718 -0
- package/src/cli/commands/apply.js +198 -0
- package/src/cli/commands/archive.js +180 -0
- package/src/cli/commands/checkpoint.js +113 -0
- package/src/cli/commands/deliver.js +377 -0
- package/src/cli/commands/deploy.js +504 -0
- package/src/cli/commands/design.js +158 -0
- package/src/cli/commands/disable.js +21 -0
- package/src/cli/commands/doctor.js +178 -0
- package/src/cli/commands/enable.js +21 -0
- package/src/cli/commands/flow.js +645 -0
- package/src/cli/commands/help.js +93 -0
- package/src/cli/commands/ingest.js +602 -0
- package/src/cli/commands/init.js +341 -0
- package/src/cli/commands/knowledge.js +523 -0
- package/src/cli/commands/logs.js +43 -0
- package/src/cli/commands/new.js +202 -0
- package/src/cli/commands/plan.js +49 -0
- package/src/cli/commands/propose.js +27 -0
- package/src/cli/commands/provider.js +698 -0
- package/src/cli/commands/report.js +143 -0
- package/src/cli/commands/requirement.js +227 -0
- package/src/cli/commands/review.js +301 -0
- package/src/cli/commands/skills.js +457 -0
- package/src/cli/commands/status.js +925 -0
- package/src/cli/commands/switch.js +27 -0
- package/src/cli/commands/sync.js +47 -0
- package/src/cli/commands/test.js +366 -0
- package/src/cli/commands/uninstall.js +32 -0
- package/src/cli/commands/update.js +74 -0
- package/src/cli/commands/verify.js +354 -0
- package/src/cli/commands/worktree.js +78 -0
- package/src/cli/index.js +72 -0
- package/src/cli/parse-args.js +102 -0
- package/src/core/autodetect.js +271 -0
- package/src/core/change.js +208 -0
- package/src/core/checkpoint.js +217 -0
- package/src/core/config.js +60 -0
- package/src/core/delta.js +290 -0
- package/src/core/markers.js +59 -0
- package/src/core/paths.js +173 -0
- package/src/core/plan-tasks.js +36 -0
- package/src/core/project-routing.js +285 -0
- package/src/core/projects.js +200 -0
- package/src/core/state.js +200 -0
- package/src/core/workflow-check.js +177 -0
- package/src/core/workflow-init.js +34 -0
- package/src/core/workflow-picker.js +154 -0
- package/src/core/workflow-policy.js +119 -0
- package/src/core/workflow-suggest.js +181 -0
- package/src/core/workflow-verify.js +88 -0
- package/src/core/workflow.js +433 -0
- package/src/core/worktree.js +241 -0
- package/src/knowledge/categories.js +107 -0
- package/src/knowledge/classify.js +125 -0
- package/src/knowledge/deposit.js +414 -0
- package/src/knowledge/migrate.js +149 -0
- package/src/knowledge/mr.js +219 -0
- package/src/knowledge/query.js +131 -0
- package/src/knowledge/registry.js +151 -0
- package/src/knowledge/sync.js +179 -0
- package/src/providers/base.js +74 -0
- package/src/providers/drivers/api-yapi.js +78 -0
- package/src/providers/drivers/ci-jenkins.js +109 -0
- package/src/providers/drivers/intake-confluence.js +544 -0
- package/src/providers/drivers/kb-git.js +549 -0
- package/src/providers/drivers/kb-weknora.js +472 -0
- package/src/providers/drivers/notify-smtp.js +515 -0
- package/src/providers/drivers/observability-oss.js +43 -0
- package/src/providers/drivers/observability-sls.js +50 -0
- package/src/providers/lifecycle.js +135 -0
- package/src/providers/loader.js +132 -0
- package/src/providers/local.js +190 -0
- package/src/providers/userconfig.js +283 -0
- package/src/reports/aggregate.js +185 -0
- package/src/reports/coverage.js +163 -0
- package/src/reports/detect.js +143 -0
- package/src/reports/parse.js +236 -0
- package/src/templates/files/ci/github.yml +38 -0
- package/src/templates/files/ci/gitlab.yml +27 -0
- package/src/templates/files/design.md +63 -0
- package/src/templates/files/ide/devflow-workflow.md +58 -0
- package/src/templates/files/ide/project-overview-reference.md +1 -0
- package/src/templates/files/ide/project-overview.md +27 -0
- package/src/templates/files/knowledge-index.json +17 -0
- package/src/templates/files/knowledge.md +28 -0
- package/src/templates/files/meta.json +8 -0
- package/src/templates/files/plan.md +38 -0
- package/src/templates/files/proposal.md +33 -0
- package/src/templates/files/reports/contract-test.md +40 -0
- package/src/templates/files/reports/e2e-test.md +30 -0
- package/src/templates/files/reports/integration-test.md +36 -0
- package/src/templates/files/reports/joint-test.md +58 -0
- package/src/templates/files/reports/perf.md +24 -0
- package/src/templates/files/reports/regression.md +20 -0
- package/src/templates/files/reports/remote-test.md +55 -0
- package/src/templates/files/reports/self-test.md +43 -0
- package/src/templates/files/reports/smoke-test.md +22 -0
- package/src/templates/files/reports/unit-test.md +36 -0
- package/src/templates/files/requirement.md +51 -0
- package/src/templates/files/review.md +38 -0
- package/src/templates/files/tests.md +36 -0
- package/src/templates/files/verify.md +32 -0
- package/src/templates/index.js +21 -0
- package/src/utils/log.js +37 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
本项目遵循 [Keep a Changelog](https://keepachangelog.com/),版本号遵循 [Semver](https://semver.org/)。
|
|
4
|
+
|
|
5
|
+
## [0.1.6] — `devflow init` 默认不再每个项目都写 IDE 文件(全局 skill 已覆盖)
|
|
6
|
+
|
|
7
|
+
### 改进(Changed)
|
|
8
|
+
|
|
9
|
+
- **`devflow init` 默认 IDE 行为改为"按需写"**:
|
|
10
|
+
- 检测到用户级 skill (`~/.cursor/skills/devflow-kit/`) 已装 → **不再生成** `.claude/CLAUDE.md` / `.cursor/rules/devflow.mdc` / `AGENTS.md`
|
|
11
|
+
- 没装用户级 skill → 跟以前一样,3 个文件全写(老行为兜底)
|
|
12
|
+
- 原因:这 3 个文件里 `workflow` 段(命令速查表,30 行)在每个项目里**完全相同**,而且全局 skill 的 `df-orchestrator/SKILL.md` 已经是它的超集;`project-overview` 一行引用也已经被 skill 在每次会话开头从 `devflow/config.json#projectOverview.referencedFile` 读取,无需中转
|
|
13
|
+
- **新增 `--ide=auto|full|minimal|none`** 显式控制:
|
|
14
|
+
- `auto`(默认):有全局 skill → minimal,没有 → full
|
|
15
|
+
- `full`:每个目标都写完整 marker(老行为)
|
|
16
|
+
- `minimal`:跳过所有 IDE 文件,依赖全局 skill + `devflow/config.json` 给 AI 上下文
|
|
17
|
+
- `none`:连 minimal 那一行提示日志都不打,完全静默跳过
|
|
18
|
+
- `cfg.ide.mode` 写进 `devflow/config.json`,后续 `devflow update` 会按这个模式继续工作
|
|
19
|
+
|
|
20
|
+
### 新增(Added)
|
|
21
|
+
|
|
22
|
+
- **`devflow update --ide-clean`** —— 一键清理已有的 IDE marker 段(从老的 `--ide=full` init 留下的)
|
|
23
|
+
- 只删 `<!-- BEGIN devflow:* -->` 区段,保留用户在同一文件里的其他内容
|
|
24
|
+
- marker 删完后文件变空(比如 `.cursor/rules/devflow.mdc` 通常就是只有 marker)→ 整个文件一并删除
|
|
25
|
+
- 升级/切换到 minimal 模式后跑一次,一键回收冗余文件
|
|
26
|
+
- minimal 模式下,如果检测到旧 `--ide=full` 留下的文件,会在日志里提示"`devflow update --ide-clean` 一键清理",不强制改
|
|
27
|
+
|
|
28
|
+
### 迁移建议
|
|
29
|
+
|
|
30
|
+
- 现有项目在升级到 0.1.6 后,**重跑 `devflow init`** 会自动按新默认走 minimal,但**老 IDE 文件不会被自动删**(怕你在里面加了别的内容)
|
|
31
|
+
- 想清理:`devflow update --ide-clean`,**只删** devflow marker 段,其他内容保留;文件全空就连文件一起删
|
|
32
|
+
- 想保留老行为:`devflow init --ide=full`,所有项目继续写 3 份文件
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## [0.1.5] — `~/.config/devflow/providers.json` 默认创建 + `provider setup` 引导式向导
|
|
37
|
+
|
|
38
|
+
### 新增(Added)
|
|
39
|
+
|
|
40
|
+
- **`devflow provider setup`** —— 一行命令的引导式向导(对标 oh-my-claude / openclaw 那种交互式安装):
|
|
41
|
+
- 列出 6 个内置预设(`intake.qs-bridge` / `issue.qs-bridge` / `vcs.qs-bridge` / `ci.qs-bridge` / `notify.smtp` / `kb.weknora`),已配置的会标 `[configured]`
|
|
42
|
+
- 选择支持 `1,3,5` / `1 3 5` / `all` / `none`,空选默认 `all`
|
|
43
|
+
- 选中的逐个走"字段级提示词":每个字段有 `# help` 说明,可以填具体值、敲 `env:NAME` 引用环境变量、或回车跳过用默认/已有值
|
|
44
|
+
- 已配置的 provider 询问 (k)eep / (e)dit / (s)kip,不会强行覆盖
|
|
45
|
+
- 全部填完一次性 `chmod 0600` 写入,然后逐个 `validate`,有失败给出 `devflow provider rotate <name>` 的修补提示
|
|
46
|
+
- 默认写 `~/.config/devflow/providers.json`(`--scope=user`),`--scope=project` 写仓库级
|
|
47
|
+
- 非 TTY 直接退出并提示用 `devflow provider add --no-prompt`(脚本化场景)
|
|
48
|
+
- **`devflow init` 完成后自动提示**:如果 `~/.config/devflow/providers.json` 还是空 `{}`,会在 "next:" 段顶端高亮 `devflow provider setup` 这一行
|
|
49
|
+
- **SMTP 引导补全 `user / pass / authMethod`**(原本 hints 里漏了认证字段)
|
|
50
|
+
- **自动创建 `~/.config/devflow/providers.json`**(空 `{}`,chmod 0600),在两处时机都会做:
|
|
51
|
+
- `npm i -g @chenguangyao/devflow-kit` 的 `postinstall` 钩子执行时(即使 skill 已存在,只要配置文件缺失也会补)
|
|
52
|
+
- `devflow init` 在每个项目里执行时(不会覆盖已有内容)
|
|
53
|
+
- 同目录顺手生成 **`README.md`**,包含 schema 示例、6 类 provider(intake / issue / vcs / ci / notify / kb)的填法、`${env:VAR}` 引用约定、resolution order 与 secret hygiene 说明
|
|
54
|
+
- 目录权限 `0700`,文件权限 `0600`,**每次调用都会重新强制**(防止用户/工具误改宽)
|
|
55
|
+
- 新增 helper `src/providers/userconfig.js#ensureUserConfig()`,可被 init / postinstall / 任意子命令复用
|
|
56
|
+
- **`devflow provider add/remove/rotate` 默认走 user scope**,即写入 `~/.config/devflow/providers.json`
|
|
57
|
+
- 新增 `--scope=user|project` 显式切换,`--scope=project` 仍写到 `<repo>/devflow/providers.json`(用于仓库级覆盖)
|
|
58
|
+
- 兼容旧行为:`provider load()` 的合并顺序仍是 project > user > 内置 local
|
|
59
|
+
- 18 项新测试:`userconfig.test.js`(6 个,覆盖创建/幂等/权限/perms re-apply)+ `provider-setup.test.js`(9 个,覆盖 `parseSelection` 边界 + 预设目录 + TTY 拒绝 + 端到端 stub readline)+ `init` & `postinstall` 各补 1 个回归 + 1 个升级场景(skills 已装但 config 不存在)
|
|
60
|
+
|
|
61
|
+
### 内部
|
|
62
|
+
|
|
63
|
+
- `init.test.js` 中遗漏的 `withCleanHome` 包裹补齐,避免测试污染开发者真实 `~/.config/devflow/`
|
|
64
|
+
- `provider.js` 的所有 user-facing 错误信息从 `df xxx` 同步到 `devflow xxx`
|
|
65
|
+
|
|
66
|
+
### 升级建议
|
|
67
|
+
|
|
68
|
+
- 现有用户**无需手动迁移**:下次跑 `devflow init` 或 `npm i -g @chenguangyao/devflow-kit` 升级时,该文件会自动补建
|
|
69
|
+
- 已经把 provider 写在 `<repo>/devflow/providers.json` 里也**不用动**,resolution order 没变
|
|
70
|
+
- 只想保留一套配置的用户可以执行 `devflow provider add <name> --scope=user`(或编辑 `~/.config/devflow/providers.json`),然后从 repo 里删掉
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## [0.1.4] — skill 装在独立 `devflow-kit/` 子目录,不再散在 IDE skills 顶层
|
|
75
|
+
|
|
76
|
+
### 破坏性变更(Breaking,但带向后兼容)
|
|
77
|
+
|
|
78
|
+
- **skill 安装目录从扁平改为 namespace**。安装路径从 `<skills>/<skill-name>/` 改为 `<skills>/devflow-kit/<skill-name>/`,11 个 skill 整套打包,不再污染 `~/.cursor/skills` / `~/.claude/skills` 顶层。Cursor / Claude Code 都会递归扫描 SKILL.md,运行时透明无影响。
|
|
79
|
+
- 原有 0.1.x **扁平布局自动迁移**:
|
|
80
|
+
- 直接跑 `devflow skills install --scope=user` 时,检测到顶层散落的 11 个 skill 文件夹会**自动**搬进 `devflow-kit/`,不重复
|
|
81
|
+
- `userSkillsInstalled()` 同时识别两种布局,旧版用户不会被告知"未安装"
|
|
82
|
+
- 新增 **`devflow skills migrate [--scope=user|project]`** —— 显式迁移命令,安全幂等,只动我们 ship 的 11 个目录,不碰任何第三方 skill(如 `superpowers/`)
|
|
83
|
+
|
|
84
|
+
### 新增(Added)
|
|
85
|
+
|
|
86
|
+
- `devflow skills status` 输出多了 layout 标记,清晰展示是 `devflow-kit/`(新)还是 `(flat — legacy)`(旧),并对旧布局提示一行迁移建议
|
|
87
|
+
- `devflow skills uninstall` 同时清理 namespace 目录和遗留扁平 skill 目录,不留尾巴
|
|
88
|
+
- 4 项新测试覆盖 namespace 布局、自动迁移、显式迁移、uninstall 多源清理
|
|
89
|
+
|
|
90
|
+
### 内部
|
|
91
|
+
|
|
92
|
+
- `src/cli/commands/skills.js` 引入 `NAMESPACE` / `SHIPPED_SKILLS` / `detectLegacyFlat` / `migrateFlatToNamespace`,布局策略集中可演进
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## [0.1.3] — postinstall bug fix:在 dev 仓库内做 `-g` 安装也能装 skill 了
|
|
97
|
+
|
|
98
|
+
### 修复(Fixed)
|
|
99
|
+
|
|
100
|
+
- **postinstall 不再被自身 dev 仓库目录拦截**。0.1.2 引入了一道 "dev-on-self" 守卫,它检查 `INIT_CWD/package.json` 是否就是本包,然后跳过安装。但当用户 `cd <devflow-kit 仓库> && npm i -g @chenguangyao/devflow-kit`(从仓库内做全局安装)时,这个守卫会误伤,导致 `~/.cursor/skills` 和 `~/.claude/skills` 全空。
|
|
101
|
+
- 现在仅靠 `npm_config_global !== 'true'` 一道关卡处理 dev-on-self —— 在仓库内 `npm install` 装 devDeps 时 `npm_config_global` 不为 true,自然跳过;而 `npm i -g .` / `npm i -g <pkg>` 是用户的明确意图,**不再**被拦。
|
|
102
|
+
- 增加回归测试 `postinstall: still installs even if INIT_CWD is our own repo, as long as -g is set` 锁定该行为。
|
|
103
|
+
|
|
104
|
+
### 内部
|
|
105
|
+
|
|
106
|
+
- skill 安装日志显示 `~/.cursor/skills/foo`(用户级)/`./.cursor/skills/foo`(项目级)而不是混乱的 `../../../.cursor/skills/foo` 相对路径。
|
|
107
|
+
- `init.test.js` 用 `withCleanHome()` 隔离开发者真实 `~/.cursor/skills`,避免本机已装用户级 skill 时 init 测试假阳性失败。
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## [0.1.2] — `npm i -g` 自动装 skill
|
|
112
|
+
|
|
113
|
+
### 新增(Added)
|
|
114
|
+
|
|
115
|
+
- **`postinstall` 钩子** —— `npm i -g @chenguangyao/devflow-kit` 完成后自动把 11 个 SKILL 安装到 `~/.cursor/skills/` + `~/.claude/skills/`,真正做到**装一次,所有项目共用**。
|
|
116
|
+
- 仅在 **全局安装**(`npm_config_global=true`)时触发;`npm i` 本地装 / `npm install` 在 devflow-kit 仓库内自身开发时**不**触发
|
|
117
|
+
- 已存在则**不覆盖**(用户可能改过 skill),只 log 一行提示
|
|
118
|
+
- 失败 **绝不**让 `npm install` 整体失败 —— 任何错误只 warn,引导用户跑 `devflow skills install --scope=user` 兜底
|
|
119
|
+
- 三条逃生通道:`DEVFLOW_SKIP_POSTINSTALL=1` / `npm i -g --ignore-scripts` / `CI=true` 任一即跳过
|
|
120
|
+
- 新增 6 项 postinstall 端到端测试(skip-when-not-global / DEVFLOW_SKIP_POSTINSTALL / CI / dev-on-self / clean install / 已装不覆盖)
|
|
121
|
+
|
|
122
|
+
### 内部
|
|
123
|
+
|
|
124
|
+
- `package.json` 加入 `scripts.postinstall` + `files` 增加 `scripts/`(打包包含 `scripts/postinstall.js`)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## [0.1.1] — 改名 + 全局共享 skill
|
|
129
|
+
|
|
130
|
+
### 破坏性变更(Breaking)
|
|
131
|
+
|
|
132
|
+
- 包名改为 **`@chenguangyao/devflow-kit`**(scoped)。安装方式:`npm i -g @chenguangyao/devflow-kit`。
|
|
133
|
+
- CLI 主命令从 `df` 改为 **`devflow`**(macOS 自带的 `df` = disk free,会和 npm 全局 bin 冲突)。短别名 `dfk` 同时注册,二选一。所有文档、CI 模板、skill 引用、状态机、help 文本同步更新。
|
|
134
|
+
- `devflow skills install --target=claude` 现在写到 **项目内** `.claude/skills/`(此前是 `~/.claude/skills/` 用户级)。用户级安装请改用 `--scope=user`(见下)。
|
|
135
|
+
|
|
136
|
+
### 新增(Added)
|
|
137
|
+
|
|
138
|
+
#### 全局共享 skill(推荐)
|
|
139
|
+
|
|
140
|
+
- **`devflow skills install --scope=user`** —— 一次性把 11 个 SKILL 放进 `~/.cursor/skills/` 和 `~/.claude/skills/`。所有项目共用,无需在每个 repo 重复 `devflow init` 才能用上 skill。
|
|
141
|
+
- **`devflow init` 自动检测用户级安装**:发现 `~/.cursor/skills/df-orchestrator/` 和 `~/.claude/skills/df-orchestrator/` 都存在时,跳过本地 skill 拷贝,**只**生成 `devflow/` 目录 + IDE marker。
|
|
142
|
+
- **`df-orchestrator` 增加 "项目上下文加载" 章节**:用户级 skill 会在每次会话开头读 `<repo>/devflow/config.json#projectOverview.referencedFile` → 加载项目自带的 `CLAUDE.md` / `AGENTS.md` / `README.md` 等作为本次会话背景。"通用 skill + 项目化 context" 通过 config 串起来。
|
|
143
|
+
- **`devflow skills status`** —— 列出用户级 / 项目级 skill 当前安装位置
|
|
144
|
+
- **`devflow skills uninstall --scope=user|project`** —— 反操作
|
|
145
|
+
|
|
146
|
+
#### 沿用本地安装(legacy / 老仓库适配)
|
|
147
|
+
|
|
148
|
+
- 没装用户级时,`devflow init` 仍自动把 SKILL 拷到当前工程的 `.cursor/skills/` / `.claude/skills/` / `.agents/skills/`(取决于 `--targets` 选了哪几个 IDE,默认全装)。
|
|
149
|
+
- 关闭:`devflow init --no-skills`
|
|
150
|
+
- 单独覆盖目标:`devflow init --skills-target=cursor`(逗号分隔多个)
|
|
151
|
+
- `--target=cursor,claude,agents` 多目标支持
|
|
152
|
+
|
|
153
|
+
#### 内部 API + 测试
|
|
154
|
+
|
|
155
|
+
- `skills.installForInit(root, targets, opts)` / `skills.userSkillsInstalled()` 程序化入口
|
|
156
|
+
- 新增 9 项单测覆盖 auto-install、`--no-skills`、`--skills-target` 覆盖、`installForInit` 多目标、`--scope=user` 写入、`userSkillsInstalled` 检测、init 跳过本地拷贝、uninstall 清理、CLAUDE.md / AGENTS.md 自动 detect 为 projectOverview
|
|
157
|
+
|
|
158
|
+
### 修复(Fixed)
|
|
159
|
+
|
|
160
|
+
- `bin/df.js` 重命名为 `bin/devflow.js`(配套 `package.json#bin` / `npm start` 同步)
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## [0.1.0] — 首个公开里程碑
|
|
165
|
+
|
|
166
|
+
### 新增(Added)
|
|
167
|
+
|
|
168
|
+
**CLI 主干**
|
|
169
|
+
- `devflow` CLI 骨架(短别名 `dfk`)+ 多 IDE 指令文件(`.claude/CLAUDE.md` / `.cursor/rules/devflow.mdc` / `AGENTS.md`)marker 段幂等写入
|
|
170
|
+
- change-folder 模型 + `state.json` 状态机(phases / iterations / tasks / rounds / auditLog)
|
|
171
|
+
- `df init / update / uninstall` 幂等接入;`df init` 自动识别 git remote / 语言栈 / 构建工具,推断 Jenkins job 候选并写入 `config.detect`(对齐 arb `init-project.py`)
|
|
172
|
+
- `df ingest <input>` 多入口路由(URL / JIRA ID / incident)→ refs/ + proposal.md
|
|
173
|
+
- `df new / propose / requirement / design / plan`
|
|
174
|
+
- `df apply` — 支持 `--task=N --start|--done|--skip|--fail --note="..." --no-worktree`,自动建/关联 worktree
|
|
175
|
+
- `df review` — 3 轮闭环:`--round` / `--status` / `--force-pass --reason="..."` / `--continue-rounds`,自动从 `review.md` 解析 MUST/SHOULD/NIT
|
|
176
|
+
- `df worktree create|list|cleanup` — 每 task 一份 `.devflow-worktrees/<slug>/task-N/` + 分支 `devflow/<slug>/task-N`
|
|
177
|
+
- `df verify / test <kind> / report`(9 种测试框架 + 5 种覆盖率格式)
|
|
178
|
+
- `df deliver --mode=pr|merge|keep|discard`
|
|
179
|
+
- `df archive` — spec delta 自动合并到 `devflow/specs/`,change folder 迁入 `archive/`
|
|
180
|
+
- `df status` — 阶段/artifacts/apply-tasks/review-rounds/next-hint 全览
|
|
181
|
+
- `df doctor` — 7 维度全景体检(env / config / provider / cred / change / knowledge / overview / git),`--scope --fix --json`
|
|
182
|
+
- `df provider list/status/add/relogin/rotate/logout/remove/audit`
|
|
183
|
+
- `df knowledge init/query/deposit/sync/migrate/validate`
|
|
184
|
+
- `df skills install`
|
|
185
|
+
- `df enable / disable / switch project-overview / sync project --check`
|
|
186
|
+
|
|
187
|
+
**质量闸门**
|
|
188
|
+
- `df verify` 前置检查 `review.status=completed`,可 `--skip-review-gate --reason="..."` 审计覆盖
|
|
189
|
+
- `df deliver` 前置 `verify.status=completed` + `review.status=completed` + `df doctor --scope change,git,cred` 无错误,可 `--skip-doctor --reason="..."` 审计覆盖
|
|
190
|
+
- `df review` 3 轮硬规则:round ≤ 3 且 must > 0 → back_to_apply;round 3 且 must > 0 → blocked(exit 1);round > 3 拒绝除非 `--continue-rounds`
|
|
191
|
+
- `df review --force-pass` 必须带 `--reason`
|
|
192
|
+
|
|
193
|
+
**Provider 生态**
|
|
194
|
+
- Provider 协议 + `local` 默认实现
|
|
195
|
+
- `intake-qs-bridge` / `issue-qs-bridge` / `ci-qs-bridge` 适配器(wiki / jira / jenkins via qs-bridge CLI)
|
|
196
|
+
- `kb-weknora` **配置驱动** 适配器 —— 只内置一套通用最小契约(Bearer + `/api/v1/kb/{kb_id}/*`),`auth` / `paths` / `body` / `responsePath` / `idempotent` 全部可通过 `providers.json` 覆盖。为避免把任何具体内网形状打进 npm 包,arb-WeKnora 的 endpoint shape 以本地参考片段维护(见 `.internal/` + `.gitignore` + `.npmignore`,不提交、不打包、不推 npm)。`df provider add kb.weknora --from <local.json>` 可一键导入
|
|
197
|
+
- `df provider add --from <file>` — JSON 片段导入,支持 "整段 provider 条目" 或 "裸 config{} 片段" 两种结构;配合 `.internal/` 的本地参考,团队只要下发一次模板,人人都能 `df provider add ... --from ...` 秒接内网 KB
|
|
198
|
+
- `df provider add` 引导提示增强 —— 对 `weknora` / `smtp` / `qs-bridge` 等 driver 按字段提供行内 help 文字、默认值、布尔/枚举选项提示,新手无参考文档也能顺势填完
|
|
199
|
+
- `notify-smtp` **零依赖 SMTP driver**,Node.js 手写(`tls`/`net`),对齐 arb `deploy-submit/send-email.py`:SMTPS(465)/ STARTTLS(587)/ plain 三种连接模式,`AUTH PLAIN` / `AUTH LOGIN` 自动协商,Markdown→HTML(表格/列表/标题/粗体/行内代码),多附件,RFC 2047 中文 Subject 编码
|
|
200
|
+
- `df deliver --notify` / `--notify-dry-run` 在 MR 建完后自动发提测邮件,审计留痕 `deliver.notify`
|
|
201
|
+
- Provider 生命周期:`loadOrAuth` / `withAutoRetry`(AuthExpiredError 自动 relogin)/ `securityCheck`(plaintext token 审计 + chmod 0600)
|
|
202
|
+
|
|
203
|
+
**知识库子系统**
|
|
204
|
+
- 4 域 9 类改良骨架:`1-domain/{concepts,scenarios,rules}` / `2-system/{services,contracts,decisions}` / `3-ops/{runbooks,incidents,environments}` / `4-archive/solutions`
|
|
205
|
+
- `.meta.json` + SHA256 增量同步协议
|
|
206
|
+
- `df knowledge deposit` 自动按分类归位 `learnings.md` 小节
|
|
207
|
+
- `df knowledge sync` 增量推到 provider(支持 create/update/delete,空分类也能正确处理)
|
|
208
|
+
- `df knowledge migrate --from=arb-7 --to=improved-9`
|
|
209
|
+
- CI 模板:`.github/workflows/devflow-kb-sync.yml` / `.gitlab-ci.devflow.yml`
|
|
210
|
+
|
|
211
|
+
**Skills**
|
|
212
|
+
- 11 个 SKILL.md:`df-orchestrator` / `brainstorm` / `requirement-analysis` / `tech-spec` / `test-spec` / `plan` / `apply`(worktree-swarm)/ `code-review`(3 轮)/ `verify` / `deliver` / `archive`
|
|
213
|
+
|
|
214
|
+
**文档 / 样例**
|
|
215
|
+
- `README.md` + `CHANGELOG.md`
|
|
216
|
+
- `docs/RFC-001-devflow-kit.md`
|
|
217
|
+
- `docs/migration-from-arb.md`(arb-workflow-kit → devflow-kit 对照表)
|
|
218
|
+
- `docs/internal-gitlab-setup.md` — 企业内部 GitLab + Jenkins + 私有 registry 完整落地指引(A/B/C 分发策略 + provider 配置 + 团队推行 checklist + FAQ)
|
|
219
|
+
- `examples/coupon-grant-api/` — 完整 change folder + delta/ + reports/ + archive/ + knowledge/ 端到端样例
|
|
220
|
+
|
|
221
|
+
**测试**
|
|
222
|
+
- 78 用例覆盖 parsers(9 框架 + 5 覆盖率格式)/ worktree / apply / review / verify-gate / kb-weknora(built-in 默认契约 + arb-shape 全量 override + 部分 path 合并 override + auth 覆盖)/ notify-smtp(md→html + MIME + SMTP 协议全路径含 STARTTLS)/ autodetect(5 种 remote 格式 + 8 种语言)
|
|
223
|
+
|
|
224
|
+
### 已知限制
|
|
225
|
+
|
|
226
|
+
- `df migrate from-arb`(从 arb 仓库整库迁移的自动化)未实现,仅文档指导
|
|
227
|
+
- `df deliver --mode=merge|discard` 为 stub,当前版本引导手动操作
|
|
228
|
+
- 部分 provider 驱动(`confluence-cloud` / `notion` / `feishu-doc` 等)为接口占位,未完整实现
|
|
229
|
+
|
|
230
|
+
### 贡献者
|
|
231
|
+
|
|
232
|
+
- chenguangyao
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 chenguangyao and contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|