openone-workflow-kit 0.1.0
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 +21 -0
- package/CODE_OF_CONDUCT.md +25 -0
- package/CONTRIBUTING.md +51 -0
- package/INIT.md +81 -0
- package/LICENSE +201 -0
- package/NOTICE +6 -0
- package/README.md +195 -0
- package/SECURITY.md +39 -0
- package/bin/check-contract.cjs +137 -0
- package/bin/check-sanitized.cjs +93 -0
- package/bin/init-workspace.cjs +966 -0
- package/docs/assets/PROVENANCE.md +20 -0
- package/docs/assets/architecture.svg +112 -0
- package/docs/assets/hero.svg +83 -0
- package/docs/assets/quick-demo.svg +74 -0
- package/docs/assets/social-preview.svg +57 -0
- package/docs/assets/visual-manifest.json +52 -0
- package/docs/definition-of-done.md +80 -0
- package/docs/dual-track-workflow.md +90 -0
- package/docs/local-merge-notes.md +21 -0
- package/docs/maintainer-handoff.md +150 -0
- package/docs/manual-publish.md +119 -0
- package/docs/private-denylist.example.txt +11 -0
- package/docs/publication-decisions.md +36 -0
- package/docs/release-checklist.md +72 -0
- package/docs/releases/v0.1.0.md +70 -0
- package/docs/shareable-install.md +51 -0
- package/docs/tool-install-recipes.md +103 -0
- package/examples/ecommerce/team-profile.example.yaml +141 -0
- package/examples/education/team-profile.example.yaml +143 -0
- package/examples/saas-to-b/team-profile.example.yaml +130 -0
- package/examples/team-profile.example.yaml +69 -0
- package/install.sh +27 -0
- package/package.json +65 -0
- package/scripts/build-release.cjs +141 -0
- package/scripts/release-source-state.cjs +38 -0
- package/templates/AGENTS.template.md +26 -0
- package/test/release-readiness.cjs +214 -0
- package/test/smoke.cjs +272 -0
- package/workflow/adapters/README.md +16 -0
- package/workflow/core/README.md +38 -0
- package/workflow/core/capabilities/README.md +61 -0
- package/workflow/core/capabilities/acceptance-oracle-tracker.md +45 -0
- package/workflow/core/capabilities/branch-gatekeeper.md +57 -0
- package/workflow/core/capabilities/channel-experiment-tracker.md +32 -0
- package/workflow/core/capabilities/ci-cd-automation-governor.md +123 -0
- package/workflow/core/capabilities/contract-tracer.md +53 -0
- package/workflow/core/capabilities/data-change-safety-checker.md +52 -0
- package/workflow/core/capabilities/definition-lint.md +81 -0
- package/workflow/core/capabilities/deployment-readiness-checker.md +57 -0
- package/workflow/core/capabilities/impact-scope-analyzer.md +50 -0
- package/workflow/core/capabilities/knowledge-capture-maintainer.md +32 -0
- package/workflow/core/capabilities/market-evidence-grader.md +33 -0
- package/workflow/core/capabilities/memory-curator.md +48 -0
- package/workflow/core/capabilities/personal-git-operator.md +41 -0
- package/workflow/core/capabilities/personal-release-checklist.md +49 -0
- package/workflow/core/capabilities/prd-code-diff-checker.md +53 -0
- package/workflow/core/capabilities/protocol-state-machine-checker.md +57 -0
- package/workflow/core/capabilities/release-safety-checker.md +61 -0
- package/workflow/core/capabilities/repo-baseline-scanner.md +48 -0
- package/workflow/core/capabilities/rule-extractor.md +48 -0
- package/workflow/core/capabilities/runtime-evidence-triage.md +53 -0
- package/workflow/core/capabilities/security-reviewer.md +48 -0
- package/workflow/core/capabilities/test-evidence-reviewer.md +50 -0
- package/workflow/core/capabilities/ui-baseline-reviewer.md +50 -0
- package/workflow/core/capabilities/verify-app.md +51 -0
- package/workflow/core/capabilities/worktree-isolator.md +53 -0
- package/workflow/core/commands/01-/351/234/200/346/261/202/350/256/250/350/256/272.md +36 -0
- package/workflow/core/commands/02-/344/272/247/345/223/201/346/226/207/346/241/243.md +35 -0
- package/workflow/core/commands/02B-UI/350/256/276/350/256/241.md +75 -0
- package/workflow/core/commands/03-06-/347/240/224/345/217/221/345/207/206/345/244/207.md +30 -0
- package/workflow/core/commands/03-/346/212/200/346/234/257/346/236/266/346/236/204.md +32 -0
- package/workflow/core/commands/04-/344/273/243/347/240/201/345/256/236/347/216/260.md +32 -0
- package/workflow/core/commands/04A-/345/211/215/347/253/257/344/273/243/347/240/201/345/256/236/347/216/260.md +36 -0
- package/workflow/core/commands/04B-/345/220/216/347/253/257/344/273/243/347/240/201/345/256/236/347/216/260.md +31 -0
- package/workflow/core/commands/05-/344/273/243/347/240/201/345/256/241/346/237/245.md +31 -0
- package/workflow/core/commands/06-/346/265/213/350/257/225/347/224/250/344/276/213.md +34 -0
- package/workflow/core/commands/07-/346/265/213/350/257/225/346/211/247/350/241/214.md +33 -0
- package/workflow/core/commands/08-/345/217/221/345/270/203/345/207/206/345/244/207.md +44 -0
- package/workflow/core/commands/09-/345/217/221/345/270/203/346/211/247/350/241/214.md +39 -0
- package/workflow/core/commands/10-/345/244/215/347/233/230/346/200/273/347/273/223.md +41 -0
- package/workflow/core/commands/B1-B8-/345/225/206/344/270/232/345/214/226/345/207/206/345/244/207.md +30 -0
- package/workflow/core/commands/B1-/344/270/232/345/212/241/345/256/232/344/275/215.md +38 -0
- package/workflow/core/commands/B2-/345/225/206/344/270/232/346/250/241/345/274/217.md +38 -0
- package/workflow/core/commands/B3-PMF/344/270/216/345/256/242/346/210/267/347/224/273/345/203/217.md +39 -0
- package/workflow/core/commands/B4-/345/234/272/346/231/257/344/270/216/350/264/255/344/271/260/346/227/205/347/250/213.md +37 -0
- package/workflow/core/commands/B5-/346/270/240/351/201/223/346/274/217/346/226/227/346/230/240/345/260/204.md +39 -0
- package/workflow/core/commands/B6-/350/220/245/351/224/200/350/216/267/345/256/242/347/255/226/347/225/245.md +38 -0
- package/workflow/core/commands/B7-/350/220/245/351/224/200/351/242/204/347/256/227.md +36 -0
- package/workflow/core/commands/B8-/346/270/240/351/201/223/346/211/247/350/241/214/347/255/226/347/225/245.md +39 -0
- package/workflow/core/commands/B9-/347/255/226/347/225/245/345/244/215/347/233/230.md +38 -0
- package/workflow/core/commands/README.md +56 -0
- package/workflow/core/commands/init-workspace.md +29 -0
- package/workflow/core/commands/new-feature.md +33 -0
- package/workflow/core/commands/new-product.md +28 -0
- package/workflow/core/commands/workflow-status.md +30 -0
- package/workflow/core/commands//344/270/200/350/207/264/346/200/247/346/243/200/346/237/245.md +35 -0
- package/workflow/core/commands//344/272/244/344/273/230/350/207/263/345/256/214/346/210/220.md +40 -0
- package/workflow/core/commands//345/256/232/344/271/211/345/256/214/346/210/220.md +41 -0
- package/workflow/core/commands//346/276/204/346/270/205.md +31 -0
- package/workflow/core/templates/00-business-status.md +43 -0
- package/workflow/core/templates/00-workflow-status.md +50 -0
- package/workflow/core/templates/README.md +12 -0
- package/workflow/core/templates/business-stage-document.md +49 -0
- package/workflow/core/templates/completion-contract.md +114 -0
- package/workflow/core/templates/constitution.template.md +50 -0
- package/workflow/core/templates/living-spec.md +35 -0
- package/workflow/core/templates/stage-document.md +42 -0
- package/workflow/core/templates/team-profile.template.yaml +104 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# 维护者交接
|
|
2
|
+
|
|
3
|
+
本文面向 starter kit 的发布和支持维护者。内容必须保持通用,不得包含私有公司、客户、仓库、事故、URL、日志、SQL 或生产配置细节。
|
|
4
|
+
|
|
5
|
+
## 当前交付状态
|
|
6
|
+
|
|
7
|
+
在 package 根目录执行以下命令通过后,本 starter kit 可本地发布:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm run check
|
|
11
|
+
npm run build:release
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
构建会生成:
|
|
15
|
+
|
|
16
|
+
- `dist/openone-workflow-kit-<version>.tgz`
|
|
17
|
+
- `dist/RELEASE_MANIFEST.md`
|
|
18
|
+
|
|
19
|
+
manifest 会记录包名、版本、license、归档大小、SHA-256、安装 smoke 状态和人工发布边界。
|
|
20
|
+
|
|
21
|
+
## 维护者可以分享什么
|
|
22
|
+
|
|
23
|
+
只能分享脱敏后的 starter kit 包,或只包含本 starter kit 的仓库:
|
|
24
|
+
|
|
25
|
+
- `README.md`
|
|
26
|
+
- `INIT.md`
|
|
27
|
+
- `LICENSE`
|
|
28
|
+
- `NOTICE`
|
|
29
|
+
- `install.sh`
|
|
30
|
+
- `bin/`
|
|
31
|
+
- `scripts/`
|
|
32
|
+
- `workflow/`
|
|
33
|
+
- `templates/`
|
|
34
|
+
- `examples/`
|
|
35
|
+
- `docs/`
|
|
36
|
+
- `test/`
|
|
37
|
+
|
|
38
|
+
不要把来源团队的工作流文档、产品文档、需求目录、业务仓库、客户资料、日志、SQL、截图或内部 runbook 当成示例分享。
|
|
39
|
+
|
|
40
|
+
## 人工发布边界
|
|
41
|
+
|
|
42
|
+
agent 可以在本地准备、验证和打包 starter kit;远程发布动作需要维护者明确授权。
|
|
43
|
+
|
|
44
|
+
需要维护者明确授权的动作:
|
|
45
|
+
|
|
46
|
+
- 创建远程仓库;
|
|
47
|
+
- 添加或修改 remote URL;
|
|
48
|
+
- push commits;
|
|
49
|
+
- 创建或 push tags;
|
|
50
|
+
- 发布到 npm 或其他 package registry;
|
|
51
|
+
- 上传归档到公共站点;
|
|
52
|
+
- 在私有工作区运行远程 Git 刷新命令。
|
|
53
|
+
|
|
54
|
+
发布命令清单见 `docs/manual-publish.md`,维护者应手动运行。
|
|
55
|
+
|
|
56
|
+
## 接收方验收清单
|
|
57
|
+
|
|
58
|
+
建议个人开发者先在临时工作区或一次性分支中运行初始化器。
|
|
59
|
+
|
|
60
|
+
接收方应确认:
|
|
61
|
+
|
|
62
|
+
- 已生成 `workflow/team-profile.yaml`。
|
|
63
|
+
- 必要资料缺失时生成了 `workflow/INITIALIZATION_QUESTIONS.md`。
|
|
64
|
+
- `workflow/core/` 存在,并包含命令、模板和能力说明。
|
|
65
|
+
- `workflow/adapters/` 存在。
|
|
66
|
+
- 选中的工具入口已生成,例如 `AGENTS.md`、`CLAUDE.md`、`.cursor/rules/`、`.github/copilot-instructions.md`、`.codebuddy/`、`.kiro/` 或 `.trae/`。
|
|
67
|
+
- 使用 `trea` 时已归一为 `trae`。
|
|
68
|
+
- 除非显式传入 `--force`,已有文件没有被覆盖。
|
|
69
|
+
- 初始化期间没有远程 Git、push、构建、部署、数据库写入或生产配置写入。
|
|
70
|
+
|
|
71
|
+
推荐 smoke 命令:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
openone-workflow-init --target . --tools codex,claude,cursor,codebuddy,trea --yes
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
如果从本地 tarball 安装:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
./node_modules/.bin/openone-workflow-init --target . --tools codex,claude,cursor,codebuddy,trea --yes
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 支持模型
|
|
84
|
+
|
|
85
|
+
按层定位问题:
|
|
86
|
+
|
|
87
|
+
- `workflow/core`: 阶段、硬闸门、模板和工具无关规则。
|
|
88
|
+
- `workflow/team-profile.yaml`: 接收团队的本地配置和缺失资料问题。
|
|
89
|
+
- `workflow/adapters`: 工具特定薄入口。
|
|
90
|
+
- `bin/init-workspace.cjs`: 本地初始化逻辑。
|
|
91
|
+
- `bin/check-sanitized.cjs`: 发布安全检查。
|
|
92
|
+
|
|
93
|
+
团队反馈问题时,优先索要:
|
|
94
|
+
|
|
95
|
+
- 执行的初始化命令;
|
|
96
|
+
- Node.js 版本;
|
|
97
|
+
- 选择的工具列表;
|
|
98
|
+
- 已移除敏感内容的 `workflow/team-profile.yaml`;
|
|
99
|
+
- 如存在,提供 `workflow/INITIALIZATION_QUESTIONS.md`;
|
|
100
|
+
- 是否生成了 `.agent-workflow-new` 文件;
|
|
101
|
+
- 精确错误输出。
|
|
102
|
+
|
|
103
|
+
除非已经建立单独的安全支持渠道,不要要求团队发送私有源码、客户数据、凭证、日志、SQL 或生产配置。
|
|
104
|
+
|
|
105
|
+
## 工具能力策略
|
|
106
|
+
|
|
107
|
+
workflow core 必须保持工具无关。工具特定行为只能放在 adapters。
|
|
108
|
+
|
|
109
|
+
能力等级:
|
|
110
|
+
|
|
111
|
+
- L0:仅文档规则。
|
|
112
|
+
- L1:prompt 或命令模板。
|
|
113
|
+
- L2:当前工具内的自动规则触发。
|
|
114
|
+
- L3:当前工具支持的 hooks 或本地自动化。
|
|
115
|
+
- L4:当前工具支持的 subagents 或专项技能。
|
|
116
|
+
|
|
117
|
+
不要承诺不同工具体验完全一致。应承诺同一套 workflow core,并按工具能力增强或降级。
|
|
118
|
+
|
|
119
|
+
## 发布更新流程
|
|
120
|
+
|
|
121
|
+
每次发布:
|
|
122
|
+
|
|
123
|
+
1. 只修改通用 starter kit 文件。
|
|
124
|
+
2. 私有示例留在本仓库之外。
|
|
125
|
+
3. 运行 `npm run check`。
|
|
126
|
+
4. 运行 `npm run build:release`。
|
|
127
|
+
5. 检查 `dist/RELEASE_MANIFEST.md`。
|
|
128
|
+
6. 检查 tarball 文件列表。
|
|
129
|
+
7. 在临时目标工作区用 tarball 做安装 smoke test。
|
|
130
|
+
8. 使用 starter kit 外部的私有 denylist 运行 `bin/check-sanitized.cjs --extra-banned <private-denylist-file>`。
|
|
131
|
+
9. 由维护者手动发布到目标渠道。
|
|
132
|
+
|
|
133
|
+
## 版本建议
|
|
134
|
+
|
|
135
|
+
遵循 semantic versioning:
|
|
136
|
+
|
|
137
|
+
- Patch:文档澄清、脱敏检查增强、adapter 文案修复、smoke test 修复。
|
|
138
|
+
- Minor:新增 adapter、新增可选模板、新增非破坏性初始化参数或新 capability。
|
|
139
|
+
- Major:改变生成文件布局、改变命令名、改变硬闸门语义或移除支持工具。
|
|
140
|
+
|
|
141
|
+
## 明确不做
|
|
142
|
+
|
|
143
|
+
本 starter kit 不会:
|
|
144
|
+
|
|
145
|
+
- 托管或同步团队文档;
|
|
146
|
+
- 替代代码实现闸门的人工确认;
|
|
147
|
+
- 绕过本地工具限制;
|
|
148
|
+
- 从一个 agent 工具调用另一个工具的私有能力;
|
|
149
|
+
- 保证所有工具具有同等自动化水平;
|
|
150
|
+
- 创建分支、push 代码、发布包、部署服务或写数据库。
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# 手动发布指南
|
|
2
|
+
|
|
3
|
+
本指南用于维护 OpenOne Workflow Kit 自身。agent 可以准备本地验证和发布说明;远程仓库创建、push、tag push 或 package 发布需要维护者明确授权。
|
|
4
|
+
|
|
5
|
+
## v0.1.0 本地准入
|
|
6
|
+
|
|
7
|
+
先运行:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm run check
|
|
11
|
+
npm run build:release
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`build:release` 会拒绝存在已修改或未跟踪文件的工作树;生成的 `dist/RELEASE_MANIFEST.md` 必须记录当前 `source_commit`、`source_tree` 与 `source_dirty: false`。任何源码变更都要先形成新的 reviewed commit,再重新构建 tarball。
|
|
15
|
+
|
|
16
|
+
可分享的本地归档位于:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
dist/openone-workflow-kit-<version>.tgz
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
校验信息见:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
dist/RELEASE_MANIFEST.md
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
再核对 npm 上没有已发布的同版本:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm view openone-workflow-kit@0.1.0 version
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
首次发布前预期 Registry 返回 404/`E404`。只有精确的不存在结果才能解读为“尚未发布”;认证、网络或权限错误都必须先解决。
|
|
35
|
+
|
|
36
|
+
## 方案 A:直接分享 tarball
|
|
37
|
+
|
|
38
|
+
适合小范围试用。维护者手动发送 `dist/*.tgz`,接收方按 `docs/shareable-install.md` 安装。
|
|
39
|
+
|
|
40
|
+
分享前必须:
|
|
41
|
+
|
|
42
|
+
- 检查 `dist/RELEASE_MANIFEST.md`;
|
|
43
|
+
- 用私有 denylist 扫描;
|
|
44
|
+
- 人工检查 tarball 文件列表;
|
|
45
|
+
- 确认没有私有资料、真实业务数据或凭证。
|
|
46
|
+
|
|
47
|
+
## 发布 v0.1.0(授权后)
|
|
48
|
+
|
|
49
|
+
以已验证的 `main` commit 为唯一基线。先 push 该 commit,并等待该 SHA 的 GitHub Actions 全绿:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
git push origin main
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
发布前在同一个 clean checkout 中再次确认工作树、manifest 和本地 tarball SHA-1 都绑定同一 commit,并确认 npm 身份有效:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
source_commit="$(sed -n 's/^- source_commit: //p' dist/RELEASE_MANIFEST.md)"
|
|
59
|
+
source_tree="$(sed -n 's/^- source_tree: //p' dist/RELEASE_MANIFEST.md)"
|
|
60
|
+
local_shasum="$(node -e "const fs=require('node:fs'),c=require('node:crypto');process.stdout.write(c.createHash('sha1').update(fs.readFileSync('dist/openone-workflow-kit-0.1.0.tgz')).digest('hex'))")"
|
|
61
|
+
test -z "$(git status --porcelain=v1 --untracked-files=all)"
|
|
62
|
+
test "$(git rev-parse HEAD)" = "$source_commit"
|
|
63
|
+
test "$(git rev-parse 'HEAD^{tree}')" = "$source_tree"
|
|
64
|
+
npm whoami
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
从这个 clean reviewed commit 的仓库目录发布,而不是直接发布 `dist/*.tgz`。directory publish 会让 npm 把当前 Git commit 写入公开的 `gitHead`;`build:release` 产生的 tarball 用于发布前复验和发布后内容哈希对照:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
source_commit="$(sed -n 's/^- source_commit: //p' dist/RELEASE_MANIFEST.md)"
|
|
71
|
+
local_shasum="$(node -e "const fs=require('node:fs'),c=require('node:crypto');process.stdout.write(c.createHash('sha1').update(fs.readFileSync('dist/openone-workflow-kit-0.1.0.tgz')).digest('hex'))")"
|
|
72
|
+
test -z "$(git status --porcelain=v1 --untracked-files=all)"
|
|
73
|
+
test "$(git rev-parse HEAD)" = "$source_commit"
|
|
74
|
+
npm publish --access public
|
|
75
|
+
registry_version="$(npm view openone-workflow-kit@0.1.0 version)"
|
|
76
|
+
registry_git_head="$(npm view openone-workflow-kit@0.1.0 gitHead)"
|
|
77
|
+
registry_shasum="$(npm view openone-workflow-kit@0.1.0 dist.shasum)"
|
|
78
|
+
test "$registry_version" = "0.1.0"
|
|
79
|
+
test "$registry_git_head" = "$source_commit"
|
|
80
|
+
test "$registry_shasum" = "$local_shasum"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Registry 刚写入时允许做有上限的短暂重试;任何字段持续为空或不一致都属于发布阻塞,不得创建 Tag/Release 来掩盖。三项公开复验全部通过后,才从 manifest 中记录的同一 commit 创建新 Tag,并把已验证 tarball 与 manifest 一并上传 GitHub Release:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
source_commit="$(sed -n 's/^- source_commit: //p' dist/RELEASE_MANIFEST.md)"
|
|
87
|
+
test -z "$(git tag --list v0.1.0)"
|
|
88
|
+
git tag -a v0.1.0 "$source_commit" -m "OpenOne Workflow Kit v0.1.0"
|
|
89
|
+
git push origin v0.1.0
|
|
90
|
+
gh release create v0.1.0 \
|
|
91
|
+
dist/openone-workflow-kit-0.1.0.tgz \
|
|
92
|
+
dist/RELEASE_MANIFEST.md \
|
|
93
|
+
--title "OpenOne Workflow Kit v0.1.0" \
|
|
94
|
+
--notes-file docs/releases/v0.1.0.md
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
不得移动或覆盖已存在的 Tag,也不得尝试覆盖 npm 中已存在的同版本。上述命令需要维护者明确授权后执行。
|
|
98
|
+
|
|
99
|
+
发布后公开验收:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npm view openone-workflow-kit@latest version
|
|
103
|
+
npm view openone-workflow-kit@0.1.0 gitHead
|
|
104
|
+
npm view openone-workflow-kit@0.1.0 dist.shasum
|
|
105
|
+
git ls-remote --tags origin refs/tags/v0.1.0
|
|
106
|
+
gh release view v0.1.0 --json tagName,isDraft,isPrerelease,assets,url
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 远程发布前必须完成
|
|
110
|
+
|
|
111
|
+
- 运行 `npm run check`。
|
|
112
|
+
- 运行 `npm run build:release`。
|
|
113
|
+
- 使用 `bin/check-sanitized.cjs --extra-banned <private-file>` 执行私有 denylist 扫描。
|
|
114
|
+
- 检查 `dist/RELEASE_MANIFEST.md`。
|
|
115
|
+
- 检查 tarball 内的每个文件。
|
|
116
|
+
- 确认 directory publish 后 Registry 的 `gitHead` 等于 manifest `source_commit`,`dist.shasum` 等于本地已验证 tarball 的 SHA-1。
|
|
117
|
+
- 确认 GitHub Release 同时包含 `openone-workflow-kit-0.1.0.tgz` 与 `RELEASE_MANIFEST.md` 两个证据资产。
|
|
118
|
+
- 检查 README、license、示例和安装脚本。
|
|
119
|
+
- push、tag push、npm publish 等远程写入必须有维护者明确授权。
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 发布决策
|
|
2
|
+
|
|
3
|
+
OpenOne Workflow Kit 可以进行本地验证和本地打包。远程发布需要维护者明确授权。
|
|
4
|
+
|
|
5
|
+
## 必要决策
|
|
6
|
+
|
|
7
|
+
| 决策 | 选项 | 当前建议 |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| License | Apache-2.0 / MIT / proprietary | Apache-2.0 |
|
|
10
|
+
| 发布渠道 | GitHub / npm / 内部包仓 / tarball | GitHub + npm + tarball(v0.1.0 已授权目标) |
|
|
11
|
+
| 贡献模型 | 关闭 / 仅 issue / 接收 PR / 需要 CLA | 接收 issue 和 PR 模板 |
|
|
12
|
+
| 支持范围 | best-effort / paid / internal-only | best-effort |
|
|
13
|
+
| 安全报告 | 私有邮箱 / GitHub private advisory / 内部渠道 | GitHub private advisory 或维护者私有渠道 |
|
|
14
|
+
| 发布产物 | 只提交源码 / 允许提交 dist | 默认不提交 dist |
|
|
15
|
+
|
|
16
|
+
## 首次外部试用建议
|
|
17
|
+
|
|
18
|
+
- 使用 Apache-2.0。
|
|
19
|
+
- 在 CI、tarball 和安装 smoke 全部通过后,从 clean reviewed commit 的仓库目录发布 npm `0.1.0`;公开核对 Registry `gitHead` / `dist.shasum` 后,再创建同 commit 的不可变 Git tag `v0.1.0` 和对应 GitHub Release。
|
|
20
|
+
- GitHub Release 同时上传已验证 tgz 与 `RELEASE_MANIFEST.md`,让 source commit、source tree、npm 内容哈希和 Release 资产形成可复核证据链。
|
|
21
|
+
- 接收 issue 和 PR,但要求脱敏。
|
|
22
|
+
- 不承诺生产级支持。
|
|
23
|
+
- 公开 README 中明确:初始化器只读本地资料,不执行远程 Git、分支、部署或数据库动作。
|
|
24
|
+
|
|
25
|
+
## 公开发布前
|
|
26
|
+
|
|
27
|
+
1. 运行 `npm run check`。
|
|
28
|
+
2. 运行 `npm run build:release`。
|
|
29
|
+
3. 使用 starter kit 外部的私有 denylist 扫描。
|
|
30
|
+
4. 人工检查全部可分发文件和 `dist/RELEASE_MANIFEST.md`。
|
|
31
|
+
5. 通过 `npm whoami` 确认发布身份,从 clean reviewed commit directory 发布,并核对 Registry `gitHead` 与 `dist.shasum`。
|
|
32
|
+
6. 由维护者手动创建同 commit 的 release tag,并上传 tarball 与 manifest 资产。
|
|
33
|
+
|
|
34
|
+
agent 不得执行 publish、push、tag 或远程仓库创建动作。
|
|
35
|
+
|
|
36
|
+
手动命令示例维护在 `docs/manual-publish.md`。
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# 外部分发检查清单
|
|
2
|
+
|
|
3
|
+
发布到公共仓库、package registry、template repository 或文档站点前,使用本清单做最终检查。
|
|
4
|
+
|
|
5
|
+
## 必须完成
|
|
6
|
+
|
|
7
|
+
- `npm run check` 通过。
|
|
8
|
+
- `npm run build:release` 通过。
|
|
9
|
+
- `dist/RELEASE_MANIFEST.md` 的 `source_commit` 等于 reviewed commit、`source_tree` 等于该 commit 的 tree,且 `source_dirty: false`。
|
|
10
|
+
- `npm pack --dry-run` 中 package/version/files/bin/repository/homepage/bugs 与 `package.json` 一致。
|
|
11
|
+
- `dist/RELEASE_MANIFEST.md` 已人工检查。
|
|
12
|
+
- tarball 文件列表已人工检查。
|
|
13
|
+
- npm 认证已通过 `npm whoami` 验证,发布命令从 clean reviewed commit 的仓库目录执行,而不是直接发布 `dist/*.tgz`。
|
|
14
|
+
- README、INIT、CONTRIBUTING、SECURITY、CODE_OF_CONDUCT、LICENSE、NOTICE 已检查。
|
|
15
|
+
- 示例数据均为合成数据,不能追溯到真实客户、员工、项目、事故或生产系统。
|
|
16
|
+
- 工具 adapter 只指向 workflow core,不削弱硬闸门。
|
|
17
|
+
- 初始化器不会执行远程 Git、创建分支、push、构建 / 部署触发、数据库写入或生产配置写入。
|
|
18
|
+
|
|
19
|
+
## 私有 denylist 扫描
|
|
20
|
+
|
|
21
|
+
在 starter kit 外部创建私有 denylist 文件,然后运行:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node bin/check-sanitized.cjs --extra-banned /path/to/private-denylist.txt
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
私有 denylist 应包含公司名、内部仓库前缀、内部系统、客户名、私有域名、敏感业务术语和已知事故名称。不要把该文件提交到 starter kit。
|
|
28
|
+
|
|
29
|
+
## 人工复核
|
|
30
|
+
|
|
31
|
+
自动扫描不够。仍需人工检查:
|
|
32
|
+
|
|
33
|
+
- commit message;
|
|
34
|
+
- README 和 docs;
|
|
35
|
+
- examples;
|
|
36
|
+
- install 脚本;
|
|
37
|
+
- workflow core;
|
|
38
|
+
- adapter 输出;
|
|
39
|
+
- package files 列表;
|
|
40
|
+
- tarball 内容。
|
|
41
|
+
|
|
42
|
+
重点关注:
|
|
43
|
+
|
|
44
|
+
- 是否出现真实组织、真实仓库、真实 URL;
|
|
45
|
+
- 是否包含业务数据、日志、SQL、截图或凭证;
|
|
46
|
+
- 是否承诺“所有工具体验完全一致”;
|
|
47
|
+
- 是否引导 agent 自动远程操作;
|
|
48
|
+
- 是否把私有流程写成通用规则。
|
|
49
|
+
|
|
50
|
+
## 发布决策
|
|
51
|
+
|
|
52
|
+
以下事项明确前不要发布:
|
|
53
|
+
|
|
54
|
+
- license;
|
|
55
|
+
- 发布渠道;
|
|
56
|
+
- 版本号;
|
|
57
|
+
- 支持边界;
|
|
58
|
+
- issue / PR 接收方式;
|
|
59
|
+
- 私有安全报告渠道;
|
|
60
|
+
- 是否允许提交 `dist/` 产物。
|
|
61
|
+
|
|
62
|
+
## v0.1.0 远程真相源
|
|
63
|
+
|
|
64
|
+
只有下列验证全部通过,才能宣布正式发布:
|
|
65
|
+
|
|
66
|
+
- `npm view openone-workflow-kit@latest version` 返回 `0.1.0`。
|
|
67
|
+
- `npm view openone-workflow-kit@0.1.0 gitHead` 等于 `RELEASE_MANIFEST.md` 的 `source_commit`。
|
|
68
|
+
- `npm view openone-workflow-kit@0.1.0 dist.shasum` 等于本地已验证 tarball 的 SHA-1。
|
|
69
|
+
- GitHub Actions 默认分支最新 `Check` workflow 全部成功。
|
|
70
|
+
- `refs/tags/v0.1.0` 指向已验证的发布 commit,且没有移动历史 Tag。
|
|
71
|
+
- GitHub Release `v0.1.0` 为 non-draft、non-prerelease,正文使用 `docs/releases/v0.1.0.md`,并包含已验证的 tgz 与 `RELEASE_MANIFEST.md` 两个资产。
|
|
72
|
+
- 在一个新临时目录中从 npm 安装并生成 `workflow/team-profile.yaml`、`workflow/core/` 与 `AGENTS.md`。
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# OpenOne Workflow Kit v0.1.0
|
|
2
|
+
|
|
3
|
+
The first public release turns a solo developer's product delivery and commercialization work into one tool-neutral, evidence-backed workflow.
|
|
4
|
+
|
|
5
|
+
## What is included
|
|
6
|
+
|
|
7
|
+
- **Dual-track workflow:** a delivery track from requirements to release and a commercialization track from positioning to channel review.
|
|
8
|
+
- **Definition-to-Done:** Completion Contracts, Definition Lint, Acceptance Oracles, and an autonomous delivery loop that stops only at verified completion or a precise blocker.
|
|
9
|
+
- **Seven tool adapters:** Claude Code, Codex, Cursor, GitHub Copilot, CodeBuddy, Kiro, and Trae share one workflow core while retaining tool-specific capability levels.
|
|
10
|
+
- **Local initialization:** scan a workspace, produce `workflow/team-profile.yaml`, copy the workflow core, and generate only the selected adapters.
|
|
11
|
+
- **Release evidence:** sanitized-content checks, a package manifest with SHA-256, and an installed-tarball smoke test.
|
|
12
|
+
|
|
13
|
+
## Security and privacy
|
|
14
|
+
|
|
15
|
+
- The initializer does not upload local source material.
|
|
16
|
+
- It does not run remote Git operations, publish packages, deploy services, write databases, or change production configuration.
|
|
17
|
+
- Existing target files are preserved unless the maintainer explicitly chooses the documented force/upgrade path.
|
|
18
|
+
- The package has no runtime dependencies. Release checks scan for private-key markers, credential assignments, and private-network URLs; an external private denylist can be supplied for repository-specific terms.
|
|
19
|
+
|
|
20
|
+
These checks reduce accidental disclosure risk but do not replace a manual review of the package contents.
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
Requires Node.js 18 or newer.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install --save-dev openone-workflow-kit@0.1.0
|
|
28
|
+
npx openone-workflow-init --target . --tools codex,claude,cursor --yes
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For a one-off run without modifying `package.json`:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx --yes --package openone-workflow-kit@0.1.0 openone-workflow-init --target . --tools codex,claude,cursor --yes
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Verify
|
|
38
|
+
|
|
39
|
+
Confirm the published version and generated entry points:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm view openone-workflow-kit@0.1.0 version
|
|
43
|
+
node -e "for (const f of ['workflow/team-profile.yaml','workflow/core','AGENTS.md']) require('node:fs').accessSync(f); console.log('OpenOne ready')"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Expected output includes `0.1.0` and `OpenOne ready`.
|
|
47
|
+
|
|
48
|
+
Maintainers can reproduce the release artifact locally:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm run check
|
|
52
|
+
npm run build:release
|
|
53
|
+
npm pack --dry-run
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The GitHub Release attaches `openone-workflow-kit-0.1.0.tgz` and `RELEASE_MANIFEST.md`. The manifest records the reviewed source commit/tree and the tarball SHA-256; the npm Registry metadata provides the matching Git `gitHead` and tarball `dist.shasum`:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm view openone-workflow-kit@0.1.0 version
|
|
60
|
+
npm view openone-workflow-kit@0.1.0 gitHead
|
|
61
|
+
npm view openone-workflow-kit@0.1.0 dist.shasum
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Those values are release evidence, not a substitute for the security and installation checks above.
|
|
65
|
+
|
|
66
|
+
## Supported boundary
|
|
67
|
+
|
|
68
|
+
The workflow core is shared, but adapter behavior can be enhanced or reduced according to each tool's capabilities. This release does not claim identical automation across tools or production certification for generated application code.
|
|
69
|
+
|
|
70
|
+
See the [installation guide](https://github.com/bluecoast1379/openone-workflow-kit/blob/v0.1.0/docs/shareable-install.md), [Definition-to-Done guide](https://github.com/bluecoast1379/openone-workflow-kit/blob/v0.1.0/docs/definition-of-done.md), and [maintainer handoff](https://github.com/bluecoast1379/openone-workflow-kit/blob/v0.1.0/docs/maintainer-handoff.md) for details.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# 可分享安装方式
|
|
2
|
+
|
|
3
|
+
本文面向拿到 OpenOne Workflow Kit 地址或发布归档的个人开发者。
|
|
4
|
+
|
|
5
|
+
## 从本地 tarball 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cd /path/to/target-workspace
|
|
9
|
+
npm install /path/to/openone-workflow-kit-<version>.tgz --save-dev
|
|
10
|
+
npx openone-workflow-init --target . --tools codex,claude,cursor --yes
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 从 Git 地址安装
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cd /path/to/target-workspace
|
|
17
|
+
npm install "git+https://github.com/bluecoast1379/openone-workflow-kit.git#v0.1.0" --save-dev
|
|
18
|
+
npx openone-workflow-init --target . --tools codex,claude,cursor --yes
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
如果使用 fork 或私有 mirror,请替换 URL。公开 Tag 之前请改用已验证的完整 commit SHA,不要把可变的 `main` 当作发布版本。初始化器只在本地工作区运行。
|
|
22
|
+
|
|
23
|
+
## 从 package registry 安装
|
|
24
|
+
|
|
25
|
+
先确认 Registry 中的确实存在对应版本:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cd /path/to/target-workspace
|
|
29
|
+
npm view openone-workflow-kit@0.1.0 version
|
|
30
|
+
npm install openone-workflow-kit@0.1.0 --save-dev
|
|
31
|
+
npx openone-workflow-init --target . --tools codex,claude,cursor --yes
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
预期 `npm view` 输出 `0.1.0`。如果 Registry 尚未返回该版本,不应声称 npm 安装路径可用;请使用上方的已验证 tarball 或不可变 Git 引用。
|
|
35
|
+
|
|
36
|
+
## 会生成什么
|
|
37
|
+
|
|
38
|
+
- `workflow/team-profile.yaml`
|
|
39
|
+
- `workflow/core/`
|
|
40
|
+
- `workflow/adapters/`
|
|
41
|
+
- `workflow/INSTALL_REPORT.md`
|
|
42
|
+
- 必要资料缺失时生成 `workflow/INITIALIZATION_QUESTIONS.md`
|
|
43
|
+
- 选中工具的薄入口,例如 `AGENTS.md`、`CLAUDE.md`、`.cursor/commands/`
|
|
44
|
+
|
|
45
|
+
## 安全边界
|
|
46
|
+
|
|
47
|
+
初始化器不会拉取远程代码、push 代码、触发构建、部署、写数据库或修改生产配置。它只读取本地文件,并把工作流文件写入目标工作区。生成后的个人工作流允许 agent 执行本地分支命名、创建、commit、tag 和本地 merge;远程 push、release、部署和生产配置写入需要用户明确授权。
|
|
48
|
+
|
|
49
|
+
## 验收
|
|
50
|
+
|
|
51
|
+
安装后按 [维护者交接](./maintainer-handoff.md) 的接收方清单检查。关键点是确认 `workflow/team-profile.yaml`、`workflow/core/` 和选中工具 adapter 已生成;缺失本地资料会记录在 `workflow/INITIALIZATION_QUESTIONS.md`。
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# 工具安装示例
|
|
2
|
+
|
|
3
|
+
同一套 workflow core 会被多个工具共享。每个工具只获得自己的薄 adapter。
|
|
4
|
+
|
|
5
|
+
## Codex
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
agent-workflow-init --target . --tools codex --yes
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
生成文件:
|
|
12
|
+
|
|
13
|
+
- `AGENTS.md`
|
|
14
|
+
- `.codex/prompts/`
|
|
15
|
+
- `workflow/`
|
|
16
|
+
|
|
17
|
+
## Claude Code
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
agent-workflow-init --target . --tools claude --yes
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
生成文件:
|
|
24
|
+
|
|
25
|
+
- `AGENTS.md`
|
|
26
|
+
- `CLAUDE.md`
|
|
27
|
+
- `.claude/commands/`
|
|
28
|
+
- `workflow/`
|
|
29
|
+
|
|
30
|
+
## Cursor
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
agent-workflow-init --target . --tools cursor --yes
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
生成文件:
|
|
37
|
+
|
|
38
|
+
- `AGENTS.md`
|
|
39
|
+
- `.cursor/rules/agent-workflow-core.mdc`
|
|
40
|
+
- `.cursor/commands/`
|
|
41
|
+
- `workflow/`
|
|
42
|
+
|
|
43
|
+
## GitHub Copilot
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
agent-workflow-init --target . --tools copilot --yes
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
生成文件:
|
|
50
|
+
|
|
51
|
+
- `AGENTS.md`
|
|
52
|
+
- `.github/copilot-instructions.md`
|
|
53
|
+
- `workflow/`
|
|
54
|
+
|
|
55
|
+
## CodeBuddy
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
agent-workflow-init --target . --tools codebuddy --yes
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
生成文件:
|
|
62
|
+
|
|
63
|
+
- `AGENTS.md`
|
|
64
|
+
- `.codebuddy/instructions.md`
|
|
65
|
+
- `workflow/`
|
|
66
|
+
|
|
67
|
+
## Kiro
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
agent-workflow-init --target . --tools kiro --yes
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
生成文件:
|
|
74
|
+
|
|
75
|
+
- `AGENTS.md`
|
|
76
|
+
- `.kiro/instructions.md`
|
|
77
|
+
- `workflow/`
|
|
78
|
+
|
|
79
|
+
## Trae
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
agent-workflow-init --target . --tools trae --yes
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
或使用别名:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
agent-workflow-init --target . --tools trea --yes
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
生成文件:
|
|
92
|
+
|
|
93
|
+
- `AGENTS.md`
|
|
94
|
+
- `.trae/instructions.md`
|
|
95
|
+
- `workflow/`
|
|
96
|
+
|
|
97
|
+
## 多工具安装
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
agent-workflow-init --target . --tools codex,claude,cursor,copilot,codebuddy,kiro,trae --yes
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
不要期待每个工具提供完全相同的运行体验。core 是同一套,adapter 能力取决于当前工具。
|