@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
package/README.md ADDED
@@ -0,0 +1,18 @@
1
+ # product
2
+
3
+ `product/` 是 StarWork 的正式产品事实源。
4
+
5
+ 凡是会进入 StarWork 产品、版本、协议、CLI、Pack、适配器、正式文档或发布物的内容,都放在这里。
6
+
7
+ 过程材料、调研笔记、临时草稿先放到 `matters/`,成熟后再晋升到本目录。
8
+
9
+ ## 目录
10
+
11
+ - `core/`:Core 协议、Kit、Profile、Capability 和 Preset。
12
+ - `cli/`:StarWork CLI 源码、命令规格和命令级文档。
13
+ - `packs/`:正式场景 Pack。
14
+ - `skills/`:StarWork 自研 Agent skill。
15
+ - `adapters/`:不同 Agent 的适配规则和实现。
16
+ - `schemas/`:结构化 schema。
17
+ - `examples/`:正式示例工作区或示例片段。
18
+ - `docs/`:产品文档、路线图、规格说明和对外说明。
@@ -0,0 +1,5 @@
1
+ # Adapters
2
+
3
+ 这里存放不同 Agent 的适配层,如 Codex、Claude Code、Cursor、Trae 等。
4
+
5
+ 适配层不混入 StarWork Core。
package/cli/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # StarWork CLI
2
+
3
+ 这里存放 StarWork CLI 源码、命令设计和命令级文档。
4
+
5
+ ## v0.1 边界
6
+
7
+ v0.1 只覆盖最小可用安装和适配能力:
8
+
9
+ - `starwork init`
10
+ - `starwork spawn`
11
+ - `starwork doctor`
12
+ - `starwork adapt`
13
+ - `starwork pack install content-creator`
14
+
15
+ 第一阶段重点:
16
+
17
+ - 能从空文件夹初始化 StarWork 工作台
18
+ - 能从多项目中枢生成被管理的新项目工作台
19
+ - 能检查工作区结构是否完整
20
+ - 能生成或更新当前 Agent 所需适配文件
21
+ - 能安装自媒体内容创作者 Pack
22
+ - 安装和更新时不覆盖用户已有内容
23
+
24
+ 当前 M2 CLI v0.1 最小闭环已落地:
25
+
26
+ - `starwork init` 第一版:可以初始化轻量单项目、长期单项目和多项目管理中枢,并通过 Pack 语言配置组装通用工作、内容创作者和中枢管理场景。
27
+ - `starwork spawn` 第一版:可以从健康 Hub 生成 `satellite-starter` / `satellite-matter` 项目工作台,支持 `--blueprint` 定制目录、路径、规则和 seed,并回写 Hub 项目注册表。
28
+ - `starwork doctor` 第一版:可以检查 workspace state、Core 必需角色、Kit 文件、正式事实源、业务工作区和 Pack 落地结果,并支持 `--json` 输出。
29
+ - `starwork adapt` 第一版:可以为 Codex、Claude Code、Cursor、Trae 生成或登记轻量适配入口。
30
+ - `starwork pack install` 第一版:可以在健康工作台上补装 Pack,并更新路径、规则、模板和 workspace state。
31
+
32
+ CLI 不在 v0.1 阶段处理账号、授权、消息平台 gateway 或复杂商业系统。
33
+
34
+ ## 命令规格
35
+
36
+ - [`starwork init` SPEC](./init-spec.md)
37
+ - [`starwork doctor` SPEC](./doctor-spec.md)
38
+ - [`starwork adapt` SPEC](./adapt-spec.md)
39
+ - [`starwork pack install` SPEC](./pack-install-spec.md)
40
+ - [`starwork spawn` SPEC](./spawn-spec.md)
41
+ - [`starwork spawn --blueprint` SPEC](./spawn-blueprint-spec.md)
42
+
43
+ ## 本地运行
44
+
45
+ ```bash
46
+ node cli/bin/starwork.js init --type single-light --pack general --dry-run
47
+ node cli/bin/starwork.js spawn --hub ./my-hub --name "新项目" --target ./new-project --mode matter --dry-run
48
+ node cli/bin/starwork.js spawn --hub ./my-hub --target ./new-project --blueprint ./blueprint.json --dry-run
49
+ node cli/bin/starwork.js doctor --target ./my-workspace
50
+ node cli/bin/starwork.js adapt claude --target ./my-workspace --yes
51
+ node cli/bin/starwork.js pack install content-creator --target ./my-workspace --yes
52
+ ```
@@ -0,0 +1,61 @@
1
+ # `starwork adapt` SPEC
2
+
3
+ ## 状态
4
+
5
+ - 版本:v0.1 draft
6
+ - 所属模块:StarWork CLI
7
+ - 命令:`starwork adapt`
8
+ - 实现状态:v0.1 最小实现已落地
9
+ - 目标:为健康的 StarWork 工作台生成或更新不同 Agent 的适配入口
10
+
11
+ ## 一句话定义
12
+
13
+ `starwork adapt` 是 StarWork 的 Agent 适配命令。
14
+
15
+ 它不复制一整套工作区规则,也不改变 Core 结构。它只给不同 Agent 放置一个轻量入口,让 Agent 知道:真正的规则源头是 `AGENTS.md`,开始工作前还要读取项目状态和当前工作。
16
+
17
+ ## 设计原则
18
+
19
+ 1. `AGENTS.md` 是跨 Agent 的规则事实源。
20
+ 2. Adapter 文件只是入口,不重新定义 Core。
21
+ 3. 适配前必须通过 `doctor` 的阻塞检查。
22
+ 4. 不静默覆盖已有适配文件;冲突时生成旁路文件。
23
+ 5. 适配结果写入 `.starwork/workspace.json` 的 `adapters` 字段。
24
+
25
+ ## 命令形式
26
+
27
+ ```bash
28
+ starwork adapt
29
+ starwork adapt claude
30
+ starwork adapt --agent cursor
31
+ starwork adapt all
32
+ starwork adapt --target ./my-workspace --yes
33
+ starwork adapt claude --dry-run
34
+ ```
35
+
36
+ ## v0.1 支持的 Agent
37
+
38
+ | Agent | 行为 |
39
+ |---|---|
40
+ | `codex` | 复用已有 `AGENTS.md`,并登记适配状态。 |
41
+ | `claude` | 生成 `CLAUDE.md`,指向 `AGENTS.md`、项目状态和当前工作。 |
42
+ | `cursor` | 生成 `.cursor/rules/starwork.mdc`。 |
43
+ | `trae` | 生成 `.trae/rules/starwork.md`。 |
44
+ | `all` | 一次生成全部适配入口。 |
45
+
46
+ 默认不传 Agent 时,使用 `codex`。
47
+
48
+ ## v0.1 不做什么
49
+
50
+ - 不为不同 Agent 写多套规则。
51
+ - 不覆盖用户已有适配文件。
52
+ - 不自动修复不健康工作台。
53
+ - 不处理账号、登录、插件安装或云端配置。
54
+
55
+ ## 验收标准
56
+
57
+ - `starwork adapt claude` 能生成 `CLAUDE.md`。
58
+ - `starwork adapt --agent cursor` 能生成 Cursor rules。
59
+ - 适配结果写入 `.starwork/workspace.json`。
60
+ - 工作台未通过 `doctor` 阻塞检查时拒绝适配。
61
+ - 非交互环境必须传入 `--yes` 或 `--dry-run`。
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { run } = require("../src/cli");
4
+
5
+ run(process.argv.slice(2)).catch((error) => {
6
+ console.error(`Error: ${error.message}`);
7
+ process.exitCode = 1;
8
+ });
@@ -0,0 +1,516 @@
1
+ # `starwork doctor` SPEC
2
+
3
+ ## 状态
4
+
5
+ - 版本:v0.1 draft
6
+ - 所属模块:StarWork CLI
7
+ - 命令:`starwork doctor`
8
+ - 前置状态:Core v0.1 已封版,`starwork init` 第一版已落地
9
+ - 实现状态:v0.1 最小实现已落地
10
+ - 目标:检查一个 StarWork 工作台是否健康,并告诉用户问题在哪里、严重到什么程度、下一步该做什么
11
+
12
+ ## 一句话定义
13
+
14
+ `starwork doctor` 是 StarWork 工作台的体检命令。
15
+
16
+ 它不负责创建工作台,不负责升级工作台,也不默认修复文件。它只做一件事:把 Core、Kit、Pack 和 Agent 适配文件之间的不一致检查出来,用人能看懂的方式报告。
17
+
18
+ ## 为什么先做 doctor
19
+
20
+ Core v0.1 已封版后,项目进入 M2:CLI v0.1 最小闭环。
21
+
22
+ `init` 已经能生成工作台,但还缺一个检查器来回答:
23
+
24
+ - 这个工作台是不是一个合法的 StarWork 工作台?
25
+ - Core 必需文件有没有缺?
26
+ - Kit 结构有没有被用户或 Agent 改坏?
27
+ - Pack 是否真的安装完整?
28
+ - 正式事实源、当前工作、草稿、参考资料的边界是否清楚?
29
+ - 后续 `adapt` 和 `pack install` 可以不可以安全执行?
30
+
31
+ 所以 `doctor` 是 `init` 之后、`adapt` 和 `pack install` 之前的关键桥梁。
32
+
33
+ ```text
34
+ init 负责生成
35
+
36
+ doctor 负责检查
37
+
38
+ adapt 负责适配 Agent
39
+
40
+ pack install 负责扩展场景
41
+ ```
42
+
43
+ ## 设计原则
44
+
45
+ 1. 只检查,不静默修复。
46
+ 2. 先检查结构,再检查内容边界。
47
+ 3. 优先使用 `.starwork/workspace.json`,但允许给出“疑似 StarWork 工作区”的提示。
48
+ 4. 输出必须让普通用户看懂,不只给机器可读结果。
49
+ 5. 检查项必须基于 Core、Kit、Pack 的正式定义,不能靠硬编码中文路径。
50
+ 6. v0.1 先做确定性检查,少做主观内容判断。
51
+ 7. 检查结果要能成为后续 `adapt` 和 `pack install` 的前置依据。
52
+
53
+ ## 命令形式
54
+
55
+ 默认用法:
56
+
57
+ ```bash
58
+ starwork doctor
59
+ ```
60
+
61
+ 指定目录:
62
+
63
+ ```bash
64
+ starwork doctor --target ./my-workspace
65
+ ```
66
+
67
+ 机器可读输出:
68
+
69
+ ```bash
70
+ starwork doctor --json
71
+ ```
72
+
73
+ 严格模式:
74
+
75
+ ```bash
76
+ starwork doctor --strict
77
+ ```
78
+
79
+ 详细模式:
80
+
81
+ ```bash
82
+ starwork doctor --verbose
83
+ ```
84
+
85
+ ## 参数
86
+
87
+ | 参数 | 说明 |
88
+ |---|---|
89
+ | `--target <path>` | 指定要检查的目录,默认当前目录。 |
90
+ | `--json` | 输出机器可读 JSON。 |
91
+ | `--strict` | 将部分 warning 视为失败,适合测试和发布前检查。 |
92
+ | `--verbose` | 显示通过项、检查来源和路径解析细节。 |
93
+ | `--help` | 显示帮助。 |
94
+
95
+ v0.1 暂不提供 `--fix`。修复动作后续可以单独设计为 `starwork doctor --fix` 或 `starwork repair`,但第一版不要混入。
96
+
97
+ ## 检查对象
98
+
99
+ `doctor` 检查的是一个“最终工作台”,也就是 `init` 生成的 Kit + Pack 结果。
100
+
101
+ 它至少需要读取:
102
+
103
+ - `.starwork/workspace.json`
104
+ - `AGENTS.md`
105
+ - Core 角色对应的项目状态文件
106
+ - Core 角色对应的当前工作文件
107
+ - workspace state 中声明的正式事实源
108
+ - workspace state 中声明的业务工作区
109
+ - 已安装 Pack 的目录、规则、模板和 seed 落地结果
110
+
111
+ 如果工作区没有 `.starwork/workspace.json`,但存在 `AGENTS.md`、`_系统/`、`_system/`、`事项/`、`matters/` 等明显 StarWork 痕迹,`doctor` 应报告为“疑似 StarWork 工作台,但缺少 workspace state”。
112
+
113
+ ## 检查分级
114
+
115
+ `doctor` 使用四级结果:
116
+
117
+ | 级别 | 含义 | 是否影响退出码 |
118
+ |---|---|---|
119
+ | `pass` | 检查通过。 | 否 |
120
+ | `info` | 提供上下文信息。 | 否 |
121
+ | `warn` | 有风险,但工作台仍可继续使用。 | 默认不影响;`--strict` 下影响 |
122
+ | `fail` | 缺少关键结构或存在破坏性问题。 | 是 |
123
+
124
+ ## 退出码
125
+
126
+ | 退出码 | 含义 |
127
+ |---|---|
128
+ | `0` | 没有 fail;非 strict 模式下 warning 不导致失败。 |
129
+ | `1` | 存在 fail;或 strict 模式下存在 warn。 |
130
+ | `2` | 命令参数错误、无法读取目录、JSON 解析失败等 CLI 执行错误。 |
131
+
132
+ ## 检查流程
133
+
134
+ ### Step 1:定位工作区
135
+
136
+ 从 `--target` 或当前目录开始向上查找:
137
+
138
+ ```text
139
+ .starwork/workspace.json
140
+ ```
141
+
142
+ 结果:
143
+
144
+ - 找到:使用该目录作为工作区根目录。
145
+ - 未找到但当前目录有 StarWork 痕迹:报告 `fail` 或 `warn`,提示运行 `starwork init` 或手动补齐 state。
146
+ - 未找到且无 StarWork 痕迹:报告不是 StarWork 工作台。
147
+
148
+ v0.1 判断标准:
149
+
150
+ | 情况 | 结果 |
151
+ |---|---|
152
+ | 找到 `.starwork/workspace.json` | 继续检查。 |
153
+ | 未找到 state,但有 `AGENTS.md` 和 `_系统/` / `_system/` | `fail`:缺少 workspace state。 |
154
+ | 完全没有 StarWork 痕迹 | `fail`:不是 StarWork 工作台。 |
155
+
156
+ ### Step 2:读取 workspace state
157
+
158
+ 读取 `.starwork/workspace.json`。
159
+
160
+ 必须检查:
161
+
162
+ - `schema` 是否为 `starwork.workspace.v0.1`
163
+ - `core` 是否兼容 `0.1`
164
+ - `workspace_type` 是否为 `single-light`、`single-matter` 或 `hub`
165
+ - `kit` 是否存在
166
+ - `language` 是否存在
167
+ - `packs` 是否是数组
168
+ - `paths.formal_source` 是否存在
169
+ - `paths.business_work_area` 是否存在
170
+
171
+ 示例:
172
+
173
+ ```json
174
+ {
175
+ "schema": "starwork.workspace.v0.1",
176
+ "core": "0.1",
177
+ "workspace_type": "single-matter",
178
+ "kit": "local-matter",
179
+ "packs": [
180
+ {
181
+ "id": "content-creator",
182
+ "version": "0.1.0",
183
+ "installed_at": "2026-05-15T00:00:00.000Z"
184
+ }
185
+ ],
186
+ "language": "zh",
187
+ "paths": {
188
+ "formal_source": "发布记录/",
189
+ "business_work_area": "草稿与脚本/"
190
+ },
191
+ "created_by": "starwork init"
192
+ }
193
+ ```
194
+
195
+ ### Step 3:解析期望结构
196
+
197
+ `doctor` 不能只凭中文路径硬编码检查。
198
+
199
+ 它应根据 workspace state 解析:
200
+
201
+ ```text
202
+ workspace.kit
203
+
204
+ Core kit / preset / profile
205
+
206
+ Core required roles
207
+
208
+ installed packs
209
+
210
+ Pack language config
211
+
212
+ expected paths, seed, templates
213
+ ```
214
+
215
+ v0.1 可以先用现有 Kit 目录作为事实依据:
216
+
217
+ - 检查 workspace state 中声明的 `kit` 是否存在于 `product/core/kits/<kit>/`
218
+ - 遍历 Kit 文件,检查目标工作台中对应文件是否存在
219
+ - 读取 Pack 的 `languages/<language>.json`,检查 Pack 目录、seed 和 templates 是否存在
220
+
221
+ 后续版本再把 preset / profile / capability 的解析做得更严格。
222
+
223
+ ### Step 4:Core baseline 检查
224
+
225
+ Core v0.1 必需角色:
226
+
227
+ | 角色 | 检查方式 |
228
+ |---|---|
229
+ | `agent.entry_rules` | 入口规则文件存在,当前 v0.1 通常为 `AGENTS.md`。 |
230
+ | `system.context.project_status` | 项目状态文件存在;中文本地项目通常为 `_系统/上下文/项目状态.md`,卫星项目可为 `_系统/上下文/当前项目.md`。 |
231
+ | `system.tasks.current_work` | 当前工作文件存在。 |
232
+
233
+ 检查项:
234
+
235
+ - 入口规则存在。
236
+ - 项目状态存在。
237
+ - 当前工作存在。
238
+ - 入口规则或项目状态中能找到正式事实源提示。
239
+ - workspace state 中声明的正式事实源路径存在。
240
+ - workspace state 中声明的业务工作区路径存在。
241
+
242
+ ### Step 5:Kit 完整性检查
243
+
244
+ 根据 `workspace.kit` 对应的 Kit 目录,检查:
245
+
246
+ - Kit 中的文件是否都存在于目标工作台。
247
+ - Kit 中应存在的目录是否存在。
248
+ - 关键文件是否被旁路文件替代,例如只有 `AGENTS.starwork-new.md` 而没有 `AGENTS.md`。
249
+ - 工作区类型和 Kit 是否匹配。
250
+
251
+ 工作区类型与 Kit 的 v0.1 匹配表:
252
+
253
+ | `workspace_type` | 允许 Kit |
254
+ |---|---|
255
+ | `single-light` | `local-starter` |
256
+ | `single-matter` | `local-matter` |
257
+ | `hub` | `hub` |
258
+
259
+ 卫星项目 Kit 目前不是 `init` 的普通入口,但 `doctor` 应能识别:
260
+
261
+ | Kit | 说明 |
262
+ |---|---|
263
+ | `satellite-starter` | 接入主库的轻量卫星项目。 |
264
+ | `satellite-matter` | 接入主库的事项型卫星项目。 |
265
+
266
+ ### Step 6:Capability 检查
267
+
268
+ v0.1 先检查确定性 capability。
269
+
270
+ | capability | 检查项 |
271
+ |---|---|
272
+ | `starter-outputs` | 参考资料目录、草稿目录、确认成果目录存在。 |
273
+ | `matter-mode` | 事项注册表存在;事项模板存在。 |
274
+ | `decisions` | 决策文件存在时检查位置;不强制所有工作区都有。 |
275
+ | `local-identity` | 本地身份目录存在。 |
276
+ | `local-lessons` | 本地教训目录存在。 |
277
+ | `main-repo-sync` | `.core-sync.json` 存在;只读快照边界清晰。 |
278
+ | `skill-mount` | skills 入口存在;缺失时给 warning。 |
279
+
280
+ 由于当前 `.starwork/workspace.json` 尚未记录 capability 列表,v0.1 可以通过 Kit 名称推断 capability。
281
+
282
+ 后续可以把 capability 列表写入 workspace state,让 `doctor` 检查更稳定。
283
+
284
+ ### Step 7:Pack 检查
285
+
286
+ 对每个已安装 Pack:
287
+
288
+ - Pack 源声明存在。
289
+ - Pack `compatible_core` 与 workspace core 兼容。
290
+ - Pack 支持当前 `workspace_type`。
291
+ - Pack 对应语言配置存在。
292
+ - `languages/<language>.json` 中声明的 `paths` 都存在。
293
+ - `seed` 中声明的目标文件都存在。
294
+ - `templates` 已复制到 `.starwork/packs/<pack-id>/templates/`。
295
+ - `paths.formal_source` 与 Pack `overrides.formal_source` 一致,除非用户显式覆盖。
296
+ - `paths.business_work_area` 与 Pack `overrides.business_work_area` 一致,除非用户显式覆盖。
297
+
298
+ 对 `content-creator` Pack,v0.1 应至少检查:
299
+
300
+ - 账号定位 / account-profile
301
+ - 选题池 / ideas
302
+ - 素材库 / materials
303
+ - 草稿与脚本 / drafts-and-scripts
304
+ - 发布记录 / published
305
+ - 数据复盘 / analytics-review
306
+ - content brief、publish record、weekly review 模板
307
+
308
+ 对 `hub-management` Pack,v0.1 应至少检查:
309
+
310
+ - 项目 / projects
311
+ - 项目联络 / coordination
312
+ - `.incoming/`
313
+ - identity
314
+ - lessons
315
+ - knowledge / 知识
316
+ - skills
317
+
318
+ ### Step 8:内容边界检查
319
+
320
+ v0.1 不做复杂语义判断,但可以做轻量启发式 warning。
321
+
322
+ 建议 warning:
323
+
324
+ - 当前工作文件过长,可能混入了大量历史记录。
325
+ - 项目状态文件过长,可能混入任务级流水。
326
+ - `decisions` 文件出现大量会议纪要式条目。
327
+ - 正式事实源路径指向草稿目录。
328
+ - 业务工作区路径指向只读参考资料目录。
329
+ - 参考资料目录中出现明显生成成果文件名,例如 `final`、`发布稿`、`确认版`。
330
+ - Matter 草稿目录被 workspace state 声明为正式事实源。
331
+
332
+ 这些检查只能给 warning,不应作为 fail。
333
+
334
+ ## 输出格式
335
+
336
+ ### 默认人类可读输出
337
+
338
+ 示例:
339
+
340
+ ```text
341
+ StarWork Doctor
342
+
343
+ Workspace: /path/to/workspace
344
+ Core: 0.1
345
+ Type: single-matter
346
+ Kit: local-matter
347
+ Packs: content-creator@0.1.0
348
+
349
+ Summary:
350
+ pass: 18
351
+ warn: 2
352
+ fail: 0
353
+
354
+ Checks:
355
+ [pass] workspace.state.exists
356
+ .starwork/workspace.json exists
357
+
358
+ [pass] core.entry_rules.exists
359
+ AGENTS.md exists
360
+
361
+ [pass] core.project_status.exists
362
+ _系统/上下文/项目状态.md exists
363
+
364
+ [warn] content.current_work.too_long
365
+ _系统/任务/当前工作.md is long; consider moving history to matters.
366
+
367
+ [warn] pack.formal_source.overridden
368
+ workspace formal source differs from Pack default: 发布记录/ -> 输出/确认成果/
369
+
370
+ Result:
371
+ Workspace is usable, with warnings.
372
+ ```
373
+
374
+ ### JSON 输出
375
+
376
+ `--json` 输出建议结构:
377
+
378
+ ```json
379
+ {
380
+ "schema": "starwork.doctor.result.v0.1",
381
+ "ok": true,
382
+ "strict_ok": false,
383
+ "workspace_root": "/path/to/workspace",
384
+ "workspace": {
385
+ "core": "0.1",
386
+ "workspace_type": "single-matter",
387
+ "kit": "local-matter",
388
+ "language": "zh",
389
+ "packs": ["content-creator"]
390
+ },
391
+ "summary": {
392
+ "pass": 18,
393
+ "info": 1,
394
+ "warn": 2,
395
+ "fail": 0
396
+ },
397
+ "checks": [
398
+ {
399
+ "id": "core.entry_rules.exists",
400
+ "level": "pass",
401
+ "message": "AGENTS.md exists",
402
+ "path": "AGENTS.md"
403
+ }
404
+ ]
405
+ }
406
+ ```
407
+
408
+ ## 检查 ID 命名
409
+
410
+ 检查 ID 应稳定,方便测试、文档和后续自动化使用。
411
+
412
+ 建议命名空间:
413
+
414
+ ```text
415
+ workspace.*
416
+ core.*
417
+ kit.*
418
+ capability.*
419
+ pack.*
420
+ content.*
421
+ adapter.*
422
+ ```
423
+
424
+ 示例:
425
+
426
+ - `workspace.state.exists`
427
+ - `workspace.state.schema`
428
+ - `core.entry_rules.exists`
429
+ - `core.project_status.exists`
430
+ - `core.current_work.exists`
431
+ - `core.formal_source.exists`
432
+ - `kit.files.complete`
433
+ - `capability.matter.registry_exists`
434
+ - `pack.source.exists`
435
+ - `pack.paths.exist`
436
+ - `pack.templates.installed`
437
+ - `content.current_work.too_long`
438
+
439
+ ## 与其他命令的关系
440
+
441
+ ### 与 `init`
442
+
443
+ `init` 完成后应建议用户运行 `doctor`。
444
+
445
+ `doctor` 应能检查 `init` 生成的 `.starwork/workspace.json` 和实际文件结构是否一致。
446
+
447
+ ### 与 `adapt`
448
+
449
+ `adapt` 运行前可以调用或建议运行 `doctor`。
450
+
451
+ 如果 `doctor` 发现 Core 必需角色缺失,`adapt` 不应继续生成 Agent 适配文件。
452
+
453
+ ### 与 `pack install`
454
+
455
+ `pack install` 前后都可以运行 `doctor`:
456
+
457
+ - 安装前:确认工作区是健康 Core 工作台。
458
+ - 安装后:确认 Pack 路径、规则、模板和 seed 都落地。
459
+
460
+ ## v0.1 不做什么
461
+
462
+ `starwork doctor` v0.1 不处理:
463
+
464
+ - 自动修复。
465
+ - 自动升级 Core 或 Kit。
466
+ - 自动安装缺失 Pack。
467
+ - 自动合并 `.starwork-new` 文件。
468
+ - 判断用户内容质量。
469
+ - 读取远程主库状态。
470
+ - 检查账号、授权、云服务或消息平台。
471
+ - 执行 Pack 脚本。
472
+
473
+ ## 最小实现范围
474
+
475
+ 第一版实现可以只覆盖:
476
+
477
+ 1. 定位 `.starwork/workspace.json`。
478
+ 2. 校验 workspace state 基本字段。
479
+ 3. 根据 `kit` 检查 Kit 文件是否存在。
480
+ 4. 检查 Core 必需角色文件存在。
481
+ 5. 检查正式事实源和业务工作区存在。
482
+ 6. 根据已安装 Pack 检查路径、seed 和 templates。
483
+ 7. 输出人类可读报告。
484
+ 8. 支持 `--json`。
485
+ 9. 设置正确退出码。
486
+
487
+ 暂缓到第二步:
488
+
489
+ - 内容边界启发式 warning。
490
+ - `--strict`。
491
+ - `--verbose`。
492
+ - Adapter 检查。
493
+ - 更完整的 capability 解析。
494
+
495
+ ## 验收标准
496
+
497
+ `starwork doctor` v0.1 可验收,至少满足:
498
+
499
+ - 对 `starwork init --type single-light --pack general` 生成的工作台返回成功。
500
+ - 对 `starwork init --type single-matter --pack content-creator` 生成的工作台返回成功。
501
+ - 对 `starwork init --type hub` 生成的工作台返回成功。
502
+ - 删除 `AGENTS.md` 后返回 fail。
503
+ - 删除正式事实源目录后返回 fail。
504
+ - 删除 Pack seed 文件后返回 fail。
505
+ - 非 StarWork 目录返回 fail,并提示先运行 `starwork init`。
506
+ - `--json` 输出稳定结构。
507
+ - 没有 fail 时退出码为 `0`,有 fail 时退出码为 `1`。
508
+
509
+ ## 后续问题
510
+
511
+ 后续实现前需要继续确认:
512
+
513
+ 1. `.starwork/workspace.json` 是否应补充 `capabilities` 字段。
514
+ 2. `doctor` 是否应该在默认输出里展示所有 pass,还是只展示 summary + warn/fail。
515
+ 3. `strict` 模式是否进入 v0.1 第一版实现。
516
+ 4. Adapter 检查是放在 `doctor` 里,还是等 `adapt` 命令成熟后再纳入。