@claude-collective/cli 0.26.1 → 0.29.5
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.
- package/CHANGELOG.md +123 -0
- package/README.md +47 -13
- package/config/skills-matrix.yaml +1 -1
- package/config/stacks.yaml +331 -94
- package/dist/{chunk-NT4K647L.js → chunk-4DX47646.js} +97 -76
- package/dist/chunk-4DX47646.js.map +1 -0
- package/dist/{chunk-KWYO3M5Q.js → chunk-4JSKL5SD.js} +25 -24
- package/dist/chunk-4JSKL5SD.js.map +1 -0
- package/dist/chunk-52XVP55K.js +165 -0
- package/dist/chunk-52XVP55K.js.map +1 -0
- package/dist/{chunk-OBXAY23Y.js → chunk-5I6VY2E7.js} +5 -5
- package/dist/chunk-5I6VY2E7.js.map +1 -0
- package/dist/{chunk-324DM2L6.js → chunk-5WIHSJRO.js} +230 -65
- package/dist/chunk-5WIHSJRO.js.map +1 -0
- package/dist/chunk-73E5CQUK.js +142 -0
- package/dist/chunk-73E5CQUK.js.map +1 -0
- package/dist/{chunk-DBRUQQUF.js → chunk-7GHTQSWI.js} +5 -1
- package/dist/{chunk-DBRUQQUF.js.map → chunk-7GHTQSWI.js.map} +1 -1
- package/dist/chunk-7ICBJZV2.js +63 -0
- package/dist/chunk-7ICBJZV2.js.map +1 -0
- package/dist/{chunk-CQ7657GA.js → chunk-ABK6CSWI.js} +1248 -735
- package/dist/chunk-ABK6CSWI.js.map +1 -0
- package/dist/{chunk-ZW2PELOH.js → chunk-AGNT3FUE.js} +106 -69
- package/dist/chunk-AGNT3FUE.js.map +1 -0
- package/dist/{chunk-F4RD5FYM.js → chunk-AGQRRJSY.js} +5 -2
- package/dist/chunk-AGQRRJSY.js.map +1 -0
- package/dist/{chunk-GGFOD5PK.js → chunk-AXND7NCM.js} +122 -66
- package/dist/chunk-AXND7NCM.js.map +1 -0
- package/dist/{chunk-NQJ47R4N.js → chunk-CQZAKMPJ.js} +66 -14
- package/dist/chunk-CQZAKMPJ.js.map +1 -0
- package/dist/{chunk-XENOESJZ.js → chunk-DALU3Y3U.js} +10 -67
- package/dist/chunk-DALU3Y3U.js.map +1 -0
- package/dist/chunk-DDNK5UNE.js +366 -0
- package/dist/chunk-DDNK5UNE.js.map +1 -0
- package/dist/chunk-DIRH4PDF.js +24 -0
- package/dist/chunk-DIRH4PDF.js.map +1 -0
- package/dist/{chunk-VVYNZZUX.js → chunk-DTFEFLUU.js} +9 -5
- package/dist/chunk-DTFEFLUU.js.map +1 -0
- package/dist/chunk-F23LEXMC.js +81 -0
- package/dist/chunk-F23LEXMC.js.map +1 -0
- package/dist/chunk-FUPBGSRA.js +66 -0
- package/dist/chunk-FUPBGSRA.js.map +1 -0
- package/dist/{chunk-U7HFKR74.js → chunk-H2NM6BDH.js} +5 -2
- package/dist/chunk-H2NM6BDH.js.map +1 -0
- package/dist/chunk-HJS2FWLA.js +75 -0
- package/dist/chunk-HJS2FWLA.js.map +1 -0
- package/dist/{chunk-MCTSHLAF.js → chunk-I6YQDA2J.js} +41 -14
- package/dist/chunk-I6YQDA2J.js.map +1 -0
- package/dist/{chunk-G35SYE6Z.js → chunk-J3J2WPI2.js} +37 -104
- package/dist/chunk-J3J2WPI2.js.map +1 -0
- package/dist/{chunk-HIQGK5XJ.js → chunk-JDQDYGGC.js} +123 -86
- package/dist/chunk-JDQDYGGC.js.map +1 -0
- package/dist/chunk-JWIH7YQE.js +88 -0
- package/dist/chunk-JWIH7YQE.js.map +1 -0
- package/dist/{chunk-4S4FCAA2.js → chunk-KFL72CWK.js} +26 -31
- package/dist/chunk-KFL72CWK.js.map +1 -0
- package/dist/{chunk-H7SSBSPR.js → chunk-LY5HM34M.js} +8 -5
- package/dist/chunk-LY5HM34M.js.map +1 -0
- package/dist/{chunk-2YMMJP4Z.js → chunk-PRY6MLN3.js} +92 -29
- package/dist/chunk-PRY6MLN3.js.map +1 -0
- package/dist/{chunk-3X5D7RM5.js → chunk-RFW2RIM7.js} +15 -4
- package/dist/chunk-RFW2RIM7.js.map +1 -0
- package/dist/chunk-RXC7AF7N.js +31 -0
- package/dist/chunk-RXC7AF7N.js.map +1 -0
- package/dist/chunk-VBOBVQQW.js +29 -0
- package/dist/chunk-VBOBVQQW.js.map +1 -0
- package/dist/{chunk-ETCVEV3S.js → chunk-VIBOSHRL.js} +242 -155
- package/dist/chunk-VIBOSHRL.js.map +1 -0
- package/dist/chunk-WPED6CL3.js +105 -0
- package/dist/chunk-WPED6CL3.js.map +1 -0
- package/dist/chunk-Z6UK6MI2.js +233 -0
- package/dist/chunk-Z6UK6MI2.js.map +1 -0
- package/dist/{chunk-CZBNDP5B.js → chunk-ZCIWRQQ4.js} +3 -3
- package/dist/commands/build/marketplace.js +21 -20
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +7 -11
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +8 -13
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +109 -135
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/get.js +4 -5
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/index.js +5 -6
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +4 -5
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/set-project.js +4 -5
- package/dist/commands/config/set-project.js.map +1 -1
- package/dist/commands/config/show.js +5 -6
- package/dist/commands/config/unset-project.js +4 -5
- package/dist/commands/config/unset-project.js.map +1 -1
- package/dist/commands/diff.js +26 -11
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +13 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +71 -42
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +34 -14
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +93 -52
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +27 -9
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +98 -48
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +10 -5
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +8 -11
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/skill.js +17 -18
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +23 -9
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +23 -20
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +28 -21
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +30 -22
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +103 -39
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/version/bump.js +4 -5
- package/dist/commands/version/bump.js.map +1 -1
- package/dist/commands/version/index.js +4 -5
- package/dist/commands/version/index.js.map +1 -1
- package/dist/commands/version/set.js +4 -5
- package/dist/commands/version/set.js.map +1 -1
- package/dist/commands/version/show.js +4 -5
- package/dist/commands/version/show.js.map +1 -1
- package/dist/components/common/confirm.test.js +2 -2
- package/dist/components/common/confirm.test.js.map +1 -1
- package/dist/components/skill-search/skill-search.js +4 -2
- package/dist/components/wizard/category-grid.js +3 -1
- package/dist/components/wizard/category-grid.test.js +63 -64
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/domain-selection.js +13 -0
- package/dist/components/wizard/help-modal.js +10 -0
- package/dist/components/wizard/help-modal.js.map +1 -0
- package/dist/components/wizard/menu-item.js +2 -1
- package/dist/components/wizard/search-modal.js +3 -1
- package/dist/components/wizard/search-modal.test.js +4 -2
- package/dist/components/wizard/search-modal.test.js.map +1 -1
- package/dist/components/wizard/section-progress.js +2 -1
- package/dist/components/wizard/section-progress.test.js +2 -1
- package/dist/components/wizard/section-progress.test.js.map +1 -1
- package/dist/components/wizard/source-grid.js +6 -2
- package/dist/components/wizard/source-grid.test.js +49 -45
- package/dist/components/wizard/source-grid.test.js.map +1 -1
- package/dist/components/wizard/stack-selection.js +15 -0
- package/dist/components/wizard/stack-selection.js.map +1 -0
- package/dist/components/wizard/step-approach.js +8 -6
- package/dist/components/wizard/step-approach.test.js +11 -9
- package/dist/components/wizard/step-approach.test.js.map +1 -1
- package/dist/components/wizard/step-build.js +9 -13
- package/dist/components/wizard/step-build.test.js +27 -45
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +2 -1
- package/dist/components/wizard/step-confirm.test.js +6 -5
- package/dist/components/wizard/step-confirm.test.js.map +1 -1
- package/dist/components/wizard/step-refine.js +2 -1
- package/dist/components/wizard/step-refine.test.js +3 -2
- package/dist/components/wizard/step-refine.test.js.map +1 -1
- package/dist/components/wizard/step-settings.js +8 -6
- package/dist/components/wizard/step-settings.test.js +12 -10
- package/dist/components/wizard/step-settings.test.js.map +1 -1
- package/dist/components/wizard/step-sources.js +11 -9
- package/dist/components/wizard/step-sources.test.js +16 -15
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +9 -6
- package/dist/components/wizard/step-stack.test.js +15 -12
- package/dist/components/wizard/step-stack.test.js.map +1 -1
- package/dist/components/wizard/view-title.js +2 -1
- package/dist/components/wizard/wizard-layout.js +7 -9
- package/dist/components/wizard/wizard-tabs.js +2 -1
- package/dist/components/wizard/wizard-tabs.test.js +2 -1
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
- package/dist/components/wizard/wizard.js +26 -20
- package/dist/config/skills-matrix.yaml +1 -1
- package/dist/config/stacks.yaml +331 -94
- package/dist/hooks/init.js +3 -4
- package/dist/hooks/init.js.map +1 -1
- package/dist/source-manager-JUPEIBMY.js +15 -0
- package/dist/source-manager-JUPEIBMY.js.map +1 -0
- package/dist/src/agents/developer/api-developer/agent.yaml +1 -1
- package/dist/src/agents/developer/cli-developer/agent.yaml +1 -1
- package/dist/src/agents/developer/web-architecture/agent.yaml +1 -1
- package/dist/src/agents/developer/web-developer/agent.yaml +1 -1
- package/dist/src/agents/meta/agent-summoner/agent.yaml +1 -1
- package/dist/src/agents/meta/documentor/agent.yaml +1 -1
- package/dist/src/agents/meta/skill-summoner/agent.yaml +1 -1
- package/dist/src/agents/meta/skill-summoner/output-format.md +1 -1
- package/dist/src/agents/migration/cli-migrator/agent.yaml +1 -1
- package/dist/src/agents/pattern/pattern-scout/agent.yaml +1 -1
- package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
- package/dist/src/agents/planning/web-pm/agent.yaml +1 -1
- package/dist/src/agents/researcher/api-researcher/agent.yaml +1 -1
- package/dist/src/agents/researcher/web-researcher/agent.yaml +1 -1
- package/dist/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
- package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
- package/dist/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
- package/dist/src/agents/tester/cli-tester/agent.yaml +1 -1
- package/dist/src/agents/tester/web-tester/agent.yaml +1 -1
- package/dist/stores/wizard-store.js +4 -3
- package/dist/stores/wizard-store.test.js +272 -25
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +2 -1
- package/src/agents/developer/api-developer/agent.yaml +1 -1
- package/src/agents/developer/cli-developer/agent.yaml +1 -1
- package/src/agents/developer/web-architecture/agent.yaml +1 -1
- package/src/agents/developer/web-developer/agent.yaml +1 -1
- package/src/agents/meta/agent-summoner/agent.yaml +1 -1
- package/src/agents/meta/documentor/agent.yaml +1 -1
- package/src/agents/meta/skill-summoner/agent.yaml +1 -1
- package/src/agents/meta/skill-summoner/output-format.md +1 -1
- package/src/agents/migration/cli-migrator/agent.yaml +1 -1
- package/src/agents/pattern/pattern-scout/agent.yaml +1 -1
- package/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
- package/src/agents/planning/web-pm/agent.yaml +1 -1
- package/src/agents/researcher/api-researcher/agent.yaml +1 -1
- package/src/agents/researcher/web-researcher/agent.yaml +1 -1
- package/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
- package/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
- package/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
- package/src/agents/tester/cli-tester/agent.yaml +1 -1
- package/src/agents/tester/web-tester/agent.yaml +1 -1
- package/src/schemas/agent-frontmatter.schema.json +84 -0
- package/src/schemas/agent.schema.json +93 -0
- package/src/schemas/hooks.schema.json +47 -0
- package/src/schemas/marketplace.schema.json +119 -0
- package/src/schemas/metadata.schema.json +113 -0
- package/src/schemas/plugin.schema.json +130 -0
- package/src/schemas/project-config.schema.json +125 -0
- package/src/schemas/project-source-config.schema.json +81 -0
- package/src/schemas/skill-frontmatter.schema.json +42 -0
- package/src/schemas/skills-matrix.schema.json +467 -0
- package/src/schemas/stack.schema.json +191 -0
- package/src/schemas/stacks.schema.json +111 -0
- package/dist/chunk-2OW7FCIF.js +0 -197
- package/dist/chunk-2OW7FCIF.js.map +0 -1
- package/dist/chunk-2YMMJP4Z.js.map +0 -1
- package/dist/chunk-324DM2L6.js.map +0 -1
- package/dist/chunk-3X5D7RM5.js.map +0 -1
- package/dist/chunk-4S4FCAA2.js.map +0 -1
- package/dist/chunk-CQ7657GA.js.map +0 -1
- package/dist/chunk-ETCVEV3S.js.map +0 -1
- package/dist/chunk-F4RD5FYM.js.map +0 -1
- package/dist/chunk-G35SYE6Z.js.map +0 -1
- package/dist/chunk-GGFOD5PK.js.map +0 -1
- package/dist/chunk-H7SSBSPR.js.map +0 -1
- package/dist/chunk-HIQGK5XJ.js.map +0 -1
- package/dist/chunk-HWD32NP7.js +0 -19
- package/dist/chunk-HWD32NP7.js.map +0 -1
- package/dist/chunk-KWYO3M5Q.js.map +0 -1
- package/dist/chunk-MCTSHLAF.js.map +0 -1
- package/dist/chunk-NQJ47R4N.js.map +0 -1
- package/dist/chunk-NT4K647L.js.map +0 -1
- package/dist/chunk-O6ZTD7ZI.js +0 -70
- package/dist/chunk-O6ZTD7ZI.js.map +0 -1
- package/dist/chunk-OBXAY23Y.js.map +0 -1
- package/dist/chunk-TMED5DQ2.js +0 -210
- package/dist/chunk-TMED5DQ2.js.map +0 -1
- package/dist/chunk-U7HFKR74.js.map +0 -1
- package/dist/chunk-UEMRJI2K.js +0 -146
- package/dist/chunk-UEMRJI2K.js.map +0 -1
- package/dist/chunk-UNN7523L.js +0 -78
- package/dist/chunk-UNN7523L.js.map +0 -1
- package/dist/chunk-VVYNZZUX.js.map +0 -1
- package/dist/chunk-XENOESJZ.js.map +0 -1
- package/dist/chunk-ZW2PELOH.js.map +0 -1
- package/dist/source-manager-VWIIDTK5.js +0 -16
- /package/dist/{chunk-CZBNDP5B.js.map → chunk-ZCIWRQQ4.js.map} +0 -0
- /package/dist/{source-manager-VWIIDTK5.js.map → components/wizard/domain-selection.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,129 @@ 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.29.5] - 2026-02-15
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Local yaml-language-server schema paths** — All 22 YAML/MD files with `$schema` comments pointed to relative local paths (e.g. `../../../schemas/agent.schema.json`) which only resolve inside this repo. Replaced with `raw.githubusercontent.com` URLs so schemas resolve in any consumer project. Added `agent`, `skillsMatrix`, and `stacks` entries to `SCHEMA_PATHS` constant.
|
|
13
|
+
|
|
14
|
+
## [0.29.4] - 2026-02-15
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **Strict JSON schema validation** — All 12 generated JSON schemas now enforce meaningful constraints for IDE autocomplete and validation via `yaml-language-server`. Previously, schemas like `project-config` accepted anything due to `.passthrough()` and missing `required` fields.
|
|
19
|
+
- Hook definitions require `hooks` array with at least 1 action
|
|
20
|
+
- Agent `tools` requires at least 1 entry
|
|
21
|
+
- Marketplace `name`/`version` reject empty strings; `plugins` requires at least 1 entry
|
|
22
|
+
- Stack `id`/`name` reject empty strings; `stacks` array requires at least 1 entry
|
|
23
|
+
- Relationship rules enforce minimum skill counts (`conflicts`/`discourages` need 2+)
|
|
24
|
+
- Plugin manifest uses strict validation schema (rejects unknown fields)
|
|
25
|
+
- Project config and source config use dedicated validation schemas with `required` fields and `additionalProperties: false`
|
|
26
|
+
|
|
27
|
+
## [0.29.3] - 2026-02-15
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- **Wrong YAML schema on generated config.yaml** — `cc init` embedded a `$schema` comment pointing to `project-source-config.schema.json` (marketplace source fields) instead of `project-config.schema.json` (consumer project fields like `name`, `agents`, `stack`, `skills`). Added new `project-config.schema.json` generated from `projectConfigLoaderSchema` and fixed the reference.
|
|
32
|
+
|
|
33
|
+
## [0.29.2] - 2026-02-15
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- **Multi-skill stack assignments in project config** — `ProjectConfig.stack` now stores `SkillAssignment[]` per subcategory (matching `stacks.yaml` format) instead of a single `SkillId`. Enables multiple skills per subcategory with `preloaded` flags preserved through the full pipeline. Config YAML accepts bare strings, objects, and arrays interchangeably.
|
|
38
|
+
- **Stack normalization at load time** — `loadProjectConfig` normalizes stack values to `SkillAssignment[]` using shared `normalizeStackRecord` helper (same as `loadStacks`).
|
|
39
|
+
- **Compact YAML serialization** — `compactStackForYaml` produces minimal output: bare strings for simple skills, objects for preloaded, arrays for multi-skill subcategories.
|
|
40
|
+
- **`getStackSkillIds` utility** — Extracts unique skill IDs from a stack config record using Remeda pipe. Used by `compile`, `doctor`, and `stack-plugin-compiler`.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- **`buildStackProperty` preserves full assignments** — No longer extracts only the first skill ID per subcategory; preserves all `SkillAssignment[]` entries with preloaded flags.
|
|
45
|
+
- **`buildSkillRefsFromConfig` delegates to `resolveAgentConfigToSkills`** — Removed manual iteration in favor of the existing typed helper, preserving preloaded flags from assignments.
|
|
46
|
+
- **Schema widened** — `projectConfigLoaderSchema.stack` accepts the same 3 YAML formats as `stackSchema`: bare string, single object with preloaded, and array of mixed elements.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- **`hashStackConfig` produced objects instead of IDs** — `Object.values()` on `SkillAssignment[]` yielded assignment objects instead of skill IDs; now uses `getStackSkillIds()`.
|
|
51
|
+
- **YAML schema references unreachable** — `yaml-language-server` `$schema` comments pointed to `node_modules/@claude-collective/cli/...` which only worked if the CLI was installed as a dependency. Now uses `raw.githubusercontent.com` URLs that resolve for any consumer.
|
|
52
|
+
- **`compileStackPlugin` skill extraction** — Same `Object.values()` bug fixed with `getStackSkillIds()`.
|
|
53
|
+
|
|
54
|
+
## [0.29.1] - 2026-02-15
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **Regex unicode flags** — Added `u` flag to control character regexes in `exec.ts` and `config.ts` for proper Unicode handling.
|
|
59
|
+
- **Switch default cases** — Added default cases to switch statements in `config.ts`, `plugin-version.ts`, `doctor.ts`, `eject.ts`, and `compile.ts`. Uses exhaustive `never` check for version bump type.
|
|
60
|
+
- **Unused variables** — Removed unused imports and variables in `multi-source-loader.ts`, test helpers, and integration tests.
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- **Template literals** — Converted string concatenation to template literals, removed useless backtick strings without interpolation, and merged adjacent string literals across 13 production files.
|
|
65
|
+
- **Control flow simplification** — Replaced logical AND chains with optional chaining in `matrix-resolver.ts`, removed redundant returns in wizard components, simplified boolean return patterns in `source-switcher.ts` and search components.
|
|
66
|
+
- **Type cleanup** — Removed unnecessary explicit type annotations, reordered default parameters after required parameters in `eject.ts`, extracted `discoverValidSkills` to module-level function in `import/skill.ts`.
|
|
67
|
+
|
|
68
|
+
## [0.29.0] - 2026-02-15
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
|
|
72
|
+
- **Shared utility modules** — Extracted `errors.ts`, `yaml.ts`, `messages.ts` into `src/cli/utils/` with full test coverage. Centralized metadata keys in `metadata-keys.ts`. Added `readFileSafe()` to `fs.ts` and `log()` to `logger.ts`.
|
|
73
|
+
- **Expanded Zod schemas** — 30+ schemas covering all JSON/YAML parsing boundaries with field-level JSDoc. New `formatZodErrors` helper for user-friendly validation messages.
|
|
74
|
+
- **Integration test suites** — New integration tests for import-skill, init-flow, source-switching, wizard-init-compile pipeline, and skill-resolution. Consolidated test helpers with `SKILL_FIXTURES`, `getTestSkill`, `createTestSource`. Test fixture files under `test/fixtures/`.
|
|
75
|
+
- **Documentation** — `type-conventions.md` (union type rules, ID formats), `clean-code-standards.md` (code quality guidelines), expanded `architecture.md` and `commands.md`.
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
|
|
79
|
+
- **Union types documented** — Added JSDoc field documentation to `DomainSelections`, `CategoryMap`, `CategoryDefinition`, `SubcategorySelections`, `ResolvedSubcategorySkills`, `SkillAssignment`.
|
|
80
|
+
- **Library decomposition** — Decomposed large functions across resolver, agent-recompiler, matrix-resolver, matrix-loader, plugin-validator, plugin-finder, compiler, and versioning modules. Added JSDoc documentation throughout.
|
|
81
|
+
- **Command standardization** — All CLI commands use consistent error handling via `handleError` base method, typed exit codes, and usage examples in descriptions.
|
|
82
|
+
- **Wizard refactoring** — Extracted 11 custom hooks, 3 subcomponents (`domain-selection`, `stack-selection`, `help-modal`), and `build-step-logic` module. Wizard store decomposed into focused action groups.
|
|
83
|
+
- **Barrel exports removed** — Deleted `themes/index.ts` and `common/index.ts` barrel files in favor of direct imports.
|
|
84
|
+
- **Consolidated constants** — `CLI_COLORS`, `STANDARD_FILES`, `STANDARD_DIRS`, `MAX_CONFIG_FILE_SIZE` centralized in `consts.ts`.
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- **Path traversal hardening** — `source-switcher`: `validateSkillId`, `validatePathBoundary`, TOCTOU race fix. `skill-copier`: `validateSkillPath`, `resolveSkillPath` boundary checks.
|
|
89
|
+
- **Input validation** — `config.ts`: `validateSourceFormat`, SSRF prevention, UNC path blocking. `exec.ts`: argument length, format, and control character validation.
|
|
90
|
+
- **Template injection** — Compiler Liquid template sanitization with function decomposition.
|
|
91
|
+
- **Source fetcher limits** — File size limits, nesting depth guards, SHA256 cache keys.
|
|
92
|
+
|
|
93
|
+
### Removed
|
|
94
|
+
|
|
95
|
+
- **`validator.ts`** — Replaced by `schema-validator.ts` and `output-validator.ts`.
|
|
96
|
+
|
|
97
|
+
## [0.28.0] - 2026-02-13
|
|
98
|
+
|
|
99
|
+
### Added
|
|
100
|
+
|
|
101
|
+
- **Explicit preloaded booleans in stacks** — `StackAgentConfig` uses `SkillAssignment[]` with explicit `preloaded: true/false` on each skill instead of inferring from `KEY_SUBCATEGORIES`. Normalization at the `loadStacks()` parse boundary accepts bare strings, objects, or arrays.
|
|
102
|
+
- **Auto-default plugin mode** — Wizard defaults to plugin install mode when a marketplace source is detected. `initialInstallMode` prop passed from `cc init`.
|
|
103
|
+
- **Marketplace indicator** — Wizard header shows marketplace label (e.g., "Photoroom + 1 public") via `getMarketplaceLabel()` utility.
|
|
104
|
+
- **Published JSON schemas** — `src/schemas/` included in npm package. IDE-friendly `# yaml-language-server: $schema=...` comments embedded in generated config files (`.claude-src/config.yaml`, `metadata.yaml`). `SCHEMA_PATHS` constants and `yamlSchemaComment()` helper in `consts.ts`.
|
|
105
|
+
- **Project-source-config JSON schema** — New `project-source-config.schema.json` for `.claude-src/config.yaml` validation in editors.
|
|
106
|
+
- **Extended `cc validate`** — 6 new validation targets: stacks config, project source config, project skill metadata/frontmatter, project agent frontmatter, and plugin manifests. Total 7 → 13 targets. Works in both CLI repo and user projects.
|
|
107
|
+
|
|
108
|
+
### Changed
|
|
109
|
+
|
|
110
|
+
- **`StackAgentConfig` type** — Changed from `Partial<Record<Subcategory, SkillId[]>>` to `Partial<Record<Subcategory, SkillAssignment[]>>`.
|
|
111
|
+
- **`KEY_SUBCATEGORIES` removed** — Replaced by explicit `preloaded` field on each skill assignment in `config/stacks.yaml`.
|
|
112
|
+
- **JSON schema `$id` URLs** — Changed from placeholder `claude-collective.local` domain to relative `schemas/*.schema.json` paths.
|
|
113
|
+
- **Stack domain filtering spec rewritten** — Unified wizard first step with stacks and scratch as peers in the same list.
|
|
114
|
+
|
|
115
|
+
## [0.27.0] - 2026-02-13
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
|
|
119
|
+
- **Stacks use skill IDs** — `config/stacks.yaml` agent configs now reference skills by full skill ID (e.g., `web-framework-react`) instead of display name alias (e.g., `react`). This eliminates the `displayNameToId` resolution step at every stack loading call site.
|
|
120
|
+
- **Config-driven source loading** — Marketplace repos can declare custom resource paths (`skills_dir`, `agents_dir`, `stacks_file`, `matrix_file`) in `.claude-src/config.yaml` instead of following the default layout conventions. Source loader reads path overrides and falls back to convention defaults.
|
|
121
|
+
- **Stack domain filtering spec** — `docs/stack-domain-filtering-spec.md` details the planned domain selection UX after stack choice.
|
|
122
|
+
- **Multi-skill categories findings** — `docs/multi-skill-categories-findings.md` documents analysis of skills that span multiple categories.
|
|
123
|
+
|
|
124
|
+
### Changed
|
|
125
|
+
|
|
126
|
+
- **`StackAgentConfig` value type** — Changed from `SkillDisplayName` to `SkillId`, matching the stacks.yaml data migration.
|
|
127
|
+
- **`resolveStackSkillsFromDisplayNames` renamed** — Now `resolveStackSkills`, reflecting that no alias resolution is needed.
|
|
128
|
+
- **`displayNameToId` threading removed** — Removed from `resolveAgentConfigToSkills`, `buildStackProperty`, `getAgentSkills`, `resolveAgents`, `stackToResolvedStack`, and `populateFromStack`. Net ~70 lines removed.
|
|
129
|
+
- **Source loader DRYed** — Extracted shared `loadAndMergeFromBasePath` to eliminate duplicated local/remote loading logic.
|
|
130
|
+
|
|
8
131
|
## [0.26.1] - 2026-02-13
|
|
9
132
|
|
|
10
133
|
### Fixed
|
package/README.md
CHANGED
|
@@ -39,14 +39,14 @@ requires node 18+ and [Claude Code](https://docs.anthropic.com/en/docs/claude-co
|
|
|
39
39
|
| `update` | update local skills from source |
|
|
40
40
|
| `list` | show what's installed |
|
|
41
41
|
| `doctor` | diagnose setup issues |
|
|
42
|
-
| `search` | search
|
|
42
|
+
| `search` | search skills (interactive multi-source or static query) |
|
|
43
43
|
| `info <skill>` | show skill details |
|
|
44
44
|
| `diff` | show skill differences vs source |
|
|
45
45
|
| `outdated` | check for outdated skills |
|
|
46
46
|
| `validate` | check your setup is correct |
|
|
47
47
|
| `new skill` | create a custom skill |
|
|
48
48
|
| `new agent` | create a custom agent |
|
|
49
|
-
| `import skill` | import a skill from
|
|
49
|
+
| `import skill` | import a skill from an external GitHub repository |
|
|
50
50
|
| `eject` | eject skills/agent partials for customization |
|
|
51
51
|
| `uninstall` | remove Claude Collective from project |
|
|
52
52
|
| `config` | manage settings (show, get, set-project, unset-project, path) |
|
|
@@ -87,32 +87,66 @@ stacks bundle skills together with pre-configured agents. instead of picking 20
|
|
|
87
87
|
|
|
88
88
|
each stack includes agents like `web-developer`, `api-developer`, `web-reviewer`, `web-tester`, `web-researcher`, `pattern-scout`, `documentor` - roles that use the right skills for the job.
|
|
89
89
|
|
|
90
|
-
## installation
|
|
90
|
+
## installation modes
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
the wizard starts by asking how you want to set up:
|
|
93
|
+
|
|
94
|
+
**use a stack** (default):
|
|
93
95
|
|
|
94
96
|
```bash
|
|
95
97
|
npx @claude-collective/cli init
|
|
96
|
-
#
|
|
97
|
-
#
|
|
98
|
+
# select "Use a stack" → pick a pre-built stack (e.g. nextjs-fullstack)
|
|
99
|
+
# installs as a native Claude Code plugin to ./.claude/plugins/claude-collective/
|
|
100
|
+
# you can customize skills after selecting a stack
|
|
98
101
|
```
|
|
99
102
|
|
|
100
|
-
**
|
|
103
|
+
**start from scratch** (pick individual skills):
|
|
101
104
|
|
|
102
105
|
```bash
|
|
103
106
|
npx @claude-collective/cli init
|
|
104
|
-
# select "
|
|
105
|
-
# installs to ./.claude/ in your repo
|
|
107
|
+
# select "Start from scratch" → browse domains and pick skills one by one
|
|
108
|
+
# installs locally to ./.claude/skills/ in your repo
|
|
106
109
|
```
|
|
107
110
|
|
|
108
|
-
|
|
111
|
+
both modes compile agents and generate a config at `.claude-src/config.yaml`. use `cc edit` to change skills after initial setup.
|
|
112
|
+
|
|
113
|
+
## multi-source setup
|
|
114
|
+
|
|
115
|
+
you can install skills from multiple sources. the wizard supports adding extra marketplaces alongside the default source:
|
|
116
|
+
|
|
117
|
+
- press `G` in the wizard to open source settings
|
|
118
|
+
- add marketplace URLs (e.g. `github:your-org/custom-marketplace`)
|
|
119
|
+
- skills from all sources appear in the selection grid, tagged by origin
|
|
120
|
+
|
|
121
|
+
you can also manage sources after setup with `cc edit` (same `G` hotkey).
|
|
122
|
+
|
|
123
|
+
to search across all configured sources:
|
|
109
124
|
|
|
110
125
|
```bash
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
126
|
+
# interactive search across all sources
|
|
127
|
+
cc search
|
|
128
|
+
|
|
129
|
+
# static search with a query
|
|
130
|
+
cc search react
|
|
114
131
|
```
|
|
115
132
|
|
|
133
|
+
## importing third-party skills
|
|
134
|
+
|
|
135
|
+
import skills from any GitHub repository into your local setup:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# list available skills from a repository
|
|
139
|
+
cc import skill github:vercel-labs/agent-skills --list
|
|
140
|
+
|
|
141
|
+
# import a specific skill
|
|
142
|
+
cc import skill github:vercel-labs/agent-skills --skill react-best-practices
|
|
143
|
+
|
|
144
|
+
# import all skills from a repository
|
|
145
|
+
cc import skill github:vercel-labs/agent-skills --all
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
imported skills are copied to `.claude/skills/` and tracked with metadata for future updates.
|
|
149
|
+
|
|
116
150
|
## creating custom skills
|
|
117
151
|
|
|
118
152
|
if the existing skills don't cover what you need:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# yaml-language-server: $schema
|
|
1
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/skills-matrix.schema.json
|
|
2
2
|
# =============================================================================
|
|
3
3
|
# skills-matrix.yaml
|
|
4
4
|
# Full skills matrix for CLI data-driven architecture
|