@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,439 @@
1
+ # `starwork spawn` SPEC
2
+
3
+ ## 状态
4
+
5
+ - 版本:v0.1 draft
6
+ - 所属模块:StarWork CLI
7
+ - 命令:`starwork spawn`
8
+ - 实现状态:v0.1 第一版已实现
9
+ - 相关对象:`hub`、`satellite-starter`、`satellite-matter`、`main-repo-sync`、`skill-mount`
10
+ - 目标:从多项目管理中枢创建并注册一个卫星项目工作台
11
+
12
+ ## 一句话定义
13
+
14
+ `starwork spawn` 是从 Hub 生成一个被中枢管理的新项目工作台的命令。
15
+
16
+ 它不是 `init --type hub`,也不是普通单项目初始化。它做的是:在已经存在的多项目管理中枢里,创建一个新的执行型项目工作区,并把它登记回 Hub。
17
+
18
+ ```text
19
+ Hub / 多项目中枢
20
+
21
+ spawn
22
+
23
+ Satellite / 具体执行项目
24
+ ```
25
+
26
+ ## 为什么不能放进 `init`
27
+
28
+ `init` 的职责是创建当前目录的工作台:
29
+
30
+ - 轻量单项目
31
+ - 长期单项目
32
+ - 多项目管理中枢
33
+
34
+ 但 `spawn` 涉及两个工作区:
35
+
36
+ 1. Hub:负责项目注册、共享身份、共享教训、knowledge、skills 和联络机制。
37
+ 2. Satellite:负责具体项目执行、项目状态、当前工作、事项、产物和事实源。
38
+
39
+ 因此它必须是独立命令,否则 `init` 会变成“创建自己 + 修改另一个工作区”的混合动作,用户也很难理解。
40
+
41
+ ## 用户故事
42
+
43
+ 用户已经有一个多项目中枢:
44
+
45
+ ```bash
46
+ starwork init --type hub --target ~/my-hub --yes
47
+ ```
48
+
49
+ 现在想从这个中枢创建一个新项目:
50
+
51
+ ```bash
52
+ starwork spawn \
53
+ --hub ~/my-hub \
54
+ --name "内容产品官网" \
55
+ --target ~/projects/content-site \
56
+ --mode matter \
57
+ --yes
58
+ ```
59
+
60
+ 命令完成后:
61
+
62
+ - `~/projects/content-site` 成为一个 StarWork Satellite 工作台。
63
+ - Hub 的 `项目/registry.json` 中新增该项目记录。
64
+ - Satellite 的 `.core-sync.json` 记录来源 Hub、同步资源和创建时间。
65
+ - Satellite 包含来自 Hub 的身份、教训、内部协议、知识和 skills 入口。
66
+ - 后续 Agent 可以在 Satellite 内独立工作,项目进度不写回 Hub registry。
67
+
68
+ ## 命令形式
69
+
70
+ ```bash
71
+ starwork spawn --hub <hub-path> --name <project-name> --target <path>
72
+ starwork spawn --hub ~/my-hub --name "新项目" --target ~/projects/new-project --mode starter
73
+ starwork spawn --hub ~/my-hub --name "长期项目" --target ~/projects/long-project --mode matter
74
+ starwork spawn --hub ~/my-hub --target ~/projects/custom-project --blueprint ./blueprint.json --dry-run
75
+ starwork spawn --hub ~/my-hub --target ~/projects/custom-project --blueprint ./blueprint.json --yes
76
+ starwork spawn --hub ~/my-hub --name "新项目" --target ~/projects/new-project --dry-run
77
+ starwork spawn --hub ~/my-hub --name "新项目" --target ~/projects/new-project --yes
78
+ ```
79
+
80
+ ## 参数
81
+
82
+ | 参数 | 说明 |
83
+ |---|---|
84
+ | `--hub <path>` | Hub 工作台路径。必须是 `hub` 或未来兼容 Hub Kit。 |
85
+ | `--blueprint <path>` | 可选工作台定制单。启用后可由 blueprint 提供项目名、模式、项目 ID、路径、目录、规则和 seed。 |
86
+ | `--name <name>` | 卫星项目名称。 |
87
+ | `--target <path>` | 卫星项目创建位置。 |
88
+ | `--mode <starter|matter>` | 卫星项目模式。默认 `matter`。 |
89
+ | `--id <project-id>` | 可选项目 ID;未提供时由名称生成。 |
90
+ | `--status <active|paused>` | 初始状态。默认 `active`。 |
91
+ | `--dry-run` | 只预览,不写入。 |
92
+ | `--yes` | 非交互确认执行。 |
93
+ | `--help` | 显示帮助。 |
94
+
95
+ ## Kit 选择
96
+
97
+ | `--mode` | Kit | 定位 |
98
+ |---|---|---|
99
+ | `starter` | `satellite-starter` | 接入主库的轻量卫星项目,不启用事项。 |
100
+ | `matter` | `satellite-matter` | 接入主库的事项型卫星项目,启用事项和决策。 |
101
+
102
+ v0.1 默认 `matter`。
103
+
104
+ 原因:卫星项目通常是长期项目,通常需要事项追踪、跨会话接力和过程沉淀。
105
+
106
+ ## 执行流程
107
+
108
+ ### Step 1:定位并检查 Hub
109
+
110
+ CLI 读取 `--hub`:
111
+
112
+ - 必须存在 `.starwork/workspace.json`。
113
+ - `workspace_type` 必须是 `hub`。
114
+ - `kit` 必须是 `hub` 或未来兼容 Hub Kit。
115
+ - Hub 中必须存在项目注册表:`项目/registry.json`。
116
+ - Hub 中必须存在共享资源入口:`identity/`、`lessons/`、`skills/`、`.incoming/`、`知识/`。
117
+
118
+ 如果 Hub 未通过检查,中止创建。
119
+
120
+ ### Step 2:检查目标目录
121
+
122
+ CLI 检查 `--target`:
123
+
124
+ - 不存在:可以创建。
125
+ - 存在但为空:可以写入。
126
+ - 已是 StarWork 工作台:中止,提示运行 `doctor`。
127
+ - 存在用户内容:需要预览冲突;v0.1 建议中止或只允许空目录,避免误伤。
128
+
129
+ v0.1 推荐保守策略:
130
+
131
+ > `spawn` 只允许写入不存在或空目录。
132
+
133
+ ### Step 3:选择 Satellite Kit
134
+
135
+ 根据 `--mode` 选择:
136
+
137
+ - `starter` -> `satellite-starter`
138
+ - `matter` -> `satellite-matter`
139
+
140
+ CLI 复制对应 Kit 到目标目录。
141
+
142
+ ### Step 4:写入 Satellite 元数据
143
+
144
+ 生成 `.starwork/workspace.json`:
145
+
146
+ ```json
147
+ {
148
+ "schema": "starwork.workspace.v0.1",
149
+ "core": "0.1",
150
+ "workspace_type": "satellite-matter",
151
+ "kit": "satellite-matter",
152
+ "packs": [],
153
+ "language": "zh",
154
+ "paths": {
155
+ "formal_source": "输出/确认成果/",
156
+ "business_work_area": "事项/"
157
+ },
158
+ "hub": {
159
+ "path": "/Users/example/my-hub",
160
+ "project_id": "content-site"
161
+ },
162
+ "created_by": "starwork spawn"
163
+ }
164
+ ```
165
+
166
+ `doctor` 已支持:
167
+
168
+ - `satellite-starter`
169
+ - `satellite-matter`
170
+
171
+ 这两类是独立工作区类型,不复用 `single-light` / `single-matter`。
172
+
173
+ ### Step 5:写入 `.core-sync.json`
174
+
175
+ `.core-sync.json` 记录 Hub 与 Satellite 的同步关系。
176
+
177
+ 建议结构:
178
+
179
+ ```json
180
+ {
181
+ "schema": "starwork.core_sync.v0.1",
182
+ "hub_path": "/Users/example/my-hub",
183
+ "project_id": "content-site",
184
+ "project_name": "内容产品官网",
185
+ "core": "0.1",
186
+ "mode": "matter",
187
+ "created_at": "2026-05-18T00:00:00.000Z",
188
+ "last_sync_at": "2026-05-18T00:00:00.000Z",
189
+ "resources": {
190
+ "identity": {
191
+ "source": "identity/",
192
+ "target": "_系统/身份/",
193
+ "mode": "snapshot"
194
+ },
195
+ "lessons": {
196
+ "source": "lessons/",
197
+ "target": "_系统/教训/",
198
+ "mode": "snapshot"
199
+ },
200
+ "knowledge": {
201
+ "source": "知识/",
202
+ "target": "知识/",
203
+ "mode": "readonly-link"
204
+ },
205
+ "skills": {
206
+ "source": "skills/",
207
+ "target": [".agents/skills/", ".claude/skills/"],
208
+ "mode": "symlink"
209
+ }
210
+ }
211
+ }
212
+ ```
213
+
214
+ ### Step 6:同步共享资源
215
+
216
+ 资源语义沿用 `main-repo-sync` capability。
217
+
218
+ | 资源 | Satellite 落地 | v0.1 行为 |
219
+ |---|---|---|
220
+ | `identity/` | `_系统/身份/` | 从 Hub 复制快照。 |
221
+ | `lessons/` | `_系统/教训/` | 从 Hub 复制快照。 |
222
+ | `.internal/` | `.internal/` | 从 Hub 复制稳定协议。 |
223
+ | `.obsidian/` | `.obsidian/` | 从 Hub 复制默认配置。 |
224
+ | `知识/` | `知识/` | 优先软链接;失败则复制 README 并提示。 |
225
+ | `skills/` | `.agents/skills/`、`.claude/skills/` | 创建软链接。 |
226
+
227
+ 默认边界:
228
+
229
+ - 复制快照的内容可以作为项目参考,但不能自动回写 Hub。
230
+ - 软链接资源仍由 Hub 拥有,Satellite 不能直接修改。
231
+ - 可复用更新应走 `.incoming/` 或跨项目联络机制。
232
+
233
+ ### Step 7:写入项目状态入口
234
+
235
+ Satellite 使用:
236
+
237
+ ```text
238
+ _系统/上下文/当前项目.md
239
+ ```
240
+
241
+ 该文件应包含:
242
+
243
+ - 项目名称
244
+ - 项目定位
245
+ - Hub 路径
246
+ - 项目 ID
247
+ - 当前阶段
248
+ - 正式事实源位置
249
+ - 当前工作入口
250
+ - 主库同步说明
251
+
252
+ 不能把 Hub 的 `项目/registry.json` 当成项目进度正文。
253
+
254
+ ### Step 8:注册到 Hub
255
+
256
+ 更新 Hub 的:
257
+
258
+ ```text
259
+ 项目/registry.json
260
+ ```
261
+
262
+ 建议新增记录:
263
+
264
+ ```json
265
+ {
266
+ "id": "content-site",
267
+ "name": "内容产品官网",
268
+ "path": "/Users/example/projects/content-site",
269
+ "status": "active",
270
+ "core": "0.1",
271
+ "kit": "satellite-matter",
272
+ "mode": "matter",
273
+ "created_at": "2026-05-18T00:00:00.000Z",
274
+ "last_sync_at": "2026-05-18T00:00:00.000Z",
275
+ "sync": {
276
+ "identity": "snapshot",
277
+ "lessons": "snapshot",
278
+ "knowledge": "readonly-link",
279
+ "skills": "symlink"
280
+ }
281
+ }
282
+ ```
283
+
284
+ Registry 只记录发现、路径、状态和同步元数据,不记录项目进度正文。
285
+
286
+ ### Step 9:生成跨项目联络入口
287
+
288
+ Satellite Kit 已包含:
289
+
290
+ ```text
291
+ _系统/跨项目/
292
+ inbox/
293
+ outbox/
294
+ ```
295
+
296
+ v0.1 可以只创建目录和 README。
297
+
298
+ 后续可以扩展为:
299
+
300
+ - 创建一封 “项目已创建” handoff 给 Hub
301
+ - 写入 Hub `项目/联络/`
302
+ - 支持 queued / delivered / acknowledged / closed 生命周期
303
+
304
+ ### Step 10:执行 `doctor`
305
+
306
+ 创建完成后,CLI 应自动或建议运行:
307
+
308
+ ```bash
309
+ starwork doctor --target <satellite-path>
310
+ ```
311
+
312
+ 当前实现会在创建完成后提示用户运行 `doctor` 检查新项目工作台。
313
+
314
+ ## 写入安全
315
+
316
+ `spawn` 会同时写 Hub 和 Satellite,因此安全策略要比 `init` 更严格:
317
+
318
+ | 场景 | v0.1 行为 |
319
+ |---|---|
320
+ | Hub 不健康 | 中止。 |
321
+ | 目标目录不存在 | 创建。 |
322
+ | 目标目录为空 | 写入。 |
323
+ | 目标目录有用户内容 | 默认中止。 |
324
+ | Hub registry 已有同 ID | 中止,提示更换 ID 或确认复用。 |
325
+ | Hub registry 已有同 path | 中止,提示已注册。 |
326
+ | 共享资源软链接失败 | v0.1 中止并报告错误;后续再补可解释的降级策略。 |
327
+ | 任一关键写入失败 | 中止,并提示已写入内容。后续可设计 rollback。 |
328
+
329
+ v0.1 不做自动 rollback,但要尽量按顺序降低风险:
330
+
331
+ 1. 先验证 Hub 和目标目录。
332
+ 2. 先生成完整写入计划。
333
+ 3. 用户确认后写 Satellite。
334
+ 4. Satellite 写入成功后再更新 Hub registry。
335
+
336
+ ## 与现有命令的关系
337
+
338
+ ### 与 `init`
339
+
340
+ - `init --type hub` 创建 Hub。
341
+ - `spawn` 从 Hub 创建 Satellite。
342
+
343
+ 两者不能混成一个命令。
344
+
345
+ ### 与 `doctor`
346
+
347
+ - 创建前检查 Hub。
348
+ - 创建后检查 Satellite。
349
+ - `doctor` 需要新增 Satellite 工作区类型支持。
350
+
351
+ ### 与 `adapt`
352
+
353
+ Satellite Kit 当前已经包含 `CLAUDE.md`,但 `adapt` 仍可用于重新生成 / 补充其他 Agent 入口。
354
+
355
+ 建议流程:
356
+
357
+ ```bash
358
+ starwork spawn ...
359
+ starwork doctor --target <satellite>
360
+ starwork adapt all --target <satellite> --yes
361
+ ```
362
+
363
+ ### 与 `pack install`
364
+
365
+ `spawn` 时先不装业务 Pack,只创建通用执行工作区。
366
+
367
+ 后续用户可以:
368
+
369
+ ```bash
370
+ starwork pack install content-creator --target <satellite> --yes
371
+ ```
372
+
373
+ 后续如果支持 `--pack`,它应复用 `pack install` 的逻辑,而不是在 `spawn` 中重写一套 Pack 安装器。
374
+
375
+ ### 与 `spawn --blueprint`
376
+
377
+ `spawn --blueprint` 已在 v0.1 第一版落地,用于把一次性项目定制交给 CLI 执行。
378
+
379
+ 当前支持:
380
+
381
+ - 覆盖 `paths.formal_source` 和 `paths.business_work_area`。
382
+ - 创建 `folders` 声明的定制目录。
383
+ - 把 `agent_rules` 指向的 Markdown 注入 `AGENTS.md`。
384
+ - 复制 `seed` 文件。
385
+ - 在 `.starwork/workspace.json` 中记录 `customization`。
386
+ - 在 Hub registry 中标记 `customized: true`。
387
+
388
+ 当前不支持 `renames`、`removals` 和自动安装 Pack。
389
+
390
+ ## v0.1 不做什么
391
+
392
+ - 不创建 Hub;Hub 必须已经存在。
393
+ - 不自动发现所有 Hub。
394
+ - 不处理远程仓库、GitHub、云同步。
395
+ - 不做复杂权限系统。
396
+ - 不做跨机器同步。
397
+ - 不做自动 rollback。
398
+ - 不把项目进度写入 Hub registry。
399
+ - 不让卫星项目直接改 Hub 的共享事实源。
400
+ - 不处理 Pack 卸载、升级或迁移。
401
+ - 不在 `spawn --blueprint` 中处理 `renames`、`removals` 或脚本执行。
402
+
403
+ ## 最小实现范围
404
+
405
+ 第一版实现范围:
406
+
407
+ 1. 支持 `starwork spawn` 命令。
408
+ 2. 支持 `--hub`、`--name`、`--target`、`--mode`、`--id`、`--blueprint`、`--dry-run`、`--yes`。
409
+ 3. 检查 Hub 是否为健康 `hub` 工作台。
410
+ 4. 只允许写入不存在或空目标目录。
411
+ 5. 根据 mode 复制 `satellite-starter` 或 `satellite-matter` Kit。
412
+ 6. 写入 Satellite `.starwork/workspace.json`。
413
+ 7. 写入 `.core-sync.json`。
414
+ 8. 复制 identity / lessons / .internal / .obsidian 快照。
415
+ 9. 创建 knowledge 和 skills 链接;失败时中止并报告错误。
416
+ 10. 更新 Hub `项目/registry.json`。
417
+ 11. 补充 `doctor` 对 Satellite 工作区类型的识别。
418
+ 12. 增加测试:创建 starter satellite、创建 matter satellite、registry 重复 ID 拒绝、非 Hub 拒绝。
419
+
420
+ ## 验收标准
421
+
422
+ `starwork spawn` 可验收,至少满足:
423
+
424
+ - 能从 `hub` 创建 `satellite-starter`。
425
+ - 能从 `hub` 创建 `satellite-matter`。
426
+ - 创建后 Satellite 通过 `starwork doctor`。
427
+ - Hub `项目/registry.json` 出现项目记录。
428
+ - `.core-sync.json` 记录 Hub 路径、项目 ID、同步资源。
429
+ - 已存在同 ID 时拒绝创建。
430
+ - 目标目录已有用户内容时默认拒绝写入。
431
+ - 不支持从普通单项目工作台创建 Satellite。
432
+
433
+ ## 后续问题
434
+
435
+ 1. 是否兼容 `knowledge/` 英文路径链接。
436
+ 2. skills 软链接是否默认挂载全部 skills,还是只挂载指定列表。
437
+ 3. 创建项目时是否允许直接安装业务 Pack。
438
+ 4. 是否需要在 Hub `项目/联络/` 自动生成项目创建 handoff。
439
+ 5. 软链接失败时是否提供复制降级策略。