ai-spector 0.8.97 → 0.9.2

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 (329) hide show
  1. package/README.md +49 -16
  2. package/README.vi.md +59 -9
  3. package/dist/cli.js +16 -300
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/comments/paths.d.ts +2 -0
  6. package/dist/core/comments/paths.d.ts.map +1 -1
  7. package/dist/core/comments/paths.js +6 -0
  8. package/dist/core/comments/paths.js.map +1 -1
  9. package/dist/core/comments/storage.d.ts.map +1 -1
  10. package/dist/core/comments/storage.js +3 -32
  11. package/dist/core/comments/storage.js.map +1 -1
  12. package/dist/core/config/docflow-paths.d.ts +1 -0
  13. package/dist/core/config/docflow-paths.d.ts.map +1 -1
  14. package/dist/core/config/docflow-paths.js +4 -2
  15. package/dist/core/config/docflow-paths.js.map +1 -1
  16. package/dist/core/config/load.d.ts.map +1 -1
  17. package/dist/core/config/load.js +104 -15
  18. package/dist/core/config/load.js.map +1 -1
  19. package/dist/core/docops/bootstrap.d.ts.map +1 -1
  20. package/dist/core/docops/bootstrap.js +2 -0
  21. package/dist/core/docops/bootstrap.js.map +1 -1
  22. package/dist/core/docops/capabilities.d.ts +1 -16
  23. package/dist/core/docops/capabilities.d.ts.map +1 -1
  24. package/dist/core/docops/capabilities.js +1 -41
  25. package/dist/core/docops/capabilities.js.map +1 -1
  26. package/dist/core/docops/config.d.ts +0 -2
  27. package/dist/core/docops/config.d.ts.map +1 -1
  28. package/dist/core/docops/config.js +9 -29
  29. package/dist/core/docops/config.js.map +1 -1
  30. package/dist/core/docops/migrate.d.ts +10 -0
  31. package/dist/core/docops/migrate.d.ts.map +1 -1
  32. package/dist/core/docops/migrate.js +39 -6
  33. package/dist/core/docops/migrate.js.map +1 -1
  34. package/dist/core/docops/paths.d.ts +0 -2
  35. package/dist/core/docops/paths.d.ts.map +1 -1
  36. package/dist/core/docops/paths.js +0 -5
  37. package/dist/core/docops/paths.js.map +1 -1
  38. package/dist/core/engine/gate-mcp.d.ts +6 -0
  39. package/dist/core/engine/gate-mcp.d.ts.map +1 -0
  40. package/dist/core/engine/gate-mcp.js +49 -0
  41. package/dist/core/engine/gate-mcp.js.map +1 -0
  42. package/dist/core/engine/gate.d.ts +9 -0
  43. package/dist/core/engine/gate.d.ts.map +1 -0
  44. package/dist/core/engine/gate.js +17 -0
  45. package/dist/core/engine/gate.js.map +1 -0
  46. package/dist/core/engine/load.d.ts +5 -0
  47. package/dist/core/engine/load.d.ts.map +1 -0
  48. package/dist/core/engine/load.js +38 -0
  49. package/dist/core/engine/load.js.map +1 -0
  50. package/dist/core/engine/paths.d.ts +11 -0
  51. package/dist/core/engine/paths.d.ts.map +1 -0
  52. package/dist/core/engine/paths.js +11 -0
  53. package/dist/core/engine/paths.js.map +1 -0
  54. package/dist/core/engine/types.d.ts +32 -0
  55. package/dist/core/engine/types.d.ts.map +1 -0
  56. package/dist/core/engine/types.js +2 -0
  57. package/dist/core/engine/types.js.map +1 -0
  58. package/dist/core/operations/check.d.ts.map +1 -1
  59. package/dist/core/operations/check.js +167 -65
  60. package/dist/core/operations/check.js.map +1 -1
  61. package/dist/core/operations/contract-cli.d.ts +4 -0
  62. package/dist/core/operations/contract-cli.d.ts.map +1 -0
  63. package/dist/core/operations/contract-cli.js +435 -0
  64. package/dist/core/operations/contract-cli.js.map +1 -0
  65. package/dist/core/operations/contract.d.ts +56 -0
  66. package/dist/core/operations/contract.d.ts.map +1 -0
  67. package/dist/core/operations/contract.js +240 -0
  68. package/dist/core/operations/contract.js.map +1 -0
  69. package/dist/core/operations/docops.d.ts +1 -0
  70. package/dist/core/operations/docops.d.ts.map +1 -1
  71. package/dist/core/operations/docops.js +17 -1
  72. package/dist/core/operations/docops.js.map +1 -1
  73. package/dist/core/operations/init.d.ts.map +1 -1
  74. package/dist/core/operations/init.js +6 -12
  75. package/dist/core/operations/init.js.map +1 -1
  76. package/dist/core/operations/prototype.js +4 -4
  77. package/dist/core/operations/prototype.js.map +1 -1
  78. package/dist/core/operations/setup.d.ts.map +1 -1
  79. package/dist/core/operations/setup.js +4 -2
  80. package/dist/core/operations/setup.js.map +1 -1
  81. package/dist/core/operations/sync-claude.d.ts.map +1 -1
  82. package/dist/core/operations/sync-claude.js +8 -3
  83. package/dist/core/operations/sync-claude.js.map +1 -1
  84. package/dist/core/operations/sync-cursor.d.ts.map +1 -1
  85. package/dist/core/operations/sync-cursor.js +8 -3
  86. package/dist/core/operations/sync-cursor.js.map +1 -1
  87. package/dist/core/operations/task.d.ts +1 -0
  88. package/dist/core/operations/task.d.ts.map +1 -1
  89. package/dist/core/operations/task.js +1 -0
  90. package/dist/core/operations/task.js.map +1 -1
  91. package/dist/core/operations/work.d.ts +44 -0
  92. package/dist/core/operations/work.d.ts.map +1 -0
  93. package/dist/core/operations/work.js +356 -0
  94. package/dist/core/operations/work.js.map +1 -0
  95. package/dist/core/prototype/build-manifest.d.ts.map +1 -1
  96. package/dist/core/prototype/build-manifest.js +3 -2
  97. package/dist/core/prototype/build-manifest.js.map +1 -1
  98. package/dist/core/prototype/config.d.ts.map +1 -1
  99. package/dist/core/prototype/config.js +34 -45
  100. package/dist/core/prototype/config.js.map +1 -1
  101. package/dist/core/reviews/paths.d.ts +3 -2
  102. package/dist/core/reviews/paths.d.ts.map +1 -1
  103. package/dist/core/reviews/paths.js +2 -7
  104. package/dist/core/reviews/paths.js.map +1 -1
  105. package/dist/core/reviews/storage.d.ts.map +1 -1
  106. package/dist/core/reviews/storage.js +12 -35
  107. package/dist/core/reviews/storage.js.map +1 -1
  108. package/dist/core/scaffold/claude-from-cursor.d.ts.map +1 -1
  109. package/dist/core/scaffold/claude-from-cursor.js +23 -19
  110. package/dist/core/scaffold/claude-from-cursor.js.map +1 -1
  111. package/dist/core/upgrade/checklist.json +12 -17
  112. package/dist/core/upgrade/detect.d.ts.map +1 -1
  113. package/dist/core/upgrade/detect.js +8 -8
  114. package/dist/core/upgrade/detect.js.map +1 -1
  115. package/dist/core/upgrade/scan.d.ts.map +1 -1
  116. package/dist/core/upgrade/scan.js +9 -3
  117. package/dist/core/upgrade/scan.js.map +1 -1
  118. package/dist/core/upgrade/stamp.d.ts +2 -0
  119. package/dist/core/upgrade/stamp.d.ts.map +1 -1
  120. package/dist/core/upgrade/stamp.js +17 -9
  121. package/dist/core/upgrade/stamp.js.map +1 -1
  122. package/dist/interfaces/mcp/assert-tool-allowed.d.ts +2 -0
  123. package/dist/interfaces/mcp/assert-tool-allowed.d.ts.map +1 -0
  124. package/dist/interfaces/mcp/assert-tool-allowed.js +13 -0
  125. package/dist/interfaces/mcp/assert-tool-allowed.js.map +1 -0
  126. package/dist/interfaces/mcp/format-tool-error.d.ts.map +1 -1
  127. package/dist/interfaces/mcp/format-tool-error.js +7 -0
  128. package/dist/interfaces/mcp/format-tool-error.js.map +1 -1
  129. package/dist/interfaces/mcp/mcp-precondition.d.ts +19 -0
  130. package/dist/interfaces/mcp/mcp-precondition.d.ts.map +1 -0
  131. package/dist/interfaces/mcp/mcp-precondition.js +28 -0
  132. package/dist/interfaces/mcp/mcp-precondition.js.map +1 -0
  133. package/dist/interfaces/mcp/schemas.d.ts +164 -21
  134. package/dist/interfaces/mcp/schemas.d.ts.map +1 -1
  135. package/dist/interfaces/mcp/schemas.js +99 -0
  136. package/dist/interfaces/mcp/schemas.js.map +1 -1
  137. package/dist/interfaces/mcp/server.js +184 -17
  138. package/dist/interfaces/mcp/server.js.map +1 -1
  139. package/dist/interfaces/mcp/tool-names.d.ts +1 -1
  140. package/dist/interfaces/mcp/tool-names.d.ts.map +1 -1
  141. package/dist/interfaces/mcp/tool-names.js +14 -0
  142. package/dist/interfaces/mcp/tool-names.js.map +1 -1
  143. package/dist/interfaces/mcp/tools/cocoindex.d.ts.map +1 -1
  144. package/dist/interfaces/mcp/tools/cocoindex.js +3 -0
  145. package/dist/interfaces/mcp/tools/cocoindex.js.map +1 -1
  146. package/dist/interfaces/mcp/tools/comments.d.ts.map +1 -1
  147. package/dist/interfaces/mcp/tools/comments.js +10 -0
  148. package/dist/interfaces/mcp/tools/comments.js.map +1 -1
  149. package/dist/interfaces/mcp/tools/contract.d.ts +7 -0
  150. package/dist/interfaces/mcp/tools/contract.d.ts.map +1 -0
  151. package/dist/interfaces/mcp/tools/contract.js +14 -0
  152. package/dist/interfaces/mcp/tools/contract.js.map +1 -0
  153. package/dist/interfaces/mcp/tools/graph.d.ts.map +1 -1
  154. package/dist/interfaces/mcp/tools/graph.js +6 -0
  155. package/dist/interfaces/mcp/tools/graph.js.map +1 -1
  156. package/dist/interfaces/mcp/tools/index.d.ts.map +1 -1
  157. package/dist/interfaces/mcp/tools/index.js +2 -0
  158. package/dist/interfaces/mcp/tools/index.js.map +1 -1
  159. package/dist/interfaces/mcp/tools/reviews.d.ts.map +1 -1
  160. package/dist/interfaces/mcp/tools/reviews.js +17 -0
  161. package/dist/interfaces/mcp/tools/reviews.js.map +1 -1
  162. package/dist/interfaces/mcp/tools/task.d.ts.map +1 -1
  163. package/dist/interfaces/mcp/tools/task.js +20 -0
  164. package/dist/interfaces/mcp/tools/task.js.map +1 -1
  165. package/dist/interfaces/mcp/tools/work.d.ts +14 -0
  166. package/dist/interfaces/mcp/tools/work.d.ts.map +1 -0
  167. package/dist/interfaces/mcp/tools/work.js +77 -0
  168. package/dist/interfaces/mcp/tools/work.js.map +1 -0
  169. package/package.json +1 -1
  170. package/scaffold/.docops/prototype/config.json +9 -0
  171. package/scaffold/claude/.claude/skills/_skill-router.md +58 -79
  172. package/scaffold/claude/.claude/skills/ai-spector/references/runbook.md +383 -0
  173. package/scaffold/claude/.claude/skills/ai-spector/skill.md +53 -84
  174. package/scaffold/claude/.claude/skills/ai-spector-contract/references/runbook.md +195 -0
  175. package/scaffold/claude/.claude/skills/ai-spector-contract/skill.md +44 -0
  176. package/scaffold/claude/.claude/skills/ai-spector-generate/references/runbook.md +271 -0
  177. package/scaffold/claude/.claude/skills/ai-spector-generate/skill.md +44 -32
  178. package/scaffold/claude/.claude/skills/ai-spector-graph/references/search.md +86 -0
  179. package/scaffold/claude/.claude/skills/ai-spector-graph/skill.md +18 -12
  180. package/scaffold/claude/CLAUDE.md +23 -19
  181. package/scaffold/claude/WORKFLOW.md +37 -50
  182. package/scaffold/cursor/WORKFLOW.md +37 -49
  183. package/scaffold/cursor/skills/_skill-router.md +58 -79
  184. package/scaffold/cursor/skills/ai-spector/SKILL.md +59 -84
  185. package/scaffold/cursor/skills/ai-spector/references/runbook.md +383 -0
  186. package/scaffold/cursor/skills/ai-spector-contract/SKILL.md +52 -0
  187. package/scaffold/cursor/skills/ai-spector-contract/references/runbook.md +195 -0
  188. package/scaffold/cursor/skills/ai-spector-generate/SKILL.md +52 -32
  189. package/scaffold/cursor/skills/ai-spector-generate/references/runbook.md +271 -0
  190. package/scaffold/cursor/skills/ai-spector-graph/SKILL.md +19 -12
  191. package/scaffold/cursor/skills/ai-spector-graph/references/search.md +86 -0
  192. package/scaffold/claude/.claude/skills/ai-spector-adopt/references/runbook.md +0 -242
  193. package/scaffold/claude/.claude/skills/ai-spector-adopt/skill.md +0 -28
  194. package/scaffold/claude/.claude/skills/ai-spector-check/skill.md +0 -34
  195. package/scaffold/claude/.claude/skills/ai-spector-course/references/course-guide.md +0 -69
  196. package/scaffold/claude/.claude/skills/ai-spector-course/skill.md +0 -57
  197. package/scaffold/claude/.claude/skills/ai-spector-docops/references/runbook.md +0 -168
  198. package/scaffold/claude/.claude/skills/ai-spector-docops/skill.md +0 -32
  199. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/references/bd-context/api-detail.md +0 -27
  200. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/references/bd-context/api-list.md +0 -26
  201. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/references/bd-context/db-design.md +0 -22
  202. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/references/bd-context/screen-detail.md +0 -26
  203. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/references/bd-context/screen-list.md +0 -27
  204. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/references/runbook.md +0 -114
  205. package/scaffold/claude/.claude/skills/ai-spector-generate-basic-design/skill.md +0 -87
  206. package/scaffold/claude/.claude/skills/ai-spector-generate-detail-design/references/dd-context/common-chapters.md +0 -20
  207. package/scaffold/claude/.claude/skills/ai-spector-generate-detail-design/references/dd-context/feature-detail.md +0 -22
  208. package/scaffold/claude/.claude/skills/ai-spector-generate-detail-design/references/dd-context/feature-list.md +0 -17
  209. package/scaffold/claude/.claude/skills/ai-spector-generate-detail-design/references/runbook.md +0 -68
  210. package/scaffold/claude/.claude/skills/ai-spector-generate-detail-design/skill.md +0 -81
  211. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/references/auth-picker.md +0 -61
  212. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/references/prototype-graph-context.md +0 -115
  213. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/references/runbook.md +0 -381
  214. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/references/spa-prototype.md +0 -83
  215. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/references/stack-picker.md +0 -135
  216. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/references/theme-picker.md +0 -120
  217. package/scaffold/claude/.claude/skills/ai-spector-generate-prototype/skill.md +0 -32
  218. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/runbook.md +0 -107
  219. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/data-requirements.md +0 -10
  220. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/external-interfaces.md +0 -10
  221. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/feature-detail.md +0 -20
  222. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/introduction.md +0 -12
  223. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/overall-description.md +0 -11
  224. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/quality-attributes.md +0 -11
  225. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/references/srs-context/use-case-detail.md +0 -26
  226. package/scaffold/claude/.claude/skills/ai-spector-generate-srs/skill.md +0 -99
  227. package/scaffold/claude/.claude/skills/ai-spector-lang-status/skill.md +0 -127
  228. package/scaffold/claude/.claude/skills/ai-spector-resolve-comments/references/runbook.md +0 -180
  229. package/scaffold/claude/.claude/skills/ai-spector-resolve-comments/skill.md +0 -32
  230. package/scaffold/claude/.claude/skills/ai-spector-resolve-prototype-comments/references/runbook.md +0 -122
  231. package/scaffold/claude/.claude/skills/ai-spector-resolve-prototype-comments/skill.md +0 -34
  232. package/scaffold/claude/.claude/skills/ai-spector-resolve-task/references/resolve-execute.md +0 -55
  233. package/scaffold/claude/.claude/skills/ai-spector-resolve-task/references/resolve-full.md +0 -36
  234. package/scaffold/claude/.claude/skills/ai-spector-resolve-task/references/resolve-standard.md +0 -51
  235. package/scaffold/claude/.claude/skills/ai-spector-resolve-task/references/runbook.md +0 -195
  236. package/scaffold/claude/.claude/skills/ai-spector-resolve-task/references/tier-router.md +0 -62
  237. package/scaffold/claude/.claude/skills/ai-spector-resolve-task/skill.md +0 -76
  238. package/scaffold/claude/.claude/skills/ai-spector-resolve-translation/references/runbook.md +0 -167
  239. package/scaffold/claude/.claude/skills/ai-spector-resolve-translation/skill.md +0 -32
  240. package/scaffold/claude/.claude/skills/ai-spector-review/references/custom-checklists.md +0 -139
  241. package/scaffold/claude/.claude/skills/ai-spector-review/references/readiness-compliance.md +0 -82
  242. package/scaffold/claude/.claude/skills/ai-spector-review/references/runbook.md +0 -407
  243. package/scaffold/claude/.claude/skills/ai-spector-review/skill.md +0 -46
  244. package/scaffold/claude/.claude/skills/ai-spector-search/skill.md +0 -151
  245. package/scaffold/claude/.claude/skills/ai-spector-setup/references/cli-setup.md +0 -72
  246. package/scaffold/claude/.claude/skills/ai-spector-setup/references/runbook.md +0 -155
  247. package/scaffold/claude/.claude/skills/ai-spector-setup/skill.md +0 -37
  248. package/scaffold/claude/.claude/skills/ai-spector-sync-audit/skill.md +0 -29
  249. package/scaffold/claude/.claude/skills/ai-spector-task/references/runbook.md +0 -103
  250. package/scaffold/claude/.claude/skills/ai-spector-task/skill.md +0 -34
  251. package/scaffold/claude/.claude/skills/ai-spector-template-import/references/import-aspects.md +0 -79
  252. package/scaffold/claude/.claude/skills/ai-spector-template-import/references/import-clarify.md +0 -60
  253. package/scaffold/claude/.claude/skills/ai-spector-template-import/references/pack-gap-matrix.md +0 -39
  254. package/scaffold/claude/.claude/skills/ai-spector-template-import/references/readiness-setup.md +0 -88
  255. package/scaffold/claude/.claude/skills/ai-spector-template-import/references/runbook.md +0 -117
  256. package/scaffold/claude/.claude/skills/ai-spector-template-import/references/skill-outline.md +0 -301
  257. package/scaffold/claude/.claude/skills/ai-spector-template-import/skill.md +0 -42
  258. package/scaffold/claude/.claude/skills/ai-spector-upgrade/references/runbook.md +0 -137
  259. package/scaffold/claude/.claude/skills/ai-spector-upgrade/skill.md +0 -24
  260. package/scaffold/cursor/skills/ai-spector-adopt/SKILL.md +0 -32
  261. package/scaffold/cursor/skills/ai-spector-adopt/references/runbook.md +0 -242
  262. package/scaffold/cursor/skills/ai-spector-check/SKILL.md +0 -34
  263. package/scaffold/cursor/skills/ai-spector-course/SKILL.md +0 -57
  264. package/scaffold/cursor/skills/ai-spector-course/references/course-guide.md +0 -69
  265. package/scaffold/cursor/skills/ai-spector-docops/SKILL.md +0 -36
  266. package/scaffold/cursor/skills/ai-spector-docops/references/runbook.md +0 -168
  267. package/scaffold/cursor/skills/ai-spector-generate-basic-design/SKILL.md +0 -90
  268. package/scaffold/cursor/skills/ai-spector-generate-basic-design/references/bd-context/api-detail.md +0 -27
  269. package/scaffold/cursor/skills/ai-spector-generate-basic-design/references/bd-context/api-list.md +0 -26
  270. package/scaffold/cursor/skills/ai-spector-generate-basic-design/references/bd-context/db-design.md +0 -22
  271. package/scaffold/cursor/skills/ai-spector-generate-basic-design/references/bd-context/screen-detail.md +0 -26
  272. package/scaffold/cursor/skills/ai-spector-generate-basic-design/references/bd-context/screen-list.md +0 -27
  273. package/scaffold/cursor/skills/ai-spector-generate-basic-design/references/runbook.md +0 -114
  274. package/scaffold/cursor/skills/ai-spector-generate-detail-design/SKILL.md +0 -84
  275. package/scaffold/cursor/skills/ai-spector-generate-detail-design/references/dd-context/common-chapters.md +0 -20
  276. package/scaffold/cursor/skills/ai-spector-generate-detail-design/references/dd-context/feature-detail.md +0 -22
  277. package/scaffold/cursor/skills/ai-spector-generate-detail-design/references/dd-context/feature-list.md +0 -17
  278. package/scaffold/cursor/skills/ai-spector-generate-detail-design/references/runbook.md +0 -68
  279. package/scaffold/cursor/skills/ai-spector-generate-prototype/SKILL.md +0 -34
  280. package/scaffold/cursor/skills/ai-spector-generate-prototype/references/auth-picker.md +0 -61
  281. package/scaffold/cursor/skills/ai-spector-generate-prototype/references/prototype-graph-context.md +0 -115
  282. package/scaffold/cursor/skills/ai-spector-generate-prototype/references/runbook.md +0 -381
  283. package/scaffold/cursor/skills/ai-spector-generate-prototype/references/spa-prototype.md +0 -83
  284. package/scaffold/cursor/skills/ai-spector-generate-prototype/references/stack-picker.md +0 -135
  285. package/scaffold/cursor/skills/ai-spector-generate-prototype/references/theme-picker.md +0 -120
  286. package/scaffold/cursor/skills/ai-spector-generate-srs/SKILL.md +0 -102
  287. package/scaffold/cursor/skills/ai-spector-generate-srs/references/runbook.md +0 -107
  288. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/data-requirements.md +0 -10
  289. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/external-interfaces.md +0 -10
  290. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/feature-detail.md +0 -20
  291. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/introduction.md +0 -12
  292. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/overall-description.md +0 -11
  293. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/quality-attributes.md +0 -11
  294. package/scaffold/cursor/skills/ai-spector-generate-srs/references/srs-context/use-case-detail.md +0 -26
  295. package/scaffold/cursor/skills/ai-spector-lang-status/SKILL.md +0 -132
  296. package/scaffold/cursor/skills/ai-spector-resolve-comments/SKILL.md +0 -34
  297. package/scaffold/cursor/skills/ai-spector-resolve-comments/references/runbook.md +0 -180
  298. package/scaffold/cursor/skills/ai-spector-resolve-prototype-comments/SKILL.md +0 -37
  299. package/scaffold/cursor/skills/ai-spector-resolve-prototype-comments/references/runbook.md +0 -122
  300. package/scaffold/cursor/skills/ai-spector-resolve-task/SKILL.md +0 -80
  301. package/scaffold/cursor/skills/ai-spector-resolve-task/references/resolve-execute.md +0 -55
  302. package/scaffold/cursor/skills/ai-spector-resolve-task/references/resolve-full.md +0 -36
  303. package/scaffold/cursor/skills/ai-spector-resolve-task/references/resolve-standard.md +0 -51
  304. package/scaffold/cursor/skills/ai-spector-resolve-task/references/runbook.md +0 -195
  305. package/scaffold/cursor/skills/ai-spector-resolve-task/references/tier-router.md +0 -62
  306. package/scaffold/cursor/skills/ai-spector-resolve-translation/SKILL.md +0 -37
  307. package/scaffold/cursor/skills/ai-spector-resolve-translation/references/runbook.md +0 -167
  308. package/scaffold/cursor/skills/ai-spector-review/SKILL.md +0 -50
  309. package/scaffold/cursor/skills/ai-spector-review/references/custom-checklists.md +0 -139
  310. package/scaffold/cursor/skills/ai-spector-review/references/readiness-compliance.md +0 -82
  311. package/scaffold/cursor/skills/ai-spector-review/references/runbook.md +0 -407
  312. package/scaffold/cursor/skills/ai-spector-search/SKILL.md +0 -154
  313. package/scaffold/cursor/skills/ai-spector-setup/SKILL.md +0 -41
  314. package/scaffold/cursor/skills/ai-spector-setup/references/cli-setup.md +0 -72
  315. package/scaffold/cursor/skills/ai-spector-setup/references/runbook.md +0 -155
  316. package/scaffold/cursor/skills/ai-spector-sync-audit/SKILL.md +0 -34
  317. package/scaffold/cursor/skills/ai-spector-task/SKILL.md +0 -36
  318. package/scaffold/cursor/skills/ai-spector-task/references/runbook.md +0 -103
  319. package/scaffold/cursor/skills/ai-spector-template-import/SKILL.md +0 -45
  320. package/scaffold/cursor/skills/ai-spector-template-import/references/import-aspects.md +0 -79
  321. package/scaffold/cursor/skills/ai-spector-template-import/references/import-clarify.md +0 -60
  322. package/scaffold/cursor/skills/ai-spector-template-import/references/pack-gap-matrix.md +0 -39
  323. package/scaffold/cursor/skills/ai-spector-template-import/references/readiness-setup.md +0 -88
  324. package/scaffold/cursor/skills/ai-spector-template-import/references/runbook.md +0 -117
  325. package/scaffold/cursor/skills/ai-spector-template-import/references/skill-outline.md +0 -301
  326. package/scaffold/cursor/skills/ai-spector-upgrade/SKILL.md +0 -29
  327. package/scaffold/cursor/skills/ai-spector-upgrade/references/runbook.md +0 -137
  328. /package/scaffold/claude/.claude/skills/{ai-spector-sync-audit/references/runbook.md → ai-spector-graph/references/sync-audit.md} +0 -0
  329. /package/scaffold/cursor/skills/{ai-spector-sync-audit/references/runbook.md → ai-spector-graph/references/sync-audit.md} +0 -0
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # AI Spector
2
2
 
3
- Documentation workflow in **Cursor** or **Claude Code**: traceability graph, SRS, basic design, and UI prototypes (static HTML or SPA). **Describe what you need in chat** — the agent matches a **skill**, reads its runbook, and runs `ai-spector` MCP tools. You rarely touch the terminal.
3
+ Documentation workflow in **Cursor** or **Claude Code**: traceability graph, SRS, basic design, and UI prototypes (static HTML or SPA). **Describe what you need in chat** — the agent matches one of **4 skills**, reads its runbook, and runs `ai-spector` MCP tools. You rarely touch the terminal.
4
+
5
+ **Kari Writer** owns the `.docops/` contract only (no agent skills). ai-spector is an optional local tool that implements that contract via git files.
4
6
 
5
7
  **Needs:** Node 20+, Git, [Cursor](https://cursor.com) and/or [Claude Code](https://docs.anthropic.com/en/docs/claude-code), Python 3.11+ *(optional — CocoIndex semantic search)*.
6
8
 
@@ -43,16 +45,27 @@ The init wizard prompts for editor (Cursor, Claude Code, or both), languages, gi
43
45
 
44
46
  Creates:
45
47
 
46
- - `.ai-spector/` — config, graph, templates
47
48
  - `.docops/` — Writer contract (`docops.config.json`, comments, review-queue, prototype metadata)
49
+ - `.ai-spector/` — engine store (`engine.json`, graph, registry, work sessions)
48
50
  - `docs/data-source/`, `docs/srs/`, `docs/basic-design/`
49
- - **Cursor:** `.cursor/` — skills, rules, `mcp.json`
50
- - **Claude Code:** `CLAUDE.md` + `.claude/skills/` + `.mcp.json`
51
+ - **Cursor:** `.cursor/` — **4 skills**, rules, `mcp.json`
52
+ - **Claude Code:** `CLAUDE.md` + `.claude/skills/` (4 skills) + `.mcp.json`
51
53
  - Pre-commit hook (when git is available)
52
54
 
53
- **Writer contract:** Kari Writer reads `.docops/docops.config.json` for capabilities and paths (see `kari-writer/contracts/CONTRACT.md` in the docs-ops meta-repo). ai-spector `init` scaffolds `.docops/` alongside legacy `.ai-spector/` during transition (`DOCOPS_DUAL_WRITE=1` by default).
55
+ No `docflow.config.json` fresh `init` writes the two-config model below.
56
+
57
+ ### Configuration (2 files)
58
+
59
+ | File | Owner | Purpose |
60
+ |------|-------|---------|
61
+ | `.docops/docops.config.json` | **Writer contract** (shared) | Languages, doc layers, paths, **capabilities** |
62
+ | `.ai-spector/engine.json` | ai-spector engine (local only) | Graph/task artifact paths, readiness, CocoIndex, `scaffoldVersion` |
54
63
 
55
- **Docops CLI** (Writer contract only no full ai-spector scaffold):
64
+ **Writer** defines the contract schema (`kari-writer/contracts/CONTRACT.md` in the docs-ops meta-repo). It ships **no agent skills**. **Capabilities** in `docops.config.json` gate Writer web UI, ai-spector CLI/MCP, skill install, and `check` rules.
65
+
66
+ **`.docops/guide/`** is for human tool authors only — agents and skills must **not** load or link to it at runtime.
67
+
68
+ **Docops CLI** (Writer contract bootstrap — no full ai-spector scaffold):
56
69
 
57
70
  ```bash
58
71
  npx ai-spector docops status # human-readable layout + readiness
@@ -64,13 +77,18 @@ npx ai-spector docops init --force # fill gaps when config already exists
64
77
 
65
78
  npx ai-spector docops migrate --dry-run # preview legacy → .docops/ migration
66
79
  npx ai-spector docops migrate # migrate layout + copy templates
80
+ npx ai-spector docops migrate --from-docflow # split docflow.config.json → contract + engine
67
81
  npx ai-spector docops migrate --templates-only # copy templates only
68
82
  npx ai-spector docops migrate --repair # fill gaps without overwriting existing files
69
83
  ```
70
84
 
71
- Migrate an existing legacy project with `docops migrate`; use `--templates-only` or `--repair` if templates or contract files are still missing. Full steps, verification checklist, and `DOCOPS_LEGACY_PATHS` transition notes: [`kari-writer/contracts/MIGRATION.md`](../../kari-writer/contracts/MIGRATION.md) in the docs-ops meta-repo.
85
+ Upgrade from a legacy project that still has `docflow.config.json`:
86
+
87
+ ```bash
88
+ npx ai-spector docops migrate --from-docflow
89
+ ```
72
90
 
73
- Plugin registry (`docflow.config.json` `plugins.resolved`) still gates **CLI/MCP** only; Writer web uses `capabilities` from the `.docops/` contract as authoritative.
91
+ Then run `npx ai-spector upgrade apply` to sync the 4-skill scaffold. Full migration steps: [`kari-writer/contracts/MIGRATION.md`](../../kari-writer/contracts/MIGRATION.md) in the docs-ops meta-repo.
74
92
 
75
93
  ### Upgrade (guided workflow)
76
94
 
@@ -86,7 +104,7 @@ npx ai-spector upgrade apply --auto
86
104
  npx ai-spector upgrade validate
87
105
  ```
88
106
 
89
- The upgrade workflow scans a package checklist, syncs scaffold, backfills config, and stamps `scaffoldVersion` in `docflow.config.json` when complete.
107
+ The upgrade workflow scans a package checklist, syncs the **4-skill** scaffold, backfills config, and stamps `scaffoldVersion` in `engine.json` when complete.
90
108
 
91
109
  Legacy skills-only refresh:
92
110
 
@@ -115,7 +133,16 @@ The agent installs the npm dependency (if needed), verifies the checklist, and r
115
133
 
116
134
  ### Step 3 — Enable the agent *(manual, one-time)*
117
135
 
118
- **Cursor:** Settings → Rules → **Agent Skills** enable **all** folders under `.cursor/skills/`. Reload MCP (`.cursor/mcp.json`).
136
+ Enable the **4 skills** (not the retired 23-skill bundle):
137
+
138
+ | Skill | Role |
139
+ |-------|------|
140
+ | `ai-spector` | Setup, upgrade, adopt, check, work sessions |
141
+ | `ai-spector-generate` | SRS, basic/detail design, prototype, template import |
142
+ | `ai-spector-graph` | Analyze, index, validate, impact, search, sync audit |
143
+ | `ai-spector-contract` | Review sign-off, comments, prototype comments, translation |
144
+
145
+ **Cursor:** Settings → Rules → **Agent Skills** — enable all four folders under `.cursor/skills/`. Reload MCP (`.cursor/mcp.json`).
119
146
 
120
147
  **Claude Code:** Skills load from `.claude/skills/`. Reload MCP (`.mcp.json`).
121
148
 
@@ -135,14 +162,14 @@ Continue in chat — see [Workflow](#workflow) below.
135
162
 
136
163
  ## Workflow
137
164
 
138
- After `init`, see `.cursor/WORKFLOW.md` (Cursor) or `CLAUDE.md` (Claude Code) for the full skill map.
165
+ After `init`, see `.cursor/WORKFLOW.md` (Cursor) or `CLAUDE.md` (Claude Code) for the 4-skill map.
139
166
 
140
167
  ### How chat routing works
141
168
 
142
169
  | Piece | Role |
143
170
  |-------|------|
144
- | **Routing** | `_skill-router.md` + `ai-spector-routing.mdc` classify your message; `workflow_route` when ambiguous |
145
- | **Skill** | One workflow (analyze, generate SRS, review docs, ) with a runbook under `references/` |
171
+ | **Routing** | `_skill-router.md` + `ai-spector-routing.mdc` classify your message → one of 4 skills; `workflow_route` when ambiguous |
172
+ | **Skill** | One of four workflows (setup/work, generate, graph, contract) with a runbook under `references/` |
146
173
 
147
174
  Say what you want in natural language — same in Cursor and Claude Code. The agent reads the matching skill and follows its runbook. If intent is unclear (especially **“approve”**), it asks once before acting.
148
175
 
@@ -174,7 +201,7 @@ review documents
174
201
  | New or changed sources | “analyze data source” |
175
202
  | Check graph | “validate the graph”, “graph report” |
176
203
  | Regenerate docs | “generate SRS”, “generate basic design” |
177
- | Pause / resume work | “active tasks”, “resume my SRS”, “pause task” |
204
+ | Pause / resume work | “active work”, “resume my SRS”, “pause work” |
178
205
  | One feature or section | “I want to add login with Google”, “update the auth section” |
179
206
  | After doc edits | “refresh the index”, “re-index the graph” |
180
207
  | Document sign-off | “review documents”, “approve srs/01-overview”, “what needs review” |
@@ -218,7 +245,11 @@ npx ai-spector course serve --open # interactive course in browser
218
245
  npx ai-spector setup --check
219
246
  npx ai-spector docops status # assess .docops/ layout and Writer readiness
220
247
  npx ai-spector docops init --lang en # scaffold Writer-ready .docops/ contract
221
- npx ai-spector docops migrate # legacy layout → .docops/ (+ templates)
248
+ npx ai-spector docops migrate --from-docflow # split legacy docflow.config.json
249
+ npx ai-spector work list # active/paused work sessions (replaces task)
250
+ npx ai-spector work resume <workId>
251
+ npx ai-spector contract review queue # sign-off queue (capability: review)
252
+ npx ai-spector contract comments inbox # open comment threads (capability: comments)
222
253
  npx ai-spector graph validate
223
254
  npx ai-spector graph visualize --open
224
255
  npx ai-spector graph impact --git
@@ -226,6 +257,8 @@ npx ai-spector sync audit --fail-on-drift # CI: design-layer drift since basel
226
257
  npx ai-spector prototype validate --strict
227
258
  ```
228
259
 
260
+ MCP tools are grouped: `work_*` (session lifecycle), `contract_review` / `contract_comments` / `contract_prototype` / `contract_translate` (Writer contract ops). Legacy `task_*` and flat review/comments tools remain as deprecation wrappers for one release.
261
+
229
262
  Full list: `npx ai-spector --help`.
230
263
 
231
264
  ---
@@ -236,7 +269,7 @@ Full list: `npx ai-spector --help`.
236
269
  |-------|-----|
237
270
  | MCP tools unavailable | Reload MCP; confirm `.cursor/mcp.json` or `.mcp.json` has `ai-spector` server |
238
271
  | Setup incomplete | **“check ai-spector setup”** |
239
- | Skills not routing (Cursor) | Re-enable all folders under `.cursor/skills/` |
272
+ | Skills not routing (Cursor) | Re-enable all **4** skill folders under `.cursor/skills/` |
240
273
  | Validate errors after edits | **“re-index the graph”** |
241
274
  | Pre-commit hook missing | **“install ai-spector git hook”** |
242
275
  | Agent stuck on CLI error | `.cursor/skills/ai-spector/references/cli-failures.md` |
package/README.vi.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # AI Spector
2
2
 
3
- Công cụ làm tài liệu phần mềm trên **Cursor** hoặc **Claude Code**: sơ đồ liên kết, SRS, basic design và prototype UI (HTML tĩnh hoặc SPA build ra file tĩnh). **Bạn chỉ cần nói trong chat** — agent sẽ tự chạy lệnh `ai-spector` hoặc MCP. Thường bạn không cần gõ lệnh terminal.
3
+ Công cụ làm tài liệu phần mềm trên **Cursor** hoặc **Claude Code**: sơ đồ liên kết, SRS, basic design và prototype UI (HTML tĩnh hoặc SPA build ra file tĩnh). **Bạn chỉ cần nói trong chat** — agent chọn một trong **4 skills**, đọc runbook và chạy MCP `ai-spector`. Thường bạn không cần gõ lệnh terminal.
4
+
5
+ **Kari Writer** chỉ sở hữu contract `.docops/` (không có agent skills). ai-spector là công cụ local tùy chọn triển khai contract qua file git.
4
6
 
5
7
  **Cần có:** Node 20+, Git, [Cursor](https://cursor.com) và/hoặc [Claude Code](https://docs.anthropic.com/en/docs/claude-code), Python 3.11+ *(không bắt buộc — dùng cho tìm kiếm thông minh với CocoIndex)*.
6
8
 
@@ -45,15 +47,46 @@ Wizard init sẽ hỏi: Cursor, Claude Code hay cả hai; ngôn ngữ; git hook;
45
47
 
46
48
  Sau khi chạy xong sẽ có:
47
49
 
48
- - `.ai-spector/` — cấu hình, đồ, mẫu tài liệu
50
+ - `.docops/` — contract Writer (`docops.config.json`, comments, review-queue, prototype)
51
+ - `.ai-spector/` — engine (`engine.json`, graph, registry, work sessions)
49
52
  - `docs/data-source/`, `docs/srs/`, `docs/basic-design/`
50
- - **Cursor:** `.cursor/` — skills, rules, `mcp.json`
51
- - **Claude Code:** `CLAUDE.md` + `.claude/skills/` + `.mcp.json`
53
+ - **Cursor:** `.cursor/` — **4 skills**, rules, `mcp.json`
54
+ - **Claude Code:** `CLAUDE.md` + `.claude/skills/` (4 skills) + `.mcp.json`
52
55
  - Hook git trước khi commit *(nếu project có git)*
53
56
 
57
+ Không còn `docflow.config.json` — `init` mới tạo mô hình 2 file cấu hình.
58
+
59
+ ### Cấu hình (2 file)
60
+
61
+ | File | Sở hữu | Mục đích |
62
+ |------|--------|----------|
63
+ | `.docops/docops.config.json` | **Contract Writer** (dùng chung) | Ngôn ngữ, lớp tài liệu, đường dẫn, **capabilities** |
64
+ | `.ai-spector/engine.json` | Engine ai-spector (local) | Đường dẫn graph/task, readiness, CocoIndex, `scaffoldVersion` |
65
+
66
+ **Writer** định nghĩa schema contract (`kari-writer/contracts/CONTRACT.md`). **Không** ship agent skills. **Capabilities** trong `docops.config.json` điều khiển Writer web, CLI/MCP ai-spector, skills và quy tắc `check`.
67
+
68
+ **`.docops/guide/`** dành cho người viết công cụ local — agent và skills **không** được đọc hoặc link tới thư mục này lúc chạy.
69
+
70
+ **Docops CLI** (bootstrap contract Writer):
71
+
72
+ ```bash
73
+ npx ai-spector docops status
74
+ npx ai-spector docops init --lang en
75
+ npx ai-spector docops migrate --from-docflow # tách docflow.config.json → contract + engine
76
+ npx ai-spector docops migrate --dry-run
77
+ npx ai-spector docops migrate --repair
78
+ ```
79
+
80
+ Nâng cấp project còn `docflow.config.json`:
81
+
82
+ ```bash
83
+ npx ai-spector docops migrate --from-docflow
84
+ npx ai-spector upgrade apply # đồng bộ scaffold 4 skills
85
+ ```
86
+
54
87
  ### Nâng cấp (cập nhật skills & rules)
55
88
 
56
- Sau khi cài phiên bản `ai-spector` mới, refresh scaffold từ gói. Chỉ cập nhật skills và rules — **không** ghi đè `.ai-spector/`, graph, hay `docs/`.
89
+ Sau khi cài phiên bản `ai-spector` mới, refresh scaffold **4 skills** từ gói. Chỉ cập nhật skills và rules — **không** ghi đè `.ai-spector/`, graph, hay `docs/`.
57
90
 
58
91
  ```bash
59
92
  npm install ai-spector@latest # npm công khai; thêm --registry … cho Verdaccio
@@ -86,9 +119,18 @@ Agent sẽ cài gói npm (nếu thiếu), kiểm tra xem còn thiếu gì, hỏi
86
119
 
87
120
  ### Bước 3 — Bật skills *(làm tay một lần)*
88
121
 
122
+ Bật **4 skills** (không phải bộ 23 skills cũ):
123
+
124
+ | Skill | Vai trò |
125
+ |-------|---------|
126
+ | `ai-spector` | Setup, upgrade, adopt, check, work sessions |
127
+ | `ai-spector-generate` | SRS, basic/detail design, prototype, import template |
128
+ | `ai-spector-graph` | Analyze, index, validate, impact, search, sync audit |
129
+ | `ai-spector-contract` | Duyệt tài liệu, comments, prototype comments, dịch |
130
+
89
131
  **Cursor**
90
132
 
91
- 1. Vào **Settings → Rules → Agent Skills** — bật **hết** các thư mục trong `.cursor/skills/` (xem `.cursor/skills/README.md`)
133
+ 1. Vào **Settings → Rules → Agent Skills** — bật **4** thư mục trong `.cursor/skills/`
92
134
  2. **Reload MCP** — file `.cursor/mcp.json` đã cấu hình sẵn server `ai-spector`
93
135
 
94
136
  **Claude Code**
@@ -147,7 +189,7 @@ Hoặc chạy `npx ai-spector sync-cursor` / `sync-claude` — xem [Nâng cấp]
147
189
 
148
190
  ## Quy trình làm việc
149
191
 
150
- Sau khi `init`, xem thêm `.cursor/WORKFLOW.md` (Cursor) hoặc `CLAUDE.md` (Claude Code).
192
+ Sau khi `init`, xem `.cursor/WORKFLOW.md` (Cursor) hoặc `CLAUDE.md` (Claude Code) — bản đồ **4 skills**.
151
193
 
152
194
  ### Lần đầu chạy
153
195
 
@@ -181,7 +223,7 @@ Sau đó: **“generate prototype for all screens”**. Với SPA, chạy build
181
223
  | Xem phần nào bị ảnh hưởng | “what’s the impact of my changes” |
182
224
  | Xử lý comment | “resolve comments”, “show open comments” |
183
225
  | Duyệt / phê duyệt tài liệu | “review documents”, “approve srs/01-overview” |
184
- | Tạm dừng / tiếp tục task | “active tasks”, “resume my SRS” |
226
+ | Tạm dừng / tiếp tục work | “active work”, “resume my SRS”, “pause work” |
185
227
  | Thêm / sửa một phần nhỏ | “I want to add login with Google” |
186
228
  | Xem sơ đồ trực quan | “show the graph”, `npx ai-spector graph visualize --open` |
187
229
  | Kiểm tra workspace | “check my workspace” |
@@ -203,10 +245,18 @@ Chủ yếu dùng chat. Một số lệnh hữu ích:
203
245
  ```bash
204
246
  npx ai-spector course serve --open
205
247
  npx ai-spector setup --check
248
+ npx ai-spector docops status
249
+ npx ai-spector docops migrate --from-docflow
250
+ npx ai-spector work list # work sessions (thay task)
251
+ npx ai-spector work resume <workId>
252
+ npx ai-spector contract review queue
253
+ npx ai-spector contract comments inbox
206
254
  npx ai-spector graph validate
207
255
  npx ai-spector graph visualize --open
208
256
  ```
209
257
 
258
+ MCP nhóm theo `work_*` và `contract_*` (review, comments, prototype, translate). Lệnh `task_*` cũ còn wrapper deprecation một phiên bản.
259
+
210
260
  Đầy đủ: `npx ai-spector --help`
211
261
 
212
262
  ---
@@ -217,7 +267,7 @@ npx ai-spector graph visualize --open
217
267
  |-----|------------|
218
268
  | MCP không chạy | Reload MCP; kiểm tra `.cursor/mcp.json` hoặc `.mcp.json` có server `ai-spector` |
219
269
  | Setup chưa xong | Trong chat: **“check ai-spector setup”** |
220
- | Agent không hiểu lệnh (Cursor) | Bật lại hết thư mục trong `.cursor/skills/` ở Settings → Rules |
270
+ | Agent không hiểu lệnh (Cursor) | Bật lại **4** thư mục skill trong `.cursor/skills/` ở Settings → Rules |
221
271
  | Validate báo lỗi sau khi sửa | Trong chat: **“re-index the graph”** |
222
272
  | Thiếu hook git | Trong chat: **“install ai-spector git hook”** |
223
273
  | Agent bị kẹt vì lỗi CLI | Xem `.cursor/skills/ai-spector/references/cli-failures.md` |
package/dist/cli.js CHANGED
@@ -22,8 +22,8 @@ import { runContextList, runContextRecord, runContextResolve, } from "./core/ope
22
22
  import { formatContextList, formatContextRecord, formatContextResolve, } from "./interfaces/cli/format/context.js";
23
23
  import { runSpecList, runSpecApprove, runSpecReject, } from "./core/operations/extracted.js";
24
24
  import { formatSpecList, formatSpecApprove, formatSpecReject, } from "./interfaces/cli/format/extracted.js";
25
- import { runTaskAbandon, runTaskApprovePlan, runTaskApproveImportPlan, runTaskApproveAdoptPlan, runTaskApprovePackDesign, runTaskComplete, runTaskCreate, runTaskGet, runTaskList, runTaskStatus, runTaskPause, runTaskResume, runTaskUpdate, recordGenerateWaveProgress, } from "./core/operations/task.js";
26
- import { formatTaskCreate, formatTaskGet, formatTaskList, formatTaskStatus, formatTaskSimple, formatTaskUpdate, } from "./interfaces/cli/format/task.js";
25
+ import { registerWorkCommands, registerTaskCommands } from "./core/operations/work.js";
26
+ import { registerContractCommands } from "./core/operations/contract-cli.js";
27
27
  import { buildClaudeScaffoldFromCursor } from "./core/scaffold/claude-from-cursor.js";
28
28
  import { runSyncClaude } from "./core/operations/sync-claude.js";
29
29
  import { runSyncCursor } from "./core/operations/sync-cursor.js";
@@ -308,302 +308,16 @@ spec
308
308
  else
309
309
  console.log(formatSpecReject(result));
310
310
  });
311
- const task = program
312
- .command("task")
313
- .description("Workflow task state (persist plan/progress across sessions)");
314
- task
315
- .command("create")
316
- .description("Create a new workflow task")
317
- .requiredOption("-k, --kind <kind>", "generate | resolve | import")
318
- .requiredOption("-w, --workflow <workflow>", "generate-srs | generate-basic-design | generate-detail-design | resolve | template-import")
319
- .requiredOption("-t, --trigger <text>", "User intent that started this task")
320
- .option("-C, --cwd <path>", "Project root", process.cwd())
321
- .option("--doc-type <type>", "Doc type for generate workflows (e.g. srs)")
322
- .option("--force", "Replace existing active task in the same slot")
323
- .option("--json", "JSON output")
324
- .action(async (opts) => {
325
- const result = await runTaskCreate({
326
- root: resolve(opts.cwd ?? process.cwd()),
327
- kind: opts.kind,
328
- workflow: opts.workflow,
329
- trigger: opts.trigger,
330
- docType: opts.docType,
331
- force: opts.force,
332
- });
333
- if (opts.json)
334
- console.log(JSON.stringify(result, null, 2));
335
- else
336
- console.log(formatTaskCreate(result));
337
- });
338
- task
339
- .command("list")
340
- .description("List tasks")
341
- .option("-C, --cwd <path>", "Project root", process.cwd())
342
- .option("-s, --status <status>", "Filter by status (comma-separated)")
343
- .option("-k, --kind <kind>", "generate | resolve | import")
344
- .option("-w, --workflow <workflow>", "Workflow id filter")
345
- .option("--recent", "Only tasks in index.recent")
346
- .option("--bootstrap-trigger <text>", "Create task if workflow slot is empty (requires -k and -w)")
347
- .option("--doc-type <type>", "Doc type when bootstrapping a generate task")
348
- .option("--force", "Replace existing active task when bootstrapping")
349
- .option("--json", "JSON output")
350
- .action(async (opts) => {
351
- const status = opts.status
352
- ? opts.status.split(",").map((s) => s.trim())
353
- : undefined;
354
- const bootstrapTrigger = opts.bootstrapTrigger;
355
- if (bootstrapTrigger && (!opts.kind || !opts.workflow)) {
356
- throw new Error("--bootstrap-trigger requires -k/--kind and -w/--workflow");
357
- }
358
- const result = await runTaskList({
359
- root: resolve(opts.cwd ?? process.cwd()),
360
- status: status?.length === 1 ? status[0] : status,
361
- kind: opts.kind,
362
- workflow: opts.workflow,
363
- recentOnly: opts.recent,
364
- bootstrap: bootstrapTrigger
365
- ? {
366
- kind: opts.kind,
367
- workflow: opts.workflow,
368
- trigger: bootstrapTrigger,
369
- docType: opts.docType,
370
- force: Boolean(opts.force),
371
- }
372
- : undefined,
373
- });
374
- if (opts.json)
375
- console.log(JSON.stringify(result, null, 2));
376
- else
377
- console.log(formatTaskList(result));
378
- });
379
- task
380
- .command("status")
381
- .description("Show active workflow task slots (generate / resolve / import)")
382
- .option("-C, --cwd <path>", "Project root", process.cwd())
383
- .option("--json", "JSON output")
384
- .action(async (opts) => {
385
- const result = await runTaskStatus({
386
- root: resolve(opts.cwd ?? process.cwd()),
387
- });
388
- if (opts.json)
389
- console.log(JSON.stringify(result, null, 2));
390
- else
391
- console.log(formatTaskStatus(result));
392
- });
393
- task
394
- .command("get <taskId>")
395
- .description("Get full task state")
396
- .option("-C, --cwd <path>", "Project root", process.cwd())
397
- .option("--json", "JSON output")
398
- .action(async (taskId, opts) => {
399
- const result = await runTaskGet({
400
- root: resolve(opts.cwd ?? process.cwd()),
401
- taskId,
402
- });
403
- if (opts.json)
404
- console.log(JSON.stringify(result, null, 2));
405
- else
406
- console.log(formatTaskGet(result));
407
- });
408
- task
409
- .command("update <taskId>")
410
- .description("Patch task state (pass --patch as JSON)")
411
- .option("-C, --cwd <path>", "Project root", process.cwd())
412
- .option("--patch <json>", "JSON patch object (TaskUpdatePatch)")
413
- .option("--json", "JSON output")
414
- .action(async (taskId, opts) => {
415
- if (!opts.patch) {
416
- throw new Error("--patch is required (JSON object)");
417
- }
418
- const patch = JSON.parse(opts.patch);
419
- const result = await runTaskUpdate({
420
- root: resolve(opts.cwd ?? process.cwd()),
421
- taskId,
422
- patch,
423
- });
424
- if (opts.json)
425
- console.log(JSON.stringify(result, null, 2));
426
- else
427
- console.log(formatTaskUpdate(result));
428
- });
429
- task
430
- .command("approve <taskId>")
431
- .description("Approve the task plan and advance to the next step")
432
- .option("-C, --cwd <path>", "Project root", process.cwd())
433
- .option("--by <email>", "Approver email override (default: git user.email)")
434
- .option("--username <name>", "Approver name override (default: git user.name)")
435
- .option("--role <role>", "Actor role: user | client (default: user)")
436
- .option("--plan <json>", "Plan JSON (StoredPlan) if not already set on task")
437
- .option("--json", "JSON output")
438
- .action(async (taskId, opts) => {
439
- const result = await runTaskApprovePlan({
440
- root: resolve(opts.cwd ?? process.cwd()),
441
- taskId,
442
- plan: opts.plan ? JSON.parse(opts.plan) : undefined,
443
- by: opts.by,
444
- username: opts.username,
445
- role: opts.role,
446
- });
447
- if (opts.json)
448
- console.log(JSON.stringify(result, null, 2));
449
- else
450
- console.log(formatTaskSimple("Approved plan for", result));
451
- });
452
- task
453
- .command("approve-import-plan <taskId>")
454
- .description("Import task: approve manifest plan after user yes (not task approve)")
455
- .option("-C, --cwd <path>", "Project root", process.cwd())
456
- .option("--plan <json>", "ImportPlan JSON (StoredPlan kind import) if not already on task")
457
- .option("--json", "JSON output")
458
- .action(async (taskId, opts) => {
459
- const result = await runTaskApproveImportPlan({
460
- root: resolve(opts.cwd ?? process.cwd()),
461
- taskId,
462
- plan: opts.plan ? JSON.parse(opts.plan) : undefined,
463
- });
464
- if (opts.json)
465
- console.log(JSON.stringify(result, null, 2));
466
- else
467
- console.log(formatTaskSimple("Approved import manifest plan for", result));
468
- });
469
- task
470
- .command("approve-adopt-plan <taskId>")
471
- .description("Adopt task: approve migration move plan after user yes (not task approve)")
472
- .option("-C, --cwd <path>", "Project root", process.cwd())
473
- .option("--by <email>", "Approver identity")
474
- .option("--plan <json>", "AdoptPlanSummary JSON (StoredPlan kind adopt) if not already on task")
475
- .option("--json", "JSON output")
476
- .action(async (taskId, opts) => {
477
- const result = await runTaskApproveAdoptPlan({
478
- root: resolve(opts.cwd ?? process.cwd()),
479
- taskId,
480
- plan: opts.plan ? JSON.parse(opts.plan) : undefined,
481
- by: opts.by,
482
- });
483
- if (opts.json)
484
- console.log(JSON.stringify(result, null, 2));
485
- else
486
- console.log(formatTaskSimple("Approved adopt migration plan for", result));
487
- });
488
- task
489
- .command("approve-pack-design <taskId>")
490
- .description("Import task: record approved pack design spec path after user yes")
491
- .option("-C, --cwd <path>", "Project root", process.cwd())
492
- .requiredOption("--design-spec <path>", "Relative path to approved pack design spec (e.g. docs/superpowers/specs/…-pack-design.md)")
493
- .option("--json", "JSON output")
494
- .action(async (taskId, opts) => {
495
- const result = await runTaskApprovePackDesign({
496
- root: resolve(opts.cwd ?? process.cwd()),
497
- taskId,
498
- designSpecPath: opts.designSpec,
499
- });
500
- if (opts.json)
501
- console.log(JSON.stringify(result, null, 2));
502
- else
503
- console.log(formatTaskSimple("Approved pack design spec for", result));
504
- });
505
- task
506
- .command("pause <taskId>")
507
- .description("Pause a task")
508
- .option("-C, --cwd <path>", "Project root", process.cwd())
509
- .option("--json", "JSON output")
510
- .action(async (taskId, opts) => {
511
- const result = await runTaskPause({
512
- root: resolve(opts.cwd ?? process.cwd()),
513
- taskId,
514
- });
515
- if (opts.json)
516
- console.log(JSON.stringify(result, null, 2));
517
- else
518
- console.log(formatTaskSimple("Paused", result));
519
- });
520
- task
521
- .command("resume <taskId>")
522
- .description("Resume a paused task (validates workspace and drift)")
523
- .option("-C, --cwd <path>", "Project root", process.cwd())
524
- .option("--json", "JSON output")
525
- .action(async (taskId, opts) => {
526
- const result = await runTaskResume({
527
- root: resolve(opts.cwd ?? process.cwd()),
528
- taskId,
529
- });
530
- if (opts.json)
531
- console.log(JSON.stringify(result, null, 2));
532
- else {
533
- const lines = [
534
- `Resume ${result.task.id} — canContinue: ${result.canContinue}`,
535
- ` workspace: ${result.workspaceOk ? "ok" : "errors"}`,
536
- ` drift: ${result.drift.length} file(s)`,
537
- ` stale: ${result.staleContextIds.join(", ") || "none"}`,
538
- ` next: ${result.suggestedNext}`,
539
- ];
540
- if (result.drift.length > 0) {
541
- for (const d of result.drift) {
542
- lines.push(` ${d.kind}: ${d.path}`);
543
- }
544
- }
545
- console.log(lines.join("\n"));
546
- }
547
- });
548
- task
549
- .command("complete <taskId>")
550
- .description("Mark a task complete")
551
- .option("-C, --cwd <path>", "Project root", process.cwd())
552
- .option("--summary <text>", "Completion summary")
553
- .option("--json", "JSON output")
554
- .action(async (taskId, opts) => {
555
- const result = await runTaskComplete({
556
- root: resolve(opts.cwd ?? process.cwd()),
557
- taskId,
558
- summary: opts.summary,
559
- });
560
- if (opts.json)
561
- console.log(JSON.stringify(result, null, 2));
562
- else
563
- console.log(formatTaskSimple("Completed", result));
564
- });
565
- task
566
- .command("record-wave <taskId> <waveId>")
567
- .description("Record generate wave progress (e.g. wave-1 done with artifacts)")
568
- .option("-C, --cwd <path>", "Project root", process.cwd())
569
- .option("-s, --status <status>", "done | in-progress | blocked", "done")
570
- .option("--artifacts <paths>", "Comma-separated doc paths written this wave")
571
- .option("--blocker <text>", "Blocker message when status is blocked")
572
- .option("--json", "JSON output")
573
- .action(async (taskId, waveId, opts) => {
574
- const result = await recordGenerateWaveProgress({
575
- root: resolve(opts.cwd ?? process.cwd()),
576
- taskId,
577
- waveId,
578
- status: opts.status,
579
- artifacts: opts.artifacts
580
- ? opts.artifacts.split(",").map((p) => p.trim()).filter(Boolean)
581
- : undefined,
582
- blocker: opts.blocker ?? null,
583
- });
584
- if (opts.json)
585
- console.log(JSON.stringify(result, null, 2));
586
- else
587
- console.log(formatTaskUpdate(result));
588
- });
589
- task
590
- .command("abandon <taskId>")
591
- .description("Abandon a task")
592
- .option("-C, --cwd <path>", "Project root", process.cwd())
593
- .option("--reason <text>", "Why the task was abandoned")
594
- .option("--json", "JSON output")
595
- .action(async (taskId, opts) => {
596
- const result = await runTaskAbandon({
597
- root: resolve(opts.cwd ?? process.cwd()),
598
- taskId,
599
- reason: opts.reason,
600
- });
601
- if (opts.json)
602
- console.log(JSON.stringify(result, null, 2));
603
- else
604
- console.log(formatTaskSimple("Abandoned", result));
311
+ registerWorkCommands(program);
312
+ registerTaskCommands(program);
313
+ registerContractCommands(program);
314
+ const LANG_DEPRECATION_WARNING = "[deprecated] lang — use `npx ai-spector contract translate` for queue operations; language config remains here for now\n";
315
+ const lang = program
316
+ .command("lang")
317
+ .description("Manage project languages (deprecated prefer contract translate for queue)")
318
+ .hook("preAction", () => {
319
+ process.stderr.write(LANG_DEPRECATION_WARNING);
605
320
  });
606
- const lang = program.command("lang").description("Manage project languages");
607
321
  lang
608
322
  .command("add <code>")
609
323
  .description("Add a language to the project (e.g. jp, vi)")
@@ -1514,12 +1228,14 @@ docops
1514
1228
  .option("--dry-run", "Print planned actions without writing files")
1515
1229
  .option("--repair", "Fill gaps in existing .docops/ without overwriting")
1516
1230
  .option("--templates-only", "Copy templates only")
1231
+ .option("--from-docflow", "Split legacy docflow.config.json into docops.config.json + engine.json")
1517
1232
  .action(async (opts, cmd) => {
1518
1233
  await runDocopsMigrate({
1519
1234
  root: projectRootOpt(cmd),
1520
1235
  dryRun: opts.dryRun,
1521
1236
  repair: opts.repair,
1522
1237
  templatesOnly: opts.templatesOnly,
1238
+ fromDocflow: opts.fromDocflow,
1523
1239
  });
1524
1240
  });
1525
1241
  const reviewSession = review.command("session").description("Persisted review session gate for sign-off");
@@ -1589,10 +1305,10 @@ prototype
1589
1305
  });
1590
1306
  prototype
1591
1307
  .command("auth")
1592
- .description("Configure HTTP basic auth (credentials in prototype/config.json, .htpasswd under prototype/)")
1308
+ .description("Configure HTTP basic auth (credentials in .docops/prototype/config.json, .htpasswd under prototype/)")
1593
1309
  .option("--username <name>", "Basic auth username")
1594
1310
  .option("--password <secret>", "Basic auth password")
1595
- .option("--from-config", "Regenerate .htpasswd from stored prototype/config.json basicAuth")
1311
+ .option("--from-config", "Regenerate .htpasswd from stored .docops/prototype/config.json basicAuth")
1596
1312
  .action(async (opts, cmd) => {
1597
1313
  await runPrototypeAuth({
1598
1314
  root: projectRootOpt(cmd),
@@ -1643,7 +1359,7 @@ prototype
1643
1359
  });
1644
1360
  prototype
1645
1361
  .command("map")
1646
- .description("Build prototype/screen-map.json from basic-design Screen Index + prototype/path-map.json (hosted / external prototypes)")
1362
+ .description("Build .docops/prototype/screen-map.json from basic-design Screen Index + prototype/path-map.json (hosted / external prototypes)")
1647
1363
  .option("--from <path>", "Path map input (default: prototype/path-map.json)")
1648
1364
  .option("--theme <name>", "Theme name stored in screen-map.json")
1649
1365
  .option("--review-host <url>", "POC host for reviewUrl fields (overrides path-map.json)")