@claude-collective/cli 0.21.0 → 0.26.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.
- package/CHANGELOG.md +192 -0
- package/README.md +41 -27
- package/config/skills-matrix.yaml +38 -37
- package/config/stacks.yaml +8 -14
- package/dist/{chunk-ZNIDWLL5.js → chunk-3X5D7RM5.js} +4 -3
- package/dist/chunk-3X5D7RM5.js.map +1 -0
- package/dist/chunk-4357L7VK.js +251 -0
- package/dist/chunk-4357L7VK.js.map +1 -0
- package/dist/chunk-4S4FCAA2.js +100 -0
- package/dist/chunk-4S4FCAA2.js.map +1 -0
- package/dist/chunk-7UPXT32F.js +197 -0
- package/dist/chunk-7UPXT32F.js.map +1 -0
- package/dist/{chunk-DHET7RCE.js → chunk-AWKZ5BDL.js} +9 -2
- package/dist/{chunk-DHET7RCE.js.map → chunk-AWKZ5BDL.js.map} +1 -1
- package/dist/{chunk-6Q3Y7KVB.js → chunk-DBRUQQUF.js} +8 -2
- package/dist/chunk-DBRUQQUF.js.map +1 -0
- package/dist/{chunk-OQYYMQJR.js → chunk-ETCVEV3S.js} +8 -11
- package/dist/chunk-ETCVEV3S.js.map +1 -0
- package/dist/chunk-ETQ3BPGU.js +4204 -0
- package/dist/chunk-ETQ3BPGU.js.map +1 -0
- package/dist/{chunk-ZSVMS677.js → chunk-F4RD5FYM.js} +2 -2
- package/dist/chunk-F4RD5FYM.js.map +1 -0
- package/dist/{chunk-5KXUDHAB.js → chunk-GGFOD5PK.js} +6 -9
- package/dist/chunk-GGFOD5PK.js.map +1 -0
- package/dist/{chunk-UMORK7OK.js → chunk-H7SSBSPR.js} +2 -2
- package/dist/chunk-H7SSBSPR.js.map +1 -0
- package/dist/chunk-HWD32NP7.js +19 -0
- package/dist/chunk-HWD32NP7.js.map +1 -0
- package/dist/{chunk-HGCBZUH5.js → chunk-I3YYG5IO.js} +9 -10
- package/dist/chunk-I3YYG5IO.js.map +1 -0
- package/dist/{chunk-RTE64SJA.js → chunk-IXBCRT3F.js} +2 -2
- package/dist/chunk-IXBCRT3F.js.map +1 -0
- package/dist/{chunk-WFEFICFM.js → chunk-KWYO3M5Q.js} +5 -5
- package/dist/chunk-KWYO3M5Q.js.map +1 -0
- package/dist/{chunk-HEOHU5EZ.js → chunk-MCTSHLAF.js} +22 -11
- package/dist/chunk-MCTSHLAF.js.map +1 -0
- package/dist/chunk-NQJ47R4N.js +1092 -0
- package/dist/chunk-NQJ47R4N.js.map +1 -0
- package/dist/{chunk-FJFEKPXF.js → chunk-O6ZTD7ZI.js} +14 -3
- package/dist/chunk-O6ZTD7ZI.js.map +1 -0
- package/dist/chunk-OBXAY23Y.js +56 -0
- package/dist/chunk-OBXAY23Y.js.map +1 -0
- package/dist/{chunk-XY3XDVMI.js → chunk-QR2EBWL2.js} +3 -3
- package/dist/chunk-R5KJVI54.js +311 -0
- package/dist/chunk-R5KJVI54.js.map +1 -0
- package/dist/{chunk-2LSGX6R4.js → chunk-R7B63JAP.js} +83 -25
- package/dist/chunk-R7B63JAP.js.map +1 -0
- package/dist/{chunk-66UDJBF6.js → chunk-REJGRCVQ.js} +2 -2
- package/dist/chunk-TDZE4TDG.js +220 -0
- package/dist/chunk-TDZE4TDG.js.map +1 -0
- package/dist/{chunk-CBLPAMZO.js → chunk-TMED5DQ2.js} +68 -42
- package/dist/chunk-TMED5DQ2.js.map +1 -0
- package/dist/{chunk-Q3J43SF3.js → chunk-U7HFKR74.js} +2 -2
- package/dist/chunk-U7HFKR74.js.map +1 -0
- package/dist/{chunk-3EHUF54X.js → chunk-UEMRJI2K.js} +17 -4
- package/dist/chunk-UEMRJI2K.js.map +1 -0
- package/dist/{chunk-Z2CWURZ6.js → chunk-UNN7523L.js} +2 -2
- package/dist/chunk-V2ZIH7HV.js +29 -0
- package/dist/chunk-V2ZIH7HV.js.map +1 -0
- package/dist/{chunk-ZEI3ZUDU.js → chunk-VVYNZZUX.js} +7 -15
- package/dist/chunk-VVYNZZUX.js.map +1 -0
- package/dist/{chunk-A46TPNBJ.js → chunk-XENOESJZ.js} +7 -16
- package/dist/chunk-XENOESJZ.js.map +1 -0
- package/dist/chunk-ZDREFYD2.js +696 -0
- package/dist/chunk-ZDREFYD2.js.map +1 -0
- package/dist/chunk-ZW2PELOH.js +197 -0
- package/dist/chunk-ZW2PELOH.js.map +1 -0
- package/dist/cli/defaults/agent-mappings.yaml +0 -1
- package/dist/commands/build/marketplace.js +22 -21
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +35 -231
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +11 -18
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +36 -58
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/get.js +8 -8
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/index.js +7 -7
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +6 -6
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/set-project.js +8 -8
- package/dist/commands/config/set-project.js.map +1 -1
- package/dist/commands/config/show.js +7 -7
- package/dist/commands/config/unset-project.js +8 -8
- package/dist/commands/config/unset-project.js.map +1 -1
- package/dist/commands/diff.js +10 -16
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +18 -51
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +112 -57
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +17 -49
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +26 -26
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +15 -17
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +103 -727
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +8 -87
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +8 -12
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/skill.js +6 -6
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +15 -19
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +21 -34
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +15 -14
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +13 -24
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +44 -487
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/version/bump.js +11 -11
- package/dist/commands/version/bump.js.map +1 -1
- package/dist/commands/version/index.js +9 -10
- package/dist/commands/version/index.js.map +1 -1
- package/dist/commands/version/set.js +10 -8
- package/dist/commands/version/set.js.map +1 -1
- package/dist/commands/version/show.js +9 -10
- package/dist/commands/version/show.js.map +1 -1
- package/dist/components/common/confirm.js +2 -2
- package/dist/components/common/confirm.test.js +203 -0
- package/dist/components/common/confirm.test.js.map +1 -0
- package/dist/components/common/message.js +1 -1
- package/dist/components/common/spinner.js +1 -1
- package/dist/components/common/spinner.js.map +1 -1
- package/dist/components/skill-search/skill-search.js +3 -3
- package/dist/components/wizard/category-grid.js +2 -2
- package/dist/components/wizard/category-grid.test.js +132 -78
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/menu-item.js +2 -2
- package/dist/components/wizard/search-modal.js +9 -0
- package/dist/components/wizard/search-modal.js.map +1 -0
- package/dist/components/wizard/search-modal.test.js +216 -0
- package/dist/components/wizard/search-modal.test.js.map +1 -0
- package/dist/components/wizard/section-progress.js +2 -2
- package/dist/components/wizard/section-progress.test.js +4 -4
- package/dist/components/wizard/section-progress.test.js.map +1 -1
- package/dist/components/wizard/source-grid.js +10 -0
- package/dist/components/wizard/source-grid.js.map +1 -0
- package/dist/components/wizard/source-grid.test.js +500 -0
- package/dist/components/wizard/source-grid.test.js.map +1 -0
- package/dist/components/wizard/step-approach.js +7 -6
- package/dist/components/wizard/step-approach.test.js +115 -0
- package/dist/components/wizard/step-approach.test.js.map +1 -0
- package/dist/components/wizard/step-build.js +9 -4
- package/dist/components/wizard/step-build.test.js +103 -122
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +3 -2
- package/dist/components/wizard/step-confirm.test.js +364 -0
- package/dist/components/wizard/step-confirm.test.js.map +1 -0
- package/dist/components/wizard/step-refine.js +2 -2
- package/dist/components/wizard/step-refine.test.js +19 -13
- package/dist/components/wizard/step-refine.test.js.map +1 -1
- package/dist/components/wizard/step-settings.js +14 -0
- package/dist/components/wizard/step-settings.js.map +1 -0
- package/dist/components/wizard/step-settings.test.js +240 -0
- package/dist/components/wizard/step-settings.test.js.map +1 -0
- package/dist/components/wizard/step-sources.js +17 -0
- package/dist/components/wizard/step-sources.js.map +1 -0
- package/dist/components/wizard/step-sources.test.js +290 -0
- package/dist/components/wizard/step-sources.test.js.map +1 -0
- package/dist/components/wizard/step-stack.js +7 -6
- package/dist/components/wizard/step-stack.test.js +344 -0
- package/dist/components/wizard/step-stack.test.js.map +1 -0
- package/dist/components/wizard/view-title.js +2 -2
- package/dist/components/wizard/wizard-layout.js +6 -5
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard-tabs.test.js +292 -0
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
- package/dist/components/wizard/wizard.js +22 -14
- package/dist/config/skills-matrix.yaml +38 -37
- package/dist/config/stacks.yaml +8 -14
- package/dist/hooks/init.js +5 -5
- package/dist/hooks/init.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{magic-string.es-RGXYGAW3.js → magic-string.es-PAH2SOTR.js} +2 -2
- package/dist/source-manager-EYO3F2DV.js +16 -0
- package/dist/source-manager-EYO3F2DV.js.map +1 -0
- package/dist/src/agents/_templates/agent.liquid +1 -1
- 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/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 +51 -82
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +5 -3
- package/src/agents/_templates/agent.liquid +1 -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/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/dist/chunk-2LSGX6R4.js.map +0 -1
- package/dist/chunk-2OKUEELH.js +0 -32
- package/dist/chunk-2OKUEELH.js.map +0 -1
- package/dist/chunk-374JNMR6.js +0 -212
- package/dist/chunk-374JNMR6.js.map +0 -1
- package/dist/chunk-3EHUF54X.js.map +0 -1
- package/dist/chunk-3XR4PALU.js +0 -529
- package/dist/chunk-3XR4PALU.js.map +0 -1
- package/dist/chunk-5K2ZLUO5.js +0 -57
- package/dist/chunk-5K2ZLUO5.js.map +0 -1
- package/dist/chunk-5KXUDHAB.js.map +0 -1
- package/dist/chunk-6Q3Y7KVB.js.map +0 -1
- package/dist/chunk-7SLV7CMF.js +0 -615
- package/dist/chunk-7SLV7CMF.js.map +0 -1
- package/dist/chunk-A46TPNBJ.js.map +0 -1
- package/dist/chunk-AL74GBW4.js +0 -69
- package/dist/chunk-AL74GBW4.js.map +0 -1
- package/dist/chunk-BQX23RBV.js +0 -191
- package/dist/chunk-BQX23RBV.js.map +0 -1
- package/dist/chunk-CA4LH4LI.js +0 -132
- package/dist/chunk-CA4LH4LI.js.map +0 -1
- package/dist/chunk-CBLPAMZO.js.map +0 -1
- package/dist/chunk-CKPQHGXR.js +0 -417
- package/dist/chunk-CKPQHGXR.js.map +0 -1
- package/dist/chunk-CXOFOJCN.js +0 -80
- package/dist/chunk-CXOFOJCN.js.map +0 -1
- package/dist/chunk-EHGD7HIE.js +0 -104
- package/dist/chunk-EHGD7HIE.js.map +0 -1
- package/dist/chunk-EHS3TWWP.js +0 -95
- package/dist/chunk-EHS3TWWP.js.map +0 -1
- package/dist/chunk-FJFEKPXF.js.map +0 -1
- package/dist/chunk-HEOHU5EZ.js.map +0 -1
- package/dist/chunk-HGCBZUH5.js.map +0 -1
- package/dist/chunk-HPGFY5ZN.js +0 -114
- package/dist/chunk-HPGFY5ZN.js.map +0 -1
- package/dist/chunk-INJ2EFRW.js +0 -127
- package/dist/chunk-INJ2EFRW.js.map +0 -1
- package/dist/chunk-IOBFMF6X.js +0 -61
- package/dist/chunk-IOBFMF6X.js.map +0 -1
- package/dist/chunk-KH3HA7J7.js +0 -116
- package/dist/chunk-KH3HA7J7.js.map +0 -1
- package/dist/chunk-N6JNE326.js +0 -261
- package/dist/chunk-N6JNE326.js.map +0 -1
- package/dist/chunk-NAGU7TVZ.js +0 -36
- package/dist/chunk-NAGU7TVZ.js.map +0 -1
- package/dist/chunk-OQYYMQJR.js.map +0 -1
- package/dist/chunk-PLZOUVDD.js +0 -419
- package/dist/chunk-PLZOUVDD.js.map +0 -1
- package/dist/chunk-Q3J43SF3.js.map +0 -1
- package/dist/chunk-RTE64SJA.js.map +0 -1
- package/dist/chunk-T25OEQFI.js +0 -26
- package/dist/chunk-T25OEQFI.js.map +0 -1
- package/dist/chunk-UMORK7OK.js.map +0 -1
- package/dist/chunk-VFHWU7JU.js +0 -287
- package/dist/chunk-VFHWU7JU.js.map +0 -1
- package/dist/chunk-VS4GVTZE.js +0 -91
- package/dist/chunk-VS4GVTZE.js.map +0 -1
- package/dist/chunk-WFEFICFM.js.map +0 -1
- package/dist/chunk-WG6KIAPK.js +0 -54
- package/dist/chunk-WG6KIAPK.js.map +0 -1
- package/dist/chunk-ZEI3ZUDU.js.map +0 -1
- package/dist/chunk-ZNIDWLL5.js.map +0 -1
- package/dist/chunk-ZSVMS677.js.map +0 -1
- /package/dist/{chunk-XY3XDVMI.js.map → chunk-QR2EBWL2.js.map} +0 -0
- /package/dist/{chunk-66UDJBF6.js.map → chunk-REJGRCVQ.js.map} +0 -0
- /package/dist/{chunk-Z2CWURZ6.js.map → chunk-UNN7523L.js.map} +0 -0
- /package/dist/{magic-string.es-RGXYGAW3.js.map → magic-string.es-PAH2SOTR.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.26.0] - 2026-02-13
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Plugin-aware agent compilation** — `compileAgentForPlugin()` accepts `installMode` parameter. When `"plugin"`, emits fully-qualified `PluginSkillRef` format (`skill-id:skill-id`) in both preloaded frontmatter and dynamic skill invocations. New `PluginSkillRef` template literal type enforces the format at compile time.
|
|
13
|
+
- **Stacks from source** — Source loader loads `config/stacks.yaml` from the marketplace source repository before falling back to the CLI's built-in stacks. Private marketplaces can now define custom stack configurations visible to consumers.
|
|
14
|
+
- **Individual skill plugin installation** — New `installIndividualPlugins()` in `cc init` installs each selected skill as a native Claude Code plugin via `claude plugin install {id}@{marketplace}` when Plugin Mode is used without a stack.
|
|
15
|
+
- **Plugin-aware edit flow** — `cc edit` installs new skill plugins and uninstalls removed ones when in Plugin Mode with a marketplace. Uses non-fatal warnings for individual install failures.
|
|
16
|
+
- **Agent plugin compiler** — New `agent-plugin-compiler.ts` compiles agent partials into standalone Claude Code plugins. `cc build plugins --agents-dir` flag enables building agent plugins alongside skill plugins.
|
|
17
|
+
- **Shared plugin versioning** — Content-hash version bumping utilities extracted to `versioning.ts` and shared across skill, agent, and stack plugin compilers.
|
|
18
|
+
- **Marketplace creation guide** — `docs/creating-a-marketplace.md` covers manual and automated marketplace creation, consumer installation flow, and private repo authentication.
|
|
19
|
+
- **Marketplace migration guide** — `docs/migrate-to-marketplace.md` with step-by-step instructions for converting an existing CC repo into a publishable marketplace.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **Plugin names match skill IDs** — `SKILL_PLUGIN_PREFIX` changed from `"skill-"` to `""`. Plugin names are now bare skill IDs (e.g., `web-framework-react` instead of `skill-web-framework-react`). Marketplace generator category patterns updated to match unprefixed names.
|
|
24
|
+
- **`installMode` threaded through compilation** — `installMode` flows from `wizardResult.installMode` through `local-installer.ts` and from `projectConfig.installMode` through `agent-recompiler.ts` to `compileAgentForPlugin()`.
|
|
25
|
+
|
|
26
|
+
## [0.25.1] - 2026-02-13
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Code formatting** — Prettier applied across 21 files (wizard components, tests, schemas, docs).
|
|
31
|
+
|
|
32
|
+
## [0.25.0] - 2026-02-12
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- **Multi-source skill selection** — New Sources step between Build and Confirm lets users choose between recommended (public) and custom skill sources per technology. Source grid displays variant cards for each available source with installed indicators. Customize view shows per-skill source options.
|
|
37
|
+
- **Source settings management** — `G` hotkey opens settings panel to add/remove extra skill sources with URL validation. Sources persist to `.claude-src/config.yaml`.
|
|
38
|
+
- **Source switching in `cc edit`** — Edit command detects source changes and applies archive/restore for Local↔Public transitions via `source-switcher.ts`. Shows `~ skillId (From → To)` for source switches.
|
|
39
|
+
- **Bound skill search** — Search pill in source grid triggers immediate search across configured extra marketplaces on Space. Results appear in modal overlay with keyboard navigation. Selected results become bound skills persisted in config.
|
|
40
|
+
- **BoundSkill types and schema** — `BoundSkill`, `BoundSkillCandidate`, `SkillAlias` types with Zod `boundSkillSchema` for config persistence. `boundSkills` field added to `ProjectSourceConfig`.
|
|
41
|
+
- **Multi-source loader** — `tagExtraSources` enriches resolved skills with available sources from configured marketplaces. `searchExtraSources` queries all extra sources for skills matching a subcategory alias.
|
|
42
|
+
- **Installed skill indicators** — Dimmed `✓` prefix on skill tags for already-installed technologies.
|
|
43
|
+
- **Scroll viewport spec** — UX spec for wizard grid navigation with viewport-based scrolling.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- **Uninstall plugin removal resilient** — `claudePluginUninstall` wrapped in inner try-catch so directory removal proceeds even if Claude CLI plugin unregister fails.
|
|
48
|
+
- **Config skills array restored** — Fixed skill-to-agent compilation when `skills` array was missing from project config.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- **SkillId format tightened** — `${SkillIdPrefix}-${string}-${string}` now enforces 3+ segments.
|
|
53
|
+
- **Architecture docs updated** for multi-source features.
|
|
54
|
+
|
|
55
|
+
## [0.24.7] - 2026-02-12
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
|
|
59
|
+
- **Sources step in wizard flow** — New step between Build and Confirm lets users choose between recommended skills (verified by Claude Collective) or customizing skill sources per technology. Wizard tabs updated to 5 steps.
|
|
60
|
+
- **Edit command starts at Build step** — `cc edit` now skips Intro/Stack and opens directly at the Build step with currently installed skills pre-populated via new `populateFromSkillIds` store action.
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- **Parse boundary error handling hardened across 11 files** — All `verbose()` calls for malformed user-facing data (project config, local skills, default mappings, skill metadata) promoted to `warn()` so errors are visible without `--verbose`. Bare `JSON.parse` in skill import wrapped in try/catch. Empty `catch {}` in permission checker now warns on malformed `settings.json`. Manual frontmatter parsing in `compile.ts` replaced with `parseFrontmatter()` utility. Missing `name` field in project config now falls back to directory name with a warning.
|
|
65
|
+
- **Marketplace list JSON parsing hardened** — `claudePluginMarketplaceList` now validates JSON parse and array type before returning.
|
|
66
|
+
|
|
67
|
+
### Refactored
|
|
68
|
+
|
|
69
|
+
- **Replaced pseudo-agents pattern with `populateFromSkillIds`** — Stack selection no longer constructs fake agent objects to feed into `populateFromStack`. New `populateFromSkillIds` store action maps skill IDs directly to domain/subcategory selections with warnings for missing or unresolvable skills.
|
|
70
|
+
|
|
71
|
+
## [0.24.6] - 2026-02-12
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- **Codebase-wide comment cleanup** — Removed AI-generated banner separators (`// ====...`), obvious JSDoc that restated function/variable names, file-level header comments, and verbose multi-line blocks across 150+ files (~5,600 lines removed). Comments explaining WHY, boundary casts, edge cases, and TODOs preserved.
|
|
76
|
+
- **Standardized JSDoc on all type definitions** — All exported types in `src/cli/types/` now use consistent `/** */` JSDoc format. Union grouping comments kept as `//`. Obvious property comments removed, meaningful annotations (`@default`, deprecation, logic notes) preserved.
|
|
77
|
+
- **Unused imports cleaned up** — Removed unused `beforeEach` in `plugin-finder.test.ts` and unused `readdir` in `agent-recompiler.test.ts`.
|
|
78
|
+
|
|
79
|
+
## [0.24.5] - 2026-02-11
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- **Command tests for all 12 previously untested CLI commands** — ~158 new tests across 9 test files covering config:set-project, config:unset-project, version (index), version:set, version:bump, new:skill, new:agent, import:skill, update, uninstall, init, and edit. Total test count: 1512 passing (up from ~1344).
|
|
84
|
+
- **Vitest auto-mocks for fs and logger** — Manual mock files (`src/cli/utils/__mocks__/fs.ts`, `logger.ts`) replace inline `vi.mock()` factory functions across 15 existing test files. `clearMocks: true` enabled globally.
|
|
85
|
+
- **Vitest test projects** — Config split into 3 projects (`unit`, `integration`, `commands`) for clearer test organization and selective running.
|
|
86
|
+
|
|
87
|
+
### Changed
|
|
88
|
+
|
|
89
|
+
- **`docs/architecture.md` expanded** to comprehensive reference covering project structure, data flow, domain organization, type system, Zod validation, CLI commands, wizard components, test infrastructure, utility patterns, and conventions.
|
|
90
|
+
- **`docs/index.md` updated** with bibles section and UX research section.
|
|
91
|
+
|
|
92
|
+
### Removed
|
|
93
|
+
|
|
94
|
+
- **21 outdated documentation files removed** — Completed migration plans (Commander.js→oclif), implemented feature plans (skill-id normalization, Phase 7 wizard redesign, init refactor), superseded research (integration testing, oclif ecosystem evaluation, CLI improvements), and resolved UX research. `cli-command-testing-plan.md` also removed (all tests implemented). Bibles and active UX research retained.
|
|
95
|
+
|
|
96
|
+
## [0.24.4] - 2026-02-11
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
|
|
100
|
+
- **`lib/` restructured into domain subdirectories** — 62 files moved from flat `lib/` into 8 domain-organized subdirectories: `configuration/`, `loading/`, `matrix/`, `plugins/`, `skills/`, `agents/`, `stacks/`, `installation/`. Each domain has a barrel `index.ts` for clean imports. Cross-cutting files (`compiler`, `resolver`, `schemas`, etc.) remain at `lib/` root. ~140 import paths updated across commands, components, hooks, and tests.
|
|
101
|
+
|
|
102
|
+
## [0.24.3] - 2026-02-11
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
|
|
106
|
+
- **AJV replaced with Zod for all schema validation** — `schema-validator.ts` and `plugin-validator.ts` rewritten to use Zod `.safeParse()`. AJV and ajv-formats dependencies removed (23 packages pruned). Strict validation schemas added for `cc validate`: `metadataValidationSchema`, `stackConfigValidationSchema`, `skillFrontmatterValidationSchema`, `agentFrontmatterValidationSchema`.
|
|
107
|
+
- **JSON Schema files now generated from Zod** — `scripts/generate-json-schemas.ts` uses `z.toJSONSchema()` (Zod v4 native) to generate 10 schema files from Zod source of truth. Hand-maintained JSON schemas and symlinks to claude-subagents removed. New npm scripts: `generate:schemas`, `generate:schemas:check`.
|
|
108
|
+
- **YAML `$schema` references use local relative paths** — All 18 `agent.yaml` files switched from remote `raw.githubusercontent.com` URLs to `# yaml-language-server: $schema=` comments with relative paths. Schema reference added to `config/skills-matrix.yaml`. VS Code YAML validation now works offline.
|
|
109
|
+
|
|
110
|
+
## [0.24.2] - 2026-02-11
|
|
111
|
+
|
|
112
|
+
### Changed
|
|
113
|
+
|
|
114
|
+
- **Type definitions co-located into `src/cli/types/`** — 4 scattered type files (`src/types.ts`, `src/cli/types.ts`, `src/cli/types-matrix.ts`, `src/cli/types-stacks.ts`) consolidated into 6 domain-organized files + barrel index under `src/cli/types/`. All 60+ consumer imports updated. Unused imports cleaned up.
|
|
115
|
+
|
|
116
|
+
## [0.24.1] - 2026-02-11
|
|
117
|
+
|
|
118
|
+
### Fixed
|
|
119
|
+
|
|
120
|
+
- **Stack config now respects user customizations** — `buildLocalConfig` generates stack config from the user's actual skill selections instead of hardcoding the original stack definition. Customizations like swapping `commander` for `oclif` are now preserved.
|
|
121
|
+
- **Subcategory key `cli` corrected to `cli-framework`** in `stacks.yaml` to match the `CategoryPath` format used in production metadata files.
|
|
122
|
+
- **Parse boundaries hardened** — All YAML/JSON parse boundaries now warn or throw with context on failure: `parseFrontmatter` includes file path in warnings, `loadAllAgents`/`loadProjectAgents` catch and warn on invalid `agent.yaml`, `config-saver` uses Zod validation, `versioning` wraps `parseYaml` in try/catch, `matrix-loader` warns on invalid skill alias mappings.
|
|
123
|
+
|
|
124
|
+
### Changed
|
|
125
|
+
|
|
126
|
+
- **Test structure reorganized** — Component tests co-located with source files. Integration tests grouped in `lib/__tests__/integration/`. Compilation pipeline tests rewritten to use `createTestSource()` instead of external repo dependency.
|
|
127
|
+
- **Shared test factories added** — `createMockCategory()`, `createMockResolvedStack()`, `createComprehensiveMatrix()`, `createBasicMatrix()` in `helpers.ts` reduce ~300 lines of duplicate fixture code.
|
|
128
|
+
- **17 previously untested lib files now have unit tests** — compiler, matrix-loader, stacks-loader, defaults-loader, config-saver, skill-plugin-compiler, plugin-info, plugin-finder, plugin-version, output-validator, schema-validator, installation, skill-fetcher, agent-fetcher, skill-metadata, matrix-health-check, stack-installer.
|
|
129
|
+
- **Error path and user journey test coverage expanded** — 12 error path tests for loader functions, 8 edit-recompile journey tests, 17 install-compile journey tests.
|
|
130
|
+
|
|
131
|
+
## [0.24.0] - 2026-02-11
|
|
132
|
+
|
|
133
|
+
### Changed
|
|
134
|
+
|
|
135
|
+
- **Type system rewrite** — All `interface` declarations replaced with `type` aliases. `Skill` now extends `SkillDefinition` via intersection. Agent types composed from `BaseAgentFields` shared base. Inline `//` comments converted to JSDoc on type fields.
|
|
136
|
+
- **`SkillAlias` renamed to `SkillDisplayName`** — `ResolvedSkill.alias` → `displayName`, `CategoryDefinition.name` → `displayName`. `SkillRef` union eliminated — all post-resolution sites use `SkillId` directly.
|
|
137
|
+
- **`stack` is the single source of truth for skill assignment** — `skills` flat list, `agent_skills` per-agent overrides, and `preload_patterns` removed from `ProjectConfig`. When no predefined stack is selected, a stack is auto-generated from wizard selections.
|
|
138
|
+
- **Config always uses `SkillAssignment` objects** — `SkillEntry` union (`string | SkillAssignment`) eliminated. Config YAML `skills` entries are always `{ id }` objects.
|
|
139
|
+
- **`ProjectConfig.agents` narrowed** from `string[]` to `AgentName[]`. `getAgentsForSkill()` return type narrowed to `AgentName[]`.
|
|
140
|
+
- **Remaining `Object.entries`/`Object.keys` replaced** with `typedEntries`/`typedKeys` across all files. `Record<string, X>` narrowed to `Record<SkillId|AgentName|Subcategory, X>` where keys are known.
|
|
141
|
+
- **`loadProjectConfig` renamed** to `loadProjectSourceConfig` in `config.ts` to disambiguate from `project-config.ts` version.
|
|
142
|
+
- **Format functions consolidated** — `formatSourceOrigin`/`formatAgentsSourceOrigin` merged into `formatOrigin(type, origin)`.
|
|
143
|
+
- **`KEY_SUBCATEGORIES` deduplicated** — moved from `resolver.ts` and `stacks-loader.ts` into `consts.ts`.
|
|
144
|
+
|
|
145
|
+
### Removed
|
|
146
|
+
|
|
147
|
+
- **`name` field** from `SkillDefinition`, `Skill`, `ResolvedSkill`, `SkillOption` — `displayName` (formerly alias) replaces it. `extractDisplayName()` removed from `loader.ts`.
|
|
148
|
+
- **`custom_agents` infrastructure** — `custom-agent-resolver.ts` deleted entirely. `CustomAgentConfig` type, validation, resolution, and compilation code paths removed.
|
|
149
|
+
- **`agent_skills` config mechanism** — redundant with `stack`. All read/write/validation paths removed.
|
|
150
|
+
- **`preload_patterns` config field** — redundant with `SkillAssignment.preloaded`.
|
|
151
|
+
- **Dead `ProjectConfig` fields** — `philosophy`, `principles`, `tags`, `framework`, `hooks`.
|
|
152
|
+
- **Dead `SkillFrontmatter` fields** — `agent`, `argument-hint`, `context`, `disable-model-invocation`, `user-invocable`, `allowed-tools`.
|
|
153
|
+
- **Dead `PluginManifest` fields** — `homepage`, `license`, `repository`, `mcpServers`.
|
|
154
|
+
- **`ResolvedSkill.recommendedBy` and `requiredBy`** — unused inverse relationship fields.
|
|
155
|
+
- **`MarketplaceFetchResult.cacheKey`** — set but never read.
|
|
156
|
+
- **`CompileConfig.claude_md`** — always empty string.
|
|
157
|
+
- **`CompileMode` type and `getDirs()` function** — single-value enum.
|
|
158
|
+
- **`LoadedProjectConfig.isLegacy`** — always `false`.
|
|
159
|
+
- **`AgentYamlConfig.skills`** — parsed but never read.
|
|
160
|
+
- **Dead `skill-agent-mappings.ts` code** — ~170 lines of hardcoded fallbacks, `shouldPreloadSkill`, `extractCategoryKey`, `hasAgentSkillsOverride`, `isSkillAssignedToAgent`, `normalizeAgentSkills`, `resolveAgentsForSkill`.
|
|
161
|
+
- **Dead `resolver.ts` functions** — `resolveStackSkills`, `getStackSkillIds`, `flattenAgentSkills`, `expandSkillIdIfDirectory`, `normalizeSkillEntry`, unused interfaces.
|
|
162
|
+
- **Unused `compileAllAgents()` `_config` parameter**.
|
|
163
|
+
- **Dead wizard store actions/state** — `setDomainSelection`, `setSkillSource`, `setCurrentRefineIndex`, `setCurrentDomainIndex`, `toggleShowDescriptions`, `setFocus`, `currentRefineIndex`, `skillSources`.
|
|
164
|
+
- **Dead wizard component code** — `shouldShowSubcategory()` (always true), unused props, redundant computations.
|
|
165
|
+
- **~2,100 lines of redundant test code** for deleted features.
|
|
166
|
+
|
|
167
|
+
## [0.23.0] - 2026-02-10
|
|
168
|
+
|
|
169
|
+
### Added
|
|
170
|
+
|
|
171
|
+
- **Zod runtime validation at all parse boundaries** — 30+ schemas in `schemas.ts` using bridge pattern (`z.ZodType<ExistingType>`) validate every `JSON.parse` and `parseYaml` call in production code. Eliminates all production `as T` casts at deserialization boundaries. Lenient loader schemas use `.passthrough()` at parse boundaries; strict schemas for validation.
|
|
172
|
+
- **Typed object utilities** — `typedEntries<K,V>()` and `typedKeys<K>()` in `typed-object.ts` replace all `Object.entries/keys` boundary casts with type-safe helpers.
|
|
173
|
+
- **Named type aliases** — `SkillRef`, `SubcategorySelections`, `DomainSelections`, `CategoryMap`, `ResolvedSubcategorySkills` in `types-matrix.ts` for recurring composite types.
|
|
174
|
+
- **Scalar union types** — `ModelName` (`"sonnet" | "opus" | "haiku" | "inherit"`) and `PermissionMode` unions added to `types-matrix.ts`.
|
|
175
|
+
- **Testing strategy document** — `testing-strategy.md` with conventions for test categories, co-location rules, Ink component testing, keyboard simulation timing, and fixture organization.
|
|
176
|
+
|
|
177
|
+
### Changed
|
|
178
|
+
|
|
179
|
+
- **Extended type narrowing across 33 library files** — `Record<string, X>` narrowed to `Record<AgentName|SkillId|Subcategory, X>` where keys are known. Function signatures narrowed for `compileAgent`, `compileAgentForPlugin`, `getPluginSkillIds`, `fetchSkills`, `buildStackProperty`, `buildAgentSkills`, `validateBuildStep`, `populateFromStack`. Return types narrowed for `CompiledStackPlugin`, `StackInstallResult`, `RecompileAgentsResult`.
|
|
180
|
+
- **Replaced manual array operations with Remeda utilities** — `unique()`, `uniqueBy()`, `countBy()`, `sumBy()`, `sortBy()`, `indexBy()`, `mapToObj()`, `pipe()`, `flatMap()`, `filter()`, `mapValues()`, `difference()`, `groupBy()` across 20+ files.
|
|
181
|
+
- **`types.ts` interface fields narrowed** — `SkillDefinition.canonicalId` to `SkillId`, `AgentDefinition`/`AgentConfig` model/permission fields to `ModelName`/`PermissionMode`, `ProjectConfig.stack` to `ResolvedSubcategorySkills`. Inline `//` comments converted to JSDoc.
|
|
182
|
+
- **Wizard components and store narrowed** — Store selections use `DomainSelections`/`SubcategorySelections`, components use `typedEntries`/`typedKeys`.
|
|
183
|
+
|
|
184
|
+
### Dependencies
|
|
185
|
+
|
|
186
|
+
- Added `zod` v4.3.6 — runtime schema validation
|
|
187
|
+
- Added `remeda` v2.33.6 — tree-shakeable TypeScript-first utility functions
|
|
188
|
+
|
|
189
|
+
## [0.22.0] - 2026-02-09
|
|
190
|
+
|
|
191
|
+
### Changed
|
|
192
|
+
|
|
193
|
+
- **Union types for skill IDs, categories, agents, and domains** - Added `SkillId`, `CategoryPath`, `SkillAlias`, `AgentName`, `Domain`, `Subcategory` template literal and union types to `types-matrix.ts` as the single source of truth. All interface fields and function parameters across the codebase now use strict union types instead of `string`.
|
|
194
|
+
- **Narrowed production function signatures** - 27 production files updated: `matrix-resolver`, `skill-agent-mappings`, `resolver`, `wizard-store`, `step-build`, `category-grid`, and others. Type assertions (`as SkillId`, etc.) used only at data entry boundaries (YAML parsing, CLI input, `Object.keys()`).
|
|
195
|
+
- **Normalized skill ID format enforced at compile time** - `SkillId` = `` `${SkillIdPrefix}-${string}` `` prevents old-format IDs like `"react (@vince)"` at the type level. All test files updated to use `domain-subcategory-name` format.
|
|
196
|
+
- **Removed test constants** - `TEST_SKILLS`, `TEST_CATEGORIES`, `PLACEHOLDER_SKILLS`, `TEST_AUTHOR` removed from test helpers — union types provide compile-time safety, making string constants redundant.
|
|
197
|
+
- **`CategoryDefinition.id`** narrowed from `string` to `Subcategory`.
|
|
198
|
+
- **`SkillEntry`** narrowed from `string | SkillAssignment` to `SkillId | SkillAssignment`.
|
|
199
|
+
|
|
8
200
|
## [0.21.0] - 2026-02-09
|
|
9
201
|
|
|
10
202
|
### Changed
|
package/README.md
CHANGED
|
@@ -31,29 +31,31 @@ requires node 18+ and [Claude Code](https://docs.anthropic.com/en/docs/claude-co
|
|
|
31
31
|
|
|
32
32
|
## commands
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
34
|
+
| command | what it does |
|
|
35
|
+
| ------------------- | ------------------------------------------------------------- |
|
|
36
|
+
| `init` | interactive setup - pick skills, configure agents |
|
|
37
|
+
| `edit` | modify your skill selection |
|
|
38
|
+
| `compile` | recompile agents after changes |
|
|
39
|
+
| `update` | update local skills from source |
|
|
40
|
+
| `list` | show what's installed |
|
|
41
|
+
| `doctor` | diagnose setup issues |
|
|
42
|
+
| `search` | search for skills |
|
|
43
|
+
| `info <skill>` | show skill details |
|
|
44
|
+
| `diff` | show skill differences vs source |
|
|
45
|
+
| `outdated` | check for outdated skills |
|
|
46
|
+
| `validate` | check your setup is correct |
|
|
47
|
+
| `new skill` | create a custom skill |
|
|
48
|
+
| `new agent` | create a custom agent |
|
|
49
|
+
| `import skill` | import a skill from a remote source |
|
|
50
|
+
| `eject` | eject skills/agent partials for customization |
|
|
51
|
+
| `uninstall` | remove Claude Collective from project |
|
|
52
|
+
| `config` | manage settings (show, get, set-project, unset-project, path) |
|
|
53
|
+
| `version` | show/manage plugin versions (show, set, bump) |
|
|
54
|
+
| `build marketplace` | generate marketplace.json |
|
|
55
|
+
| `build plugins` | build individual skill plugins |
|
|
56
|
+
| `build stack` | build a stack plugin |
|
|
57
|
+
|
|
58
|
+
every command supports `--dry-run` and `--source` flags. run `npx @claude-collective/cli <command> --help` for full options.
|
|
57
59
|
|
|
58
60
|
## how skills work
|
|
59
61
|
|
|
@@ -90,7 +92,7 @@ each stack includes agents like `web-developer`, `api-developer`, `web-reviewer`
|
|
|
90
92
|
**as a plugin** (recommended for personal use):
|
|
91
93
|
|
|
92
94
|
```bash
|
|
93
|
-
|
|
95
|
+
npx @claude-collective/cli init
|
|
94
96
|
# interactive wizard lets you choose: plugin mode, local mode, or marketplace setup
|
|
95
97
|
# plugin mode installs to ./.claude/plugins/claude-collective/
|
|
96
98
|
```
|
|
@@ -98,7 +100,7 @@ cc init
|
|
|
98
100
|
**locally in your project** (for team sharing):
|
|
99
101
|
|
|
100
102
|
```bash
|
|
101
|
-
|
|
103
|
+
npx @claude-collective/cli init
|
|
102
104
|
# select "local" mode in the wizard
|
|
103
105
|
# installs to ./.claude/ in your repo
|
|
104
106
|
```
|
|
@@ -106,7 +108,7 @@ cc init
|
|
|
106
108
|
**your own marketplace** (for orgs):
|
|
107
109
|
|
|
108
110
|
```bash
|
|
109
|
-
|
|
111
|
+
npx @claude-collective/cli init
|
|
110
112
|
# select "marketplace" mode in the wizard
|
|
111
113
|
# scaffolds a marketplace you can customize and host
|
|
112
114
|
```
|
|
@@ -116,11 +118,23 @@ cc init
|
|
|
116
118
|
if the existing skills don't cover what you need:
|
|
117
119
|
|
|
118
120
|
```bash
|
|
119
|
-
|
|
121
|
+
npx @claude-collective/cli new skill my-custom-skill
|
|
120
122
|
```
|
|
121
123
|
|
|
122
124
|
this scaffolds the structure. a skill is just markdown with examples - no special tooling required.
|
|
123
125
|
|
|
126
|
+
## architecture
|
|
127
|
+
|
|
128
|
+
built with TypeScript (strict mode), oclif for commands, Ink (React) for terminal UI, Zod for runtime validation, and Zustand for wizard state. the core pipeline:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
source resolution → skill loading → matrix merging → wizard selection → config generation → agent compilation → installation
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
the codebase is organized into domain-driven library modules (`agents/`, `configuration/`, `loading/`, `matrix/`, `plugins/`, `skills/`, `stacks/`, `installation/`) with barrel exports. agents are compiled from YAML definitions + markdown partials through Liquid templates.
|
|
135
|
+
|
|
136
|
+
see [docs/architecture.md](./docs/architecture.md) for the full reference.
|
|
137
|
+
|
|
124
138
|
## links
|
|
125
139
|
|
|
126
140
|
- [skills repository](https://github.com/claude-collective/skills) - all the skills and stacks
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../src/schemas/skills-matrix.schema.json
|
|
1
2
|
# =============================================================================
|
|
2
3
|
# skills-matrix.yaml
|
|
3
4
|
# Full skills matrix for CLI data-driven architecture
|
|
@@ -18,7 +19,7 @@ categories:
|
|
|
18
19
|
# ─────────────────────────────────────────────────────────────────
|
|
19
20
|
framework:
|
|
20
21
|
id: framework
|
|
21
|
-
|
|
22
|
+
displayName: Framework
|
|
22
23
|
description: Core UI framework (React, Vue, Angular, SolidJS)
|
|
23
24
|
domain: web
|
|
24
25
|
exclusive: true
|
|
@@ -27,7 +28,7 @@ categories:
|
|
|
27
28
|
|
|
28
29
|
meta-framework:
|
|
29
30
|
id: meta-framework
|
|
30
|
-
|
|
31
|
+
displayName: Meta-Framework
|
|
31
32
|
description: Full-stack framework (Next.js, Remix, Nuxt)
|
|
32
33
|
domain: web
|
|
33
34
|
exclusive: true
|
|
@@ -36,7 +37,7 @@ categories:
|
|
|
36
37
|
|
|
37
38
|
styling:
|
|
38
39
|
id: styling
|
|
39
|
-
|
|
40
|
+
displayName: Styling
|
|
40
41
|
description: CSS approach (SCSS Modules, Tailwind)
|
|
41
42
|
domain: web
|
|
42
43
|
exclusive: true
|
|
@@ -45,7 +46,7 @@ categories:
|
|
|
45
46
|
|
|
46
47
|
client-state:
|
|
47
48
|
id: client-state
|
|
48
|
-
|
|
49
|
+
displayName: Client State Management
|
|
49
50
|
description: UI state, forms, local data (Zustand, Redux, MobX)
|
|
50
51
|
domain: web
|
|
51
52
|
exclusive: true
|
|
@@ -54,7 +55,7 @@ categories:
|
|
|
54
55
|
|
|
55
56
|
server-state:
|
|
56
57
|
id: server-state
|
|
57
|
-
|
|
58
|
+
displayName: Server State / Data Fetching
|
|
58
59
|
description: API data caching (React Query, SWR)
|
|
59
60
|
domain: web
|
|
60
61
|
exclusive: true
|
|
@@ -63,7 +64,7 @@ categories:
|
|
|
63
64
|
|
|
64
65
|
forms:
|
|
65
66
|
id: forms
|
|
66
|
-
|
|
67
|
+
displayName: Forms & Validation
|
|
67
68
|
description: Form handling and schema validation
|
|
68
69
|
domain: web
|
|
69
70
|
exclusive: false
|
|
@@ -72,7 +73,7 @@ categories:
|
|
|
72
73
|
|
|
73
74
|
testing:
|
|
74
75
|
id: testing
|
|
75
|
-
|
|
76
|
+
displayName: Testing
|
|
76
77
|
description: Unit, integration, and E2E testing
|
|
77
78
|
domain: web
|
|
78
79
|
exclusive: false
|
|
@@ -81,7 +82,7 @@ categories:
|
|
|
81
82
|
|
|
82
83
|
ui-components:
|
|
83
84
|
id: ui-components
|
|
84
|
-
|
|
85
|
+
displayName: UI Component Library
|
|
85
86
|
description: Pre-built component systems (Radix, shadcn)
|
|
86
87
|
domain: web
|
|
87
88
|
exclusive: false
|
|
@@ -90,7 +91,7 @@ categories:
|
|
|
90
91
|
|
|
91
92
|
mocking:
|
|
92
93
|
id: mocking
|
|
93
|
-
|
|
94
|
+
displayName: API Mocking
|
|
94
95
|
description: Mock Service Worker for development and testing
|
|
95
96
|
domain: web
|
|
96
97
|
exclusive: false
|
|
@@ -99,7 +100,7 @@ categories:
|
|
|
99
100
|
|
|
100
101
|
error-handling:
|
|
101
102
|
id: error-handling
|
|
102
|
-
|
|
103
|
+
displayName: Error Handling
|
|
103
104
|
description: Error boundaries, result types, and error patterns
|
|
104
105
|
domain: web-extras
|
|
105
106
|
parent_domain: web
|
|
@@ -109,7 +110,7 @@ categories:
|
|
|
109
110
|
|
|
110
111
|
i18n:
|
|
111
112
|
id: i18n
|
|
112
|
-
|
|
113
|
+
displayName: Internationalization
|
|
113
114
|
description: i18n libraries (next-intl, react-intl, vue-i18n)
|
|
114
115
|
domain: web
|
|
115
116
|
exclusive: true
|
|
@@ -118,7 +119,7 @@ categories:
|
|
|
118
119
|
|
|
119
120
|
file-upload:
|
|
120
121
|
id: file-upload
|
|
121
|
-
|
|
122
|
+
displayName: File Upload
|
|
122
123
|
description: File upload patterns and handling
|
|
123
124
|
domain: web-extras
|
|
124
125
|
parent_domain: web
|
|
@@ -128,7 +129,7 @@ categories:
|
|
|
128
129
|
|
|
129
130
|
files:
|
|
130
131
|
id: files
|
|
131
|
-
|
|
132
|
+
displayName: Files & Images
|
|
132
133
|
description: Image handling and file processing
|
|
133
134
|
domain: web-extras
|
|
134
135
|
parent_domain: web
|
|
@@ -138,7 +139,7 @@ categories:
|
|
|
138
139
|
|
|
139
140
|
utilities:
|
|
140
141
|
id: utilities
|
|
141
|
-
|
|
142
|
+
displayName: Utilities
|
|
142
143
|
description: Utility libraries (date-fns, native JS patterns)
|
|
143
144
|
domain: web-extras
|
|
144
145
|
parent_domain: web
|
|
@@ -148,7 +149,7 @@ categories:
|
|
|
148
149
|
|
|
149
150
|
realtime:
|
|
150
151
|
id: realtime
|
|
151
|
-
|
|
152
|
+
displayName: Realtime
|
|
152
153
|
description: WebSockets, SSE, and real-time communication
|
|
153
154
|
domain: web-extras
|
|
154
155
|
parent_domain: web
|
|
@@ -158,7 +159,7 @@ categories:
|
|
|
158
159
|
|
|
159
160
|
animation:
|
|
160
161
|
id: animation
|
|
161
|
-
|
|
162
|
+
displayName: Animation
|
|
162
163
|
description: Animation libraries and CSS animations
|
|
163
164
|
domain: web-extras
|
|
164
165
|
parent_domain: web
|
|
@@ -168,7 +169,7 @@ categories:
|
|
|
168
169
|
|
|
169
170
|
pwa:
|
|
170
171
|
id: pwa
|
|
171
|
-
|
|
172
|
+
displayName: Progressive Web App
|
|
172
173
|
description: Service workers, offline-first patterns, and PWA features
|
|
173
174
|
domain: web-extras
|
|
174
175
|
parent_domain: web
|
|
@@ -178,7 +179,7 @@ categories:
|
|
|
178
179
|
|
|
179
180
|
accessibility:
|
|
180
181
|
id: accessibility
|
|
181
|
-
|
|
182
|
+
displayName: Accessibility
|
|
182
183
|
description: WCAG compliance, ARIA, and keyboard navigation
|
|
183
184
|
domain: web-extras
|
|
184
185
|
parent_domain: web
|
|
@@ -188,7 +189,7 @@ categories:
|
|
|
188
189
|
|
|
189
190
|
web-performance:
|
|
190
191
|
id: web-performance
|
|
191
|
-
|
|
192
|
+
displayName: Web Performance
|
|
192
193
|
description: Bundle optimization, render performance, and code splitting
|
|
193
194
|
domain: web
|
|
194
195
|
exclusive: false
|
|
@@ -200,7 +201,7 @@ categories:
|
|
|
200
201
|
# ─────────────────────────────────────────────────────────────────
|
|
201
202
|
api:
|
|
202
203
|
id: api
|
|
203
|
-
|
|
204
|
+
displayName: API Framework
|
|
204
205
|
description: Backend framework (Hono, Express, Fastify)
|
|
205
206
|
domain: api
|
|
206
207
|
exclusive: true
|
|
@@ -209,7 +210,7 @@ categories:
|
|
|
209
210
|
|
|
210
211
|
database:
|
|
211
212
|
id: database
|
|
212
|
-
|
|
213
|
+
displayName: Database ORM
|
|
213
214
|
description: Database access layer (Drizzle, Prisma)
|
|
214
215
|
domain: api
|
|
215
216
|
exclusive: true
|
|
@@ -218,7 +219,7 @@ categories:
|
|
|
218
219
|
|
|
219
220
|
auth:
|
|
220
221
|
id: auth
|
|
221
|
-
|
|
222
|
+
displayName: Authentication
|
|
222
223
|
description: Auth solution (Better Auth, Auth.js)
|
|
223
224
|
domain: api
|
|
224
225
|
exclusive: true
|
|
@@ -227,7 +228,7 @@ categories:
|
|
|
227
228
|
|
|
228
229
|
observability:
|
|
229
230
|
id: observability
|
|
230
|
-
|
|
231
|
+
displayName: Observability
|
|
231
232
|
description: Logging, monitoring, error tracking
|
|
232
233
|
domain: api
|
|
233
234
|
exclusive: false
|
|
@@ -236,7 +237,7 @@ categories:
|
|
|
236
237
|
|
|
237
238
|
analytics:
|
|
238
239
|
id: analytics
|
|
239
|
-
|
|
240
|
+
displayName: Analytics
|
|
240
241
|
description: Product analytics and tracking
|
|
241
242
|
domain: api
|
|
242
243
|
exclusive: false
|
|
@@ -245,7 +246,7 @@ categories:
|
|
|
245
246
|
|
|
246
247
|
email:
|
|
247
248
|
id: email
|
|
248
|
-
|
|
249
|
+
displayName: Email
|
|
249
250
|
description: Transactional email (Resend, Sendgrid)
|
|
250
251
|
domain: api
|
|
251
252
|
exclusive: true
|
|
@@ -254,7 +255,7 @@ categories:
|
|
|
254
255
|
|
|
255
256
|
performance:
|
|
256
257
|
id: performance
|
|
257
|
-
|
|
258
|
+
displayName: Performance
|
|
258
259
|
description: API performance patterns and optimization
|
|
259
260
|
domain: api
|
|
260
261
|
exclusive: false
|
|
@@ -266,7 +267,7 @@ categories:
|
|
|
266
267
|
# ─────────────────────────────────────────────────────────────────
|
|
267
268
|
mobile-framework:
|
|
268
269
|
id: mobile-framework
|
|
269
|
-
|
|
270
|
+
displayName: Mobile Framework
|
|
270
271
|
description: Native mobile framework (React Native, Expo)
|
|
271
272
|
domain: mobile
|
|
272
273
|
exclusive: true
|
|
@@ -278,7 +279,7 @@ categories:
|
|
|
278
279
|
# ─────────────────────────────────────────────────────────────────
|
|
279
280
|
monorepo:
|
|
280
281
|
id: monorepo
|
|
281
|
-
|
|
282
|
+
displayName: Monorepo
|
|
282
283
|
description: Monorepo tooling (Turborepo, Nx)
|
|
283
284
|
domain: shared
|
|
284
285
|
exclusive: true
|
|
@@ -287,7 +288,7 @@ categories:
|
|
|
287
288
|
|
|
288
289
|
tooling:
|
|
289
290
|
id: tooling
|
|
290
|
-
|
|
291
|
+
displayName: Build Tooling
|
|
291
292
|
description: ESLint, Prettier, TypeScript, Vite
|
|
292
293
|
domain: shared
|
|
293
294
|
exclusive: false
|
|
@@ -296,7 +297,7 @@ categories:
|
|
|
296
297
|
|
|
297
298
|
security:
|
|
298
299
|
id: security
|
|
299
|
-
|
|
300
|
+
displayName: Security
|
|
300
301
|
description: Authentication security patterns and best practices
|
|
301
302
|
domain: shared
|
|
302
303
|
exclusive: false
|
|
@@ -305,7 +306,7 @@ categories:
|
|
|
305
306
|
|
|
306
307
|
methodology:
|
|
307
308
|
id: methodology
|
|
308
|
-
|
|
309
|
+
displayName: Methodology
|
|
309
310
|
description: Development methodology and engineering principles
|
|
310
311
|
domain: shared
|
|
311
312
|
exclusive: false
|
|
@@ -314,7 +315,7 @@ categories:
|
|
|
314
315
|
|
|
315
316
|
research:
|
|
316
317
|
id: research
|
|
317
|
-
|
|
318
|
+
displayName: Research
|
|
318
319
|
description: Codebase investigation and research methodology
|
|
319
320
|
domain: shared
|
|
320
321
|
exclusive: false
|
|
@@ -323,7 +324,7 @@ categories:
|
|
|
323
324
|
|
|
324
325
|
reviewing:
|
|
325
326
|
id: reviewing
|
|
326
|
-
|
|
327
|
+
displayName: Code Review
|
|
327
328
|
description: Code review patterns and guidance
|
|
328
329
|
domain: shared
|
|
329
330
|
exclusive: false
|
|
@@ -332,7 +333,7 @@ categories:
|
|
|
332
333
|
|
|
333
334
|
ci-cd:
|
|
334
335
|
id: ci-cd
|
|
335
|
-
|
|
336
|
+
displayName: CI/CD
|
|
336
337
|
description: Continuous integration and deployment pipelines
|
|
337
338
|
domain: shared
|
|
338
339
|
exclusive: false
|
|
@@ -344,7 +345,7 @@ categories:
|
|
|
344
345
|
# ─────────────────────────────────────────────────────────────────
|
|
345
346
|
cli-framework:
|
|
346
347
|
id: cli-framework
|
|
347
|
-
|
|
348
|
+
displayName: CLI Framework
|
|
348
349
|
description: CLI application framework (Commander, oclif)
|
|
349
350
|
domain: cli
|
|
350
351
|
exclusive: true
|
|
@@ -353,7 +354,7 @@ categories:
|
|
|
353
354
|
|
|
354
355
|
cli-prompts:
|
|
355
356
|
id: cli-prompts
|
|
356
|
-
|
|
357
|
+
displayName: CLI Prompts
|
|
357
358
|
description: Interactive prompts and UI
|
|
358
359
|
domain: cli
|
|
359
360
|
exclusive: true
|
|
@@ -362,7 +363,7 @@ categories:
|
|
|
362
363
|
|
|
363
364
|
cli-testing:
|
|
364
365
|
id: cli-testing
|
|
365
|
-
|
|
366
|
+
displayName: CLI Testing
|
|
366
367
|
description: CLI testing utilities
|
|
367
368
|
domain: cli
|
|
368
369
|
exclusive: false
|