@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,1088 @@
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 CLI 能力说明</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
+ --red-soft: #edd6cf;
23
+ --shadow: 0 18px 50px rgba(47, 43, 34, 0.12);
24
+ }
25
+
26
+ * {
27
+ box-sizing: border-box;
28
+ }
29
+
30
+ body {
31
+ margin: 0;
32
+ color: var(--ink);
33
+ background:
34
+ linear-gradient(90deg, rgba(62, 71, 62, 0.052) 1px, transparent 1px),
35
+ linear-gradient(0deg, rgba(62, 71, 62, 0.045) 1px, transparent 1px),
36
+ var(--paper);
37
+ background-size: 34px 34px;
38
+ font-family: "Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
39
+ letter-spacing: 0;
40
+ }
41
+
42
+ a {
43
+ color: inherit;
44
+ text-underline-offset: 3px;
45
+ }
46
+
47
+ code {
48
+ padding: 2px 6px;
49
+ border: 1px solid var(--line);
50
+ border-radius: 6px;
51
+ background: rgba(29, 33, 29, 0.05);
52
+ font-family: "SFMono-Regular", "Menlo", "Consolas", monospace;
53
+ font-size: 0.92em;
54
+ }
55
+
56
+ .page {
57
+ width: min(1180px, calc(100% - 40px));
58
+ margin: 0 auto;
59
+ padding: 42px 0 70px;
60
+ }
61
+
62
+ .home-link {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ min-height: 34px;
66
+ margin-bottom: 18px;
67
+ padding: 6px 11px;
68
+ border: 1px solid var(--line);
69
+ border-radius: 999px;
70
+ background: rgba(255, 253, 247, 0.75);
71
+ color: var(--muted);
72
+ font-size: 14px;
73
+ font-weight: 800;
74
+ text-decoration: none;
75
+ }
76
+
77
+ .hero {
78
+ display: grid;
79
+ grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr);
80
+ gap: 28px;
81
+ align-items: stretch;
82
+ min-height: 520px;
83
+ }
84
+
85
+ .hero-copy {
86
+ display: flex;
87
+ flex-direction: column;
88
+ justify-content: space-between;
89
+ padding: 34px 0 30px;
90
+ border-top: 2px solid var(--ink);
91
+ border-bottom: 2px solid var(--ink);
92
+ }
93
+
94
+ .kicker {
95
+ margin: 0 0 20px;
96
+ color: var(--green);
97
+ font-size: 13px;
98
+ font-weight: 900;
99
+ text-transform: uppercase;
100
+ }
101
+
102
+ h1,
103
+ h2,
104
+ h3 {
105
+ font-family: Georgia, "Times New Roman", "Songti SC", serif;
106
+ letter-spacing: 0;
107
+ }
108
+
109
+ h1 {
110
+ margin: 0;
111
+ max-width: 820px;
112
+ font-size: clamp(42px, 7.4vw, 86px);
113
+ line-height: 0.98;
114
+ }
115
+
116
+ .subtitle {
117
+ max-width: 720px;
118
+ margin: 28px 0 0;
119
+ color: var(--muted);
120
+ font-size: 19px;
121
+ line-height: 1.78;
122
+ }
123
+
124
+ .quick-row {
125
+ display: grid;
126
+ grid-template-columns: repeat(4, minmax(0, 1fr));
127
+ gap: 10px;
128
+ margin-top: 34px;
129
+ }
130
+
131
+ .quick {
132
+ padding: 14px;
133
+ min-height: 112px;
134
+ border: 1px solid var(--line);
135
+ border-radius: 8px;
136
+ background: rgba(255, 253, 247, 0.75);
137
+ }
138
+
139
+ .quick b {
140
+ display: block;
141
+ margin-bottom: 8px;
142
+ color: var(--green);
143
+ font-size: 13px;
144
+ }
145
+
146
+ .quick span {
147
+ color: var(--ink);
148
+ font-size: 14px;
149
+ line-height: 1.52;
150
+ }
151
+
152
+ .hero-board {
153
+ padding: 20px;
154
+ display: flex;
155
+ align-items: center;
156
+ background: var(--white);
157
+ border: 2px solid var(--ink);
158
+ border-radius: 8px;
159
+ box-shadow: var(--shadow);
160
+ }
161
+
162
+ svg {
163
+ display: block;
164
+ width: 100%;
165
+ height: auto;
166
+ }
167
+
168
+ .section {
169
+ margin-top: 70px;
170
+ }
171
+
172
+ .section-header {
173
+ display: flex;
174
+ justify-content: space-between;
175
+ align-items: end;
176
+ gap: 24px;
177
+ margin-bottom: 24px;
178
+ padding-bottom: 14px;
179
+ border-bottom: 2px solid var(--ink);
180
+ }
181
+
182
+ h2 {
183
+ margin: 0;
184
+ font-size: clamp(29px, 4vw, 52px);
185
+ line-height: 1.05;
186
+ }
187
+
188
+ .section-note {
189
+ max-width: 520px;
190
+ margin: 0;
191
+ color: var(--muted);
192
+ font-size: 15px;
193
+ line-height: 1.75;
194
+ }
195
+
196
+ .command-grid {
197
+ display: grid;
198
+ grid-template-columns: repeat(2, minmax(0, 1fr));
199
+ gap: 16px;
200
+ }
201
+
202
+ .command {
203
+ min-height: 330px;
204
+ padding: 20px;
205
+ border: 1px solid var(--line);
206
+ border-radius: 8px;
207
+ background: rgba(255, 253, 247, 0.78);
208
+ box-shadow: 0 10px 28px rgba(47, 43, 34, 0.07);
209
+ }
210
+
211
+ .command:nth-child(1) {
212
+ background: var(--green-soft);
213
+ border-color: rgba(40, 109, 74, 0.45);
214
+ }
215
+
216
+ .command:nth-child(2) {
217
+ background: var(--amber-soft);
218
+ border-color: rgba(179, 107, 25, 0.45);
219
+ }
220
+
221
+ .command:nth-child(3) {
222
+ background: var(--blue-soft);
223
+ border-color: rgba(47, 98, 134, 0.42);
224
+ }
225
+
226
+ .command:nth-child(4) {
227
+ background: var(--red-soft);
228
+ border-color: rgba(155, 61, 44, 0.34);
229
+ }
230
+
231
+ .command-top {
232
+ display: flex;
233
+ justify-content: space-between;
234
+ align-items: start;
235
+ gap: 16px;
236
+ margin-bottom: 16px;
237
+ }
238
+
239
+ .command h3 {
240
+ margin: 0;
241
+ font-size: 31px;
242
+ line-height: 1.06;
243
+ }
244
+
245
+ .badge {
246
+ padding: 6px 10px;
247
+ border: 1px solid currentColor;
248
+ border-radius: 999px;
249
+ font-size: 13px;
250
+ font-weight: 900;
251
+ white-space: nowrap;
252
+ }
253
+
254
+ .command p {
255
+ margin: 0 0 16px;
256
+ color: var(--muted);
257
+ line-height: 1.7;
258
+ }
259
+
260
+ .command ul,
261
+ .flow-list {
262
+ margin: 0;
263
+ padding: 0;
264
+ list-style: none;
265
+ display: grid;
266
+ gap: 9px;
267
+ }
268
+
269
+ .command li,
270
+ .flow-list li {
271
+ position: relative;
272
+ padding-left: 18px;
273
+ line-height: 1.55;
274
+ }
275
+
276
+ .command li::before,
277
+ .flow-list li::before {
278
+ content: "";
279
+ position: absolute;
280
+ left: 0;
281
+ top: 0.72em;
282
+ width: 7px;
283
+ height: 7px;
284
+ border-radius: 50%;
285
+ background: currentColor;
286
+ opacity: 0.68;
287
+ transform: translateY(-50%);
288
+ }
289
+
290
+ .command pre,
291
+ .script pre {
292
+ margin: 16px 0 0;
293
+ padding: 14px;
294
+ overflow: auto;
295
+ border: 1px solid rgba(29, 33, 29, 0.13);
296
+ border-radius: 8px;
297
+ background: rgba(255, 253, 247, 0.76);
298
+ font-family: "SFMono-Regular", "Menlo", "Consolas", monospace;
299
+ font-size: 13px;
300
+ line-height: 1.55;
301
+ }
302
+
303
+ .detail-stack {
304
+ display: grid;
305
+ gap: 18px;
306
+ }
307
+
308
+ .detail-card {
309
+ display: grid;
310
+ grid-template-columns: minmax(220px, 0.45fr) minmax(0, 1fr);
311
+ gap: 18px;
312
+ padding: 20px;
313
+ border: 1px solid var(--line);
314
+ border-radius: 8px;
315
+ background: rgba(255, 253, 247, 0.78);
316
+ }
317
+
318
+ .detail-card h3 {
319
+ margin: 0 0 12px;
320
+ font-size: 30px;
321
+ line-height: 1.08;
322
+ }
323
+
324
+ .detail-card p {
325
+ margin: 0 0 14px;
326
+ color: var(--muted);
327
+ line-height: 1.72;
328
+ }
329
+
330
+ .mini-label {
331
+ display: inline-flex;
332
+ align-items: center;
333
+ min-height: 28px;
334
+ margin-bottom: 12px;
335
+ padding: 5px 9px;
336
+ border: 1px solid currentColor;
337
+ border-radius: 999px;
338
+ color: var(--green);
339
+ font-size: 12px;
340
+ font-weight: 900;
341
+ }
342
+
343
+ .detail-columns {
344
+ display: grid;
345
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
346
+ gap: 14px;
347
+ }
348
+
349
+ .detail-box {
350
+ padding: 14px;
351
+ border: 1px solid var(--line);
352
+ border-radius: 8px;
353
+ background: rgba(247, 244, 236, 0.7);
354
+ }
355
+
356
+ .detail-box h4 {
357
+ margin: 0 0 10px;
358
+ font-size: 15px;
359
+ color: var(--green);
360
+ }
361
+
362
+ .detail-box ol,
363
+ .detail-box ul {
364
+ margin: 0;
365
+ padding-left: 20px;
366
+ display: grid;
367
+ gap: 7px;
368
+ line-height: 1.55;
369
+ }
370
+
371
+ .test-grid {
372
+ display: grid;
373
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
374
+ gap: 16px;
375
+ }
376
+
377
+ .test-card {
378
+ padding: 20px;
379
+ border: 1px solid var(--line);
380
+ border-radius: 8px;
381
+ background: rgba(255, 253, 247, 0.78);
382
+ }
383
+
384
+ .test-card h3 {
385
+ margin: 0 0 12px;
386
+ font-size: 27px;
387
+ line-height: 1.12;
388
+ }
389
+
390
+ .test-card p {
391
+ margin: 0 0 14px;
392
+ color: var(--muted);
393
+ line-height: 1.72;
394
+ }
395
+
396
+ .split {
397
+ display: grid;
398
+ grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
399
+ gap: 16px;
400
+ align-items: stretch;
401
+ }
402
+
403
+ .panel {
404
+ padding: 22px;
405
+ border: 1px solid var(--line);
406
+ border-radius: 8px;
407
+ background: rgba(255, 253, 247, 0.78);
408
+ }
409
+
410
+ .panel h3 {
411
+ margin: 0 0 14px;
412
+ font-size: 27px;
413
+ line-height: 1.12;
414
+ }
415
+
416
+ .panel p {
417
+ margin: 0 0 14px;
418
+ color: var(--muted);
419
+ line-height: 1.75;
420
+ }
421
+
422
+ .script {
423
+ padding: 22px;
424
+ border: 2px solid var(--ink);
425
+ border-radius: 8px;
426
+ background: var(--white);
427
+ box-shadow: var(--shadow);
428
+ }
429
+
430
+ .script h3 {
431
+ margin: 0 0 14px;
432
+ font-size: 30px;
433
+ }
434
+
435
+ .table {
436
+ width: 100%;
437
+ border-collapse: collapse;
438
+ background: rgba(255, 253, 247, 0.76);
439
+ border: 1px solid var(--line);
440
+ border-radius: 8px;
441
+ overflow: hidden;
442
+ display: table;
443
+ }
444
+
445
+ .table th,
446
+ .table td {
447
+ padding: 13px 14px;
448
+ border-bottom: 1px solid var(--line);
449
+ text-align: left;
450
+ vertical-align: top;
451
+ line-height: 1.55;
452
+ }
453
+
454
+ .table th {
455
+ color: var(--green);
456
+ font-size: 13px;
457
+ text-transform: uppercase;
458
+ background: rgba(216, 234, 220, 0.55);
459
+ }
460
+
461
+ .table tr:last-child td {
462
+ border-bottom: 0;
463
+ }
464
+
465
+ .footer {
466
+ margin-top: 70px;
467
+ padding-top: 18px;
468
+ border-top: 2px solid var(--ink);
469
+ color: var(--muted);
470
+ font-size: 14px;
471
+ line-height: 1.7;
472
+ }
473
+
474
+ @media (max-width: 940px) {
475
+ .hero,
476
+ .split,
477
+ .command-grid,
478
+ .detail-card,
479
+ .detail-columns,
480
+ .test-grid {
481
+ grid-template-columns: 1fr;
482
+ }
483
+
484
+ .quick-row {
485
+ grid-template-columns: repeat(2, minmax(0, 1fr));
486
+ }
487
+
488
+ .section-header {
489
+ display: block;
490
+ }
491
+
492
+ .section-note {
493
+ margin-top: 12px;
494
+ }
495
+ }
496
+
497
+ @media (max-width: 560px) {
498
+ .page {
499
+ width: min(100% - 24px, 1180px);
500
+ padding-top: 24px;
501
+ }
502
+
503
+ .quick-row {
504
+ grid-template-columns: 1fr;
505
+ }
506
+ }
507
+ </style>
508
+ </head>
509
+ <body>
510
+ <main class="page">
511
+ <a class="home-link" href="index.html" target="_top">返回 StarWork 文档中心</a>
512
+
513
+ <section class="hero">
514
+ <div class="hero-copy">
515
+ <div>
516
+ <p class="kicker">StarWork CLI v0.1</p>
517
+ <h1>CLI 能力说明</h1>
518
+ <p class="subtitle">
519
+ CLI 是 StarWork 的产品化入口。Core 定义什么是对的,CLI 负责把它生成出来、检查出来、适配出来,并把场景 Pack 安全安装进去;定制化生成由 spawn blueprint 和 starworkSpawn skill 共同完成第一版闭环。
520
+ </p>
521
+ </div>
522
+
523
+ <div class="quick-row" aria-label="CLI 五个命令">
524
+ <div class="quick"><b>init</b><span>从空文件夹生成一个可工作的 StarWork 工作台。</span></div>
525
+ <div class="quick"><b>spawn</b><span>从多项目中枢生成并登记一个新项目工作台。</span></div>
526
+ <div class="quick"><b>doctor</b><span>检查工作台是否健康,找出缺失、错配和风险。</span></div>
527
+ <div class="quick"><b>adapt</b><span>为不同 Agent 生成轻量入口,但不复制规则源。</span></div>
528
+ <div class="quick"><b>pack install</b><span>在健康工作台上补装场景 Pack。</span></div>
529
+ </div>
530
+ </div>
531
+
532
+ <div class="hero-board" aria-label="CLI 最小闭环图">
533
+ <svg viewBox="0 0 640 520" role="img" aria-labelledby="cli-flow-title cli-flow-desc">
534
+ <title id="cli-flow-title">CLI 最小闭环</title>
535
+ <desc id="cli-flow-desc">init 生成工作台,spawn 从中枢生成项目,doctor 检查工作台,adapt 适配 Agent,pack install 安装场景 Pack。</desc>
536
+ <defs>
537
+ <marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
538
+ <path d="M 0 0 L 10 5 L 0 10 z" fill="#1d211d"></path>
539
+ </marker>
540
+ </defs>
541
+ <rect x="12" y="12" width="616" height="496" rx="8" fill="#fffdf7" stroke="#1d211d" stroke-width="3"></rect>
542
+ <text x="44" y="58" font-size="25" font-weight="900" fill="#1d211d">M2 CLI 最小闭环</text>
543
+ <text x="44" y="84" font-size="14" fill="#62675f">五个命令共同完成:初始化、派生项目、检查、适配、扩展。</text>
544
+
545
+ <g transform="translate(74 150)">
546
+ <rect width="150" height="82" rx="8" fill="#d8eadc" stroke="#286d4a" stroke-width="2"></rect>
547
+ <text x="75" y="38" text-anchor="middle" font-size="23" font-weight="900" fill="#286d4a">init</text>
548
+ <text x="75" y="61" text-anchor="middle" font-size="13" fill="#286d4a">生成工作台</text>
549
+ </g>
550
+ <g transform="translate(416 150)">
551
+ <rect width="150" height="82" rx="8" fill="#f3dfbd" stroke="#b36b19" stroke-width="2"></rect>
552
+ <text x="75" y="38" text-anchor="middle" font-size="23" font-weight="900" fill="#b36b19">doctor</text>
553
+ <text x="75" y="61" text-anchor="middle" font-size="13" fill="#b36b19">检查健康</text>
554
+ </g>
555
+ <g transform="translate(416 330)">
556
+ <rect width="150" height="82" rx="8" fill="#d7e4ea" stroke="#2f6286" stroke-width="2"></rect>
557
+ <text x="75" y="38" text-anchor="middle" font-size="23" font-weight="900" fill="#2f6286">adapt</text>
558
+ <text x="75" y="61" text-anchor="middle" font-size="13" fill="#2f6286">适配 Agent</text>
559
+ </g>
560
+ <g transform="translate(74 330)">
561
+ <rect width="150" height="82" rx="8" fill="#edd6cf" stroke="#9b3d2c" stroke-width="2"></rect>
562
+ <text x="75" y="38" text-anchor="middle" font-size="23" font-weight="900" fill="#9b3d2c">pack</text>
563
+ <text x="75" y="61" text-anchor="middle" font-size="13" fill="#9b3d2c">安装场景</text>
564
+ </g>
565
+
566
+ <path d="M224 191 L416 191" stroke="#1d211d" stroke-width="4" marker-end="url(#arrow)"></path>
567
+ <path d="M491 232 L491 330" stroke="#1d211d" stroke-width="4" marker-end="url(#arrow)"></path>
568
+ <path d="M416 371 L224 371" stroke="#1d211d" stroke-width="4" marker-end="url(#arrow)"></path>
569
+ <path d="M149 330 L149 232" stroke="#1d211d" stroke-width="4" marker-end="url(#arrow)"></path>
570
+
571
+ <text x="320" y="270" text-anchor="middle" font-size="15" fill="#62675f">每一步都保护用户已有内容</text>
572
+ </svg>
573
+ </div>
574
+ </section>
575
+
576
+ <section class="section">
577
+ <div class="section-header">
578
+ <h2>五个命令</h2>
579
+ <p class="section-note">v0.1 不做大而全的 CLI,而是先完成一条可靠路径:能初始化、能生成中枢项目、能检查、能适配、能补装 Pack。</p>
580
+ </div>
581
+
582
+ <div class="command-grid">
583
+ <article class="command">
584
+ <div class="command-top">
585
+ <h3><code>init</code></h3>
586
+ <span class="badge">生成</span>
587
+ </div>
588
+ <p>把 Core Kit 和场景 Pack 组装成一个可直接使用的 StarWork 工作台。普通用户不需要理解 Kit、Profile、Capability。</p>
589
+ <ul>
590
+ <li>支持轻量单项目、长期单项目、多项目管理中枢。</li>
591
+ <li>初始化时选择 Pack,通用场景也是 Pack。</li>
592
+ <li>写入前预览,不静默覆盖已有内容。</li>
593
+ <li>生成 `.starwork/workspace.json`,供后续命令读取。</li>
594
+ </ul>
595
+ <pre>node cli/bin/starwork.js init --type single-matter --pack content-creator --target ./workspace --yes</pre>
596
+ </article>
597
+
598
+ <article class="command">
599
+ <div class="command-top">
600
+ <h3><code>spawn</code></h3>
601
+ <span class="badge">派生</span>
602
+ </div>
603
+ <p>从健康的多项目中枢生成一个被管理的新项目工作台,并把它登记回 Hub 的项目注册表。</p>
604
+ <ul>
605
+ <li>支持 <code>starter</code> 和 <code>matter</code> 两种项目模式。</li>
606
+ <li>复制 Hub 的身份和教训快照。</li>
607
+ <li>软链接 Hub 的知识和 skills 入口。</li>
608
+ <li>写入 <code>.core-sync.json</code> 和 Hub <code>项目/registry.json</code>。</li>
609
+ </ul>
610
+ <pre>node cli/bin/starwork.js spawn --hub ./hub --name "新项目" --target ./project --mode matter --yes</pre>
611
+ </article>
612
+
613
+ <article class="command">
614
+ <div class="command-top">
615
+ <h3><code>doctor</code></h3>
616
+ <span class="badge">检查</span>
617
+ </div>
618
+ <p>检查工作台是不是健康。它只报告问题,不默认修复文件,是后续适配和 Pack 安装的守门员。</p>
619
+ <ul>
620
+ <li>检查 workspace state、Core 必需角色、Kit 文件。</li>
621
+ <li>检查正式事实源、业务工作区、Pack seed 和模板。</li>
622
+ <li>支持人类可读输出和 <code>--json</code>。</li>
623
+ <li>健康返回退出码 0,有阻塞问题返回 1。</li>
624
+ </ul>
625
+ <pre>node cli/bin/starwork.js doctor --target ./workspace --json</pre>
626
+ </article>
627
+
628
+ <article class="command">
629
+ <div class="command-top">
630
+ <h3><code>adapt</code></h3>
631
+ <span class="badge">适配</span>
632
+ </div>
633
+ <p>为具体 Agent 生成轻量适配入口。它不复制一整套规则,只告诉 Agent 去读 StarWork 的统一规则源。</p>
634
+ <ul>
635
+ <li>支持 <code>codex</code>、<code>claude</code>、<code>cursor</code>、<code>trae</code>、<code>all</code>。</li>
636
+ <li>Claude 生成 <code>CLAUDE.md</code>。</li>
637
+ <li>Cursor 生成 <code>.cursor/rules/starwork.mdc</code>。</li>
638
+ <li>适配结果记录到 workspace state。</li>
639
+ </ul>
640
+ <pre>node cli/bin/starwork.js adapt claude --target ./workspace --yes</pre>
641
+ </article>
642
+
643
+ <article class="command">
644
+ <div class="command-top">
645
+ <h3><code>pack install</code></h3>
646
+ <span class="badge">扩展</span>
647
+ </div>
648
+ <p>在已有健康工作台上补装场景 Pack。它让用户可以先从通用工作台开始,再逐步加入具体场景能力。</p>
649
+ <ul>
650
+ <li>安装前必须通过阻塞级 <code>doctor</code> 检查。</li>
651
+ <li>创建 Pack 目录、seed 和 templates。</li>
652
+ <li>把 Pack 规则追加到 <code>AGENTS.md</code>。</li>
653
+ <li>更新 workspace state,已安装 Pack 不重复安装。</li>
654
+ </ul>
655
+ <pre>node cli/bin/starwork.js pack install content-creator --target ./workspace --yes</pre>
656
+ </article>
657
+ </div>
658
+ </section>
659
+
660
+ <section class="section">
661
+ <div class="section-header">
662
+ <h2>详细能力与执行步骤</h2>
663
+ <p class="section-note">这一段按命令拆开看:每个 CLI 到底能做什么、执行时经过哪些步骤、适合什么时候用。</p>
664
+ </div>
665
+
666
+ <div class="detail-stack">
667
+ <article class="detail-card">
668
+ <div>
669
+ <span class="mini-label">01 / 生成工作台</span>
670
+ <h3><code>starwork init</code></h3>
671
+ <p>把 Core Kit 和 Pack 合成一个最终工作台。它是用户第一次接触 StarWork 的入口。</p>
672
+ <pre>node cli/bin/starwork.js init \
673
+ --type single-matter \
674
+ --pack content-creator \
675
+ --target ./workspace \
676
+ --yes</pre>
677
+ </div>
678
+ <div class="detail-columns">
679
+ <div class="detail-box">
680
+ <h4>具备的能力</h4>
681
+ <ul>
682
+ <li>识别目标目录是否已经是 StarWork 工作台。</li>
683
+ <li>根据 <code>--type</code> 选择 Kit:轻量单项目、长期单项目、多项目中枢。</li>
684
+ <li>根据 <code>--pack</code> 安装通用、内容创作者或中枢管理 Pack。</li>
685
+ <li>生成 <code>AGENTS.md</code>、系统状态文件、工作目录、Pack seed 和 templates。</li>
686
+ <li>写入 <code>.starwork/workspace.json</code>,作为后续命令读取的机器状态。</li>
687
+ <li>遇到已有用户文件时生成旁路文件,不静默覆盖。</li>
688
+ </ul>
689
+ </div>
690
+ <div class="detail-box">
691
+ <h4>执行步骤</h4>
692
+ <ol>
693
+ <li>解析参数和目标目录。</li>
694
+ <li>检查是否已经位于 StarWork 工作台内。</li>
695
+ <li>确定工作区类型、Kit、语言和 Pack。</li>
696
+ <li>加载 Kit 文件和 Pack 语言配置。</li>
697
+ <li>渲染 Pack 规则、seed、templates。</li>
698
+ <li>生成写入计划并展示预览。</li>
699
+ <li>确认后写入文件和 workspace state。</li>
700
+ <li>提示下一步运行 <code>doctor</code> 和 <code>adapt</code>。</li>
701
+ </ol>
702
+ </div>
703
+ </div>
704
+ </article>
705
+
706
+ <article class="detail-card">
707
+ <div>
708
+ <span class="mini-label">02 / 生成中枢项目</span>
709
+ <h3><code>starwork spawn</code></h3>
710
+ <p>从 Hub 生成一个新项目工作台。用户面对的是“生成一个新项目”,内部使用 <code>satellite-starter</code> 或 <code>satellite-matter</code> Kit。</p>
711
+ <pre>node cli/bin/starwork.js spawn \
712
+ --hub ./hub \
713
+ --name "内容产品官网" \
714
+ --id content-site \
715
+ --target ./content-site \
716
+ --mode matter \
717
+ --yes</pre>
718
+ </div>
719
+ <div class="detail-columns">
720
+ <div class="detail-box">
721
+ <h4>具备的能力</h4>
722
+ <ul>
723
+ <li>检查 Hub 是否健康,且必须是 <code>hub</code> 工作区。</li>
724
+ <li>只允许写入不存在或空目录。</li>
725
+ <li>按 <code>--mode</code> 选择 <code>satellite-starter</code> 或 <code>satellite-matter</code>。</li>
726
+ <li>写入项目自己的 workspace state 和同步说明。</li>
727
+ <li>回写 Hub 项目注册表,拒绝重复 ID 或重复路径。</li>
728
+ <li><code>--blueprint</code> 支持按工作台定制单创建目录、写入路径、注入规则和复制 seed。</li>
729
+ </ul>
730
+ </div>
731
+ <div class="detail-box">
732
+ <h4>执行步骤</h4>
733
+ <ol>
734
+ <li>定位并检查 Hub 工作台。</li>
735
+ <li>检查目标目录是否可写。</li>
736
+ <li>复制项目 Kit。</li>
737
+ <li>同步身份、教训、知识和 skills 入口。</li>
738
+ <li>写入 <code>.starwork/workspace.json</code> 与 <code>.core-sync.json</code>。</li>
739
+ <li>更新 Hub <code>项目/registry.json</code>。</li>
740
+ <li>提示运行 <code>doctor</code>。</li>
741
+ </ol>
742
+ </div>
743
+ </div>
744
+ </article>
745
+
746
+ <article class="detail-card">
747
+ <div>
748
+ <span class="mini-label">03 / 检查健康</span>
749
+ <h3><code>starwork doctor</code></h3>
750
+ <p>检查当前工作台是否健康。它是守门员,不修复,只报告。</p>
751
+ <pre>node cli/bin/starwork.js doctor \
752
+ --target ./workspace
753
+
754
+ node cli/bin/starwork.js doctor \
755
+ --target ./workspace \
756
+ --json</pre>
757
+ </div>
758
+ <div class="detail-columns">
759
+ <div class="detail-box">
760
+ <h4>具备的能力</h4>
761
+ <ul>
762
+ <li>定位 <code>.starwork/workspace.json</code>。</li>
763
+ <li>检查 state schema、Core 版本、工作区类型、Kit、语言、Packs。</li>
764
+ <li>检查 Core 必需角色:入口规则、项目状态、当前工作。</li>
765
+ <li>检查正式事实源和业务工作区。</li>
766
+ <li>检查 Kit 源文件是否完整落地。</li>
767
+ <li>检查 Pack paths、seed 和 templates 是否存在。</li>
768
+ <li>支持人类可读输出和 JSON 输出。</li>
769
+ </ul>
770
+ </div>
771
+ <div class="detail-box">
772
+ <h4>执行步骤</h4>
773
+ <ol>
774
+ <li>从目标目录向上查找 StarWork 工作台。</li>
775
+ <li>读取并解析 workspace state。</li>
776
+ <li>按 Kit 推导 Core 关键角色路径。</li>
777
+ <li>检查 Kit 文件完整性。</li>
778
+ <li>读取已安装 Pack 的语言配置。</li>
779
+ <li>检查 Pack 的目录、seed、templates。</li>
780
+ <li>汇总 <code>pass</code>、<code>info</code>、<code>warn</code>、<code>fail</code>。</li>
781
+ <li>没有阻塞问题返回退出码 0,有阻塞问题返回 1。</li>
782
+ </ol>
783
+ </div>
784
+ </div>
785
+ </article>
786
+
787
+ <article class="detail-card">
788
+ <div>
789
+ <span class="mini-label">04 / 适配 Agent</span>
790
+ <h3><code>starwork adapt</code></h3>
791
+ <p>给不同 Agent 生成轻量入口。它不另起一套规则,而是把 Agent 引回 StarWork 统一规则源。</p>
792
+ <pre>node cli/bin/starwork.js adapt claude \
793
+ --target ./workspace \
794
+ --yes
795
+
796
+ node cli/bin/starwork.js adapt --agent cursor \
797
+ --target ./workspace \
798
+ --yes</pre>
799
+ </div>
800
+ <div class="detail-columns">
801
+ <div class="detail-box">
802
+ <h4>具备的能力</h4>
803
+ <ul>
804
+ <li>支持 <code>codex</code>、<code>claude</code>、<code>cursor</code>、<code>trae</code>、<code>all</code>。</li>
805
+ <li>Codex 复用 <code>AGENTS.md</code>,只登记适配状态。</li>
806
+ <li>Claude Code 生成 <code>CLAUDE.md</code>。</li>
807
+ <li>Cursor 生成 <code>.cursor/rules/starwork.mdc</code>。</li>
808
+ <li>Trae 生成 <code>.trae/rules/starwork.md</code>。</li>
809
+ <li>适配前检查工作台是否健康。</li>
810
+ <li>适配结果写入 workspace state 的 <code>adapters</code> 字段。</li>
811
+ </ul>
812
+ </div>
813
+ <div class="detail-box">
814
+ <h4>执行步骤</h4>
815
+ <ol>
816
+ <li>定位 StarWork 工作台。</li>
817
+ <li>读取 workspace state。</li>
818
+ <li>运行阻塞级 <code>doctor</code> 检查。</li>
819
+ <li>确定目标 Agent。</li>
820
+ <li>生成对应适配入口内容。</li>
821
+ <li>生成写入计划。</li>
822
+ <li>确认后写入适配文件。</li>
823
+ <li>更新 workspace state。</li>
824
+ </ol>
825
+ </div>
826
+ </div>
827
+ </article>
828
+
829
+ <article class="detail-card">
830
+ <div>
831
+ <span class="mini-label">05 / 安装 Pack</span>
832
+ <h3><code>starwork pack install</code></h3>
833
+ <p>在已有健康工作台上补装场景 Pack。适合先建通用工作台,再加入内容创作者等场景能力。</p>
834
+ <pre>node cli/bin/starwork.js pack install content-creator \
835
+ --target ./workspace \
836
+ --yes</pre>
837
+ </div>
838
+ <div class="detail-columns">
839
+ <div class="detail-box">
840
+ <h4>具备的能力</h4>
841
+ <ul>
842
+ <li>安装前运行阻塞级 <code>doctor</code> 检查。</li>
843
+ <li>读取 Pack 的 <code>pack.json</code> 和 <code>languages/&lt;language&gt;.json</code>。</li>
844
+ <li>校验 Pack 是否支持当前工作区类型。</li>
845
+ <li>创建 Pack 目录。</li>
846
+ <li>写入 Pack seed 和 templates。</li>
847
+ <li>把 Pack 规则追加到 <code>AGENTS.md</code>。</li>
848
+ <li>更新 workspace state 中的 <code>packs</code> 和路径配置。</li>
849
+ <li>已安装 Pack 不重复安装。</li>
850
+ </ul>
851
+ </div>
852
+ <div class="detail-box">
853
+ <h4>执行步骤</h4>
854
+ <ol>
855
+ <li>定位 StarWork 工作台。</li>
856
+ <li>读取 workspace state。</li>
857
+ <li>确认 Pack 尚未安装。</li>
858
+ <li>运行阻塞级 <code>doctor</code> 检查。</li>
859
+ <li>加载 Pack 与语言配置。</li>
860
+ <li>生成目录、seed、templates、规则追加计划。</li>
861
+ <li>确认后安全写入。</li>
862
+ <li>更新 workspace state,并建议重新运行 <code>doctor</code>。</li>
863
+ </ol>
864
+ </div>
865
+ </div>
866
+ </article>
867
+ </div>
868
+ </section>
869
+
870
+ <section class="section">
871
+ <div class="section-header">
872
+ <h2>用户流程</h2>
873
+ <p class="section-note">这套 CLI 的核心价值,是把协议和模板变成一条用户能走完的路。</p>
874
+ </div>
875
+
876
+ <div class="split">
877
+ <div class="panel">
878
+ <h3>第一次使用</h3>
879
+ <ul class="flow-list">
880
+ <li>用户运行 <code>init</code>,选择工作区类型和 Pack。</li>
881
+ <li>CLI 生成 Kit + Pack 的最终工作台。</li>
882
+ <li>用户运行 <code>doctor</code>,确认结构健康。</li>
883
+ <li>用户运行 <code>adapt</code>,为当前 Agent 生成入口。</li>
884
+ <li>用户开始真实工作。</li>
885
+ </ul>
886
+ </div>
887
+
888
+ <div class="panel">
889
+ <h3>中枢创建项目</h3>
890
+ <ul class="flow-list">
891
+ <li>用户先用 <code>init --type hub</code> 创建多项目中枢。</li>
892
+ <li>用户运行 <code>spawn</code>,从中枢生成一个新项目工作台。</li>
893
+ <li>CLI 写入项目自己的 state 和同步说明。</li>
894
+ <li>CLI 回写 Hub 的项目注册表。</li>
895
+ <li>用户进入新项目运行 <code>doctor</code>。</li>
896
+ </ul>
897
+ </div>
898
+
899
+ <div class="script">
900
+ <h3>典型脚本</h3>
901
+ <pre>node cli/bin/starwork.js init \
902
+ --type single-light \
903
+ --pack general \
904
+ --target ./creator-workspace \
905
+ --yes
906
+
907
+ node cli/bin/starwork.js doctor --target ./creator-workspace
908
+
909
+ node cli/bin/starwork.js adapt claude --target ./creator-workspace --yes
910
+
911
+ node cli/bin/starwork.js pack install content-creator \
912
+ --target ./creator-workspace \
913
+ --yes</pre>
914
+ </div>
915
+ </div>
916
+ </section>
917
+
918
+ <section class="section">
919
+ <div class="section-header">
920
+ <h2>现在怎么测试</h2>
921
+ <p class="section-note">建议先用临时目录完整跑一遍,不要在真实项目里第一次试。下面的命令都在 <code>/Users/shuxinding/satellite-starwork/product</code> 下执行。</p>
922
+ </div>
923
+
924
+ <div class="test-grid">
925
+ <div class="test-card">
926
+ <h3>方式一:跑自动测试</h3>
927
+ <p>这是最快确认 CLI 没坏的方法。当前测试覆盖 init、spawn、doctor、adapt、pack install 的核心路径。</p>
928
+ <pre>cd /Users/shuxinding/satellite-starwork/product
929
+ npm test</pre>
930
+ <p>预期结果:25 个测试全部通过。</p>
931
+ </div>
932
+
933
+ <div class="test-card">
934
+ <h3>方式二:手动跑完整链路</h3>
935
+ <p>这更接近真实用户体验,会在临时目录生成一个工作台,然后检查、适配、补装 Pack。</p>
936
+ <pre>cd /Users/shuxinding/satellite-starwork/product
937
+
938
+ TEST_DIR=/tmp/starwork-cli-manual-test
939
+ rm -rf "$TEST_DIR"
940
+
941
+ node cli/bin/starwork.js init \
942
+ --type single-light \
943
+ --pack general \
944
+ --target "$TEST_DIR" \
945
+ --yes
946
+
947
+ node cli/bin/starwork.js doctor --target "$TEST_DIR"
948
+
949
+ node cli/bin/starwork.js adapt claude --target "$TEST_DIR" --yes
950
+
951
+ node cli/bin/starwork.js pack install content-creator \
952
+ --target "$TEST_DIR" \
953
+ --yes
954
+
955
+ node cli/bin/starwork.js doctor --target "$TEST_DIR"</pre>
956
+ </div>
957
+
958
+ <div class="test-card">
959
+ <h3>方式三:手动测试 spawn</h3>
960
+ <p>这会先生成一个 Hub,再从 Hub 生成一个事项型项目工作台,并检查两边是否健康。</p>
961
+ <pre>cd /Users/shuxinding/satellite-starwork/product
962
+
963
+ HUB_DIR=/tmp/starwork-hub-test
964
+ PROJECT_DIR=/tmp/starwork-spawn-test
965
+ rm -rf "$HUB_DIR" "$PROJECT_DIR"
966
+
967
+ node cli/bin/starwork.js init \
968
+ --type hub \
969
+ --target "$HUB_DIR" \
970
+ --yes
971
+
972
+ node cli/bin/starwork.js spawn \
973
+ --hub "$HUB_DIR" \
974
+ --name "内容产品官网" \
975
+ --id content-site \
976
+ --target "$PROJECT_DIR" \
977
+ --mode matter \
978
+ --yes
979
+
980
+ node cli/bin/starwork.js doctor --target "$PROJECT_DIR"</pre>
981
+ </div>
982
+
983
+ <div class="test-card">
984
+ <h3>方式四:手动测试 blueprint</h3>
985
+ <p>这会用工作台定制单生成一个带定制目录和规则的卫星项目。</p>
986
+ <pre>cd /Users/shuxinding/satellite-starwork/product
987
+
988
+ BLUEPRINT_DIR=/tmp/starwork-blueprint-test
989
+ HUB_DIR=/tmp/starwork-blueprint-hub
990
+ PROJECT_DIR=/tmp/starwork-blueprint-project
991
+ rm -rf "$BLUEPRINT_DIR" "$HUB_DIR" "$PROJECT_DIR"
992
+ mkdir -p "$BLUEPRINT_DIR/rules"
993
+
994
+ cat > "$BLUEPRINT_DIR/rules/file-boundaries.md" <<'EOF'
995
+ 正式成果放在 {{paths.formal_source}}。
996
+ EOF
997
+
998
+ cat > "$BLUEPRINT_DIR/blueprint.json" <<'EOF'
999
+ {
1000
+ "schema": "starwork.spawn_blueprint.v0.1",
1001
+ "name": "定制项目",
1002
+ "project_id": "custom-project",
1003
+ "base": { "mode": "matter", "kit": "satellite-matter", "language": "zh" },
1004
+ "paths": {
1005
+ "formal_source": "交付物/确认版本/",
1006
+ "business_work_area": "事项/"
1007
+ },
1008
+ "folders": ["资料库/", "交付物/确认版本/"],
1009
+ "agent_rules": [
1010
+ { "slot": "project.file_boundaries", "from": "rules/file-boundaries.md" }
1011
+ ]
1012
+ }
1013
+ EOF
1014
+
1015
+ node cli/bin/starwork.js init \
1016
+ --type hub \
1017
+ --target "$HUB_DIR" \
1018
+ --yes
1019
+
1020
+ node cli/bin/starwork.js spawn \
1021
+ --hub "$HUB_DIR" \
1022
+ --target "$PROJECT_DIR" \
1023
+ --blueprint "$BLUEPRINT_DIR/blueprint.json" \
1024
+ --yes
1025
+
1026
+ node cli/bin/starwork.js doctor --target "$PROJECT_DIR"</pre>
1027
+ </div>
1028
+
1029
+ <div class="test-card">
1030
+ <h3>应该看到什么</h3>
1031
+ <ul class="flow-list">
1032
+ <li><code>doctor</code> 最后输出 <code>Workspace is healthy.</code></li>
1033
+ <li>目录里出现 <code>AGENTS.md</code>、<code>CLAUDE.md</code>、<code>.starwork/workspace.json</code>。</li>
1034
+ <li>补装 Pack 后出现 <code>选题池/</code>、<code>素材库/</code>、<code>草稿与脚本/</code>、<code>发布记录/</code> 等目录。</li>
1035
+ <li><code>.starwork/packs/content-creator/templates/</code> 下有内容模板。</li>
1036
+ </ul>
1037
+ </div>
1038
+
1039
+ <div class="test-card">
1040
+ <h3>故障测试</h3>
1041
+ <p>可以故意删掉关键文件,看 <code>doctor</code> 是否能发现问题。</p>
1042
+ <pre>rm "$TEST_DIR/AGENTS.md"
1043
+ node cli/bin/starwork.js doctor --target "$TEST_DIR"</pre>
1044
+ <p>预期结果:退出码为 1,并提示 <code>core.entry_rules.exists</code> 失败。</p>
1045
+ </div>
1046
+ </div>
1047
+ </section>
1048
+
1049
+ <section class="section">
1050
+ <div class="section-header">
1051
+ <h2>边界</h2>
1052
+ <p class="section-note">v0.1 的 CLI 是最小闭环,不是平台,不是账号系统,也不是 Agent Runtime。</p>
1053
+ </div>
1054
+
1055
+ <table class="table">
1056
+ <thead>
1057
+ <tr>
1058
+ <th>会做</th>
1059
+ <th>不做</th>
1060
+ </tr>
1061
+ </thead>
1062
+ <tbody>
1063
+ <tr>
1064
+ <td>生成工作台结构、写入 workspace state。</td>
1065
+ <td>不处理账号、登录、授权、云端同步。</td>
1066
+ </tr>
1067
+ <tr>
1068
+ <td>检查 Core、Kit、Pack 是否一致。</td>
1069
+ <td>不默认自动修复、不静默覆盖用户内容。</td>
1070
+ </tr>
1071
+ <tr>
1072
+ <td>生成 Agent 适配入口。</td>
1073
+ <td>不为不同 Agent 维护多套规则事实源。</td>
1074
+ </tr>
1075
+ <tr>
1076
+ <td>补装 Pack 并更新规则、模板和状态。</td>
1077
+ <td>不做 Pack 市场、卸载、升级和复杂冲突迁移。</td>
1078
+ </tr>
1079
+ </tbody>
1080
+ </table>
1081
+ </section>
1082
+
1083
+ <footer class="footer">
1084
+ <p>事实源:<code>product/cli/README.md</code>、<code>product/cli/*-spec.md</code>、<code>product/skills/starworkSpawn/</code> 和当前 CLI 实现。本文是 HTML 阅读版。</p>
1085
+ </footer>
1086
+ </main>
1087
+ </body>
1088
+ </html>