@claude-collective/cli 0.6.0 → 0.13.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 (232) hide show
  1. package/CHANGELOG.md +192 -0
  2. package/README.md +26 -9
  3. package/dist/{chunk-TOPAIL5W.js → chunk-3U3R4NCG.js} +2 -2
  4. package/dist/chunk-3U3R4NCG.js.map +1 -0
  5. package/dist/{chunk-TFV6Z7F7.js → chunk-57Y5RALO.js} +10 -10
  6. package/dist/chunk-57Y5RALO.js.map +1 -0
  7. package/dist/chunk-66UDJBF6.js +96 -0
  8. package/dist/chunk-66UDJBF6.js.map +1 -0
  9. package/dist/chunk-6DCSSORF.js +264 -0
  10. package/dist/chunk-6DCSSORF.js.map +1 -0
  11. package/dist/chunk-6Q3Y7KVB.js +31 -0
  12. package/dist/chunk-6Q3Y7KVB.js.map +1 -0
  13. package/dist/{chunk-SJYG4EJZ.js → chunk-76DWXGQE.js} +10 -8
  14. package/dist/chunk-76DWXGQE.js.map +1 -0
  15. package/dist/{chunk-AZP2AA5M.js → chunk-7Q44DMSP.js} +241 -84
  16. package/dist/chunk-7Q44DMSP.js.map +1 -0
  17. package/dist/chunk-ACNBKXXJ.js +321 -0
  18. package/dist/chunk-ACNBKXXJ.js.map +1 -0
  19. package/dist/{chunk-JMQGWQZU.js → chunk-B7CCVP6Q.js} +42 -10
  20. package/dist/chunk-B7CCVP6Q.js.map +1 -0
  21. package/dist/chunk-BDLUZVKU.js +54 -0
  22. package/dist/chunk-BDLUZVKU.js.map +1 -0
  23. package/dist/chunk-CDX4W4DM.js +120 -0
  24. package/dist/chunk-CDX4W4DM.js.map +1 -0
  25. package/dist/{chunk-MYAVQ23U.js → chunk-CJEHB4TB.js} +23 -9
  26. package/dist/chunk-CJEHB4TB.js.map +1 -0
  27. package/dist/{chunk-6WEQADPL.js → chunk-CPZOTVCI.js} +15 -14
  28. package/dist/chunk-CPZOTVCI.js.map +1 -0
  29. package/dist/chunk-D237EVNB.js +187 -0
  30. package/dist/chunk-D237EVNB.js.map +1 -0
  31. package/dist/{chunk-UFWNMW3G.js → chunk-DRXPNNPB.js} +19 -18
  32. package/dist/chunk-DRXPNNPB.js.map +1 -0
  33. package/dist/chunk-E3FJH4TF.js +80 -0
  34. package/dist/chunk-E3FJH4TF.js.map +1 -0
  35. package/dist/{chunk-D4IQAT27.js → chunk-ED4E6Q2T.js} +10 -10
  36. package/dist/chunk-ED4E6Q2T.js.map +1 -0
  37. package/dist/{chunk-SYQ7R2JO.js → chunk-EHS3TWWP.js} +3 -3
  38. package/dist/chunk-EHS3TWWP.js.map +1 -0
  39. package/dist/{chunk-AU7XVCLO.js → chunk-GDH553MV.js} +6 -6
  40. package/dist/chunk-GDH553MV.js.map +1 -0
  41. package/dist/chunk-HLJX2FTL.js +95 -0
  42. package/dist/chunk-HLJX2FTL.js.map +1 -0
  43. package/dist/chunk-I2DSLOXZ.js +75 -0
  44. package/dist/chunk-I2DSLOXZ.js.map +1 -0
  45. package/dist/{chunk-J2Y4A3LP.js → chunk-I4TPKIYX.js} +33 -18
  46. package/dist/chunk-I4TPKIYX.js.map +1 -0
  47. package/dist/{chunk-ZSKHDU5P.js → chunk-IMDW5ZUP.js} +19 -11
  48. package/dist/chunk-IMDW5ZUP.js.map +1 -0
  49. package/dist/{chunk-U4VYHKPM.js → chunk-JIPWV2FX.js} +6 -6
  50. package/dist/chunk-JIPWV2FX.js.map +1 -0
  51. package/dist/{chunk-OSQDDJXX.js → chunk-K7EVM5LY.js} +5 -10
  52. package/dist/chunk-K7EVM5LY.js.map +1 -0
  53. package/dist/{chunk-MJSFR562.js → chunk-KAAEN2PO.js} +3 -3
  54. package/dist/chunk-KAAEN2PO.js.map +1 -0
  55. package/dist/{chunk-URDV4OCP.js → chunk-LE6IY6IT.js} +22 -17
  56. package/dist/chunk-LE6IY6IT.js.map +1 -0
  57. package/dist/{chunk-FKU7VSUD.js → chunk-NDY25DTL.js} +6 -6
  58. package/dist/chunk-NDY25DTL.js.map +1 -0
  59. package/dist/{chunk-UNHCZRO4.js → chunk-P26A2K5N.js} +7 -7
  60. package/dist/chunk-P26A2K5N.js.map +1 -0
  61. package/dist/{chunk-DHFFRMF6.js → chunk-RTE64SJA.js} +2 -2
  62. package/dist/chunk-RTE64SJA.js.map +1 -0
  63. package/dist/{chunk-6ESUJMM7.js → chunk-SGJ23HIP.js} +14 -11
  64. package/dist/chunk-SGJ23HIP.js.map +1 -0
  65. package/dist/{chunk-367K3JB3.js → chunk-SVYPSDWY.js} +10 -10
  66. package/dist/chunk-SVYPSDWY.js.map +1 -0
  67. package/dist/{chunk-MMDXNZPF.js → chunk-TKFPKEV3.js} +2 -2
  68. package/dist/chunk-TKFPKEV3.js.map +1 -0
  69. package/dist/{chunk-M7YCPFIX.js → chunk-UQTEPWU7.js} +2 -2
  70. package/dist/chunk-UQTEPWU7.js.map +1 -0
  71. package/dist/{chunk-QESUUPOE.js → chunk-V46GGCCI.js} +80 -27
  72. package/dist/chunk-V46GGCCI.js.map +1 -0
  73. package/dist/chunk-X6QONICW.js +86 -0
  74. package/dist/chunk-X6QONICW.js.map +1 -0
  75. package/dist/chunk-XY3XDVMI.js +15599 -0
  76. package/dist/chunk-XY3XDVMI.js.map +1 -0
  77. package/dist/chunk-Y2LW7R3Y.js +23 -0
  78. package/dist/chunk-Y2LW7R3Y.js.map +1 -0
  79. package/dist/chunk-Z2CWURZ6.js +78 -0
  80. package/dist/chunk-Z2CWURZ6.js.map +1 -0
  81. package/dist/chunk-Z7G4B5HJ.js +377 -0
  82. package/dist/chunk-Z7G4B5HJ.js.map +1 -0
  83. package/dist/{chunk-ZDQIUHAM.js → chunk-ZENYS6KW.js} +16 -15
  84. package/dist/chunk-ZENYS6KW.js.map +1 -0
  85. package/dist/{cli-v2 → cli}/defaults/agent-mappings.yaml +5 -5
  86. package/dist/commands/build/marketplace.js +19 -60
  87. package/dist/commands/build/marketplace.js.map +1 -1
  88. package/dist/commands/build/plugins.js +21 -59
  89. package/dist/commands/build/plugins.js.map +1 -1
  90. package/dist/commands/build/stack.js +15 -15
  91. package/dist/commands/build/stack.js.map +1 -1
  92. package/dist/commands/compile.js +21 -21
  93. package/dist/commands/compile.js.map +1 -1
  94. package/dist/commands/config/get.js +9 -8
  95. package/dist/commands/config/get.js.map +1 -1
  96. package/dist/commands/config/index.js +7 -6
  97. package/dist/commands/config/index.js.map +1 -1
  98. package/dist/commands/config/path.js +8 -7
  99. package/dist/commands/config/path.js.map +1 -1
  100. package/dist/commands/config/set-project.js +9 -8
  101. package/dist/commands/config/set-project.js.map +1 -1
  102. package/dist/commands/config/set.js +9 -8
  103. package/dist/commands/config/set.js.map +1 -1
  104. package/dist/commands/config/show.js +6 -5
  105. package/dist/commands/config/unset-project.js +9 -8
  106. package/dist/commands/config/unset-project.js.map +1 -1
  107. package/dist/commands/config/unset.js +9 -8
  108. package/dist/commands/config/unset.js.map +1 -1
  109. package/dist/commands/diff.js +12 -12
  110. package/dist/commands/diff.js.map +1 -1
  111. package/dist/commands/doctor.js +10 -10
  112. package/dist/commands/doctor.js.map +1 -1
  113. package/dist/commands/edit.js +52 -48
  114. package/dist/commands/edit.js.map +1 -1
  115. package/dist/commands/eject.js +180 -97
  116. package/dist/commands/eject.js.map +1 -1
  117. package/dist/commands/import/skill.js +339 -0
  118. package/dist/commands/import/skill.js.map +1 -0
  119. package/dist/commands/info.js +9 -9
  120. package/dist/commands/info.js.map +1 -1
  121. package/dist/commands/init.js +205 -77
  122. package/dist/commands/init.js.map +1 -1
  123. package/dist/commands/list.js +9 -9
  124. package/dist/commands/list.js.map +1 -1
  125. package/dist/commands/new/agent.js +19 -21
  126. package/dist/commands/new/agent.js.map +1 -1
  127. package/dist/commands/new/skill.js +11 -12
  128. package/dist/commands/new/skill.js.map +1 -1
  129. package/dist/commands/outdated.js +12 -12
  130. package/dist/commands/outdated.js.map +1 -1
  131. package/dist/commands/search.js +205 -17
  132. package/dist/commands/search.js.map +1 -1
  133. package/dist/commands/test-imports.js +18 -18
  134. package/dist/commands/test-imports.js.map +1 -1
  135. package/dist/commands/uninstall.js +70 -83
  136. package/dist/commands/uninstall.js.map +1 -1
  137. package/dist/commands/update.js +22 -22
  138. package/dist/commands/update.js.map +1 -1
  139. package/dist/commands/validate.js +9 -9
  140. package/dist/commands/validate.js.map +1 -1
  141. package/dist/commands/version/bump.js +8 -8
  142. package/dist/commands/version/bump.js.map +1 -1
  143. package/dist/commands/version/index.js +8 -8
  144. package/dist/commands/version/index.js.map +1 -1
  145. package/dist/commands/version/set.js +7 -7
  146. package/dist/commands/version/set.js.map +1 -1
  147. package/dist/commands/version/show.js +8 -8
  148. package/dist/commands/version/show.js.map +1 -1
  149. package/dist/components/common/confirm.js +1 -1
  150. package/dist/components/common/message.js +1 -1
  151. package/dist/components/common/message.js.map +1 -1
  152. package/dist/components/common/spinner.js +1 -1
  153. package/dist/components/common/spinner.js.map +1 -1
  154. package/dist/components/skill-search/skill-search.js +10 -0
  155. package/dist/components/wizard/category-grid.js +9 -0
  156. package/dist/components/wizard/category-grid.test.js +861 -0
  157. package/dist/components/wizard/category-grid.test.js.map +1 -0
  158. package/dist/components/wizard/section-progress.js +9 -0
  159. package/dist/components/wizard/section-progress.test.js +281 -0
  160. package/dist/components/wizard/section-progress.test.js.map +1 -0
  161. package/dist/components/wizard/step-approach.js +4 -3
  162. package/dist/components/wizard/step-build.js +16 -0
  163. package/dist/components/wizard/step-build.js.map +1 -0
  164. package/dist/components/wizard/step-build.test.js +741 -0
  165. package/dist/components/wizard/step-build.test.js.map +1 -0
  166. package/dist/components/wizard/step-confirm.js +2 -4
  167. package/dist/components/wizard/step-refine.js +10 -0
  168. package/dist/components/wizard/step-refine.js.map +1 -0
  169. package/dist/components/wizard/step-refine.test.js +236 -0
  170. package/dist/components/wizard/step-refine.test.js.map +1 -0
  171. package/dist/components/wizard/step-stack-options.js +11 -0
  172. package/dist/components/wizard/step-stack-options.js.map +1 -0
  173. package/dist/components/wizard/step-stack.js +3 -3
  174. package/dist/components/wizard/wizard-footer.js +9 -0
  175. package/dist/components/wizard/wizard-footer.js.map +1 -0
  176. package/dist/components/wizard/wizard-tabs.js +11 -0
  177. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  178. package/dist/components/wizard/wizard.js +14 -11
  179. package/dist/hooks/init.js +5 -4
  180. package/dist/hooks/init.js.map +1 -1
  181. package/dist/index.js +1 -1
  182. package/dist/index.js.map +1 -1
  183. package/dist/stores/wizard-store.js +2 -2
  184. package/dist/stores/wizard-store.test.js +249 -15835
  185. package/dist/stores/wizard-store.test.js.map +1 -1
  186. package/package.json +3 -2
  187. package/dist/chunk-367K3JB3.js.map +0 -1
  188. package/dist/chunk-6ESUJMM7.js.map +0 -1
  189. package/dist/chunk-6OY6ZYQF.js +0 -93
  190. package/dist/chunk-6OY6ZYQF.js.map +0 -1
  191. package/dist/chunk-6WEQADPL.js.map +0 -1
  192. package/dist/chunk-AU7XVCLO.js.map +0 -1
  193. package/dist/chunk-AZP2AA5M.js.map +0 -1
  194. package/dist/chunk-D4IQAT27.js.map +0 -1
  195. package/dist/chunk-DHFFRMF6.js.map +0 -1
  196. package/dist/chunk-FKU7VSUD.js.map +0 -1
  197. package/dist/chunk-J2Y4A3LP.js.map +0 -1
  198. package/dist/chunk-JMQGWQZU.js.map +0 -1
  199. package/dist/chunk-JY4RO76L.js +0 -73
  200. package/dist/chunk-JY4RO76L.js.map +0 -1
  201. package/dist/chunk-M7YCPFIX.js.map +0 -1
  202. package/dist/chunk-MJSFR562.js.map +0 -1
  203. package/dist/chunk-MMDXNZPF.js.map +0 -1
  204. package/dist/chunk-MYAVQ23U.js.map +0 -1
  205. package/dist/chunk-OSQDDJXX.js.map +0 -1
  206. package/dist/chunk-QESUUPOE.js.map +0 -1
  207. package/dist/chunk-SJYG4EJZ.js.map +0 -1
  208. package/dist/chunk-SYQ7R2JO.js.map +0 -1
  209. package/dist/chunk-TD643KB3.js +0 -245
  210. package/dist/chunk-TD643KB3.js.map +0 -1
  211. package/dist/chunk-TFV6Z7F7.js.map +0 -1
  212. package/dist/chunk-TGOHJCQ4.js +0 -83
  213. package/dist/chunk-TGOHJCQ4.js.map +0 -1
  214. package/dist/chunk-TOPAIL5W.js.map +0 -1
  215. package/dist/chunk-U4VYHKPM.js.map +0 -1
  216. package/dist/chunk-UFWNMW3G.js.map +0 -1
  217. package/dist/chunk-UNHCZRO4.js.map +0 -1
  218. package/dist/chunk-URDV4OCP.js.map +0 -1
  219. package/dist/chunk-YI6JVSFO.js +0 -43
  220. package/dist/chunk-YI6JVSFO.js.map +0 -1
  221. package/dist/chunk-YNSNRR5D.js +0 -184
  222. package/dist/chunk-YNSNRR5D.js.map +0 -1
  223. package/dist/chunk-Z6DLWTBY.js +0 -46
  224. package/dist/chunk-Z6DLWTBY.js.map +0 -1
  225. package/dist/chunk-ZDQIUHAM.js.map +0 -1
  226. package/dist/chunk-ZSKHDU5P.js.map +0 -1
  227. package/dist/components/wizard/selection-header.js +0 -11
  228. package/dist/components/wizard/step-category.js +0 -12
  229. package/dist/components/wizard/step-subcategory.js +0 -13
  230. /package/dist/components/{wizard/selection-header.js.map → skill-search/skill-search.js.map} +0 -0
  231. /package/dist/components/wizard/{step-category.js.map → category-grid.js.map} +0 -0
  232. /package/dist/components/wizard/{step-subcategory.js.map → section-progress.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,198 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.13.0] - 2026-02-06
9
+
10
+ ### Added
11
+
12
+ - **Import skill command** (`cc import skill`) - Import skills from GitHub repos with `--list`, `--skill`, `--all`, `--force`, `--dry-run` options
13
+ - **Interactive skill search** (`cc search -i`) - Live filtering, multi-select, batch import from configured sources
14
+ - **Sources config** - Configure multiple skill registries in `config.yaml` with `sources` array
15
+ - **Wizard footer component** - Split-layout footer with navigation hints on left, actions on right
16
+ - **Framework-first build flow** - Web domain hides other categories until framework is selected
17
+
18
+ ### Changed
19
+
20
+ - **Wizard tabs** - Tab-style navigation with background colors (cyan active, white completed) instead of circle indicators
21
+ - **Wizard header** - Now displays CLI version
22
+ - **Category grid styling** - Background colors instead of circles/strikethrough for selection states
23
+ - **Agent definitions generalized** - 16 agents updated to use generic terms (styling, database) instead of specific tech (SCSS, Drizzle)
24
+
25
+ ### Removed
26
+
27
+ - Old `search.ts` command - Replaced with dual-mode `search.tsx` (static + interactive)
28
+
29
+ [0.13.0]: https://github.com/claude-collective/cli/releases/tag/v0.13.0
30
+
31
+ ## [0.12.0] - 2026-02-04
32
+
33
+ ### Added
34
+
35
+ - **Agent Compliance Bible** - 30-test compliance suite in `docs/bibles/AGENT-COMPLIANCE-BIBLE.md` for verifying agent alignment with PROMPT_BIBLE and architecture standards
36
+ - **Claude Code Research** - Documentation of 176 Claude Code updates (Oct 2025 - Jan 2026) covering subagents, hooks, plugins, and async execution patterns
37
+ - **cli-tester examples** - Example test output for CLI component testing
38
+
39
+ ### Changed
40
+
41
+ - **Agent partials improved** - Major conciseness pass on 15+ examples.md files, removed ~800 lines of filler, N/A sections, and verbose examples
42
+ - **Workflow quality** - Standardized workflows across all agents, removed time estimates, improved clarity
43
+ - **Bible index updated** - Fixed paths from `src/docs/` to `docs/bibles/`, corrected agent naming conventions
44
+
45
+ [0.12.0]: https://github.com/claude-collective/cli/releases/tag/v0.12.0
46
+
47
+ ## [0.11.0] - 2026-02-04
48
+
49
+ ### Breaking Changes
50
+
51
+ - **CLI source directory renamed** - `src/cli-v2/` renamed to `src/cli/`. The v2 suffix was removed as this is now the primary CLI implementation.
52
+
53
+ ### Added
54
+
55
+ - **Bible documentation** - Added comprehensive documentation standards in `docs/bibles/`:
56
+ - `CLAUDE_ARCHITECTURE_BIBLE.md` - System architecture and agent structure
57
+ - `PROMPT_BIBLE.md` - Prompt engineering techniques
58
+ - `DOCUMENTATION_BIBLE.md` - Documentation standards
59
+ - `FRONTEND_BIBLE.md` - Frontend development standards
60
+ - `SKILL-ATOMICITY-BIBLE.md` - Skill design principles
61
+ - `INDEX.md` - Bible index and reference guide
62
+ - **Missing command documentation** - Added docs for: `doctor`, `search`, `outdated`, `info`, `diff`, `update`, `new skill`, `new agent`, and all config/version subcommands
63
+ - **skills-matrix.yaml schema documentation** - Full schema with categories, relationships, and skill aliases documented in `data-models.md`
64
+
65
+ ### Changed
66
+
67
+ - **Agents genericized** - Developer agents no longer reference specific technologies (SCSS, Drizzle, Commander.js, etc.). Skills provide implementation details.
68
+ - **Agent references fixed** - Updated all agent references to use correct names: `frontend-*` → `web-*`, `backend-*` → `api-*`, `tester` → `web-tester`/`cli-tester`
69
+ - **Documentation paths fixed** - Fixed skill paths from `src/skills/` to `.claude/skills/`, Bible paths to `docs/bibles/`
70
+ - **cc eject options corrected** - Changed from `templates/config/agents` to `agent-partials/skills/all`
71
+ - **README install paths fixed** - Changed `~/.claude/` to `./.claude/` (relative to project)
72
+ - **Command naming convention** - Updated docs to use space-separated format (`build plugins`) instead of colon notation (`build:plugins`)
73
+
74
+ ### Removed
75
+
76
+ - **Deprecated documentation** - Deleted outdated files that referenced non-existent architecture:
77
+ - `docs/workflows.md` - Referenced non-existent `src/stacks/`
78
+ - `docs/stacks-as-visual-hierarchy.md` - Design proposal never implemented
79
+ - `docs/solution-a-migration-tasks.md` - Outdated migration document
80
+
81
+ [0.11.0]: https://github.com/claude-collective/cli/releases/tag/v0.11.0
82
+
83
+ ## [0.10.0] - 2026-02-03
84
+
85
+ ### Breaking Changes
86
+
87
+ - **Directory structure changed** - Source files now in `.claude-src/`, runtime output in `.claude/`. Config moved from `.claude/config.yaml` to `.claude-src/config.yaml`. Backward compatible reads from both locations.
88
+ - **Uninstall removes directories** - `cc uninstall` now removes entire `.claude/` and `.claude-src/` directories. The `--keep-config` flag is removed.
89
+
90
+ ### Added
91
+
92
+ - `CLAUDE_SRC_DIR` constant for `.claude-src/` directory
93
+ - `loadProjectAgents()` function to load agents from `.claude-src/agents/`
94
+ - `agentBaseDir` field on AgentDefinition/AgentConfig types
95
+ - `marketplace` and `agents_source` fields on ProjectConfig type
96
+ - Eject creates minimal `config.yaml` with example stack blueprint if it doesn't exist
97
+ - Init merges with existing config instead of overwriting
98
+
99
+ ### Changed
100
+
101
+ - Eject agent-partials go to `.claude-src/agents/` (was `.claude/agents/_partials/`)
102
+ - Init writes config to `.claude-src/config.yaml`
103
+ - Compiler checks `.claude-src/agents/_templates/` first for templates
104
+ - Config readers check `.claude-src/` first, fall back to `.claude/`
105
+
106
+ [0.10.0]: https://github.com/claude-collective/cli/releases/tag/v0.10.0
107
+
108
+ ## [0.9.0] - 2026-02-03
109
+
110
+ ### Breaking Changes
111
+
112
+ - **Config location changed** - Project config now at `.claude/config.yaml` instead of `.claude-collective/config.yaml`. Global config is deprecated.
113
+ - **Eject types simplified** - Old types `templates`, `config`, `agents` removed. Use `agent-partials`, `skills`, or `all`.
114
+
115
+ ### Added
116
+
117
+ - `--refresh` flag for `cc eject` to force refresh cached remote sources
118
+ - Source is saved to `.claude/config.yaml` when using `--source` flag
119
+ - `resolveAuthor()` function for project-level author resolution
120
+ - `populateFromStack()` wizard action to pre-populate domain selections
121
+
122
+ ### Fixed
123
+
124
+ - **Compiled agents now include preloaded_skills** - Fixed bug where agents compiled by `cc init` had no skills in frontmatter
125
+ - **Wizard "customize" option** - Now pre-populates with stack defaults instead of starting from scratch
126
+ - **Source fetcher cache handling** - No longer errors when cache directory already exists
127
+
128
+ ### Changed
129
+
130
+ - Eject loads skills from source marketplace instead of plugin directory
131
+ - Global config functions deprecated in favor of project-level config
132
+
133
+ [0.9.0]: https://github.com/claude-collective/cli/releases/tag/v0.9.0
134
+
135
+ ## [0.8.0] - 2026-02-02
136
+
137
+ ### Breaking Changes
138
+
139
+ - **Skill IDs normalized to kebab-case** - Skill IDs changed from path-based format with author suffix (e.g., `web/framework/react (@vince)`) to simple kebab-case (e.g., `web-framework-react`). Consumer configs and any code referencing old skill IDs must be updated.
140
+
141
+ ### Added
142
+
143
+ - **Meta-stack** - New stack for meta-level development with 5 agents (skill-summoner, agent-summoner, documentor, pattern-scout, web-pattern-critique) mapped to methodology and research skills.
144
+
145
+ ### Changed
146
+
147
+ - `skill_aliases` in skills-matrix.yaml now map to normalized kebab-case IDs
148
+ - `DEFAULT_PRESELECTED_SKILLS` updated to use new ID format
149
+ - Simplified `skill-copier.ts`, `skill-plugin-compiler.ts`, `marketplace-generator.ts` - removed path parsing logic
150
+
151
+ ### Removed
152
+
153
+ - `normalizeSkillId()` function - no longer needed since frontmatter contains canonical IDs
154
+
155
+ ### Fixed
156
+
157
+ - **Uninstall command terminal state** - Added proper `exit()` calls to restore terminal after confirmation
158
+
159
+ [0.8.0]: https://github.com/claude-collective/cli/releases/tag/v0.8.0
160
+
161
+ ## [0.7.0] - 2026-02-02
162
+
163
+ ### Breaking Changes
164
+
165
+ - **Wizard flow redesigned** - New 5-step flow: Approach → Stack → Build → Refine → Confirm. The old category → subcategory linear flow is replaced with domain-based grid selection.
166
+
167
+ ### Added
168
+
169
+ - **Domain-based navigation** - Categories now have a `domain` field (web, api, cli, mobile, shared) for filtering in the Build step
170
+ - **CategoryGrid component** - 2D grid selection with keyboard navigation (arrows, vim keys h/j/k/l), visual states (selected, recommended, discouraged, disabled)
171
+ - **WizardTabs component** - Horizontal 5-step progress indicator with completed/current/pending/skipped states
172
+ - **SectionProgress component** - Sub-step progress for multi-domain flows
173
+ - **StepBuild component** - Grid-based technology selection per domain, replaces linear category/subcategory flow
174
+ - **StepRefine component** - Skill source selection (verified skills, customize coming soon)
175
+ - **StepStackOptions component** - Options after stack selection (continue defaults or customize)
176
+ - **CLI domain support** - New `cli` category in skills-matrix with framework, prompts, testing subcategories
177
+ - **Wizard store v2** - Complete rewrite with history-based navigation, domain selections, grid focus state
178
+
179
+ ### Changed
180
+
181
+ - `wizard.tsx` - Complete rewrite as orchestrator for new 5-step flow
182
+ - `step-approach.tsx` - Updated for v2 store
183
+ - `step-stack.tsx` - Now dual-purpose: stack selection (stack path) or domain selection (scratch path)
184
+ - `step-confirm.tsx` - Updated to show domain breakdown, technology/skill counts
185
+ - `wizard-store.ts` - Migrated to v2 state shape with approach, selectedDomains, domainSelections, stackAction, focusedRow/Col
186
+
187
+ ### Removed
188
+
189
+ - `step-category.tsx` - Replaced by StepBuild with CategoryGrid
190
+ - `step-subcategory.tsx` - Replaced by StepBuild with CategoryGrid
191
+ - `selection-header.tsx` - No longer needed
192
+
193
+ ### Fixed
194
+
195
+ - **Skill resolution for stack defaults** - Selecting a stack with "Continue with defaults" now correctly includes all stack skills (was only including methodology skills)
196
+ - **Display names in Build step** - Technologies now show clean names ("React") instead of full IDs ("React (@vince)")
197
+
198
+ [0.7.0]: https://github.com/claude-collective/cli/releases/tag/v0.7.0
199
+
8
200
  ## [0.6.0] - 2026-02-01
9
201
 
10
202
  ### Breaking Changes
package/README.md CHANGED
@@ -32,12 +32,26 @@ requires node 18+ and [Claude Code](https://docs.anthropic.com/en/docs/claude-co
32
32
  ## commands
33
33
 
34
34
  ```bash
35
- cc init # interactive setup - pick skills, configure agents
36
- cc edit # modify your skill selection
37
- cc compile # recompile agents after changes
38
- cc list # show what's installed
39
- cc config # manage settings
40
- cc validate # check your setup is correct
35
+ cc init # interactive setup - pick skills, configure agents
36
+ cc edit # modify your skill selection
37
+ cc compile # recompile agents after changes
38
+ cc list # show what's installed
39
+ cc config # manage settings
40
+ cc validate # check your setup is correct
41
+ cc new skill # create a custom skill
42
+ cc new agent # create a custom agent
43
+ cc update # update local skills from source
44
+ cc uninstall # remove Claude Collective from project
45
+ cc doctor # diagnose setup issues
46
+ cc eject # eject skills/agent partials for customization
47
+ cc build marketplace # generate marketplace.json
48
+ cc build plugins # build plugins
49
+ cc build stack # build stacks
50
+ cc version # show/manage versions
51
+ cc diff # show skill differences
52
+ cc search # search for skills
53
+ cc info # show skill information
54
+ cc outdated # check outdated skills
41
55
  ```
42
56
 
43
57
  ## how skills work
@@ -76,20 +90,23 @@ each stack includes agents like `web-developer`, `api-reviewer`, `web-tester` -
76
90
 
77
91
  ```bash
78
92
  cc init
79
- # installs to ~/.claude/plugins/claude-collective/
93
+ # interactive wizard lets you choose: plugin mode, local mode, or marketplace setup
94
+ # plugin mode installs to ./.claude/plugins/claude-collective/
80
95
  ```
81
96
 
82
97
  **locally in your project** (for team sharing):
83
98
 
84
99
  ```bash
85
- cc init --local
100
+ cc init
101
+ # select "local" mode in the wizard
86
102
  # installs to ./.claude/ in your repo
87
103
  ```
88
104
 
89
105
  **your own marketplace** (for orgs):
90
106
 
91
107
  ```bash
92
- cc init --marketplace
108
+ cc init
109
+ # select "marketplace" mode in the wizard
93
110
  # scaffolds a marketplace you can customize and host
94
111
  ```
95
112
 
@@ -3,7 +3,7 @@ import {
3
3
  init_esm_shims
4
4
  } from "./chunk-DHET7RCE.js";
5
5
 
6
- // src/cli-v2/utils/logger.ts
6
+ // src/cli/utils/logger.ts
7
7
  init_esm_shims();
8
8
  var verboseMode = false;
9
9
  function setVerbose(enabled) {
@@ -19,4 +19,4 @@ export {
19
19
  setVerbose,
20
20
  verbose
21
21
  };
22
- //# sourceMappingURL=chunk-TOPAIL5W.js.map
22
+ //# sourceMappingURL=chunk-3U3R4NCG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/utils/logger.ts"],"sourcesContent":["/**\n * Verbose logging utility.\n * Used by lib/ modules that don't have access to oclif command context.\n * In oclif commands, prefer using this.log() instead.\n */\n\nlet verboseMode = false;\n\nexport function setVerbose(enabled: boolean): void {\n verboseMode = enabled;\n}\n\nexport function verbose(msg: string): void {\n if (verboseMode) {\n console.log(` ${msg}`);\n }\n}\n"],"mappings":";;;;;;AAAA;AAMA,IAAI,cAAc;AAEX,SAAS,WAAW,SAAwB;AACjD,gBAAc;AAChB;AAEO,SAAS,QAAQ,KAAmB;AACzC,MAAI,aAAa;AACf,YAAQ,IAAI,KAAK,GAAG,EAAE;AAAA,EACxB;AACF;","names":[]}
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  detectInstallation
4
- } from "./chunk-6ESUJMM7.js";
5
- import {
6
- loadProjectConfig
7
- } from "./chunk-MYAVQ23U.js";
4
+ } from "./chunk-SGJ23HIP.js";
8
5
  import {
9
6
  getCollectivePluginDir,
10
7
  getPluginAgentsDir,
11
8
  getPluginSkillsDir,
12
9
  readPluginManifest
13
- } from "./chunk-D4IQAT27.js";
10
+ } from "./chunk-ED4E6Q2T.js";
14
11
  import {
15
- DEFAULT_DISPLAY_VERSION
16
- } from "./chunk-SJYG4EJZ.js";
12
+ loadProjectConfig
13
+ } from "./chunk-CJEHB4TB.js";
17
14
  import {
18
15
  directoryExists
19
- } from "./chunk-MMDXNZPF.js";
16
+ } from "./chunk-TKFPKEV3.js";
17
+ import {
18
+ DEFAULT_DISPLAY_VERSION
19
+ } from "./chunk-76DWXGQE.js";
20
20
  import {
21
21
  init_esm_shims
22
22
  } from "./chunk-DHET7RCE.js";
23
23
 
24
- // src/cli-v2/lib/plugin-info.ts
24
+ // src/cli/lib/plugin-info.ts
25
25
  init_esm_shims();
26
26
  import { readdir } from "fs/promises";
27
27
  var DEFAULT_NAME = "claude-collective";
@@ -126,4 +126,4 @@ export {
126
126
  getInstallationInfo,
127
127
  formatInstallationDisplay
128
128
  };
129
- //# sourceMappingURL=chunk-TFV6Z7F7.js.map
129
+ //# sourceMappingURL=chunk-57Y5RALO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/lib/plugin-info.ts"],"sourcesContent":["import { readdir } from \"fs/promises\";\nimport {\n getCollectivePluginDir,\n getPluginSkillsDir,\n getPluginAgentsDir,\n readPluginManifest,\n} from \"./plugin-finder\";\nimport { directoryExists } from \"../utils/fs\";\nimport { DEFAULT_DISPLAY_VERSION } from \"../consts\";\nimport { detectInstallation, type InstallMode } from \"./installation\";\nimport { loadProjectConfig } from \"./project-config\";\n\nconst DEFAULT_NAME = \"claude-collective\";\n\nexport interface PluginInfo {\n name: string;\n version: string;\n skillCount: number;\n agentCount: number;\n path: string;\n}\n\nexport interface InstallationInfo {\n mode: InstallMode;\n name: string;\n version: string;\n skillCount: number;\n agentCount: number;\n configPath: string;\n agentsDir: string;\n skillsDir: string;\n}\n\nexport async function getPluginInfo(): Promise<PluginInfo | null> {\n const pluginDir = getCollectivePluginDir();\n\n if (!(await directoryExists(pluginDir))) {\n return null;\n }\n\n const manifest = await readPluginManifest(pluginDir);\n if (!manifest) {\n return null;\n }\n\n const skillsDir = getPluginSkillsDir(pluginDir);\n const agentsDir = getPluginAgentsDir(pluginDir);\n\n let skillCount = 0;\n let agentCount = 0;\n\n if (await directoryExists(skillsDir)) {\n const skills = await readdir(skillsDir, { withFileTypes: true });\n skillCount = skills.filter((s) => s.isDirectory()).length;\n }\n\n if (await directoryExists(agentsDir)) {\n const agents = await readdir(agentsDir, { withFileTypes: true });\n agentCount = agents.filter(\n (a) => a.isFile() && a.name.endsWith(\".md\"),\n ).length;\n }\n\n return {\n name: manifest.name || DEFAULT_NAME,\n version: manifest.version || DEFAULT_DISPLAY_VERSION,\n skillCount,\n agentCount,\n path: pluginDir,\n };\n}\n\nexport function formatPluginDisplay(info: PluginInfo): string {\n return `Plugin: ${info.name} v${info.version}\n Skills: ${info.skillCount}\n Agents: ${info.agentCount}\n Path: ${info.path}`;\n}\n\n/**\n * Get installation info for either local or plugin mode.\n * Auto-detects the installation mode and returns unified info.\n */\nexport async function getInstallationInfo(): Promise<InstallationInfo | null> {\n const installation = await detectInstallation();\n\n if (!installation) {\n return null;\n }\n\n let skillCount = 0;\n let agentCount = 0;\n let name = DEFAULT_NAME;\n let version = DEFAULT_DISPLAY_VERSION;\n\n // Count skills\n if (await directoryExists(installation.skillsDir)) {\n try {\n const skills = await readdir(installation.skillsDir, {\n withFileTypes: true,\n });\n skillCount = skills.filter((s) => s.isDirectory()).length;\n } catch {\n // Ignore errors\n }\n }\n\n // Count agents\n if (await directoryExists(installation.agentsDir)) {\n try {\n const agents = await readdir(installation.agentsDir, {\n withFileTypes: true,\n });\n agentCount = agents.filter(\n (a) => a.isFile() && a.name.endsWith(\".md\"),\n ).length;\n } catch {\n // Ignore errors\n }\n }\n\n // Get name/version from config or manifest depending on mode\n if (installation.mode === \"local\") {\n const loaded = await loadProjectConfig(installation.projectDir);\n if (loaded?.config) {\n name = loaded.config.name || DEFAULT_NAME;\n // Local mode doesn't have version in the same way\n version = \"local\";\n }\n } else {\n // Plugin mode - read from manifest\n const pluginDir = getCollectivePluginDir(installation.projectDir);\n const manifest = await readPluginManifest(pluginDir);\n if (manifest) {\n name = manifest.name || DEFAULT_NAME;\n version = manifest.version || DEFAULT_DISPLAY_VERSION;\n }\n }\n\n return {\n mode: installation.mode,\n name,\n version,\n skillCount,\n agentCount,\n configPath: installation.configPath,\n agentsDir: installation.agentsDir,\n skillsDir: installation.skillsDir,\n };\n}\n\nexport function formatInstallationDisplay(info: InstallationInfo): string {\n const modeLabel = info.mode === \"local\" ? \"Local\" : \"Plugin\";\n const versionDisplay =\n info.mode === \"local\" ? \"(local mode)\" : `v${info.version}`;\n\n return `Installation: ${info.name} ${versionDisplay}\n Mode: ${modeLabel}\n Skills: ${info.skillCount}\n Agents: ${info.agentCount}\n Config: ${info.configPath}\n Agents: ${info.agentsDir}`;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-DHET7RCE.js";
5
+
6
+ // node_modules/ink-testing-library/build/index.js
7
+ init_esm_shims();
8
+ import { EventEmitter } from "events";
9
+ import { render as inkRender } from "ink";
10
+ var Stdout = class extends EventEmitter {
11
+ get columns() {
12
+ return 100;
13
+ }
14
+ frames = [];
15
+ _lastFrame;
16
+ write = (frame) => {
17
+ this.frames.push(frame);
18
+ this._lastFrame = frame;
19
+ };
20
+ lastFrame = () => this._lastFrame;
21
+ };
22
+ var Stderr = class extends EventEmitter {
23
+ frames = [];
24
+ _lastFrame;
25
+ write = (frame) => {
26
+ this.frames.push(frame);
27
+ this._lastFrame = frame;
28
+ };
29
+ lastFrame = () => this._lastFrame;
30
+ };
31
+ var Stdin = class extends EventEmitter {
32
+ // eslint-disable-next-line @typescript-eslint/naming-convention
33
+ isTTY = true;
34
+ data = null;
35
+ // eslint-disable-line @typescript-eslint/ban-types
36
+ constructor(options = {}) {
37
+ super();
38
+ this.isTTY = options.isTTY ?? true;
39
+ }
40
+ write = (data) => {
41
+ this.data = data;
42
+ this.emit("readable");
43
+ this.emit("data", data);
44
+ };
45
+ setEncoding() {
46
+ }
47
+ setRawMode() {
48
+ }
49
+ resume() {
50
+ }
51
+ pause() {
52
+ }
53
+ ref() {
54
+ }
55
+ unref() {
56
+ }
57
+ // eslint-disable-next-line @typescript-eslint/ban-types
58
+ read = () => {
59
+ const { data } = this;
60
+ this.data = null;
61
+ return data;
62
+ };
63
+ };
64
+ var instances = [];
65
+ var render = (tree) => {
66
+ const stdout = new Stdout();
67
+ const stderr = new Stderr();
68
+ const stdin = new Stdin();
69
+ const instance = inkRender(tree, {
70
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
71
+ stdout,
72
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
73
+ stderr,
74
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
75
+ stdin,
76
+ debug: true,
77
+ exitOnCtrlC: false,
78
+ patchConsole: false
79
+ });
80
+ instances.push(instance);
81
+ return {
82
+ rerender: instance.rerender,
83
+ unmount: instance.unmount,
84
+ cleanup: instance.cleanup,
85
+ stdout,
86
+ stderr,
87
+ stdin,
88
+ frames: stdout.frames,
89
+ lastFrame: stdout.lastFrame
90
+ };
91
+ };
92
+
93
+ export {
94
+ render
95
+ };
96
+ //# sourceMappingURL=chunk-66UDJBF6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/ink-testing-library/source/index.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;SAAQ,oBAAmB;AAC3B,SAAQ,UAAU,iBAA8C;AAGhE,IAAM,SAAN,cAAqB,aAAY;EAChC,IAAI,UAAO;AACV,WAAO;EACR;EAES,SAAmB,CAAA;EACpB;EAER,QAAQ,CAAC,UAAiB;AACzB,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa;EACnB;EAEA,YAAY,MAAM,KAAK;;AAGxB,IAAM,SAAN,cAAqB,aAAY;EACvB,SAAmB,CAAA;EACpB;EAER,QAAQ,CAAC,UAAiB;AACzB,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa;EACnB;EAEA,YAAY,MAAM,KAAK;;AAGxB,IAAM,QAAN,cAAoB,aAAY;;EAE/B,QAAQ;EACR,OAAsB;;EACtB,YAAY,UAA6B,CAAA,GAAE;AAC1C,UAAK;AACL,SAAK,QAAQ,QAAQ,SAAS;EAC/B;EAEA,QAAQ,CAAC,SAAgB;AACxB,SAAK,OAAO;AACZ,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,QAAQ,IAAI;EACvB;EAEA,cAAW;EAEX;EAEA,aAAU;EAEV;EAEA,SAAM;EAEN;EAEA,QAAK;EAEL;EAEA,MAAG;EAEH;EAEA,QAAK;EAEL;;EAGA,OAA4B,MAAK;AAChC,UAAM,EAAC,KAAI,IAAI;AACf,SAAK,OAAO;AACZ,WAAO;EACR;;AAcD,IAAM,YAA2B,CAAA;AAE1B,IAAM,SAAS,CAAC,SAAgC;AACtD,QAAM,SAAS,IAAI,OAAM;AACzB,QAAM,SAAS,IAAI,OAAM;AACzB,QAAM,QAAQ,IAAI,MAAK;AAEvB,QAAM,WAAW,UAAU,MAAM;;IAEhC;;IAEA;;IAEA;IACA,OAAO;IACP,aAAa;IACb,cAAc;GACd;AAED,YAAU,KAAK,QAAQ;AAEvB,SAAO;IACN,UAAU,SAAS;IACnB,SAAS,SAAS;IAClB,SAAS,SAAS;IAClB;IACA;IACA;IACA,QAAQ,OAAO;IACf,WAAW,OAAO;;AAEpB;","names":[]}