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,20 @@
|
|
|
1
|
+
# Visual asset provenance
|
|
2
|
+
|
|
3
|
+
The assets in this directory are deterministic, reviewable SVG source files created for OpenOne Workflow Kit. They are based only on this repository's public product concepts and visual specification.
|
|
4
|
+
|
|
5
|
+
## Sources and boundaries
|
|
6
|
+
|
|
7
|
+
- No external image, icon, font, screenshot, customer data, telemetry, or private URL is embedded.
|
|
8
|
+
- All shapes and diagrams are authored as SVG primitives; all fonts use a local system stack.
|
|
9
|
+
- Product names, commands, version numbers, workflow stages, and expected results are written explicitly and remain reviewable as text.
|
|
10
|
+
- The images make no performance, adoption, production-certification, or community-size claims.
|
|
11
|
+
- README text provides an accessible equivalent for every critical command and architectural concept.
|
|
12
|
+
|
|
13
|
+
## Reproduction and verification
|
|
14
|
+
|
|
15
|
+
1. Validate syntax with `xmllint --noout docs/assets/*.svg`.
|
|
16
|
+
2. Run `npm run check` to verify dimensions, file-size limits, accessibility elements, and SHA-256 checksums against `visual-manifest.json`.
|
|
17
|
+
3. Render the SVGs with a standards-compliant browser for visual review.
|
|
18
|
+
4. Export `social-preview.svg` to an untracked 1280×640 `social-preview.png` before uploading it in GitHub repository settings; the SVG keeps all critical content inside a 64 px safe area. The PNG checksum is recorded in `visual-manifest.json`, while the binary stays outside the source package.
|
|
19
|
+
|
|
20
|
+
If any SVG changes, update its checksum in `visual-manifest.json` and repeat both machine and visual QA.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="900" viewBox="0 0 1440 900" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">OpenOne Workflow Kit dual-track architecture</title>
|
|
3
|
+
<desc id="desc">A five-stage evidence flow connects local context, definition, execution, verification, and learning. Delivery and commercialization tracks share completion contracts, gates, and reusable knowledge.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#070B14"/>
|
|
7
|
+
<stop offset="1" stop-color="#0B1220"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
10
|
+
<stop offset="0" stop-color="#F59E0B"/>
|
|
11
|
+
<stop offset="1" stop-color="#FB7185"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
<marker id="arrowAmber" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
|
14
|
+
<path d="M0 0 10 5 0 10Z" fill="#F59E0B"/>
|
|
15
|
+
</marker>
|
|
16
|
+
<marker id="arrowCoral" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
|
17
|
+
<path d="M0 0 10 5 0 10Z" fill="#FB7185"/>
|
|
18
|
+
</marker>
|
|
19
|
+
</defs>
|
|
20
|
+
|
|
21
|
+
<rect width="1440" height="900" rx="32" fill="url(#bg)"/>
|
|
22
|
+
<circle cx="1300" cy="100" r="320" fill="#F59E0B" fill-opacity="0.07"/>
|
|
23
|
+
<circle cx="120" cy="850" r="300" fill="#FB7185" fill-opacity="0.06"/>
|
|
24
|
+
|
|
25
|
+
<g font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif">
|
|
26
|
+
<text x="72" y="78" fill="#F59E0B" font-size="18" font-weight="700" letter-spacing="1.6">DUAL-TRACK ARCHITECTURE</text>
|
|
27
|
+
<text x="72" y="136" fill="#F8FAFC" font-size="48" font-weight="700" letter-spacing="-1.5">一套 Core,两条轨道,同一个证据闭环</text>
|
|
28
|
+
<text x="72" y="176" fill="#A7B0C0" font-size="20">工具只是 adapter;本地事实、完成合同、Oracle 和复盘知识才是可迁移的核心。</text>
|
|
29
|
+
|
|
30
|
+
<g transform="translate(72 230)">
|
|
31
|
+
<text x="0" y="32" fill="#F59E0B" font-size="20" font-weight="700">研发轨 · DELIVERY</text>
|
|
32
|
+
<text x="0" y="252" fill="#FB7185" font-size="20" font-weight="700">商业化轨 · GROWTH</text>
|
|
33
|
+
|
|
34
|
+
<path d="M222 107H1190" fill="none" stroke="#F59E0B" stroke-opacity="0.64" stroke-width="3" marker-end="url(#arrowAmber)"/>
|
|
35
|
+
<path d="M222 327H1190" fill="none" stroke="#FB7185" stroke-opacity="0.6" stroke-width="3" marker-end="url(#arrowCoral)"/>
|
|
36
|
+
|
|
37
|
+
<g transform="translate(0 58)">
|
|
38
|
+
<rect width="216" height="118" rx="22" fill="#121B2A" stroke="#A7B0C0" stroke-opacity="0.22"/>
|
|
39
|
+
<text x="20" y="30" fill="#F59E0B" font-size="16" font-weight="700">01 · CONTEXT</text>
|
|
40
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">本地事实与边界</text>
|
|
41
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">team-profile · specs</text>
|
|
42
|
+
</g>
|
|
43
|
+
<g transform="translate(260 58)">
|
|
44
|
+
<rect width="216" height="118" rx="22" fill="#F59E0B" fill-opacity="0.09" stroke="#F59E0B" stroke-opacity="0.48"/>
|
|
45
|
+
<text x="20" y="30" fill="#F59E0B" font-size="16" font-weight="700">02 · DEFINE</text>
|
|
46
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">需求与完成合同</text>
|
|
47
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">PRD · architecture · Oracle</text>
|
|
48
|
+
</g>
|
|
49
|
+
<g transform="translate(520 58)">
|
|
50
|
+
<rect width="216" height="118" rx="22" fill="#F59E0B" fill-opacity="0.09" stroke="#F59E0B" stroke-opacity="0.48"/>
|
|
51
|
+
<text x="20" y="30" fill="#F59E0B" font-size="16" font-weight="700">03 · EXECUTE</text>
|
|
52
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">交付至完成</text>
|
|
53
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">implement · review · test</text>
|
|
54
|
+
</g>
|
|
55
|
+
<g transform="translate(780 58)">
|
|
56
|
+
<rect width="216" height="118" rx="22" fill="#F59E0B" fill-opacity="0.09" stroke="#F59E0B" stroke-opacity="0.48"/>
|
|
57
|
+
<text x="20" y="30" fill="#F59E0B" font-size="16" font-weight="700">04 · VERIFY</text>
|
|
58
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">Blocking 全绿</text>
|
|
59
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">evidence · release gate</text>
|
|
60
|
+
</g>
|
|
61
|
+
<g transform="translate(1040 58)">
|
|
62
|
+
<rect width="216" height="118" rx="22" fill="#121B2A" stroke="#A7B0C0" stroke-opacity="0.22"/>
|
|
63
|
+
<text x="20" y="30" fill="#F59E0B" font-size="16" font-weight="700">05 · LEARN</text>
|
|
64
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">回写行为真相</text>
|
|
65
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">specs · retrospective</text>
|
|
66
|
+
</g>
|
|
67
|
+
|
|
68
|
+
<g transform="translate(0 278)">
|
|
69
|
+
<rect width="216" height="118" rx="22" fill="#121B2A" stroke="#A7B0C0" stroke-opacity="0.22"/>
|
|
70
|
+
<text x="20" y="30" fill="#FB7185" font-size="16" font-weight="700">01 · CONTEXT</text>
|
|
71
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">产品与市场证据</text>
|
|
72
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">baseline · evidence grade</text>
|
|
73
|
+
</g>
|
|
74
|
+
<g transform="translate(260 278)">
|
|
75
|
+
<rect width="216" height="118" rx="22" fill="#FB7185" fill-opacity="0.08" stroke="#FB7185" stroke-opacity="0.45"/>
|
|
76
|
+
<text x="20" y="30" fill="#FB7185" font-size="16" font-weight="700">02 · DEFINE</text>
|
|
77
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">定位、PMF 与 ICP</text>
|
|
78
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">value · model · journey</text>
|
|
79
|
+
</g>
|
|
80
|
+
<g transform="translate(520 278)">
|
|
81
|
+
<rect width="216" height="118" rx="22" fill="#FB7185" fill-opacity="0.08" stroke="#FB7185" stroke-opacity="0.45"/>
|
|
82
|
+
<text x="20" y="30" fill="#FB7185" font-size="16" font-weight="700">03 · EXECUTE</text>
|
|
83
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">渠道与预算策略</text>
|
|
84
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">funnel · content · budget</text>
|
|
85
|
+
</g>
|
|
86
|
+
<g transform="translate(780 278)">
|
|
87
|
+
<rect width="216" height="118" rx="22" fill="#FB7185" fill-opacity="0.08" stroke="#FB7185" stroke-opacity="0.45"/>
|
|
88
|
+
<text x="20" y="30" fill="#FB7185" font-size="16" font-weight="700">04 · VERIFY</text>
|
|
89
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">衡量漏斗信号</text>
|
|
90
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">CAC · conversion · signal</text>
|
|
91
|
+
</g>
|
|
92
|
+
<g transform="translate(1040 278)">
|
|
93
|
+
<rect width="216" height="118" rx="22" fill="#121B2A" stroke="#A7B0C0" stroke-opacity="0.22"/>
|
|
94
|
+
<text x="20" y="30" fill="#FB7185" font-size="16" font-weight="700">05 · LEARN</text>
|
|
95
|
+
<text x="20" y="62" fill="#F8FAFC" font-size="21" font-weight="700">策略复盘</text>
|
|
96
|
+
<text x="20" y="89" fill="#A7B0C0" font-size="16">scale · hold · cut</text>
|
|
97
|
+
</g>
|
|
98
|
+
|
|
99
|
+
<g transform="translate(0 454)">
|
|
100
|
+
<rect width="1256" height="126" rx="26" fill="#101827" stroke="url(#accent)" stroke-opacity="0.76" stroke-width="2"/>
|
|
101
|
+
<text x="28" y="38" fill="#F8FAFC" font-size="22" font-weight="700">Shared governance layer · 共享闸门</text>
|
|
102
|
+
<text x="28" y="72" fill="#A7B0C0" font-size="18">完成合同 · Definition Lint · Acceptance Oracle · 分支/发布准入 · 证据分级 · 本地隐私边界</text>
|
|
103
|
+
<text x="28" y="102" fill="#A7B0C0" font-size="17">workflow/core 保持工具无关;adapters 只负责把同一套决策接入当前 AI 工具。</text>
|
|
104
|
+
</g>
|
|
105
|
+
|
|
106
|
+
<g transform="translate(0 590)">
|
|
107
|
+
<rect width="1256" height="68" rx="22" fill="url(#accent)" fill-opacity="0.13"/>
|
|
108
|
+
<text x="628" y="43" fill="#F8FAFC" font-size="19" font-weight="700" text-anchor="middle">Local truth → explicit contract → evidence-backed delivery → reusable knowledge</text>
|
|
109
|
+
</g>
|
|
110
|
+
</g>
|
|
111
|
+
</g>
|
|
112
|
+
</svg>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="720" viewBox="0 0 1440 720" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">OpenOne Workflow Kit hero</title>
|
|
3
|
+
<desc id="desc">OpenOne Workflow Kit is a dual-track research, delivery, and commercialization workflow for solo developers, built around completion contracts, acceptance oracles, and local-first adapters.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#070B14"/>
|
|
7
|
+
<stop offset="1" stop-color="#0B1220"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<radialGradient id="amberGlow" cx="0" cy="0" r="1" gradientTransform="translate(1120 110) rotate(135) scale(560 520)" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop offset="0" stop-color="#F59E0B" stop-opacity="0.24"/>
|
|
11
|
+
<stop offset="1" stop-color="#F59E0B" stop-opacity="0"/>
|
|
12
|
+
</radialGradient>
|
|
13
|
+
<radialGradient id="coralGlow" cx="0" cy="0" r="1" gradientTransform="translate(1020 640) rotate(-125) scale(500 420)" gradientUnits="userSpaceOnUse">
|
|
14
|
+
<stop offset="0" stop-color="#FB7185" stop-opacity="0.18"/>
|
|
15
|
+
<stop offset="1" stop-color="#FB7185" stop-opacity="0"/>
|
|
16
|
+
</radialGradient>
|
|
17
|
+
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
18
|
+
<stop offset="0" stop-color="#F59E0B"/>
|
|
19
|
+
<stop offset="1" stop-color="#FB7185"/>
|
|
20
|
+
</linearGradient>
|
|
21
|
+
<pattern id="grid" width="48" height="48" patternUnits="userSpaceOnUse">
|
|
22
|
+
<path d="M48 0H0V48" fill="none" stroke="#A7B0C0" stroke-opacity="0.055"/>
|
|
23
|
+
</pattern>
|
|
24
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
25
|
+
<feDropShadow dx="0" dy="18" stdDeviation="28" flood-color="#000000" flood-opacity="0.28"/>
|
|
26
|
+
</filter>
|
|
27
|
+
</defs>
|
|
28
|
+
|
|
29
|
+
<rect width="1440" height="720" rx="32" fill="url(#bg)"/>
|
|
30
|
+
<rect width="1440" height="720" rx="32" fill="url(#grid)"/>
|
|
31
|
+
<rect width="1440" height="720" rx="32" fill="url(#amberGlow)"/>
|
|
32
|
+
<rect width="1440" height="720" rx="32" fill="url(#coralGlow)"/>
|
|
33
|
+
|
|
34
|
+
<g font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif">
|
|
35
|
+
<g transform="translate(90 84)">
|
|
36
|
+
<rect width="318" height="42" rx="21" fill="#F59E0B" fill-opacity="0.12" stroke="#F59E0B" stroke-opacity="0.62"/>
|
|
37
|
+
<circle cx="23" cy="21" r="5" fill="#F59E0B"/>
|
|
38
|
+
<text x="40" y="28" fill="#F8FAFC" font-size="17" font-weight="600" letter-spacing="1.5">SOLO DEVELOPER WORKFLOW</text>
|
|
39
|
+
</g>
|
|
40
|
+
|
|
41
|
+
<text x="90" y="244" fill="#F8FAFC" font-size="84" font-weight="700" letter-spacing="-3">OpenOne</text>
|
|
42
|
+
<text x="90" y="332" fill="url(#accent)" font-size="84" font-weight="700" letter-spacing="-3">Workflow Kit</text>
|
|
43
|
+
<text x="94" y="396" fill="#D7DCE5" font-size="30" font-weight="500">独立开发者的研发 × 商业化双轨工作流</text>
|
|
44
|
+
<text x="94" y="438" fill="#A7B0C0" font-size="22">先定义完成,再交付至可证明的完成。</text>
|
|
45
|
+
|
|
46
|
+
<g transform="translate(90 510)" font-size="18" font-weight="600">
|
|
47
|
+
<rect width="196" height="52" rx="26" fill="#F59E0B" fill-opacity="0.13" stroke="#F59E0B" stroke-opacity="0.55"/>
|
|
48
|
+
<text x="98" y="33" fill="#F8FAFC" text-anchor="middle">Completion Contract</text>
|
|
49
|
+
<rect x="214" width="170" height="52" rx="26" fill="#FB7185" fill-opacity="0.12" stroke="#FB7185" stroke-opacity="0.55"/>
|
|
50
|
+
<text x="299" y="33" fill="#F8FAFC" text-anchor="middle">Dual Track</text>
|
|
51
|
+
<rect x="402" width="156" height="52" rx="26" fill="#F8FAFC" fill-opacity="0.06" stroke="#A7B0C0" stroke-opacity="0.35"/>
|
|
52
|
+
<text x="480" y="33" fill="#F8FAFC" text-anchor="middle">Local First</text>
|
|
53
|
+
</g>
|
|
54
|
+
|
|
55
|
+
<g transform="translate(796 112)" filter="url(#shadow)">
|
|
56
|
+
<rect width="548" height="498" rx="30" fill="#101827" stroke="#A7B0C0" stroke-opacity="0.18"/>
|
|
57
|
+
<text x="38" y="55" fill="#A7B0C0" font-size="17" font-weight="600" letter-spacing="1.4">ONE CORE · TWO TRACKS · SHARED GATES</text>
|
|
58
|
+
|
|
59
|
+
<g transform="translate(38 92)">
|
|
60
|
+
<rect width="472" height="140" rx="24" fill="#F59E0B" fill-opacity="0.09" stroke="#F59E0B" stroke-opacity="0.45"/>
|
|
61
|
+
<circle cx="40" cy="42" r="17" fill="#F59E0B"/>
|
|
62
|
+
<path d="M32 42h16M40 34v16" stroke="#070B14" stroke-width="3" stroke-linecap="round"/>
|
|
63
|
+
<text x="72" y="49" fill="#F8FAFC" font-size="26" font-weight="700">研发轨 Delivery</text>
|
|
64
|
+
<text x="40" y="91" fill="#D7DCE5" font-size="19">需求 → 完成合同 → 实现 → Oracle 验证</text>
|
|
65
|
+
<text x="40" y="120" fill="#A7B0C0" font-size="17">Definition-to-Done,不用“感觉完成”代替证据。</text>
|
|
66
|
+
</g>
|
|
67
|
+
|
|
68
|
+
<g transform="translate(38 252)">
|
|
69
|
+
<rect width="472" height="140" rx="24" fill="#FB7185" fill-opacity="0.08" stroke="#FB7185" stroke-opacity="0.42"/>
|
|
70
|
+
<circle cx="40" cy="42" r="17" fill="#FB7185"/>
|
|
71
|
+
<path d="M32 46l7-8 6 5 7-9" fill="none" stroke="#070B14" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
72
|
+
<text x="72" y="49" fill="#F8FAFC" font-size="26" font-weight="700">商业化轨 Growth</text>
|
|
73
|
+
<text x="40" y="91" fill="#D7DCE5" font-size="19">定位 → PMF / ICP → 渠道 → 预算 → 复盘</text>
|
|
74
|
+
<text x="40" y="120" fill="#A7B0C0" font-size="17">让产品决策、交付和增长信号在同一个闭环。</text>
|
|
75
|
+
</g>
|
|
76
|
+
|
|
77
|
+
<g transform="translate(38 420)">
|
|
78
|
+
<path d="M0 0H472" stroke="url(#accent)" stroke-width="3" stroke-linecap="round"/>
|
|
79
|
+
<text x="0" y="38" fill="#F8FAFC" font-size="18" font-weight="600">Claude · Codex · Cursor · Copilot · CodeBuddy · Kiro · Trae</text>
|
|
80
|
+
</g>
|
|
81
|
+
</g>
|
|
82
|
+
</g>
|
|
83
|
+
</svg>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="720" viewBox="0 0 1440 720" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">OpenOne Workflow Kit 30-second quick demo</title>
|
|
3
|
+
<desc id="desc">Three steps: create a clean workspace, run OpenOne Workflow Kit version 0.1.0 for Codex and Cursor, then verify the team profile and agent guide were generated.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#070B14"/>
|
|
7
|
+
<stop offset="1" stop-color="#0B1220"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
10
|
+
<stop offset="0" stop-color="#F59E0B"/>
|
|
11
|
+
<stop offset="1" stop-color="#FB7185"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
14
|
+
<feDropShadow dx="0" dy="18" stdDeviation="28" flood-color="#000000" flood-opacity="0.3"/>
|
|
15
|
+
</filter>
|
|
16
|
+
</defs>
|
|
17
|
+
|
|
18
|
+
<rect width="1440" height="720" rx="32" fill="url(#bg)"/>
|
|
19
|
+
<circle cx="1270" cy="60" r="330" fill="#F59E0B" fill-opacity="0.08"/>
|
|
20
|
+
<circle cx="180" cy="700" r="300" fill="#FB7185" fill-opacity="0.07"/>
|
|
21
|
+
|
|
22
|
+
<g font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif">
|
|
23
|
+
<text x="82" y="88" fill="#F59E0B" font-size="18" font-weight="700" letter-spacing="1.6">30-SECOND QUICK DEMO</text>
|
|
24
|
+
<text x="82" y="146" fill="#F8FAFC" font-size="48" font-weight="700" letter-spacing="-1.5">三步生成一套可执行的个人工作流</text>
|
|
25
|
+
<text x="82" y="184" fill="#A7B0C0" font-size="20">冷启动下载时间不计入;命令同时在 README 中提供可复制文本。</text>
|
|
26
|
+
|
|
27
|
+
<g transform="translate(82 224)">
|
|
28
|
+
<g>
|
|
29
|
+
<circle cx="24" cy="24" r="24" fill="#F59E0B"/>
|
|
30
|
+
<text x="24" y="32" fill="#070B14" font-size="22" font-weight="800" text-anchor="middle">1</text>
|
|
31
|
+
<text x="62" y="21" fill="#F8FAFC" font-size="21" font-weight="700">准备空目录</text>
|
|
32
|
+
<text x="62" y="48" fill="#A7B0C0" font-size="17">Create a clean workspace</text>
|
|
33
|
+
</g>
|
|
34
|
+
<path d="M364 24H418" stroke="#A7B0C0" stroke-opacity="0.5" stroke-width="2"/>
|
|
35
|
+
<path d="m408 16 10 8-10 8" fill="none" stroke="#A7B0C0" stroke-opacity="0.7" stroke-width="2"/>
|
|
36
|
+
<g transform="translate(446)">
|
|
37
|
+
<circle cx="24" cy="24" r="24" fill="#FB7185"/>
|
|
38
|
+
<text x="24" y="32" fill="#070B14" font-size="22" font-weight="800" text-anchor="middle">2</text>
|
|
39
|
+
<text x="62" y="21" fill="#F8FAFC" font-size="21" font-weight="700">运行 v0.1.0</text>
|
|
40
|
+
<text x="62" y="48" fill="#A7B0C0" font-size="17">Generate selected adapters</text>
|
|
41
|
+
</g>
|
|
42
|
+
<path d="M810 24H864" stroke="#A7B0C0" stroke-opacity="0.5" stroke-width="2"/>
|
|
43
|
+
<path d="m854 16 10 8-10 8" fill="none" stroke="#A7B0C0" stroke-opacity="0.7" stroke-width="2"/>
|
|
44
|
+
<g transform="translate(892)">
|
|
45
|
+
<circle cx="24" cy="24" r="24" fill="url(#accent)"/>
|
|
46
|
+
<path d="m15 25 6 6 13-15" fill="none" stroke="#070B14" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
47
|
+
<text x="62" y="21" fill="#F8FAFC" font-size="21" font-weight="700">验证产物</text>
|
|
48
|
+
<text x="62" y="48" fill="#A7B0C0" font-size="17">Profile + agent guide ready</text>
|
|
49
|
+
</g>
|
|
50
|
+
</g>
|
|
51
|
+
|
|
52
|
+
<g transform="translate(82 320)" filter="url(#shadow)">
|
|
53
|
+
<rect width="1276" height="324" rx="28" fill="#0D1524" stroke="#A7B0C0" stroke-opacity="0.18"/>
|
|
54
|
+
<rect width="1276" height="54" rx="28" fill="#131D2D"/>
|
|
55
|
+
<path d="M0 54H1276" stroke="#A7B0C0" stroke-opacity="0.15"/>
|
|
56
|
+
<circle cx="28" cy="27" r="6" fill="#FB7185"/>
|
|
57
|
+
<circle cx="50" cy="27" r="6" fill="#F59E0B"/>
|
|
58
|
+
<circle cx="72" cy="27" r="6" fill="#A3E635"/>
|
|
59
|
+
<text x="638" y="34" fill="#A7B0C0" font-size="15" text-anchor="middle">terminal — openone-demo</text>
|
|
60
|
+
|
|
61
|
+
<g font-family="SFMono-Regular, Consolas, 'Liberation Mono', monospace" font-size="18">
|
|
62
|
+
<text x="34" y="96" fill="#F59E0B">$</text>
|
|
63
|
+
<text x="58" y="96" fill="#F8FAFC">mkdir openone-demo && cd openone-demo</text>
|
|
64
|
+
<text x="34" y="142" fill="#F59E0B">$</text>
|
|
65
|
+
<text x="58" y="142" fill="#F8FAFC">npx --yes --package openone-workflow-kit@0.1.0 openone-workflow-init </text>
|
|
66
|
+
<text x="58" y="176" fill="#F8FAFC"> --target . --tools codex,cursor --yes</text>
|
|
67
|
+
<text x="34" y="222" fill="#F59E0B">$</text>
|
|
68
|
+
<text x="58" y="222" fill="#F8FAFC">node -e "for (const f of ['workflow/team-profile.yaml','AGENTS.md'])</text>
|
|
69
|
+
<text x="58" y="256" fill="#F8FAFC"> require('node:fs').accessSync(f); console.log('OpenOne ready')"</text>
|
|
70
|
+
<text x="34" y="302" fill="#A3E635">✓ OpenOne ready</text>
|
|
71
|
+
</g>
|
|
72
|
+
</g>
|
|
73
|
+
</g>
|
|
74
|
+
</svg>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">OpenOne Workflow Kit social preview</title>
|
|
3
|
+
<desc id="desc">Social preview for OpenOne Workflow Kit, the dual-track delivery and commercialization workflow for solo developers.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#070B14"/>
|
|
7
|
+
<stop offset="1" stop-color="#0B1220"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
10
|
+
<stop offset="0" stop-color="#F59E0B"/>
|
|
11
|
+
<stop offset="1" stop-color="#FB7185"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
<radialGradient id="glow" cx="0" cy="0" r="1" gradientTransform="translate(1060 110) rotate(135) scale(520 460)" gradientUnits="userSpaceOnUse">
|
|
14
|
+
<stop offset="0" stop-color="#F59E0B" stop-opacity="0.24"/>
|
|
15
|
+
<stop offset="1" stop-color="#F59E0B" stop-opacity="0"/>
|
|
16
|
+
</radialGradient>
|
|
17
|
+
<pattern id="grid" width="44" height="44" patternUnits="userSpaceOnUse">
|
|
18
|
+
<path d="M44 0H0V44" fill="none" stroke="#A7B0C0" stroke-opacity="0.055"/>
|
|
19
|
+
</pattern>
|
|
20
|
+
</defs>
|
|
21
|
+
|
|
22
|
+
<rect width="1280" height="640" fill="url(#bg)"/>
|
|
23
|
+
<rect width="1280" height="640" fill="url(#grid)"/>
|
|
24
|
+
<rect width="1280" height="640" fill="url(#glow)"/>
|
|
25
|
+
<circle cx="1110" cy="590" r="270" fill="#FB7185" fill-opacity="0.08"/>
|
|
26
|
+
|
|
27
|
+
<g font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif">
|
|
28
|
+
<g transform="translate(72 70)">
|
|
29
|
+
<rect width="500" height="56" rx="28" fill="#F59E0B" fill-opacity="0.13" stroke="#F59E0B" stroke-opacity="0.58"/>
|
|
30
|
+
<circle cx="28" cy="28" r="7" fill="#F59E0B"/>
|
|
31
|
+
<text x="50" y="38" fill="#F8FAFC" font-size="28" font-weight="700" letter-spacing="1.2">SOLO DEVELOPER WORKFLOW</text>
|
|
32
|
+
</g>
|
|
33
|
+
|
|
34
|
+
<text x="72" y="216" fill="#F8FAFC" font-size="78" font-weight="700" letter-spacing="-3">OpenOne</text>
|
|
35
|
+
<text x="72" y="298" fill="url(#accent)" font-size="78" font-weight="700" letter-spacing="-3">Workflow Kit</text>
|
|
36
|
+
<text x="76" y="360" fill="#D7DCE5" font-size="29" font-weight="500">独立开发者的研发 × 商业化双轨工作流</text>
|
|
37
|
+
<text x="76" y="404" fill="#A7B0C0" font-size="28">完成合同 · Acceptance Oracles · Local-first adapters</text>
|
|
38
|
+
|
|
39
|
+
<g transform="translate(76 458)">
|
|
40
|
+
<rect width="540" height="94" rx="24" fill="#F59E0B" fill-opacity="0.09" stroke="#F59E0B" stroke-opacity="0.4"/>
|
|
41
|
+
<circle cx="34" cy="47" r="16" fill="#F59E0B"/>
|
|
42
|
+
<text x="64" y="38" fill="#F8FAFC" font-size="28" font-weight="700">研发轨 Delivery</text>
|
|
43
|
+
<text x="64" y="74" fill="#A7B0C0" font-size="28">define → build → verify → release</text>
|
|
44
|
+
</g>
|
|
45
|
+
<g transform="translate(636 458)">
|
|
46
|
+
<rect width="540" height="94" rx="24" fill="#FB7185" fill-opacity="0.08" stroke="#FB7185" stroke-opacity="0.4"/>
|
|
47
|
+
<circle cx="34" cy="47" r="16" fill="#FB7185"/>
|
|
48
|
+
<text x="64" y="38" fill="#F8FAFC" font-size="28" font-weight="700">商业化轨 Growth</text>
|
|
49
|
+
<text x="64" y="74" fill="#A7B0C0" font-size="28">position → reach → measure → learn</text>
|
|
50
|
+
</g>
|
|
51
|
+
|
|
52
|
+
<g transform="translate(1048 74)">
|
|
53
|
+
<circle cx="72" cy="72" r="72" fill="#101827" stroke="url(#accent)" stroke-width="3"/>
|
|
54
|
+
<path d="M77 34 47 82h26l-8 30 34-48H73Z" fill="url(#accent)"/>
|
|
55
|
+
</g>
|
|
56
|
+
</g>
|
|
57
|
+
</svg>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"project": "openone-workflow-kit",
|
|
4
|
+
"designSystem": {
|
|
5
|
+
"background": ["#070B14", "#0B1220"],
|
|
6
|
+
"foreground": ["#F8FAFC", "#A7B0C0"],
|
|
7
|
+
"accent": ["#F59E0B", "#FB7185"],
|
|
8
|
+
"fontStack": "-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
|
|
9
|
+
},
|
|
10
|
+
"assets": [
|
|
11
|
+
{
|
|
12
|
+
"file": "hero.svg",
|
|
13
|
+
"width": 1440,
|
|
14
|
+
"height": 720,
|
|
15
|
+
"purpose": "README hero",
|
|
16
|
+
"sha256": "e1b0683be279dec52fd3832bb8b6f7847c090e9140f6ee82e52d4ad7027cce0f"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"file": "architecture.svg",
|
|
20
|
+
"width": 1440,
|
|
21
|
+
"height": 900,
|
|
22
|
+
"purpose": "Dual-track architecture",
|
|
23
|
+
"sha256": "c2c614ca0002dc91c586d377484af04610f7641e0ded7d6b04c7c9ba8ff447c9"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"file": "quick-demo.svg",
|
|
27
|
+
"width": 1440,
|
|
28
|
+
"height": 720,
|
|
29
|
+
"purpose": "Three-step quick demo",
|
|
30
|
+
"sha256": "cc18d2857e6ebdd91140f4232adfeeea31917aef5b0958ed267a34b5e20556ff"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"file": "social-preview.svg",
|
|
34
|
+
"width": 1280,
|
|
35
|
+
"height": 640,
|
|
36
|
+
"purpose": "Source for the GitHub social preview export",
|
|
37
|
+
"sha256": "f91461e2824024e1619a4c06e826ff06dc21b8f73439e195ffc4865f75f1d677"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"exports": [
|
|
41
|
+
{
|
|
42
|
+
"filename": "social-preview.png",
|
|
43
|
+
"format": "png",
|
|
44
|
+
"width": 1280,
|
|
45
|
+
"height": 640,
|
|
46
|
+
"source": "social-preview.svg",
|
|
47
|
+
"purpose": "GitHub repository social preview upload",
|
|
48
|
+
"tracked": false,
|
|
49
|
+
"sha256": "0d484fa2fa1acd2f1e30e19ae3af58f889da799700325bb40ecd050edbed299d"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# 定义完成指南:完成合同、Oracle 与自主交付
|
|
2
|
+
|
|
3
|
+
本文说明 kit 研发轨的判定核心:怎样把一个需求的"什么叫完成"一次性定义清楚,让 agent 可以自主执行到可证明的完成,而验收时"完完全全就是你想要的"。
|
|
4
|
+
|
|
5
|
+
## 核心理念
|
|
6
|
+
|
|
7
|
+
编程工作的胜负在于谁能一次性把"什么叫完成"定义清楚。定义清楚不是写更长的文档,而是让定义具备三个性质:
|
|
8
|
+
|
|
9
|
+
1. **可编译**:分散在需求、PRD、架构、测试文档里的结论能收敛成一份合同,没有互相矛盾。
|
|
10
|
+
2. **可判定**:每条验收标准绑定可复现的验证方法,完成与否由机器状态判定,不由感觉判定。
|
|
11
|
+
3. **可冻结**:实现开始后标准不再漂移;要改就显式修订并经用户确认。
|
|
12
|
+
|
|
13
|
+
## 八维度:一份"定义清楚"的合同长什么样
|
|
14
|
+
|
|
15
|
+
| # | 维度 | 合同章节 | 检查问题 |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| 1 | 底层逻辑拆解 | 数据流与状态机 | 数据从哪来到哪去?谁是唯一真相源?非法状态转移如何被拒绝? |
|
|
18
|
+
| 2 | 技术边界与异常路径 | 失败路径闭环 | 弱网重试与幂等?并发冲突?进程中断?配额耗尽? |
|
|
19
|
+
| 3 | 性能与成本硬约束 | 质量预算 | P95 多少毫秒?包体/内存上限?单用户成本上限? |
|
|
20
|
+
| 4 | 验证可复现性 | 验收 Oracle | 每条标准怎么证明?命令是什么?判定阈值是什么? |
|
|
21
|
+
| 5 | 语义歧义消融 | 术语表 | "快/流畅/稳定"绑定了数字或可观察行为吗? |
|
|
22
|
+
| 6 | 人性与体验直觉 | 体验质量线 | 空/错/载三态齐了吗?错误信息可行动吗? |
|
|
23
|
+
| 7 | 商业北极星锚定 | 北极星挂钩 | 本需求预期移动哪个漏斗指标? |
|
|
24
|
+
| 8 | 组织语境共识边界 | 影响边界 | 允许改什么禁止碰什么?与宪法、规范、specs 冲突吗? |
|
|
25
|
+
|
|
26
|
+
八个维度由 `workflow/core/capabilities/definition-lint.md` 在冻结前逐维检查;该能力还内置按项目类型(Web/CLI/扩展/移动/MCP/静态站点)的**定义面试题库**——个人开发者不必精通重试、幂等、内存模型,题库逼着把这些约束变成合同条款或显式假设。
|
|
27
|
+
|
|
28
|
+
## 完成合同生命周期
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
/new-feature(S/M/L 分级)
|
|
32
|
+
│
|
|
33
|
+
├─ S 档:/定义完成 生成迷你合同(只填 ★ 节)→ 实现 → 验证
|
|
34
|
+
│
|
|
35
|
+
└─ M/L 档:
|
|
36
|
+
/01 需求 →(/澄清)→ /02 PRD → /02B UI → /03 架构 → /06 测试用例
|
|
37
|
+
│ (各阶段用 [待澄清] 标记未决项;模糊词必须绑定数字)
|
|
38
|
+
▼
|
|
39
|
+
/定义完成:编译合同 → Definition Lint → 清零待澄清 → 用户确认冻结
|
|
40
|
+
▼
|
|
41
|
+
/一致性检查(只读交叉检查,BLOCKER 必须先修)
|
|
42
|
+
▼
|
|
43
|
+
/交付至完成:循环 实现→验证→修复→复验,直到 blocking Oracle 全绿或精确阻塞
|
|
44
|
+
(或手动 /04 → /05 → /07)
|
|
45
|
+
▼
|
|
46
|
+
/08 发布准备(准入 = blocking 全 PASS/WAIVED)→ /09 → /10(回写 specs/)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Oracle 状态机
|
|
50
|
+
|
|
51
|
+
每条验收标准是一条 Oracle:`ID + 标准(EARS/GWT 句式)+ 验证方法 + 类型(auto/manual)+ blocking + 状态 + 证据`。
|
|
52
|
+
|
|
53
|
+
- 状态:`NOT_RUN → PASS / FAIL`;PASS 后相关代码再变更 → `STALE`(必须复验);`WAIVED` 仅可由用户书面确认。
|
|
54
|
+
- 只有 `/交付至完成` 和 `/07-测试执行` 有权翻转状态,且逐次附证据(命令、输出、退出码、commit)。
|
|
55
|
+
- **宣布完成 = blocking Oracle 全部 PASS(或 WAIVED 带确认)**;有 NOT_RUN/FAIL/STALE 的 blocking 项时,"基本完成"属违规表述。
|
|
56
|
+
- 结构校验:`node bin/check-contract.cjs features/<feature>/00-完成合同.md`(分档必填节、Oracle 表完整性、冻结前置条件、模糊词扫描)。
|
|
57
|
+
|
|
58
|
+
## 三层长期资产
|
|
59
|
+
|
|
60
|
+
| 层 | 位置 | 放什么 | 谁读谁写 |
|
|
61
|
+
| --- | --- | --- | --- |
|
|
62
|
+
| 宪法 | `workflow/constitution.md` | 跨需求不可协商的原则(技术栈偏好、安全底线、成本上限、永不做清单) | 所有阶段读;修订需用户确认 |
|
|
63
|
+
| 规范 | `workflow/standards/` | 从代码库提取的可复用规范(命名、错误处理、依赖选型) | `/03` 提取,`/04`/`/05` 遵循,`/10` 沉淀 |
|
|
64
|
+
| 行为真相 | `specs/`(living specs) | 已实现并已发布的行为(EARS 句式),brownfield 定义起点 | `/01`/`/定义完成`/`/06` 读;仅 `/10` 发布后回写 |
|
|
65
|
+
|
|
66
|
+
事实与路径放 `workflow/team-profile.yaml`——原则、规范、行为、事实四者分家,需求阶段不再重复讨论不变的东西。
|
|
67
|
+
|
|
68
|
+
## 复杂度分级(消灭流程税)
|
|
69
|
+
|
|
70
|
+
| 档 | 适用 | 路径 |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| S | bugfix、文案、单文件小改;不改对外契约、不碰高风险文件 | 迷你合同(★ 节)→ 实现 → 验证 |
|
|
73
|
+
| M | 单仓功能,影响面清晰 | 标准路径,可按需豁免单项并记录 |
|
|
74
|
+
| L | 跨仓、动数据/契约、高风险文件、新品首发 | 全流程,闸门阶段不得豁免 |
|
|
75
|
+
|
|
76
|
+
拿不准就近上调一档;分级只压缩文档路径,不豁免授权边界(push、发布、对外动作仍需用户授权)。
|
|
77
|
+
|
|
78
|
+
## 设计参考
|
|
79
|
+
|
|
80
|
+
机制设计对照了 2026-07 采集的主流 spec-driven 框架:github/spec-kit(clarify ≤5 问、NEEDS CLARIFICATION 标记、技术无关 Success Criteria、constitution、analyze)、Fission-AI/OpenSpec(change 流水 + living specs、brownfield 优先)、BMAD-METHOD(scale-adaptive 复杂度、风险驱动测试)、Kiro specs(EARS 需求句式)、buildermethods/agent-os(standards 分层)等,并针对个人开发者做了裁剪:一个人没有对抗性角色,就用"合同冻结 + 内建审查视角 + 机器判定"替代组织制衡;时间是最稀缺资源,就用 S/M/L 分级消灭流程税。
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# 双轨工作流设计:研发轨 + 商业化轨
|
|
2
|
+
|
|
3
|
+
本文说明 OpenOne Workflow Kit 的双轨工作流:研发轨(features)负责把需求做出来并发布,商业化轨(business)负责回答"卖给谁、怎么卖、在哪卖、花多少钱、卖得怎么样"。两轨共享同一套授权口径,面向没有市场团队的个人开发者。
|
|
4
|
+
|
|
5
|
+
## 为什么是双轨而不是加长研发流程
|
|
6
|
+
|
|
7
|
+
- 作用域不同:研发轨以"需求"为单位(每个 feature 一轮生命周期);商业化轨以"产品"为单位(一份长期维护的基线 + 周期性复盘),把 B 阶段塞进每个需求会重复且错位。
|
|
8
|
+
- 节奏不同:研发阶段是顺序推进后归档;定位、渠道和预算是持续修订的活文档,B9 复盘按周期循环。
|
|
9
|
+
- 授权边界不同:研发轨的危险动作是 push/部署/数据库写入;商业化轨的危险动作是对外发布、投放花钱和 cold outreach,需要单独口径。
|
|
10
|
+
|
|
11
|
+
## 总览
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
商业化轨(每产品一份基线,business/{product}/)
|
|
15
|
+
/new-product
|
|
16
|
+
└─ /B1-业务定位 ─ /B2-商业模式 ─ /B3-PMF与客户画像 ─ /B4-场景与购买旅程
|
|
17
|
+
─ /B5-渠道漏斗映射 ─ /B6-营销获客策略 ─ /B7-营销预算 ─ /B8-渠道执行策略
|
|
18
|
+
(首次可用 /B1-B8-商业化准备 一次性串联;关键决策点需用户确认)
|
|
19
|
+
│ 提供输入 ▲ 数据与信号回流
|
|
20
|
+
▼ │
|
|
21
|
+
研发轨(每需求一轮,features/{feature}/;详见 docs/definition-of-done.md) │
|
|
22
|
+
/new-feature(S/M/L) ─ /01 ─(/澄清)─ /02 ─ /02B ─ /03 ─ /06 ─ /定义完成(冻结合同)
|
|
23
|
+
─ /一致性检查 ─ /交付至完成(或 /04 ─ /05 ─ /07)─ /08 ─ /09 ─ /10
|
|
24
|
+
│
|
|
25
|
+
增长循环(上线后按周期) │
|
|
26
|
+
渠道执行(用户授权后)→ 数据采集 → /B9-策略复盘 ──────────────┘
|
|
27
|
+
├─ 常规偏差:修订 B5-B8(渠道/策略/预算/打法)
|
|
28
|
+
└─ 重大失配:上溯修订 B1/B2/B3(定位/模式/画像)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 商业化轨九个阶段
|
|
32
|
+
|
|
33
|
+
| 阶段 | 回答的问题 | 关键产出 |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `/B1-业务定位` | 我是谁、和谁竞争、凭什么赢 | 产品服务盘点、市场调研、竞品矩阵、可证伪的定位陈述、细分取舍 |
|
|
36
|
+
| `/B2-商业模式` | 钱从哪来、成本去哪、账算不算得过来 | 精益画布、收入模式与定价假设、单位经济、CAC 上限、关键假设清单 |
|
|
37
|
+
| `/B3-PMF与客户画像` | 有没有人真的要、理想客户是谁、谁不服务 | PMF 信号定义与判定、验证实验记录、ICP、负面画像 |
|
|
38
|
+
| `/B4-场景与购买旅程` | 用户在什么场景用、怎么走到付费 | JTBD 场景清单与优先级、认知到推荐的旅程表、异议清单、材料缺口 |
|
|
39
|
+
| `/B5-渠道漏斗映射` | 每个渠道在漏斗哪一层、起什么作用 | 漏斗口径、offline/online 渠道评估表、渠道-漏斗矩阵、主攻候选 |
|
|
40
|
+
| `/B6-营销获客策略` | 总体打法是什么 | 阶段判断、目标体系、主攻渠道组合、信息一致性、内容支柱、发布节奏 |
|
|
41
|
+
| `/B7-营销预算` | 花多少钱、投多少时间、何时止损 | 金钱+时间双预算表、各渠道上限与止损线、CAC 目标 |
|
|
42
|
+
| `/B8-渠道执行策略` | 每个渠道具体怎么干 | SEO playbook(关键词/内容日历/技术清单)、各渠道 playbook、实验设计、营销工程需求清单、待授权动作清单 |
|
|
43
|
+
| `/B9-策略复盘` | 打得怎么样、下周期怎么调 | 数据快照、假设判定、渠道加码/保持/降配/砍掉决策、上溯修订、下一周期计划 |
|
|
44
|
+
|
|
45
|
+
线下渠道示例:events / conferences、local meetups、hackathons、线下工作坊。线上渠道示例:paid ads、SEO、cold outreach、influencer marketing、social media、email marketing、partnership、开发者社区、应用与插件市场、目录站、开源仓库分发。
|
|
46
|
+
|
|
47
|
+
## 两轨衔接点
|
|
48
|
+
|
|
49
|
+
| 衔接点 | 方向 | 规则 |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| 需求入口 | B → 研发 | `/01-需求讨论`、`/02-产品文档` 读取 B1/B2/B3/B4:需求价值挂到 ICP 与场景;命中负面画像的需求显式标记待用户确认;付费相关需求与 B2 口径一致 |
|
|
52
|
+
| 发布材料 | B → 研发 | `/08-发布准备` 对照 B5/B8 渠道计划补齐发布营销材料(landing 更新、SEO 元数据、商店文案、发布帖与邮件草稿) |
|
|
53
|
+
| 发布分发 | 研发 → B | `/09-发布执行` 完成后按 B8 生成本次发布的渠道分发清单,逐项等待用户授权或自行执行 |
|
|
54
|
+
| 营销工程回流 | B → 研发 | B8 中的 landing page、博客/文档站、埋点、A/B 测试、分享机制通过 `/new-feature` 进入研发轨,遵守全部研发闸门 |
|
|
55
|
+
| 复盘闭环 | 双向 | `/10-复盘总结` 记录增长信号回流 `/B9-策略复盘`;B9 的渠道经验沉淀回知识库;重大失配上溯 B1/B2/B3 |
|
|
56
|
+
|
|
57
|
+
商业化基线缺失时研发轨不阻塞,只记录缺口——已有项目可以先跑研发轨,随后补 `/new-product`。
|
|
58
|
+
|
|
59
|
+
## 授权与证据边界
|
|
60
|
+
|
|
61
|
+
- B 阶段只产出文档和清单。对外动作——发布内容、投放广告、发送 cold email、联系 influencer/合作伙伴、提交目录站——必须用户明确授权或自行执行;付费投放支出 `paid_ad_spend: manual-only`。
|
|
62
|
+
- 市场结论必须证据分级:一手(访谈、自有数据)/二手(公开来源,注明来源与日期)/推断(标注验证方式)。不得编造市场规模、用户评价、竞品价格;能力见 `workflow/core/capabilities/market-evidence-grader.md`。
|
|
63
|
+
- 每个渠道当实验管理:事前定义假设、双预算上限、周期与判定标准;能力见 `workflow/core/capabilities/channel-experiment-tracker.md`。
|
|
64
|
+
- cold outreach 与 email marketing 遵守目标市场反垃圾邮件与隐私法规(如 CAN-SPAM、GDPR)及平台规则;联系人名单存本地未跟踪文件,文档只记录路径。
|
|
65
|
+
- 未达 PMF 信号前,投放保持最小实验档;个人开发者同时主攻渠道默认不超过 2-3 个,时间预算与金钱预算同等约束。
|
|
66
|
+
|
|
67
|
+
## 节奏建议
|
|
68
|
+
|
|
69
|
+
| 频率 | 动作 |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| 一次性(每产品) | `/new-product` → `/B1-B8-商业化准备`(关键决策点用户确认:定位、定价、ICP、主攻渠道、预算) |
|
|
72
|
+
| 每个需求 | 研发轨 `/new-feature` → `/01` … `/10`,入口和发布阶段消费商业化基线 |
|
|
73
|
+
| 每周 | 检视漏斗与渠道指标(B9 的数据输入,不必产出完整复盘) |
|
|
74
|
+
| 每月 | `/B9-策略复盘`:渠道处置决策、预算调整、修订 B5-B8 |
|
|
75
|
+
| 每季度 | B9 扩展为定位校准:重检 B1/B2/B3 是否仍然成立 |
|
|
76
|
+
|
|
77
|
+
## 典型旅程:一个新产品从 0 到 1
|
|
78
|
+
|
|
79
|
+
1. `/new-product my-tool` 建容器;`/B1-B8-商业化准备` 产出定位、模式、ICP、旅程、渠道、策略、预算、playbook 基线。
|
|
80
|
+
2. `/new-feature mvp` 走研发轨 01→07;`/08-发布准备` 时对照 B8 补 landing 文案与 SEO 元数据;`/09-发布执行` 获授权后发布,并生成 Product Hunt/社区/邮件分发清单等待用户执行。
|
|
81
|
+
3. B8 回流的 `/new-feature landing-page`、`/new-feature analytics-events` 各走一轮研发轨。
|
|
82
|
+
4. 上线四周后 `/B9-策略复盘`:SEO 早期信号保持、某社区渠道 CAC 超标降配、发现 ICP 偏差 → 修订 B3 并回流 `/01` 调整下一轮需求优先级。
|
|
83
|
+
5. `/10-复盘总结` 沉淀发布经验,增长信号写入下轮 B9 输入。
|
|
84
|
+
|
|
85
|
+
## 落点与文件
|
|
86
|
+
|
|
87
|
+
- 商业化容器:工作区级 `business/{product}/`,状态文件 `00-商业化状态.md`(模板 `workflow/core/templates/00-business-status.md`),素材放 `business/{product}/素材/`。
|
|
88
|
+
- 阶段文档模板:`workflow/core/templates/business-stage-document.md`。
|
|
89
|
+
- 阶段契约:`workflow/core/commands/new-product.md`、`B1-业务定位.md` … `B9-策略复盘.md`、`B1-B8-商业化准备.md`。
|
|
90
|
+
- 配置:`workflow/team-profile.yaml` 的 `workflow.business_dir`、`risk_policy.outbound_marketing_actions`、`risk_policy.paid_ad_spend`、`source_materials.market_research`。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Workflow Split Notes
|
|
2
|
+
|
|
3
|
+
This kit is the personal-developer split of the shared workflow.
|
|
4
|
+
|
|
5
|
+
It keeps the reusable workflow core, concrete command contracts, `/02B-UI设计` design gate, test/review evidence discipline, and multi-tool adapters from the team workflow, then removes team-only acceptance, training, and release-notification stages.
|
|
6
|
+
|
|
7
|
+
## Personal Workflow Outcome
|
|
8
|
+
|
|
9
|
+
The personal kit uses this shorter sequence:
|
|
10
|
+
|
|
11
|
+
`/01-需求讨论` -> `/02-产品文档` -> `/02B-UI设计` -> `/03-技术架构` -> `/04-代码实现` -> `/05-代码审查` -> `/06-测试用例` -> `/07-测试执行` -> `/08-发布准备` -> `/09-发布执行` -> `/10-复盘总结`.
|
|
12
|
+
|
|
13
|
+
## Migrated Independent-Developer Practices
|
|
14
|
+
|
|
15
|
+
- Use `prod` as the published baseline and `main` as integration/testing.
|
|
16
|
+
- Let agents create local development branch names, local branches, commits, tags, and local merges when the repo is personal, the scope is clear, and the working tree has been inspected.
|
|
17
|
+
- Keep remote push, GitHub release, package publication, store submission, deployment, database writes, and production config changes behind explicit user authorization.
|
|
18
|
+
- Align semantic tags such as `vX.Y.Z` with package, app, extension, or store versions.
|
|
19
|
+
- Preserve release artifacts, release notes, rollback points, and verification evidence in workflow documents.
|
|
20
|
+
- Capture durable lessons in Markdown knowledge layers without copying private chats, tokens, URLs, receipts, QR codes, or other sensitive identifiers.
|
|
21
|
+
|