@jennie-shawn/starwork 0.1.0-alpha.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.
Files changed (228) hide show
  1. package/README.md +18 -0
  2. package/adapters/README.md +5 -0
  3. package/cli/README.md +52 -0
  4. package/cli/adapt-spec.md +61 -0
  5. package/cli/bin/starwork.js +8 -0
  6. package/cli/doctor-spec.md +516 -0
  7. package/cli/init-spec.md +435 -0
  8. package/cli/pack-install-spec.md +63 -0
  9. package/cli/spawn-blueprint-spec.md +657 -0
  10. package/cli/spawn-spec.md +439 -0
  11. package/cli/src/cli.js +1955 -0
  12. package/cli/test/init.test.js +436 -0
  13. package/core/README.md +51 -0
  14. package/core/baseline/README.md +12 -0
  15. package/core/baseline/file-boundaries.md +25 -0
  16. package/core/baseline/health-check.md +27 -0
  17. package/core/baseline/roles.md +26 -0
  18. package/core/baseline/spec.md +47 -0
  19. package/core/capabilities/README.md +15 -0
  20. package/core/capabilities/decisions/capability.md +26 -0
  21. package/core/capabilities/local-identity/capability.md +15 -0
  22. package/core/capabilities/local-identity/templates/identity/README.md +5 -0
  23. package/core/capabilities/local-lessons/capability.md +15 -0
  24. package/core/capabilities/local-lessons/templates/lessons/README.md +5 -0
  25. package/core/capabilities/main-repo-sync/capability.md +133 -0
  26. package/core/capabilities/main-repo-sync/templates/.core-sync.example.json +31 -0
  27. package/core/capabilities/main-repo-sync/templates/.internal/README.md +5 -0
  28. package/core/capabilities/matter-mode/capability.md +46 -0
  29. package/core/capabilities/matter-mode/templates/matters/_matter-template/README.md +17 -0
  30. package/core/capabilities/matter-mode/templates/matters/_matter-template/drafts/.gitkeep +1 -0
  31. package/core/capabilities/matter-mode/templates/matters/_matter-template/handoff.md +3 -0
  32. package/core/capabilities/matter-mode/templates/matters/_matter-template/notes.md +5 -0
  33. package/core/capabilities/matter-mode/templates/matters/_matter-template/progress.md +5 -0
  34. package/core/capabilities/matter-mode/templates/matters/registry.md +16 -0
  35. package/core/capabilities/skill-mount/capability.md +24 -0
  36. package/core/capabilities/starter-outputs/capability.md +25 -0
  37. package/core/capabilities/starter-outputs/templates/outputs/drafts/README.md +5 -0
  38. package/core/capabilities/starter-outputs/templates/outputs/final/README.md +5 -0
  39. package/core/capabilities/starter-outputs/templates/references/README.md +5 -0
  40. package/core/core-v0.1-protocol.md +201 -0
  41. package/core/kits/README.md +15 -0
  42. package/core/kits/hub/.incoming/README.md +5 -0
  43. package/core/kits/hub/AGENTS.md +26 -0
  44. package/core/kits/hub/README.md +25 -0
  45. package/core/kits/hub/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//351/241/271/347/233/256/347/212/266/346/200/201.md +24 -0
  46. package/core/kits/hub/_/347/263/273/347/273/237//344/273/273/345/212/241//345/275/223/345/211/215/345/267/245/344/275/234.md +17 -0
  47. package/core/kits/hub/identity/README.md +5 -0
  48. package/core/kits/hub/lessons/README.md +5 -0
  49. package/core/kits/hub/skills/README.md +5 -0
  50. package/core/kits/hub//347/237/245/350/257/206/README.md +5 -0
  51. package/core/kits/hub//351/241/271/347/233/256/README.md +5 -0
  52. package/core/kits/hub//351/241/271/347/233/256/registry.json +4 -0
  53. package/core/kits/hub//351/241/271/347/233/256//350/201/224/347/273/234/README.md +5 -0
  54. package/core/kits/kit-structure-reference.md +253 -0
  55. package/core/kits/local-matter/AGENTS.md +23 -0
  56. package/core/kits/local-matter/README.md +22 -0
  57. package/core/kits/local-matter/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//345/206/263/347/255/226.md +7 -0
  58. package/core/kits/local-matter/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//351/241/271/347/233/256/347/212/266/346/200/201.md +25 -0
  59. package/core/kits/local-matter/_/347/263/273/347/273/237//344/273/273/345/212/241//345/275/223/345/211/215/345/267/245/344/275/234.md +17 -0
  60. package/core/kits/local-matter/_/347/263/273/347/273/237//346/225/231/350/256/255/README.md +5 -0
  61. package/core/kits/local-matter/_/347/263/273/347/273/237//350/272/253/344/273/275/README.md +5 -0
  62. package/core/kits/local-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277/README.md +17 -0
  63. package/core/kits/local-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//344/272/244/346/216/245.md +3 -0
  64. package/core/kits/local-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//347/254/224/350/256/260.md +5 -0
  65. package/core/kits/local-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//350/215/211/347/250/277/.gitkeep +1 -0
  66. package/core/kits/local-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//350/277/233/345/272/246.md +5 -0
  67. package/core/kits/local-matter//344/272/213/351/241/271//346/263/250/345/206/214/350/241/250.md +16 -0
  68. package/core/kits/local-matter//345/217/202/350/200/203/350/265/204/346/226/231/README.md +5 -0
  69. package/core/kits/local-matter//350/276/223/345/207/272//347/241/256/350/256/244/346/210/220/346/236/234/README.md +5 -0
  70. package/core/kits/local-matter//350/276/223/345/207/272//350/215/211/347/250/277/README.md +5 -0
  71. package/core/kits/local-starter/AGENTS.md +23 -0
  72. package/core/kits/local-starter/README.md +23 -0
  73. package/core/kits/local-starter/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//351/241/271/347/233/256/347/212/266/346/200/201.md +25 -0
  74. package/core/kits/local-starter/_/347/263/273/347/273/237//344/273/273/345/212/241//345/275/223/345/211/215/345/267/245/344/275/234.md +17 -0
  75. package/core/kits/local-starter/_/347/263/273/347/273/237//346/225/231/350/256/255/README.md +5 -0
  76. package/core/kits/local-starter/_/347/263/273/347/273/237//350/272/253/344/273/275/README.md +5 -0
  77. package/core/kits/local-starter//345/217/202/350/200/203/350/265/204/346/226/231/README.md +5 -0
  78. package/core/kits/local-starter//350/276/223/345/207/272//347/241/256/350/256/244/346/210/220/346/236/234/README.md +5 -0
  79. package/core/kits/local-starter//350/276/223/345/207/272//350/215/211/347/250/277/README.md +5 -0
  80. package/core/kits/satellite-matter/.agents/skills/README.md +5 -0
  81. package/core/kits/satellite-matter/.claude/skills/README.md +5 -0
  82. package/core/kits/satellite-matter/.core-sync.json +31 -0
  83. package/core/kits/satellite-matter/.internal/README.md +5 -0
  84. package/core/kits/satellite-matter/.obsidian/README.md +5 -0
  85. package/core/kits/satellite-matter/AGENTS.md +27 -0
  86. package/core/kits/satellite-matter/CLAUDE.md +5 -0
  87. package/core/kits/satellite-matter/README.md +40 -0
  88. package/core/kits/satellite-matter/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//345/206/263/347/255/226.md +7 -0
  89. package/core/kits/satellite-matter/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//345/275/223/345/211/215/351/241/271/347/233/256.md +29 -0
  90. package/core/kits/satellite-matter/_/347/263/273/347/273/237//344/270/273/345/272/223/345/220/214/346/255/245/README.md +42 -0
  91. package/core/kits/satellite-matter/_/347/263/273/347/273/237//344/273/273/345/212/241//345/275/223/345/211/215/345/267/245/344/275/234.md +17 -0
  92. package/core/kits/satellite-matter/_/347/263/273/347/273/237//346/225/231/350/256/255/README.md +8 -0
  93. package/core/kits/satellite-matter/_/347/263/273/347/273/237//350/267/250/351/241/271/347/233/256/README.md +9 -0
  94. package/core/kits/satellite-matter/_/347/263/273/347/273/237//350/267/250/351/241/271/347/233/256/inbox/README.md +5 -0
  95. package/core/kits/satellite-matter/_/347/263/273/347/273/237//350/267/250/351/241/271/347/233/256/outbox/README.md +5 -0
  96. package/core/kits/satellite-matter/_/347/263/273/347/273/237//350/272/253/344/273/275/README.md +5 -0
  97. package/core/kits/satellite-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277/README.md +17 -0
  98. package/core/kits/satellite-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//344/272/244/346/216/245.md +3 -0
  99. package/core/kits/satellite-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//347/254/224/350/256/260.md +5 -0
  100. package/core/kits/satellite-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//350/215/211/347/250/277/.gitkeep +1 -0
  101. package/core/kits/satellite-matter//344/272/213/351/241/271/_/344/272/213/351/241/271/346/250/241/346/235/277//350/277/233/345/272/246.md +5 -0
  102. package/core/kits/satellite-matter//344/272/213/351/241/271//346/263/250/345/206/214/350/241/250.md +16 -0
  103. package/core/kits/satellite-matter//345/217/202/350/200/203/350/265/204/346/226/231/README.md +5 -0
  104. package/core/kits/satellite-matter//347/237/245/350/257/206/README.md +5 -0
  105. package/core/kits/satellite-matter//350/276/223/345/207/272//347/241/256/350/256/244/346/210/220/346/236/234/README.md +5 -0
  106. package/core/kits/satellite-matter//350/276/223/345/207/272//350/215/211/347/250/277/README.md +5 -0
  107. package/core/kits/satellite-starter/.agents/skills/README.md +5 -0
  108. package/core/kits/satellite-starter/.claude/skills/README.md +5 -0
  109. package/core/kits/satellite-starter/.core-sync.json +31 -0
  110. package/core/kits/satellite-starter/.internal/README.md +5 -0
  111. package/core/kits/satellite-starter/.obsidian/README.md +5 -0
  112. package/core/kits/satellite-starter/AGENTS.md +25 -0
  113. package/core/kits/satellite-starter/CLAUDE.md +5 -0
  114. package/core/kits/satellite-starter/README.md +42 -0
  115. package/core/kits/satellite-starter/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//345/275/223/345/211/215/351/241/271/347/233/256.md +29 -0
  116. package/core/kits/satellite-starter/_/347/263/273/347/273/237//344/270/273/345/272/223/345/220/214/346/255/245/README.md +40 -0
  117. package/core/kits/satellite-starter/_/347/263/273/347/273/237//344/273/273/345/212/241//345/275/223/345/211/215/345/267/245/344/275/234.md +17 -0
  118. package/core/kits/satellite-starter/_/347/263/273/347/273/237//346/225/231/350/256/255/README.md +8 -0
  119. package/core/kits/satellite-starter/_/347/263/273/347/273/237//350/267/250/351/241/271/347/233/256/README.md +9 -0
  120. package/core/kits/satellite-starter/_/347/263/273/347/273/237//350/267/250/351/241/271/347/233/256/inbox/README.md +5 -0
  121. package/core/kits/satellite-starter/_/347/263/273/347/273/237//350/267/250/351/241/271/347/233/256/outbox/README.md +5 -0
  122. package/core/kits/satellite-starter/_/347/263/273/347/273/237//350/272/253/344/273/275/README.md +5 -0
  123. package/core/kits/satellite-starter//345/217/202/350/200/203/350/265/204/346/226/231/README.md +5 -0
  124. package/core/kits/satellite-starter//347/237/245/350/257/206/README.md +5 -0
  125. package/core/kits/satellite-starter//350/276/223/345/207/272//347/241/256/350/256/244/346/210/220/346/236/234/README.md +5 -0
  126. package/core/kits/satellite-starter//350/276/223/345/207/272//350/215/211/347/250/277/README.md +5 -0
  127. package/core/presets/README.md +26 -0
  128. package/core/presets/hub.yaml +10 -0
  129. package/core/presets/local-matter.yaml +14 -0
  130. package/core/presets/local-starter.yaml +12 -0
  131. package/core/presets/satellite-matter.yaml +17 -0
  132. package/core/presets/satellite-starter.yaml +15 -0
  133. package/core/profiles/README.md +18 -0
  134. package/core/profiles/en/labels.json +26 -0
  135. package/core/profiles/en/paths.json +21 -0
  136. package/core/profiles/en/profile.md +22 -0
  137. package/core/profiles/en/reference-kits/local-starter/AGENTS.md +23 -0
  138. package/core/profiles/en/reference-kits/local-starter/README.md +23 -0
  139. package/core/profiles/en/reference-kits/local-starter/_system/context/project-status.md +25 -0
  140. package/core/profiles/en/reference-kits/local-starter/_system/identity/README.md +5 -0
  141. package/core/profiles/en/reference-kits/local-starter/_system/lessons/README.md +5 -0
  142. package/core/profiles/en/reference-kits/local-starter/_system/tasks/current-work.md +17 -0
  143. package/core/profiles/en/reference-kits/local-starter/outputs/drafts/README.md +5 -0
  144. package/core/profiles/en/reference-kits/local-starter/outputs/final/README.md +5 -0
  145. package/core/profiles/en/reference-kits/local-starter/references/README.md +5 -0
  146. package/core/profiles/en/reference-presets/local-starter.yaml +12 -0
  147. package/core/profiles/en/templates/AGENTS.md +23 -0
  148. package/core/profiles/en/templates/_system/context/project-status.md +25 -0
  149. package/core/profiles/en/templates/_system/tasks/current-work.md +17 -0
  150. package/core/profiles/zh/labels.json +26 -0
  151. package/core/profiles/zh/paths.json +21 -0
  152. package/core/profiles/zh/profile.md +22 -0
  153. package/core/profiles/zh/templates/AGENTS.md +23 -0
  154. package/core/profiles/zh/templates/_/347/263/273/347/273/237//344/270/212/344/270/213/346/226/207//351/241/271/347/233/256/347/212/266/346/200/201.md +25 -0
  155. package/core/profiles/zh/templates/_/347/263/273/347/273/237//344/273/273/345/212/241//345/275/223/345/211/215/345/267/245/344/275/234.md +17 -0
  156. package/docs/README.md +18 -0
  157. package/docs/alpha-test-guide.md +124 -0
  158. package/docs/cli-capabilities.html +1088 -0
  159. package/docs/hub-management.html +750 -0
  160. package/docs/index.html +228 -0
  161. package/docs/product-direction.md +64 -0
  162. package/docs/product-shape-business-model.html +1024 -0
  163. package/docs/roadmap.html +899 -0
  164. package/docs/roadmap.md +272 -0
  165. package/docs/v0.1-plan.md +109 -0
  166. package/examples/README.md +3 -0
  167. package/package.json +32 -0
  168. package/packs/README.md +24 -0
  169. package/packs/content-creator/README.md +38 -0
  170. package/packs/content-creator/languages/en.json +40 -0
  171. package/packs/content-creator/languages/zh.json +40 -0
  172. package/packs/content-creator/pack.json +41 -0
  173. package/packs/content-creator/rules/en/file-boundaries.md +10 -0
  174. package/packs/content-creator/rules/en/overview.md +9 -0
  175. package/packs/content-creator/rules/en/review.md +13 -0
  176. package/packs/content-creator/rules/en/workflow.md +8 -0
  177. package/packs/content-creator/rules/zh/file-boundaries.md +10 -0
  178. package/packs/content-creator/rules/zh/overview.md +9 -0
  179. package/packs/content-creator/rules/zh/review.md +13 -0
  180. package/packs/content-creator/rules/zh/workflow.md +8 -0
  181. package/packs/content-creator/seed/en/account-profile/README.md +3 -0
  182. package/packs/content-creator/seed/en/analytics-review/README.md +3 -0
  183. package/packs/content-creator/seed/en/drafts-and-scripts/README.md +3 -0
  184. package/packs/content-creator/seed/en/ideas/README.md +3 -0
  185. package/packs/content-creator/seed/en/materials/README.md +3 -0
  186. package/packs/content-creator/seed/en/published/README.md +3 -0
  187. package/packs/content-creator/seed/zh//345/217/221/345/270/203/350/256/260/345/275/225/README.md +5 -0
  188. package/packs/content-creator/seed/zh//346/225/260/346/215/256/345/244/215/347/233/230/README.md +3 -0
  189. package/packs/content-creator/seed/zh//347/264/240/346/235/220/345/272/223/README.md +5 -0
  190. package/packs/content-creator/seed/zh//350/215/211/347/250/277/344/270/216/350/204/232/346/234/254/README.md +5 -0
  191. package/packs/content-creator/seed/zh//350/264/246/345/217/267/345/256/232/344/275/215/README.md +3 -0
  192. package/packs/content-creator/seed/zh//351/200/211/351/242/230/346/261/240/README.md +3 -0
  193. package/packs/content-creator/templates/en/content-brief.md +21 -0
  194. package/packs/content-creator/templates/en/publish-record.md +23 -0
  195. package/packs/content-creator/templates/en/weekly-review.md +21 -0
  196. package/packs/content-creator/templates/zh/content-brief.md +30 -0
  197. package/packs/content-creator/templates/zh/publish-record.md +21 -0
  198. package/packs/content-creator/templates/zh/weekly-review.md +22 -0
  199. package/packs/general/README.md +5 -0
  200. package/packs/general/languages/en.json +19 -0
  201. package/packs/general/languages/zh.json +19 -0
  202. package/packs/general/pack.json +20 -0
  203. package/packs/general/rules/en/overview.md +7 -0
  204. package/packs/general/rules/en/workflow.md +6 -0
  205. package/packs/general/rules/zh/overview.md +7 -0
  206. package/packs/general/rules/zh/workflow.md +6 -0
  207. package/packs/hub-management/README.md +5 -0
  208. package/packs/hub-management/languages/en.json +27 -0
  209. package/packs/hub-management/languages/zh.json +27 -0
  210. package/packs/hub-management/pack.json +28 -0
  211. package/packs/hub-management/rules/en/overview.md +7 -0
  212. package/packs/hub-management/rules/en/workflow.md +6 -0
  213. package/packs/hub-management/rules/zh/overview.md +7 -0
  214. package/packs/hub-management/rules/zh/workflow.md +6 -0
  215. package/packs/hub-management/seed/en/.incoming/README.md +3 -0
  216. package/packs/hub-management/seed/en/projects/coordination/README.md +5 -0
  217. package/packs/hub-management/seed/en/projects/registry.json +4 -0
  218. package/packs/hub-management/seed/zh/.incoming/README.md +5 -0
  219. package/packs/hub-management/seed/zh//351/241/271/347/233/256/registry.json +4 -0
  220. package/packs/hub-management/seed/zh//351/241/271/347/233/256//350/201/224/347/273/234/README.md +5 -0
  221. package/packs/pack-structure-spec.md +315 -0
  222. package/schemas/README.md +3 -0
  223. package/skills/README.md +17 -0
  224. package/skills/starworkInit/SKILL.md +289 -0
  225. package/skills/starworkInit/agents/openai.yaml +7 -0
  226. package/skills/starworkInit-spec.md +585 -0
  227. package/skills/starworkSpawn/SKILL.md +136 -0
  228. package/skills/starworkSpawn/agents/openai.yaml +7 -0
@@ -0,0 +1,657 @@
1
+ # `starwork spawn --blueprint` SPEC
2
+
3
+ ## 状态
4
+
5
+ - 版本:v0.1 draft
6
+ - 所属模块:StarWork CLI / StarWork Skills
7
+ - 相关命令:`starwork spawn`
8
+ - 实现状态:v0.1 第一版已实现
9
+ - 相关对象:`satellite-starter`、`satellite-matter`、Pack、Hub、工作台定制单
10
+ - 目标:让 AI 可以根据用户需求生成可检查、可预览、可执行的卫星项目定制方案
11
+
12
+ ## 一句话定义
13
+
14
+ 工作台定制单是 `starwork spawn` 的一次性配置文件。
15
+
16
+ 它告诉 CLI:
17
+
18
+ - 这次从哪个基础 Kit 生成项目
19
+ - 哪些目录要保留、改名、新增或隐藏
20
+ - 哪些路径要写入 `.starwork/workspace.json`
21
+ - 哪些项目规则要注入 Agent 入口文件
22
+ - 哪些初始化文件要创建
23
+
24
+ ```text
25
+ 用户想法
26
+
27
+ starworkSpawn skill
28
+
29
+ 工作台定制单 JSON + Markdown
30
+
31
+ starwork spawn --blueprint
32
+
33
+ 定制化卫星项目工作台
34
+ ```
35
+
36
+ ## 为什么需要它
37
+
38
+ 当前 `starwork spawn` 只支持两种固定结构:
39
+
40
+ - `satellite-starter`
41
+ - `satellite-matter`
42
+
43
+ 这适合标准项目,但真实使用时经常会出现定制需求:
44
+
45
+ - 这个项目不叫 `参考资料/`,而叫 `资料库/`
46
+ - 这个项目需要 `客户沟通/`、`会议纪要/`、`版本记录/`
47
+ - 这个项目的正式成果不放 `输出/确认成果/`,而放 `交付物/确认版本/`
48
+ - 这个项目需要特别告诉 Agent:哪些内容可以改,哪些内容不能改
49
+
50
+ 如果让 AI 直接改 Kit 源文件,Kit 会被污染;如果把所有定制都做成 Pack,Pack 会变得过度膨胀。
51
+
52
+ 所以 v0.1 需要一个中间层:
53
+
54
+ > Kit 提供基础结构,Pack 提供可复用场景,工作台定制单处理“这一次”的个性化生成。
55
+
56
+ ## 边界
57
+
58
+ ### Kit
59
+
60
+ Kit 是工作台基础骨架。
61
+
62
+ 例如:
63
+
64
+ - `satellite-starter`
65
+ - `satellite-matter`
66
+ - `hub`
67
+
68
+ Kit 不应该因为某一个项目的特殊需求而被修改。
69
+
70
+ ### Pack
71
+
72
+ Pack 是可复用的场景包。
73
+
74
+ 例如:
75
+
76
+ - 内容创作者 Pack
77
+ - 多项目中枢管理 Pack
78
+ - 未来的客户交付 Pack、课程研发 Pack
79
+
80
+ 如果一套结构会反复被不同用户、不同项目使用,应沉淀为 Pack。
81
+
82
+ ### 工作台定制单
83
+
84
+ 工作台定制单是一次性项目配置。
85
+
86
+ 例如:
87
+
88
+ - 某个客户项目需要额外的 `合同与报价/`
89
+ - 某个产品项目需要 `版本记录/`
90
+ - 某个内容项目想把 `草稿/` 改成 `脚本工坊/`
91
+
92
+ 如果它只服务于当前项目,不应该立刻做成 Pack。
93
+
94
+ ## 与 skill 的关系
95
+
96
+ 这个能力配套一个 skill:
97
+
98
+ ```text
99
+ starworkSpawn
100
+ ```
101
+
102
+ skill 的职责是帮 AI 生成工作台定制单。
103
+
104
+ 它不直接创建项目,不直接修改 Hub,也不直接写用户工作区。
105
+
106
+ skill 应完成:
107
+
108
+ 1. 询问用户项目类型、工作方式和目录偏好。
109
+ 2. 判断基础模式应使用 `starter` 还是 `matter`。
110
+ 3. 判断是否需要推荐 Pack。
111
+ 4. 生成 `blueprint.json`。
112
+ 5. 生成配套 Markdown 规则文件。
113
+ 6. 提醒用户用 `starwork spawn --blueprint` 执行。
114
+
115
+ CLI 的职责是执行:
116
+
117
+ 1. 读取并校验 blueprint。
118
+ 2. 展示 dry-run 计划。
119
+ 3. 用户确认后创建工作区。
120
+ 4. 写入 workspace state、项目状态、Hub registry 和 Agent 规则。
121
+ 5. 运行或提示运行 `starwork doctor`。
122
+
123
+ ## 推荐文件结构
124
+
125
+ 一个工作台定制单建议放在独立文件夹中:
126
+
127
+ ```text
128
+ my-project-blueprint/
129
+ ├── blueprint.json
130
+ ├── rules/
131
+ │ ├── file-boundaries.md
132
+ │ ├── workflow.md
133
+ │ └── handoff.md
134
+ └── seed/
135
+ ├── 会议纪要/README.md
136
+ └── 版本记录/README.md
137
+ ```
138
+
139
+ 其中:
140
+
141
+ - `blueprint.json`:机器可读配置。
142
+ - `rules/`:写入 Agent 入口文件的项目规则。
143
+ - `seed/`:初始化时复制到目标工作区的项目占位文件。
144
+
145
+ ## 命令形式
146
+
147
+ ```bash
148
+ starwork spawn --hub <hub-path> --target <path> --blueprint <blueprint.json>
149
+ starwork spawn --hub ~/my-hub --target ~/projects/content-site --blueprint ./blueprint.json --dry-run
150
+ starwork spawn --hub ~/my-hub --target ~/projects/content-site --blueprint ./blueprint.json --yes
151
+ ```
152
+
153
+ `--blueprint` 与普通参数的关系:
154
+
155
+ | 参数 | 规则 |
156
+ |---|---|
157
+ | `--blueprint` | 启用定制生成模式。 |
158
+ | `--hub` | 仍由命令参数提供,避免 blueprint 被复制到别人机器后误写 Hub。 |
159
+ | `--target` | 仍由命令参数提供,避免 blueprint 决定真实写入位置。 |
160
+ | `--name` | 可由 blueprint 提供;命令参数优先级更高。 |
161
+ | `--mode` | 可由 blueprint 提供;命令参数优先级更高。 |
162
+ | `--id` | 可由 blueprint 提供;命令参数优先级更高。 |
163
+ | `--pack` | v0.1 不建议与 blueprint 同时执行;如需 Pack,应先 spawn,再 `pack install`。 |
164
+
165
+ ## `blueprint.json`
166
+
167
+ ### 最小示例
168
+
169
+ ```json
170
+ {
171
+ "schema": "starwork.spawn_blueprint.v0.1",
172
+ "name": "内容产品官网",
173
+ "project_id": "content-site",
174
+ "base": {
175
+ "mode": "matter",
176
+ "kit": "satellite-matter",
177
+ "language": "zh"
178
+ },
179
+ "paths": {
180
+ "formal_source": "交付物/确认版本/",
181
+ "business_work_area": "事项/"
182
+ },
183
+ "folders": [
184
+ "资料库/",
185
+ "草稿/",
186
+ "客户沟通/",
187
+ "会议纪要/",
188
+ "版本记录/",
189
+ "交付物/确认版本/"
190
+ ],
191
+ "agent_rules": [
192
+ {
193
+ "slot": "project.file_boundaries",
194
+ "from": "rules/file-boundaries.md"
195
+ },
196
+ {
197
+ "slot": "project.workflow",
198
+ "from": "rules/workflow.md"
199
+ }
200
+ ],
201
+ "seed": [
202
+ {
203
+ "from": "seed/会议纪要/README.md",
204
+ "to": "会议纪要/README.md",
205
+ "on_conflict": "error"
206
+ }
207
+ ]
208
+ }
209
+ ```
210
+
211
+ ### 字段说明
212
+
213
+ | 字段 | 必填 | 说明 |
214
+ |---|---:|---|
215
+ | `schema` | 是 | 固定为 `starwork.spawn_blueprint.v0.1`。 |
216
+ | `name` | 是 | 项目名称。可被命令参数 `--name` 覆盖。 |
217
+ | `project_id` | 否 | Hub registry 中的项目 ID。可被命令参数 `--id` 覆盖。 |
218
+ | `description` | 否 | 项目说明,写入项目状态入口。 |
219
+ | `base.mode` | 是 | `starter` 或 `matter`。 |
220
+ | `base.kit` | 是 | 只能是与 mode 匹配的 Satellite Kit。 |
221
+ | `base.language` | 是 | v0.1 先支持 `zh`。 |
222
+ | `paths.formal_source` | 是 | 正式成果或确认事实源目录。 |
223
+ | `paths.business_work_area` | 是 | 当前工作或事项推进目录。 |
224
+ | `folders` | 否 | 需要额外创建或确保存在的目录列表。 |
225
+ | `renames` | 否 | 从基础 Kit 路径到定制路径的改名声明。 |
226
+ | `removals` | 否 | 从基础 Kit 中移除的空占位目录。v0.1 只允许移除空目录。 |
227
+ | `agent_rules` | 否 | 注入 Agent 入口文件的 Markdown 规则。 |
228
+ | `seed` | 否 | 初始化复制文件。 |
229
+ | `notes` | 否 | 给用户或 Agent 阅读的备注,不参与执行。 |
230
+
231
+ ## 路径定制规则
232
+
233
+ ### `folders`
234
+
235
+ `folders` 表示创建目录或确保目录存在。
236
+
237
+ ```json
238
+ {
239
+ "folders": [
240
+ "客户沟通/",
241
+ "会议纪要/",
242
+ "版本记录/"
243
+ ]
244
+ }
245
+ ```
246
+
247
+ v0.1 只允许相对路径,不能包含:
248
+
249
+ - 绝对路径
250
+ - `..`
251
+ - `~`
252
+ - 空字符串
253
+ - 指向 `.git/` 的路径
254
+
255
+ ### `renames`
256
+
257
+ `renames` 表示把基础 Kit 中的某个路径换成新路径。
258
+
259
+ ```json
260
+ {
261
+ "renames": {
262
+ "参考资料/": "资料库/",
263
+ "输出/确认成果/": "交付物/确认版本/"
264
+ }
265
+ }
266
+ ```
267
+
268
+ CLI 执行时应:
269
+
270
+ 1. 检查 source 是否来自当前 Kit。
271
+ 2. 检查 target 是否安全。
272
+ 3. 如果 source 目录为空,直接改名。
273
+ 4. 如果 source 有内容,执行复制并在 dry-run 中明确提示。
274
+ 5. 更新 `.starwork/workspace.json` 中相关路径。
275
+
276
+ ### `removals`
277
+
278
+ `removals` 表示移除基础 Kit 中不需要的空目录。
279
+
280
+ ```json
281
+ {
282
+ "removals": [
283
+ "参考资料/"
284
+ ]
285
+ }
286
+ ```
287
+
288
+ v0.1 限制:
289
+
290
+ - 只能移除空目录。
291
+ - 不能移除 `AGENTS.md`、`CLAUDE.md`、`.starwork/`、`.core-sync.json`。
292
+ - 不能移除 `_系统/`。
293
+ - 不能移除 `知识/`、`.agents/skills/`、`.claude/skills/` 这类主库挂载入口。
294
+
295
+ 如果用户不想使用某个入口,更推荐在规则中说明“不使用”,而不是删除结构。
296
+
297
+ ## Agent 规则注入
298
+
299
+ `agent_rules` 指向 Markdown 文件:
300
+
301
+ ```json
302
+ {
303
+ "agent_rules": [
304
+ {
305
+ "slot": "project.file_boundaries",
306
+ "from": "rules/file-boundaries.md"
307
+ },
308
+ {
309
+ "slot": "project.workflow",
310
+ "from": "rules/workflow.md"
311
+ }
312
+ ]
313
+ }
314
+ ```
315
+
316
+ CLI 应把这些规则注入 `AGENTS.md` 的项目规则区:
317
+
318
+ ```markdown
319
+ ## 项目定制规则
320
+
321
+ <!-- StarWork Blueprint: project.file_boundaries -->
322
+
323
+ ...
324
+
325
+ <!-- StarWork Blueprint: project.workflow -->
326
+
327
+ ...
328
+ ```
329
+
330
+ 如果存在 `CLAUDE.md`,v0.1 可以选择同步注入同一段规则,或保留轻量转引:
331
+
332
+ ```markdown
333
+ 项目定制规则以 AGENTS.md 为准。
334
+ ```
335
+
336
+ ## Seed 文件
337
+
338
+ `seed` 用于创建初始化占位文件:
339
+
340
+ ```json
341
+ {
342
+ "seed": [
343
+ {
344
+ "from": "seed/版本记录/README.md",
345
+ "to": "版本记录/README.md",
346
+ "on_conflict": "error"
347
+ }
348
+ ]
349
+ }
350
+ ```
351
+
352
+ `on_conflict` 可选值:
353
+
354
+ | 值 | 行为 |
355
+ |---|---|
356
+ | `error` | 目标已存在则中止。v0.1 默认值。 |
357
+ | `skip` | 目标已存在则跳过。 |
358
+ | `create_new` | 目标已存在则生成新文件名。 |
359
+
360
+ v0.1 不支持覆盖已有用户文件。
361
+
362
+ ## workspace state 写入
363
+
364
+ 使用 blueprint 创建的工作区,应在 `.starwork/workspace.json` 中记录:
365
+
366
+ ```json
367
+ {
368
+ "schema": "starwork.workspace.v0.1",
369
+ "core": "0.1",
370
+ "workspace_type": "satellite-matter",
371
+ "kit": "satellite-matter",
372
+ "language": "zh",
373
+ "packs": [],
374
+ "paths": {
375
+ "formal_source": "交付物/确认版本/",
376
+ "business_work_area": "事项/"
377
+ },
378
+ "customization": {
379
+ "type": "spawn_blueprint",
380
+ "schema": "starwork.spawn_blueprint.v0.1",
381
+ "source": "blueprint.json",
382
+ "folders": [
383
+ "资料库/",
384
+ "草稿/",
385
+ "客户沟通/",
386
+ "会议纪要/",
387
+ "版本记录/",
388
+ "交付物/确认版本/"
389
+ ]
390
+ },
391
+ "hub": {
392
+ "path": "/Users/example/my-hub",
393
+ "project_id": "content-site"
394
+ },
395
+ "created_by": "starwork spawn --blueprint"
396
+ }
397
+ ```
398
+
399
+ `customization` 用于让后续 `doctor`、`adapt` 和 Agent 知道:这个工作台不是纯标准 Kit,而是通过定制单生成。
400
+
401
+ ## 项目状态入口写入
402
+
403
+ CLI 应继续写入:
404
+
405
+ ```text
406
+ _系统/上下文/当前项目.md
407
+ ```
408
+
409
+ 如果 blueprint 提供 `description`,应写入该文件。
410
+
411
+ 建议结构:
412
+
413
+ ```markdown
414
+ # 当前项目
415
+
416
+ ## 项目名称
417
+
418
+ 内容产品官网
419
+
420
+ ## 项目定位
421
+
422
+ ...
423
+
424
+ ## 工作区定制
425
+
426
+ - 基础 Kit:satellite-matter
427
+ - 正式成果:交付物/确认版本/
428
+ - 当前工作:事项/
429
+ - 定制目录:资料库/、客户沟通/、会议纪要/、版本记录/
430
+
431
+ ## 主库关系
432
+
433
+ - Hub:...
434
+ - Project ID:content-site
435
+ ```
436
+
437
+ ## Hub registry 写入
438
+
439
+ Hub 的 `项目/registry.json` 应保留轻量登记,不保存完整 blueprint。
440
+
441
+ 建议新增字段:
442
+
443
+ ```json
444
+ {
445
+ "id": "content-site",
446
+ "name": "内容产品官网",
447
+ "path": "/Users/example/projects/content-site",
448
+ "status": "active",
449
+ "workspace_type": "satellite-matter",
450
+ "kit": "satellite-matter",
451
+ "customized": true,
452
+ "created_at": "2026-05-18T00:00:00.000Z",
453
+ "updated_at": "2026-05-18T00:00:00.000Z"
454
+ }
455
+ ```
456
+
457
+ Hub registry 只回答“有哪些项目、在哪里、是否活跃”。项目定制细节留在 Satellite 自己的 `.starwork/workspace.json`。
458
+
459
+ ## 校验规则
460
+
461
+ CLI 在执行前必须校验:
462
+
463
+ 1. `schema` 正确。
464
+ 2. `base.mode` 与 `base.kit` 匹配。
465
+ 3. `base.kit` 是 Satellite Kit。
466
+ 4. `paths.formal_source` 和 `paths.business_work_area` 是安全相对路径。
467
+ 5. `folders`、`renames`、`removals`、`seed.to` 都是安全相对路径。
468
+ 6. `agent_rules.from` 和 `seed.from` 必须存在于 blueprint 文件夹内。
469
+ 7. `agent_rules.from` 和 `seed.from` 不能跳出 blueprint 文件夹。
470
+ 8. 不允许覆盖目标目录已有用户文件。
471
+ 9. 不允许通过 blueprint 修改 Hub 内部文件,除 Hub registry 登记外。
472
+ 10. 不允许删除或替换 StarWork 固定系统入口。
473
+
474
+ ## Dry-run 输出
475
+
476
+ `--dry-run` 必须清晰展示:
477
+
478
+ ```text
479
+ Spawn blueprint preview:
480
+
481
+ Hub:
482
+ /Users/example/my-hub
483
+
484
+ Target:
485
+ /Users/example/projects/content-site
486
+
487
+ Base:
488
+ mode: matter
489
+ kit: satellite-matter
490
+
491
+ Workspace paths:
492
+ formal_source: 交付物/确认版本/
493
+ business_work_area: 事项/
494
+
495
+ Create folders:
496
+ 资料库/
497
+ 草稿/
498
+ 客户沟通/
499
+ 会议纪要/
500
+ 版本记录/
501
+ 交付物/确认版本/
502
+
503
+ Inject rules:
504
+ project.file_boundaries <- rules/file-boundaries.md
505
+ project.workflow <- rules/workflow.md
506
+
507
+ Write seed files:
508
+ seed/会议纪要/README.md -> 会议纪要/README.md
509
+
510
+ Update Hub registry:
511
+ content-site
512
+ ```
513
+
514
+ 这一步非常重要,因为用户要能看懂 AI 生成的施工单到底会做什么。
515
+
516
+ ## 与 Pack 的关系
517
+
518
+ v0.1 建议:
519
+
520
+ 1. `spawn --blueprint` 只负责创建定制工作台。
521
+ 2. `pack install` 负责安装可复用场景能力。
522
+ 3. 两者不在同一次命令里混合执行。
523
+
524
+ 推荐流程:
525
+
526
+ ```bash
527
+ starwork spawn --hub ~/my-hub --target ~/projects/content-site --blueprint ./blueprint.json --yes
528
+ cd ~/projects/content-site
529
+ starwork pack install content-creator --yes
530
+ starwork doctor
531
+ ```
532
+
533
+ 原因:
534
+
535
+ - spawn 先保证工作区结构和主库关系正确。
536
+ - pack install 再保证场景能力正确落地。
537
+ - 分两步更容易预览和排错。
538
+
539
+ 未来可以考虑让 blueprint 声明推荐 Pack:
540
+
541
+ ```json
542
+ {
543
+ "recommended_packs": [
544
+ "content-creator"
545
+ ]
546
+ }
547
+ ```
548
+
549
+ 但 v0.1 不自动安装。
550
+
551
+ ## 与 doctor 的关系
552
+
553
+ `doctor` 后续应增加 blueprint-aware 检查:
554
+
555
+ - `.starwork/workspace.json` 是否记录 `customization.type = spawn_blueprint`
556
+ - `customization.folders` 中的目录是否存在
557
+ - `paths.formal_source` 是否存在
558
+ - `paths.business_work_area` 是否存在
559
+ - `agent_rules` 是否已经注入
560
+ - seed 文件是否落地
561
+
562
+ v0.1 可以先只检查目录和 workspace state,规则注入完整性可后续增强。
563
+
564
+ ## 与 adapt 的关系
565
+
566
+ `adapt` 不需要理解完整 blueprint。
567
+
568
+ 它只需要读取生成后的:
569
+
570
+ - `AGENTS.md`
571
+ - `.starwork/workspace.json`
572
+ - `_系统/上下文/当前项目.md`
573
+
574
+ 也就是说,blueprint 是生成期工具;adapt 面向生成后的工作台事实。
575
+
576
+ ## 错误示例
577
+
578
+ ### 错误:把定制写进 Kit
579
+
580
+ 不应该为了某个项目去修改:
581
+
582
+ ```text
583
+ product/core/kits/satellite-matter/
584
+ ```
585
+
586
+ 这会污染所有未来项目。
587
+
588
+ ### 错误:把一次性需求做成 Pack
589
+
590
+ 如果只是某个客户项目需要 `合同与报价/`,不应该马上新建 Pack。
591
+
592
+ ### 错误:让 blueprint 写真实 Hub 路径
593
+
594
+ blueprint 可以描述项目,但不应该决定真实 `--hub`。
595
+
596
+ Hub 路径应该来自命令参数,避免一个 blueprint 被复制到另一台机器后误写错误中枢。
597
+
598
+ ### 错误:覆盖用户文件
599
+
600
+ blueprint 不能覆盖目标目录里的已有文件。
601
+
602
+ v0.1 应保持保守:目标目录必须不存在或为空。
603
+
604
+ ## 实现分期
605
+
606
+ ### v0.1
607
+
608
+ - 支持 `--blueprint <file>`。
609
+ - 支持 `folders`。
610
+ - 支持 `paths.formal_source` 和 `paths.business_work_area`。
611
+ - 支持 `agent_rules` 注入 `AGENTS.md`。
612
+ - 支持 `seed` 复制。
613
+ - 支持 workspace state `customization` 记录。
614
+ - 支持 dry-run。
615
+ - `doctor` 支持检查 blueprint schema、定制目录、seed 文件和规则注入标记。
616
+ - 不支持自动安装 Pack。
617
+ - 不支持复杂条件、循环、脚本执行。
618
+ - 不支持 `renames` 和 `removals`。
619
+
620
+ ### v0.2
621
+
622
+ - 支持 `renames`。
623
+ - 支持安全 `removals`。
624
+ - `doctor` 增强 blueprint-aware 检查。
625
+ - 支持 blueprint schema 文件。
626
+ - 支持从交互式 skill 直接生成 blueprint 文件夹。
627
+
628
+ ### v0.3+
629
+
630
+ - 支持团队共享 blueprint。
631
+ - 支持 blueprint 升级和迁移。
632
+ - 支持把反复使用的 blueprint 提升为 Pack。
633
+
634
+ ## 待确认问题
635
+
636
+ 1. `starwork-spawn-designer` skill 是否放在主库 `skills/`,再由 Hub 分发给卫星项目?
637
+ 2. blueprint 文件是否需要进入 Hub 项目登记附件,还是只保存在 Satellite 内?
638
+ 3. `AGENTS.md` 和 `CLAUDE.md` 是否都注入完整规则,还是只让 `CLAUDE.md` 转引 `AGENTS.md`?
639
+ 4. v0.1 是否要实现 `renames`,还是先只支持新增目录和路径覆盖?
640
+
641
+ ## 结论
642
+
643
+ 工作台定制单让 StarWork 多了一层很重要的能力:
644
+
645
+ ```text
646
+ 标准 Kit
647
+ + 一次性定制单
648
+ + 可选 Pack
649
+ = 符合当前项目需要的工作台
650
+ ```
651
+
652
+ 它避免了两种风险:
653
+
654
+ - 为每个项目污染 Kit。
655
+ - 为每个小差异制造 Pack。
656
+
657
+ 长期看,用户和 AI 可以先用工作台定制单解决具体项目;当某类定制被反复使用,再把它沉淀为正式 Pack。