@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,750 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>StarWork 多项目中枢管理机制</title>
7
+ <style>
8
+ :root {
9
+ --paper: #f7f4ec;
10
+ --paper-2: #ebe5d7;
11
+ --ink: #1d211d;
12
+ --muted: #62675f;
13
+ --line: #cfc7b7;
14
+ --white: #fffdf7;
15
+ --green: #286d4a;
16
+ --green-soft: #d8eadc;
17
+ --amber: #b36b19;
18
+ --amber-soft: #f3dfbd;
19
+ --blue: #2f6286;
20
+ --blue-soft: #d7e4ea;
21
+ --red: #9b3d2c;
22
+ --shadow: 0 18px 50px rgba(47, 43, 34, 0.12);
23
+ }
24
+
25
+ * {
26
+ box-sizing: border-box;
27
+ }
28
+
29
+ body {
30
+ margin: 0;
31
+ color: var(--ink);
32
+ background:
33
+ linear-gradient(90deg, rgba(62, 71, 62, 0.052) 1px, transparent 1px),
34
+ linear-gradient(0deg, rgba(62, 71, 62, 0.045) 1px, transparent 1px),
35
+ var(--paper);
36
+ background-size: 34px 34px;
37
+ font-family: "Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
38
+ letter-spacing: 0;
39
+ }
40
+
41
+ a {
42
+ color: inherit;
43
+ text-underline-offset: 3px;
44
+ }
45
+
46
+ code {
47
+ padding: 2px 6px;
48
+ border: 1px solid var(--line);
49
+ border-radius: 6px;
50
+ background: rgba(29, 33, 29, 0.05);
51
+ font-family: "SFMono-Regular", "Menlo", "Consolas", monospace;
52
+ font-size: 0.92em;
53
+ }
54
+
55
+ pre {
56
+ margin: 14px 0 0;
57
+ padding: 16px;
58
+ overflow: auto;
59
+ border: 1px solid rgba(29, 33, 29, 0.24);
60
+ border-radius: 8px;
61
+ background: #1d211d;
62
+ color: #fffdf7;
63
+ font-size: 13px;
64
+ line-height: 1.65;
65
+ }
66
+
67
+ .page {
68
+ width: min(1180px, calc(100% - 40px));
69
+ margin: 0 auto;
70
+ padding: 42px 0 70px;
71
+ }
72
+
73
+ .home-link {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ min-height: 34px;
77
+ margin-bottom: 18px;
78
+ padding: 6px 11px;
79
+ border: 1px solid var(--line);
80
+ border-radius: 999px;
81
+ background: rgba(255, 253, 247, 0.75);
82
+ color: var(--muted);
83
+ font-size: 14px;
84
+ font-weight: 800;
85
+ text-decoration: none;
86
+ }
87
+
88
+ .hero {
89
+ display: grid;
90
+ grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr);
91
+ gap: 28px;
92
+ align-items: stretch;
93
+ min-height: 540px;
94
+ }
95
+
96
+ .hero-copy {
97
+ display: flex;
98
+ flex-direction: column;
99
+ justify-content: space-between;
100
+ padding: 34px 0 30px;
101
+ border-top: 2px solid var(--ink);
102
+ border-bottom: 2px solid var(--ink);
103
+ }
104
+
105
+ .kicker {
106
+ margin: 0 0 20px;
107
+ color: var(--green);
108
+ font-size: 13px;
109
+ font-weight: 900;
110
+ text-transform: uppercase;
111
+ }
112
+
113
+ h1,
114
+ h2,
115
+ h3 {
116
+ font-family: Georgia, "Times New Roman", "Songti SC", serif;
117
+ letter-spacing: 0;
118
+ }
119
+
120
+ h1 {
121
+ margin: 0;
122
+ max-width: 820px;
123
+ font-size: clamp(42px, 7vw, 82px);
124
+ line-height: 0.98;
125
+ }
126
+
127
+ .subtitle {
128
+ max-width: 760px;
129
+ margin: 28px 0 0;
130
+ color: var(--muted);
131
+ font-size: 19px;
132
+ line-height: 1.78;
133
+ }
134
+
135
+ .quick-row {
136
+ display: grid;
137
+ grid-template-columns: repeat(4, minmax(0, 1fr));
138
+ gap: 10px;
139
+ margin-top: 34px;
140
+ }
141
+
142
+ .quick {
143
+ min-height: 116px;
144
+ padding: 14px;
145
+ border: 1px solid var(--line);
146
+ border-radius: 8px;
147
+ background: rgba(255, 253, 247, 0.75);
148
+ }
149
+
150
+ .quick b {
151
+ display: block;
152
+ margin-bottom: 8px;
153
+ color: var(--green);
154
+ font-size: 13px;
155
+ }
156
+
157
+ .quick span {
158
+ color: var(--ink);
159
+ font-size: 14px;
160
+ line-height: 1.52;
161
+ }
162
+
163
+ .hero-board {
164
+ padding: 18px;
165
+ display: flex;
166
+ align-items: center;
167
+ background: var(--white);
168
+ border: 2px solid var(--ink);
169
+ border-radius: 8px;
170
+ box-shadow: var(--shadow);
171
+ }
172
+
173
+ svg {
174
+ display: block;
175
+ width: 100%;
176
+ height: auto;
177
+ }
178
+
179
+ .section {
180
+ margin-top: 70px;
181
+ }
182
+
183
+ .section-header {
184
+ display: flex;
185
+ justify-content: space-between;
186
+ align-items: end;
187
+ gap: 24px;
188
+ margin-bottom: 24px;
189
+ padding-bottom: 14px;
190
+ border-bottom: 2px solid var(--ink);
191
+ }
192
+
193
+ h2 {
194
+ margin: 0;
195
+ font-size: clamp(29px, 4vw, 52px);
196
+ line-height: 1.05;
197
+ }
198
+
199
+ h3 {
200
+ margin: 0 0 12px;
201
+ font-size: 26px;
202
+ line-height: 1.15;
203
+ }
204
+
205
+ .section-note {
206
+ max-width: 540px;
207
+ margin: 0;
208
+ color: var(--muted);
209
+ font-size: 15px;
210
+ line-height: 1.75;
211
+ }
212
+
213
+ .grid-2,
214
+ .grid-3 {
215
+ display: grid;
216
+ gap: 16px;
217
+ }
218
+
219
+ .grid-2 {
220
+ grid-template-columns: repeat(2, minmax(0, 1fr));
221
+ }
222
+
223
+ .grid-3 {
224
+ grid-template-columns: repeat(3, minmax(0, 1fr));
225
+ }
226
+
227
+ .panel {
228
+ padding: 20px;
229
+ border: 1px solid var(--line);
230
+ border-radius: 8px;
231
+ background: rgba(255, 253, 247, 0.78);
232
+ box-shadow: 0 10px 28px rgba(47, 43, 34, 0.07);
233
+ }
234
+
235
+ .panel.green {
236
+ background: var(--green-soft);
237
+ border-color: rgba(40, 109, 74, 0.45);
238
+ }
239
+
240
+ .panel.amber {
241
+ background: var(--amber-soft);
242
+ border-color: rgba(179, 107, 25, 0.45);
243
+ }
244
+
245
+ .panel.blue {
246
+ background: var(--blue-soft);
247
+ border-color: rgba(47, 98, 134, 0.45);
248
+ }
249
+
250
+ .panel p,
251
+ .panel li {
252
+ color: var(--muted);
253
+ font-size: 15px;
254
+ line-height: 1.75;
255
+ }
256
+
257
+ .panel p {
258
+ margin: 0;
259
+ }
260
+
261
+ .panel ul,
262
+ .panel ol {
263
+ margin: 10px 0 0;
264
+ padding-left: 20px;
265
+ }
266
+
267
+ .tag {
268
+ display: inline-block;
269
+ margin-bottom: 12px;
270
+ padding: 5px 9px;
271
+ border: 1px solid rgba(29, 33, 29, 0.18);
272
+ border-radius: 999px;
273
+ background: rgba(255, 253, 247, 0.66);
274
+ color: var(--green);
275
+ font-size: 12px;
276
+ font-weight: 900;
277
+ }
278
+
279
+ .flow {
280
+ display: grid;
281
+ grid-template-columns: 1fr 48px 1fr 48px 1fr;
282
+ align-items: stretch;
283
+ gap: 10px;
284
+ }
285
+
286
+ .flow-step {
287
+ min-height: 170px;
288
+ padding: 18px;
289
+ border: 1px solid var(--line);
290
+ border-radius: 8px;
291
+ background: rgba(255, 253, 247, 0.82);
292
+ }
293
+
294
+ .arrow {
295
+ display: grid;
296
+ place-items: center;
297
+ color: var(--green);
298
+ font-size: 30px;
299
+ font-weight: 900;
300
+ }
301
+
302
+ .table-wrap {
303
+ overflow: auto;
304
+ border: 1px solid var(--line);
305
+ border-radius: 8px;
306
+ background: rgba(255, 253, 247, 0.78);
307
+ }
308
+
309
+ table {
310
+ width: 100%;
311
+ border-collapse: collapse;
312
+ min-width: 780px;
313
+ }
314
+
315
+ th,
316
+ td {
317
+ padding: 14px 16px;
318
+ border-bottom: 1px solid var(--line);
319
+ text-align: left;
320
+ vertical-align: top;
321
+ font-size: 15px;
322
+ line-height: 1.65;
323
+ }
324
+
325
+ th {
326
+ color: var(--green);
327
+ background: rgba(216, 234, 220, 0.72);
328
+ font-weight: 900;
329
+ }
330
+
331
+ tr:last-child td {
332
+ border-bottom: 0;
333
+ }
334
+
335
+ .callout {
336
+ margin-top: 18px;
337
+ padding: 18px 20px;
338
+ border: 2px solid var(--ink);
339
+ border-radius: 8px;
340
+ background: var(--white);
341
+ box-shadow: var(--shadow);
342
+ }
343
+
344
+ .callout p {
345
+ margin: 0;
346
+ font-size: 18px;
347
+ line-height: 1.75;
348
+ }
349
+
350
+ @media (max-width: 900px) {
351
+ .page {
352
+ width: min(100% - 28px, 1180px);
353
+ padding-top: 24px;
354
+ }
355
+
356
+ .hero,
357
+ .grid-2,
358
+ .grid-3,
359
+ .quick-row,
360
+ .flow {
361
+ grid-template-columns: 1fr;
362
+ }
363
+
364
+ .hero {
365
+ min-height: 0;
366
+ }
367
+
368
+ .arrow {
369
+ min-height: 34px;
370
+ transform: rotate(90deg);
371
+ }
372
+
373
+ .section-header {
374
+ display: block;
375
+ }
376
+
377
+ .section-note {
378
+ margin-top: 12px;
379
+ }
380
+ }
381
+ </style>
382
+ </head>
383
+ <body>
384
+ <main class="page">
385
+ <a class="home-link" href="index.html">返回文档中心</a>
386
+
387
+ <section class="hero">
388
+ <div class="hero-copy">
389
+ <div>
390
+ <p class="kicker">Hub + Satellite</p>
391
+ <h1>多项目中枢管理机制</h1>
392
+ <p class="subtitle">这页给第一次听 StarWork 多项目机制的人看:中枢不是一个巨大的项目文件夹,而是共享规则、知识、身份、技能和项目登记的管理层;真正的项目执行留在各自的卫星项目里。</p>
393
+ </div>
394
+
395
+ <div class="quick-row">
396
+ <div class="quick"><b>Hub 管共享</b><span>统一维护身份、教训、知识、skills、项目注册和跨项目联络。</span></div>
397
+ <div class="quick"><b>Satellite 管执行</b><span>每个具体项目维护自己的状态、事项、过程材料和正式成果。</span></div>
398
+ <div class="quick"><b>Registry 管发现</b><span>中枢只登记项目在哪里、是否活跃,不吞掉项目进度正文。</span></div>
399
+ <div class="quick"><b>联络单管通信</b><span>项目之间的请求、同步、依赖和交接,用联络单留痕。</span></div>
400
+ </div>
401
+ </div>
402
+
403
+ <div class="hero-board" aria-label="Hub 与 Satellite 关系图">
404
+ <svg viewBox="0 0 640 620" role="img" aria-labelledby="diagram-title diagram-desc">
405
+ <title id="diagram-title">StarWork Hub 和 Satellite 关系</title>
406
+ <desc id="diagram-desc">Hub 位于上方,维护共享资源和项目注册表,通过 spawn 生成多个项目;项目之间通过联络单通信,候选公共内容回写到 incoming,但项目事实留在本地。</desc>
407
+ <defs>
408
+ <marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
409
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="#286d4a"></path>
410
+ </marker>
411
+ <marker id="arrow-blue" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
412
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="#2f6286"></path>
413
+ </marker>
414
+ <marker id="arrow-amber" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto">
415
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="#b36b19"></path>
416
+ </marker>
417
+ </defs>
418
+
419
+ <rect x="42" y="26" width="556" height="176" rx="16" fill="#d8eadc" stroke="#1d211d" stroke-width="3"></rect>
420
+ <text x="320" y="70" text-anchor="middle" font-size="28" font-weight="900" fill="#1d211d">Hub 多项目中枢</text>
421
+ <text x="320" y="104" text-anchor="middle" font-size="15" fill="#62675f">共享机制和项目发现层</text>
422
+
423
+ <g font-size="14" fill="#1d211d">
424
+ <rect x="74" y="130" width="104" height="38" rx="8" fill="#fffdf7" stroke="#cfc7b7"></rect>
425
+ <text x="126" y="154" text-anchor="middle">identity</text>
426
+ <rect x="192" y="130" width="104" height="38" rx="8" fill="#fffdf7" stroke="#cfc7b7"></rect>
427
+ <text x="244" y="154" text-anchor="middle">lessons</text>
428
+ <rect x="310" y="130" width="104" height="38" rx="8" fill="#fffdf7" stroke="#cfc7b7"></rect>
429
+ <text x="362" y="154" text-anchor="middle">knowledge</text>
430
+ <rect x="428" y="130" width="104" height="38" rx="8" fill="#fffdf7" stroke="#cfc7b7"></rect>
431
+ <text x="480" y="154" text-anchor="middle">skills</text>
432
+ </g>
433
+
434
+ <rect x="210" y="242" width="220" height="74" rx="14" fill="#f3dfbd" stroke="#1d211d" stroke-width="2"></rect>
435
+ <text x="320" y="272" text-anchor="middle" font-size="20" font-weight="900" fill="#1d211d">项目 registry</text>
436
+ <text x="320" y="298" text-anchor="middle" font-size="14" fill="#62675f">只记录项目元数据</text>
437
+
438
+ <path d="M320 202 C320 218 320 225 320 242" fill="none" stroke="#286d4a" stroke-width="4" marker-end="url(#arrow)"></path>
439
+ <text x="352" y="228" font-size="13" fill="#286d4a">登记和发现</text>
440
+
441
+ <g>
442
+ <rect x="32" y="396" width="168" height="158" rx="14" fill="#d7e4ea" stroke="#1d211d" stroke-width="2"></rect>
443
+ <text x="116" y="430" text-anchor="middle" font-size="21" font-weight="900" fill="#1d211d">项目 A</text>
444
+ <text x="116" y="459" text-anchor="middle" font-size="14" fill="#62675f">具体项目执行</text>
445
+ <text x="116" y="494" text-anchor="middle" font-size="13" fill="#1d211d">项目状态 / 事项</text>
446
+ <text x="116" y="522" text-anchor="middle" font-size="13" fill="#1d211d">过程材料 / 成果</text>
447
+ </g>
448
+
449
+ <g>
450
+ <rect x="236" y="396" width="168" height="158" rx="14" fill="#d7e4ea" stroke="#1d211d" stroke-width="2"></rect>
451
+ <text x="320" y="430" text-anchor="middle" font-size="21" font-weight="900" fill="#1d211d">项目 B</text>
452
+ <text x="320" y="459" text-anchor="middle" font-size="14" fill="#62675f">具体项目执行</text>
453
+ <text x="320" y="494" text-anchor="middle" font-size="13" fill="#1d211d">项目状态 / 事项</text>
454
+ <text x="320" y="522" text-anchor="middle" font-size="13" fill="#1d211d">过程材料 / 成果</text>
455
+ </g>
456
+
457
+ <g>
458
+ <rect x="440" y="396" width="168" height="158" rx="14" fill="#d7e4ea" stroke="#1d211d" stroke-width="2"></rect>
459
+ <text x="524" y="430" text-anchor="middle" font-size="21" font-weight="900" fill="#1d211d">项目 C</text>
460
+ <text x="524" y="459" text-anchor="middle" font-size="14" fill="#62675f">具体项目执行</text>
461
+ <text x="524" y="494" text-anchor="middle" font-size="13" fill="#1d211d">项目状态 / 事项</text>
462
+ <text x="524" y="522" text-anchor="middle" font-size="13" fill="#1d211d">过程材料 / 成果</text>
463
+ </g>
464
+
465
+ <path d="M242 316 C194 340 154 361 116 396" fill="none" stroke="#286d4a" stroke-width="4" marker-end="url(#arrow)"></path>
466
+ <path d="M320 316 C320 345 320 365 320 396" fill="none" stroke="#286d4a" stroke-width="4" marker-end="url(#arrow)"></path>
467
+ <path d="M398 316 C446 340 486 361 524 396" fill="none" stroke="#286d4a" stroke-width="4" marker-end="url(#arrow)"></path>
468
+ <text x="432" y="358" font-size="13" fill="#286d4a">spawn 创建并登记</text>
469
+
470
+ <path d="M520 396 C548 318 536 236 480 176" fill="none" stroke="#2f6286" stroke-width="3" stroke-dasharray="8 8" marker-end="url(#arrow-blue)"></path>
471
+ <text x="500" y="286" font-size="13" fill="#2f6286">候选回写到 .incoming</text>
472
+
473
+ <path d="M200 476 C214 456 222 456 236 476" fill="none" stroke="#b36b19" stroke-width="3" marker-end="url(#arrow-amber)"></path>
474
+ <text x="218" y="448" text-anchor="middle" font-size="13" font-weight="900" fill="#b36b19">联络单沟通</text>
475
+ </svg>
476
+ </div>
477
+ </section>
478
+
479
+ <section class="section">
480
+ <div class="section-header">
481
+ <h2>一句话讲清楚</h2>
482
+ <p class="section-note">给不了解 StarWork 的人,可以先用这个版本解释,不需要一上来讲 Core、Pack、Preset。</p>
483
+ </div>
484
+
485
+ <div class="callout">
486
+ <p><strong>多项目中枢</strong>就是一个“项目控制塔”:它不替每个项目干活,而是统一维护跨项目可复用的身份、经验、知识、skills 和项目登记;每个具体项目仍然在自己的工作台里独立推进。</p>
487
+ </div>
488
+ </section>
489
+
490
+ <section class="section">
491
+ <div class="section-header">
492
+ <h2>三个角色</h2>
493
+ <p class="section-note">理解这套机制,只要先分清 Hub、Satellite、Registry 三件事。</p>
494
+ </div>
495
+
496
+ <div class="grid-3">
497
+ <article class="panel green">
498
+ <span class="tag">01 / Hub</span>
499
+ <h3>多项目中枢</h3>
500
+ <p>维护跨项目共享的东西:身份、教训、知识、skills、项目注册表、跨项目联络和回写审核。它是共享机制层,不是某个业务项目本身。</p>
501
+ </article>
502
+
503
+ <article class="panel blue">
504
+ <span class="tag">02 / Satellite</span>
505
+ <h3>卫星项目</h3>
506
+ <p>每个具体项目自己的工作台。项目状态、当前工作、事项、资料、过程材料、正式成果,都留在这里独立维护。</p>
507
+ </article>
508
+
509
+ <article class="panel amber">
510
+ <span class="tag">03 / Registry</span>
511
+ <h3>项目注册表</h3>
512
+ <p>Hub 里的项目清单。它记录项目 ID、名称、路径、状态、Core 版本和同步元数据,但不保存项目进度正文。</p>
513
+ </article>
514
+ </div>
515
+ </section>
516
+
517
+ <section class="section">
518
+ <div class="section-header">
519
+ <h2>为什么要分开</h2>
520
+ <p class="section-note">如果所有项目都塞进一个大目录,短期看方便,长期会让事实源和责任边界混在一起。</p>
521
+ </div>
522
+
523
+ <div class="grid-2">
524
+ <article class="panel">
525
+ <h3>不分开会怎样</h3>
526
+ <ul>
527
+ <li>每个项目都会复制一份身份、教训和规则,越来越不一致。</li>
528
+ <li>共享知识和项目草稿混在一起,不知道哪里才是事实源。</li>
529
+ <li>中枢会变成巨大的进度数据库,项目越多越难读。</li>
530
+ <li>一个项目的临时判断容易污染所有项目的公共规则。</li>
531
+ </ul>
532
+ </article>
533
+
534
+ <article class="panel">
535
+ <h3>分开以后</h3>
536
+ <ul>
537
+ <li>Hub 只维护可复用、可审计、跨项目共享的内容。</li>
538
+ <li>Satellite 只维护项目自己的执行事实和产出。</li>
539
+ <li>项目发现靠 registry,项目进度仍然留在项目里。</li>
540
+ <li>可复用经验先进入回写审核,确认后再进入 Hub。</li>
541
+ </ul>
542
+ </article>
543
+ </div>
544
+ </section>
545
+
546
+ <section class="section">
547
+ <div class="section-header">
548
+ <h2>实际怎么工作</h2>
549
+ <p class="section-note">用户感知上是“先建中枢,再从中枢创建项目”。CLI 内部负责检查、生成、登记和同步元数据。</p>
550
+ </div>
551
+
552
+ <div class="flow">
553
+ <div class="flow-step">
554
+ <span class="tag">Step 1</span>
555
+ <h3>创建 Hub</h3>
556
+ <p>用 <code>starwork init --type hub</code> 建立多项目中枢。这里放共享身份、教训、知识、skills 和项目注册表。</p>
557
+ </div>
558
+ <div class="arrow">→</div>
559
+ <div class="flow-step">
560
+ <span class="tag">Step 2</span>
561
+ <h3>生成项目</h3>
562
+ <p>用 <code>starwork spawn</code> 从 Hub 创建 Satellite。CLI 会复制快照、挂载共享资源,并写入同步元数据。</p>
563
+ </div>
564
+ <div class="arrow">→</div>
565
+ <div class="flow-step">
566
+ <span class="tag">Step 3</span>
567
+ <h3>项目内推进</h3>
568
+ <p>Agent 在 Satellite 内维护项目状态、事项、资料和成果。Hub 只知道项目在哪里、是否活跃、如何同步。</p>
569
+ </div>
570
+ </div>
571
+
572
+ <pre>starwork init --type hub --target ~/my-hub --yes
573
+
574
+ starwork spawn \
575
+ --hub ~/my-hub \
576
+ --name "内容产品官网" \
577
+ --target ~/projects/content-site \
578
+ --mode matter \
579
+ --yes
580
+
581
+ starwork doctor --target ~/projects/content-site</pre>
582
+ </section>
583
+
584
+ <section class="section">
585
+ <div class="section-header">
586
+ <h2>哪些内容放哪里</h2>
587
+ <p class="section-note">这张表是解释边界最有用的部分:Hub 不是所有内容的收纳箱,Satellite 也不是孤岛。</p>
588
+ </div>
589
+
590
+ <div class="table-wrap">
591
+ <table>
592
+ <thead>
593
+ <tr>
594
+ <th>内容</th>
595
+ <th>放在 Hub</th>
596
+ <th>放在 Satellite</th>
597
+ <th>原因</th>
598
+ </tr>
599
+ </thead>
600
+ <tbody>
601
+ <tr>
602
+ <td>长期身份、偏好、工作方式</td>
603
+ <td><code>identity/</code></td>
604
+ <td>初始化快照或只读参考</td>
605
+ <td>这是跨项目稳定资源,应由中枢统一维护。</td>
606
+ </tr>
607
+ <tr>
608
+ <td>跨项目教训</td>
609
+ <td><code>lessons/</code></td>
610
+ <td>本项目候选教训</td>
611
+ <td>项目里先沉淀,确认可复用后再回写到 Hub。</td>
612
+ </tr>
613
+ <tr>
614
+ <td>共享知识库</td>
615
+ <td><code>知识/</code> 或 <code>knowledge/</code></td>
616
+ <td>只读链接</td>
617
+ <td>避免多个项目各自修改同一份公共知识。</td>
618
+ </tr>
619
+ <tr>
620
+ <td>共享 skills</td>
621
+ <td><code>skills/</code></td>
622
+ <td>软链接或挂载入口</td>
623
+ <td>让多个项目使用同一套能力,而不是复制出很多分叉。</td>
624
+ </tr>
625
+ <tr>
626
+ <td>项目状态和当前工作</td>
627
+ <td>只登记元数据</td>
628
+ <td><code>_系统/上下文/当前项目.md</code>、<code>_系统/任务/当前工作.md</code></td>
629
+ <td>项目事实必须留在项目工作台内。</td>
630
+ </tr>
631
+ <tr>
632
+ <td>项目产物、资料、事项</td>
633
+ <td>不存正文</td>
634
+ <td><code>输出/</code>、<code>参考资料/</code>、<code>事项/</code></td>
635
+ <td>这些是具体项目的执行内容,不属于中枢公共层。</td>
636
+ </tr>
637
+ <tr>
638
+ <td>可复用更新建议</td>
639
+ <td><code>.incoming/</code> 审核后合并</td>
640
+ <td>发起候选回写</td>
641
+ <td>先审核再进入 Hub,避免项目临时经验污染公共资源。</td>
642
+ </tr>
643
+ <tr>
644
+ <td>项目之间的请求、同步和交接</td>
645
+ <td><code>项目/联络/</code> 或中枢联络入口</td>
646
+ <td><code>_系统/跨项目/</code></td>
647
+ <td>联络单负责“项目和项目怎么说话”,不替代项目状态,也不直接改变 Hub 正式知识。</td>
648
+ </tr>
649
+ </tbody>
650
+ </table>
651
+ </div>
652
+ </section>
653
+
654
+ <section class="section">
655
+ <div class="section-header">
656
+ <h2>联络单机制</h2>
657
+ <p class="section-note">联络单是多项目协作里的“可追踪消息”。它解决项目之间怎么提请求、交接、同步和回复的问题。</p>
658
+ </div>
659
+
660
+ <div class="grid-2">
661
+ <article class="panel green">
662
+ <span class="tag">它是什么</span>
663
+ <h3>项目之间的正式留言</h3>
664
+ <p>当项目 A 需要项目 B 提供信息、同步进展、确认边界、交接材料,或者向 Hub 说明一个跨项目事项时,就写联络单。它应该有明确发送方、接收方、背景、请求、截止时间和期望回复。</p>
665
+ </article>
666
+
667
+ <article class="panel amber">
668
+ <span class="tag">它不是什么</span>
669
+ <h3>不是项目进度,也不是知识回写</h3>
670
+ <p>联络单不存项目完整进度,项目进度仍在项目自己的状态和事项里;它也不直接把内容合并进 Hub 的身份、教训或知识。可复用内容仍应走 <code>.incoming/</code> 审核。</p>
671
+ </article>
672
+ </div>
673
+
674
+ <div class="flow" style="margin-top: 16px;">
675
+ <div class="flow-step">
676
+ <span class="tag">发送</span>
677
+ <h3>项目 A 写联络单</h3>
678
+ <p>在本项目 <code>_系统/跨项目/</code> 留一份发送记录,说明要找谁、为什么找、希望对方做什么。</p>
679
+ </div>
680
+ <div class="arrow">→</div>
681
+ <div class="flow-step">
682
+ <span class="tag">路由</span>
683
+ <h3>Hub 留痕和分发</h3>
684
+ <p>Hub 的联络入口记录这次跨项目通信,帮助未来查到“哪个项目找过哪个项目”。</p>
685
+ </div>
686
+ <div class="arrow">→</div>
687
+ <div class="flow-step">
688
+ <span class="tag">回复</span>
689
+ <h3>项目 B 处理并回复</h3>
690
+ <p>项目 B 在自己的工作台处理请求,并通过联络单回复。需要沉淀为公共知识时,再另走回写审核。</p>
691
+ </div>
692
+ </div>
693
+
694
+ <div class="callout">
695
+ <p>可以把 registry 理解成“通讯录”,把联络单理解成“正式邮件”,把 <code>.incoming</code> 理解成“投稿审核箱”。三者都和中枢有关,但职责完全不同。</p>
696
+ </div>
697
+ </section>
698
+
699
+ <section class="section">
700
+ <div class="section-header">
701
+ <h2>容易误解的点</h2>
702
+ <p class="section-note">这几个边界要讲清楚,别人就不容易把 Hub 理解成“更大的项目文件夹”。</p>
703
+ </div>
704
+
705
+ <div class="grid-2">
706
+ <article class="panel">
707
+ <h3>Hub 不是项目进度数据库</h3>
708
+ <p>Hub 的 <code>项目/registry.json</code> 只回答“有哪些项目、在哪里、什么状态”。具体进度、事项、判断和产物仍在各自 Satellite。</p>
709
+ </article>
710
+
711
+ <article class="panel">
712
+ <h3>Satellite 不是 Hub 的子目录</h3>
713
+ <p>Satellite 是独立工作台,可以在任意路径。它通过 <code>.core-sync.json</code> 记录来源 Hub、共享资源和同步关系。</p>
714
+ </article>
715
+
716
+ <article class="panel">
717
+ <h3>共享资源不是随便改</h3>
718
+ <p>知识和 skills 默认来自 Hub。项目内如果产生可复用内容,应先走候选回写和审核,而不是直接改 Hub 正式内容。</p>
719
+ </article>
720
+
721
+ <article class="panel">
722
+ <h3>spawn 不是 init 的替代品</h3>
723
+ <p><code>init</code> 创建当前工作台,<code>spawn</code> 从已有 Hub 创建并登记一个新项目。它们处理的是不同层级的问题。</p>
724
+ </article>
725
+
726
+ <article class="panel">
727
+ <h3>联络单不是 registry</h3>
728
+ <p>registry 记录项目元数据,联络单记录项目之间的一次正式沟通。不要把跨项目请求塞进项目注册表。</p>
729
+ </article>
730
+
731
+ <article class="panel">
732
+ <h3>联络单不是 .incoming</h3>
733
+ <p><code>.incoming</code> 用来审核候选公共内容;联络单用来请求、同步、交接和回复。一次联络可能产生回写候选,但它们不是同一件事。</p>
734
+ </article>
735
+ </div>
736
+ </section>
737
+
738
+ <section class="section">
739
+ <div class="section-header">
740
+ <h2>一句话版本</h2>
741
+ <p class="section-note">如果你要在会议里快速解释,可以直接用下面这段。</p>
742
+ </div>
743
+
744
+ <div class="callout">
745
+ <p>StarWork 的多项目机制采用 Hub + Satellite:Hub 是中枢,负责共享身份、教训、知识、skills、项目注册和联络入口;Satellite 是具体项目,负责自己的状态、事项、资料和成果。Hub 通过 registry 找到项目,通过 spawn 创建项目,通过联络单协调项目之间的请求和交接,通过 .incoming 接收候选回写,但不会把项目进度正文吞进中枢。</p>
746
+ </div>
747
+ </section>
748
+ </main>
749
+ </body>
750
+ </html>