@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.
Files changed (273) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +47 -13
  3. package/config/skills-matrix.yaml +1 -1
  4. package/config/stacks.yaml +331 -94
  5. package/dist/{chunk-NT4K647L.js → chunk-4DX47646.js} +97 -76
  6. package/dist/chunk-4DX47646.js.map +1 -0
  7. package/dist/{chunk-KWYO3M5Q.js → chunk-4JSKL5SD.js} +25 -24
  8. package/dist/chunk-4JSKL5SD.js.map +1 -0
  9. package/dist/chunk-52XVP55K.js +165 -0
  10. package/dist/chunk-52XVP55K.js.map +1 -0
  11. package/dist/{chunk-OBXAY23Y.js → chunk-5I6VY2E7.js} +5 -5
  12. package/dist/chunk-5I6VY2E7.js.map +1 -0
  13. package/dist/{chunk-324DM2L6.js → chunk-5WIHSJRO.js} +230 -65
  14. package/dist/chunk-5WIHSJRO.js.map +1 -0
  15. package/dist/chunk-73E5CQUK.js +142 -0
  16. package/dist/chunk-73E5CQUK.js.map +1 -0
  17. package/dist/{chunk-DBRUQQUF.js → chunk-7GHTQSWI.js} +5 -1
  18. package/dist/{chunk-DBRUQQUF.js.map → chunk-7GHTQSWI.js.map} +1 -1
  19. package/dist/chunk-7ICBJZV2.js +63 -0
  20. package/dist/chunk-7ICBJZV2.js.map +1 -0
  21. package/dist/{chunk-CQ7657GA.js → chunk-ABK6CSWI.js} +1248 -735
  22. package/dist/chunk-ABK6CSWI.js.map +1 -0
  23. package/dist/{chunk-ZW2PELOH.js → chunk-AGNT3FUE.js} +106 -69
  24. package/dist/chunk-AGNT3FUE.js.map +1 -0
  25. package/dist/{chunk-F4RD5FYM.js → chunk-AGQRRJSY.js} +5 -2
  26. package/dist/chunk-AGQRRJSY.js.map +1 -0
  27. package/dist/{chunk-GGFOD5PK.js → chunk-AXND7NCM.js} +122 -66
  28. package/dist/chunk-AXND7NCM.js.map +1 -0
  29. package/dist/{chunk-NQJ47R4N.js → chunk-CQZAKMPJ.js} +66 -14
  30. package/dist/chunk-CQZAKMPJ.js.map +1 -0
  31. package/dist/{chunk-XENOESJZ.js → chunk-DALU3Y3U.js} +10 -67
  32. package/dist/chunk-DALU3Y3U.js.map +1 -0
  33. package/dist/chunk-DDNK5UNE.js +366 -0
  34. package/dist/chunk-DDNK5UNE.js.map +1 -0
  35. package/dist/chunk-DIRH4PDF.js +24 -0
  36. package/dist/chunk-DIRH4PDF.js.map +1 -0
  37. package/dist/{chunk-VVYNZZUX.js → chunk-DTFEFLUU.js} +9 -5
  38. package/dist/chunk-DTFEFLUU.js.map +1 -0
  39. package/dist/chunk-F23LEXMC.js +81 -0
  40. package/dist/chunk-F23LEXMC.js.map +1 -0
  41. package/dist/chunk-FUPBGSRA.js +66 -0
  42. package/dist/chunk-FUPBGSRA.js.map +1 -0
  43. package/dist/{chunk-U7HFKR74.js → chunk-H2NM6BDH.js} +5 -2
  44. package/dist/chunk-H2NM6BDH.js.map +1 -0
  45. package/dist/chunk-HJS2FWLA.js +75 -0
  46. package/dist/chunk-HJS2FWLA.js.map +1 -0
  47. package/dist/{chunk-MCTSHLAF.js → chunk-I6YQDA2J.js} +41 -14
  48. package/dist/chunk-I6YQDA2J.js.map +1 -0
  49. package/dist/{chunk-G35SYE6Z.js → chunk-J3J2WPI2.js} +37 -104
  50. package/dist/chunk-J3J2WPI2.js.map +1 -0
  51. package/dist/{chunk-HIQGK5XJ.js → chunk-JDQDYGGC.js} +123 -86
  52. package/dist/chunk-JDQDYGGC.js.map +1 -0
  53. package/dist/chunk-JWIH7YQE.js +88 -0
  54. package/dist/chunk-JWIH7YQE.js.map +1 -0
  55. package/dist/{chunk-4S4FCAA2.js → chunk-KFL72CWK.js} +26 -31
  56. package/dist/chunk-KFL72CWK.js.map +1 -0
  57. package/dist/{chunk-H7SSBSPR.js → chunk-LY5HM34M.js} +8 -5
  58. package/dist/chunk-LY5HM34M.js.map +1 -0
  59. package/dist/{chunk-2YMMJP4Z.js → chunk-PRY6MLN3.js} +92 -29
  60. package/dist/chunk-PRY6MLN3.js.map +1 -0
  61. package/dist/{chunk-3X5D7RM5.js → chunk-RFW2RIM7.js} +15 -4
  62. package/dist/chunk-RFW2RIM7.js.map +1 -0
  63. package/dist/chunk-RXC7AF7N.js +31 -0
  64. package/dist/chunk-RXC7AF7N.js.map +1 -0
  65. package/dist/chunk-VBOBVQQW.js +29 -0
  66. package/dist/chunk-VBOBVQQW.js.map +1 -0
  67. package/dist/{chunk-ETCVEV3S.js → chunk-VIBOSHRL.js} +242 -155
  68. package/dist/chunk-VIBOSHRL.js.map +1 -0
  69. package/dist/chunk-WPED6CL3.js +105 -0
  70. package/dist/chunk-WPED6CL3.js.map +1 -0
  71. package/dist/chunk-Z6UK6MI2.js +233 -0
  72. package/dist/chunk-Z6UK6MI2.js.map +1 -0
  73. package/dist/{chunk-CZBNDP5B.js → chunk-ZCIWRQQ4.js} +3 -3
  74. package/dist/commands/build/marketplace.js +21 -20
  75. package/dist/commands/build/marketplace.js.map +1 -1
  76. package/dist/commands/build/plugins.js +7 -11
  77. package/dist/commands/build/plugins.js.map +1 -1
  78. package/dist/commands/build/stack.js +8 -13
  79. package/dist/commands/build/stack.js.map +1 -1
  80. package/dist/commands/compile.js +109 -135
  81. package/dist/commands/compile.js.map +1 -1
  82. package/dist/commands/config/get.js +4 -5
  83. package/dist/commands/config/get.js.map +1 -1
  84. package/dist/commands/config/index.js +5 -6
  85. package/dist/commands/config/index.js.map +1 -1
  86. package/dist/commands/config/path.js +4 -5
  87. package/dist/commands/config/path.js.map +1 -1
  88. package/dist/commands/config/set-project.js +4 -5
  89. package/dist/commands/config/set-project.js.map +1 -1
  90. package/dist/commands/config/show.js +5 -6
  91. package/dist/commands/config/unset-project.js +4 -5
  92. package/dist/commands/config/unset-project.js.map +1 -1
  93. package/dist/commands/diff.js +26 -11
  94. package/dist/commands/diff.js.map +1 -1
  95. package/dist/commands/doctor.js +13 -16
  96. package/dist/commands/doctor.js.map +1 -1
  97. package/dist/commands/edit.js +71 -42
  98. package/dist/commands/edit.js.map +1 -1
  99. package/dist/commands/eject.js +34 -14
  100. package/dist/commands/eject.js.map +1 -1
  101. package/dist/commands/import/skill.js +93 -52
  102. package/dist/commands/import/skill.js.map +1 -1
  103. package/dist/commands/info.js +27 -9
  104. package/dist/commands/info.js.map +1 -1
  105. package/dist/commands/init.js +98 -48
  106. package/dist/commands/init.js.map +1 -1
  107. package/dist/commands/list.js +10 -5
  108. package/dist/commands/list.js.map +1 -1
  109. package/dist/commands/new/agent.js +8 -11
  110. package/dist/commands/new/agent.js.map +1 -1
  111. package/dist/commands/new/skill.js +17 -18
  112. package/dist/commands/new/skill.js.map +1 -1
  113. package/dist/commands/outdated.js +23 -9
  114. package/dist/commands/outdated.js.map +1 -1
  115. package/dist/commands/search.js +23 -20
  116. package/dist/commands/search.js.map +1 -1
  117. package/dist/commands/uninstall.js +28 -21
  118. package/dist/commands/uninstall.js.map +1 -1
  119. package/dist/commands/update.js +30 -22
  120. package/dist/commands/update.js.map +1 -1
  121. package/dist/commands/validate.js +103 -39
  122. package/dist/commands/validate.js.map +1 -1
  123. package/dist/commands/version/bump.js +4 -5
  124. package/dist/commands/version/bump.js.map +1 -1
  125. package/dist/commands/version/index.js +4 -5
  126. package/dist/commands/version/index.js.map +1 -1
  127. package/dist/commands/version/set.js +4 -5
  128. package/dist/commands/version/set.js.map +1 -1
  129. package/dist/commands/version/show.js +4 -5
  130. package/dist/commands/version/show.js.map +1 -1
  131. package/dist/components/common/confirm.test.js +2 -2
  132. package/dist/components/common/confirm.test.js.map +1 -1
  133. package/dist/components/skill-search/skill-search.js +4 -2
  134. package/dist/components/wizard/category-grid.js +3 -1
  135. package/dist/components/wizard/category-grid.test.js +63 -64
  136. package/dist/components/wizard/category-grid.test.js.map +1 -1
  137. package/dist/components/wizard/domain-selection.js +13 -0
  138. package/dist/components/wizard/help-modal.js +10 -0
  139. package/dist/components/wizard/help-modal.js.map +1 -0
  140. package/dist/components/wizard/menu-item.js +2 -1
  141. package/dist/components/wizard/search-modal.js +3 -1
  142. package/dist/components/wizard/search-modal.test.js +4 -2
  143. package/dist/components/wizard/search-modal.test.js.map +1 -1
  144. package/dist/components/wizard/section-progress.js +2 -1
  145. package/dist/components/wizard/section-progress.test.js +2 -1
  146. package/dist/components/wizard/section-progress.test.js.map +1 -1
  147. package/dist/components/wizard/source-grid.js +6 -2
  148. package/dist/components/wizard/source-grid.test.js +49 -45
  149. package/dist/components/wizard/source-grid.test.js.map +1 -1
  150. package/dist/components/wizard/stack-selection.js +15 -0
  151. package/dist/components/wizard/stack-selection.js.map +1 -0
  152. package/dist/components/wizard/step-approach.js +8 -6
  153. package/dist/components/wizard/step-approach.test.js +11 -9
  154. package/dist/components/wizard/step-approach.test.js.map +1 -1
  155. package/dist/components/wizard/step-build.js +9 -13
  156. package/dist/components/wizard/step-build.test.js +27 -45
  157. package/dist/components/wizard/step-build.test.js.map +1 -1
  158. package/dist/components/wizard/step-confirm.js +2 -1
  159. package/dist/components/wizard/step-confirm.test.js +6 -5
  160. package/dist/components/wizard/step-confirm.test.js.map +1 -1
  161. package/dist/components/wizard/step-refine.js +2 -1
  162. package/dist/components/wizard/step-refine.test.js +3 -2
  163. package/dist/components/wizard/step-refine.test.js.map +1 -1
  164. package/dist/components/wizard/step-settings.js +8 -6
  165. package/dist/components/wizard/step-settings.test.js +12 -10
  166. package/dist/components/wizard/step-settings.test.js.map +1 -1
  167. package/dist/components/wizard/step-sources.js +11 -9
  168. package/dist/components/wizard/step-sources.test.js +16 -15
  169. package/dist/components/wizard/step-sources.test.js.map +1 -1
  170. package/dist/components/wizard/step-stack.js +9 -6
  171. package/dist/components/wizard/step-stack.test.js +15 -12
  172. package/dist/components/wizard/step-stack.test.js.map +1 -1
  173. package/dist/components/wizard/view-title.js +2 -1
  174. package/dist/components/wizard/wizard-layout.js +7 -9
  175. package/dist/components/wizard/wizard-tabs.js +2 -1
  176. package/dist/components/wizard/wizard-tabs.test.js +2 -1
  177. package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
  178. package/dist/components/wizard/wizard.js +26 -20
  179. package/dist/config/skills-matrix.yaml +1 -1
  180. package/dist/config/stacks.yaml +331 -94
  181. package/dist/hooks/init.js +3 -4
  182. package/dist/hooks/init.js.map +1 -1
  183. package/dist/source-manager-JUPEIBMY.js +15 -0
  184. package/dist/source-manager-JUPEIBMY.js.map +1 -0
  185. package/dist/src/agents/developer/api-developer/agent.yaml +1 -1
  186. package/dist/src/agents/developer/cli-developer/agent.yaml +1 -1
  187. package/dist/src/agents/developer/web-architecture/agent.yaml +1 -1
  188. package/dist/src/agents/developer/web-developer/agent.yaml +1 -1
  189. package/dist/src/agents/meta/agent-summoner/agent.yaml +1 -1
  190. package/dist/src/agents/meta/documentor/agent.yaml +1 -1
  191. package/dist/src/agents/meta/skill-summoner/agent.yaml +1 -1
  192. package/dist/src/agents/meta/skill-summoner/output-format.md +1 -1
  193. package/dist/src/agents/migration/cli-migrator/agent.yaml +1 -1
  194. package/dist/src/agents/pattern/pattern-scout/agent.yaml +1 -1
  195. package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
  196. package/dist/src/agents/planning/web-pm/agent.yaml +1 -1
  197. package/dist/src/agents/researcher/api-researcher/agent.yaml +1 -1
  198. package/dist/src/agents/researcher/web-researcher/agent.yaml +1 -1
  199. package/dist/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
  200. package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
  201. package/dist/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
  202. package/dist/src/agents/tester/cli-tester/agent.yaml +1 -1
  203. package/dist/src/agents/tester/web-tester/agent.yaml +1 -1
  204. package/dist/stores/wizard-store.js +4 -3
  205. package/dist/stores/wizard-store.test.js +272 -25
  206. package/dist/stores/wizard-store.test.js.map +1 -1
  207. package/package.json +2 -1
  208. package/src/agents/developer/api-developer/agent.yaml +1 -1
  209. package/src/agents/developer/cli-developer/agent.yaml +1 -1
  210. package/src/agents/developer/web-architecture/agent.yaml +1 -1
  211. package/src/agents/developer/web-developer/agent.yaml +1 -1
  212. package/src/agents/meta/agent-summoner/agent.yaml +1 -1
  213. package/src/agents/meta/documentor/agent.yaml +1 -1
  214. package/src/agents/meta/skill-summoner/agent.yaml +1 -1
  215. package/src/agents/meta/skill-summoner/output-format.md +1 -1
  216. package/src/agents/migration/cli-migrator/agent.yaml +1 -1
  217. package/src/agents/pattern/pattern-scout/agent.yaml +1 -1
  218. package/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
  219. package/src/agents/planning/web-pm/agent.yaml +1 -1
  220. package/src/agents/researcher/api-researcher/agent.yaml +1 -1
  221. package/src/agents/researcher/web-researcher/agent.yaml +1 -1
  222. package/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
  223. package/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
  224. package/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
  225. package/src/agents/tester/cli-tester/agent.yaml +1 -1
  226. package/src/agents/tester/web-tester/agent.yaml +1 -1
  227. package/src/schemas/agent-frontmatter.schema.json +84 -0
  228. package/src/schemas/agent.schema.json +93 -0
  229. package/src/schemas/hooks.schema.json +47 -0
  230. package/src/schemas/marketplace.schema.json +119 -0
  231. package/src/schemas/metadata.schema.json +113 -0
  232. package/src/schemas/plugin.schema.json +130 -0
  233. package/src/schemas/project-config.schema.json +125 -0
  234. package/src/schemas/project-source-config.schema.json +81 -0
  235. package/src/schemas/skill-frontmatter.schema.json +42 -0
  236. package/src/schemas/skills-matrix.schema.json +467 -0
  237. package/src/schemas/stack.schema.json +191 -0
  238. package/src/schemas/stacks.schema.json +111 -0
  239. package/dist/chunk-2OW7FCIF.js +0 -197
  240. package/dist/chunk-2OW7FCIF.js.map +0 -1
  241. package/dist/chunk-2YMMJP4Z.js.map +0 -1
  242. package/dist/chunk-324DM2L6.js.map +0 -1
  243. package/dist/chunk-3X5D7RM5.js.map +0 -1
  244. package/dist/chunk-4S4FCAA2.js.map +0 -1
  245. package/dist/chunk-CQ7657GA.js.map +0 -1
  246. package/dist/chunk-ETCVEV3S.js.map +0 -1
  247. package/dist/chunk-F4RD5FYM.js.map +0 -1
  248. package/dist/chunk-G35SYE6Z.js.map +0 -1
  249. package/dist/chunk-GGFOD5PK.js.map +0 -1
  250. package/dist/chunk-H7SSBSPR.js.map +0 -1
  251. package/dist/chunk-HIQGK5XJ.js.map +0 -1
  252. package/dist/chunk-HWD32NP7.js +0 -19
  253. package/dist/chunk-HWD32NP7.js.map +0 -1
  254. package/dist/chunk-KWYO3M5Q.js.map +0 -1
  255. package/dist/chunk-MCTSHLAF.js.map +0 -1
  256. package/dist/chunk-NQJ47R4N.js.map +0 -1
  257. package/dist/chunk-NT4K647L.js.map +0 -1
  258. package/dist/chunk-O6ZTD7ZI.js +0 -70
  259. package/dist/chunk-O6ZTD7ZI.js.map +0 -1
  260. package/dist/chunk-OBXAY23Y.js.map +0 -1
  261. package/dist/chunk-TMED5DQ2.js +0 -210
  262. package/dist/chunk-TMED5DQ2.js.map +0 -1
  263. package/dist/chunk-U7HFKR74.js.map +0 -1
  264. package/dist/chunk-UEMRJI2K.js +0 -146
  265. package/dist/chunk-UEMRJI2K.js.map +0 -1
  266. package/dist/chunk-UNN7523L.js +0 -78
  267. package/dist/chunk-UNN7523L.js.map +0 -1
  268. package/dist/chunk-VVYNZZUX.js.map +0 -1
  269. package/dist/chunk-XENOESJZ.js.map +0 -1
  270. package/dist/chunk-ZW2PELOH.js.map +0 -1
  271. package/dist/source-manager-VWIIDTK5.js +0 -16
  272. /package/dist/{chunk-CZBNDP5B.js.map → chunk-ZCIWRQQ4.js.map} +0 -0
  273. /package/dist/{source-manager-VWIIDTK5.js.map → components/wizard/domain-selection.js.map} +0 -0
@@ -0,0 +1,467 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "schemas/skills-matrix.schema.json",
4
+ "title": "Skills Matrix Configuration",
5
+ "description": "Schema for config/skills-matrix.yaml defining skill categories and relationships.",
6
+ "type": "object",
7
+ "properties": {
8
+ "version": {
9
+ "type": "string"
10
+ },
11
+ "categories": {
12
+ "type": "object",
13
+ "propertyNames": {
14
+ "type": "string",
15
+ "enum": [
16
+ "framework",
17
+ "meta-framework",
18
+ "styling",
19
+ "client-state",
20
+ "server-state",
21
+ "forms",
22
+ "testing",
23
+ "ui-components",
24
+ "mocking",
25
+ "error-handling",
26
+ "i18n",
27
+ "file-upload",
28
+ "files",
29
+ "utilities",
30
+ "realtime",
31
+ "animation",
32
+ "pwa",
33
+ "accessibility",
34
+ "web-performance",
35
+ "api",
36
+ "database",
37
+ "auth",
38
+ "observability",
39
+ "analytics",
40
+ "email",
41
+ "performance",
42
+ "mobile-framework",
43
+ "monorepo",
44
+ "tooling",
45
+ "security",
46
+ "methodology",
47
+ "research",
48
+ "reviewing",
49
+ "ci-cd",
50
+ "cli-framework",
51
+ "cli-prompts",
52
+ "cli-testing"
53
+ ]
54
+ },
55
+ "additionalProperties": {
56
+ "type": "object",
57
+ "properties": {
58
+ "id": {
59
+ "type": "string",
60
+ "enum": [
61
+ "framework",
62
+ "meta-framework",
63
+ "styling",
64
+ "client-state",
65
+ "server-state",
66
+ "forms",
67
+ "testing",
68
+ "ui-components",
69
+ "mocking",
70
+ "error-handling",
71
+ "i18n",
72
+ "file-upload",
73
+ "files",
74
+ "utilities",
75
+ "realtime",
76
+ "animation",
77
+ "pwa",
78
+ "accessibility",
79
+ "web-performance",
80
+ "api",
81
+ "database",
82
+ "auth",
83
+ "observability",
84
+ "analytics",
85
+ "email",
86
+ "performance",
87
+ "mobile-framework",
88
+ "monorepo",
89
+ "tooling",
90
+ "security",
91
+ "methodology",
92
+ "research",
93
+ "reviewing",
94
+ "ci-cd",
95
+ "cli-framework",
96
+ "cli-prompts",
97
+ "cli-testing"
98
+ ]
99
+ },
100
+ "displayName": {
101
+ "type": "string"
102
+ },
103
+ "description": {
104
+ "type": "string"
105
+ },
106
+ "domain": {
107
+ "type": "string",
108
+ "enum": ["web", "web-extras", "api", "cli", "mobile", "shared"]
109
+ },
110
+ "parent_domain": {
111
+ "type": "string",
112
+ "enum": ["web", "web-extras", "api", "cli", "mobile", "shared"]
113
+ },
114
+ "exclusive": {
115
+ "type": "boolean"
116
+ },
117
+ "required": {
118
+ "type": "boolean"
119
+ },
120
+ "order": {
121
+ "type": "number"
122
+ },
123
+ "icon": {
124
+ "type": "string"
125
+ }
126
+ },
127
+ "required": ["id", "displayName", "description", "exclusive", "required", "order"],
128
+ "additionalProperties": false
129
+ },
130
+ "required": [
131
+ "framework",
132
+ "meta-framework",
133
+ "styling",
134
+ "client-state",
135
+ "server-state",
136
+ "forms",
137
+ "testing",
138
+ "ui-components",
139
+ "mocking",
140
+ "error-handling",
141
+ "i18n",
142
+ "file-upload",
143
+ "files",
144
+ "utilities",
145
+ "realtime",
146
+ "animation",
147
+ "pwa",
148
+ "accessibility",
149
+ "web-performance",
150
+ "api",
151
+ "database",
152
+ "auth",
153
+ "observability",
154
+ "analytics",
155
+ "email",
156
+ "performance",
157
+ "mobile-framework",
158
+ "monorepo",
159
+ "tooling",
160
+ "security",
161
+ "methodology",
162
+ "research",
163
+ "reviewing",
164
+ "ci-cd",
165
+ "cli-framework",
166
+ "cli-prompts",
167
+ "cli-testing"
168
+ ]
169
+ },
170
+ "relationships": {
171
+ "type": "object",
172
+ "properties": {
173
+ "conflicts": {
174
+ "type": "array",
175
+ "items": {
176
+ "type": "object",
177
+ "properties": {
178
+ "skills": {
179
+ "minItems": 2,
180
+ "type": "array",
181
+ "items": {
182
+ "type": "string"
183
+ }
184
+ },
185
+ "reason": {
186
+ "type": "string"
187
+ }
188
+ },
189
+ "required": ["skills", "reason"],
190
+ "additionalProperties": false
191
+ }
192
+ },
193
+ "discourages": {
194
+ "type": "array",
195
+ "items": {
196
+ "type": "object",
197
+ "properties": {
198
+ "skills": {
199
+ "minItems": 2,
200
+ "type": "array",
201
+ "items": {
202
+ "type": "string"
203
+ }
204
+ },
205
+ "reason": {
206
+ "type": "string"
207
+ }
208
+ },
209
+ "required": ["skills", "reason"],
210
+ "additionalProperties": false
211
+ }
212
+ },
213
+ "recommends": {
214
+ "type": "array",
215
+ "items": {
216
+ "type": "object",
217
+ "properties": {
218
+ "when": {
219
+ "type": "string"
220
+ },
221
+ "suggest": {
222
+ "minItems": 1,
223
+ "type": "array",
224
+ "items": {
225
+ "type": "string"
226
+ }
227
+ },
228
+ "reason": {
229
+ "type": "string"
230
+ }
231
+ },
232
+ "required": ["when", "suggest", "reason"],
233
+ "additionalProperties": false
234
+ }
235
+ },
236
+ "requires": {
237
+ "type": "array",
238
+ "items": {
239
+ "type": "object",
240
+ "properties": {
241
+ "skill": {
242
+ "type": "string"
243
+ },
244
+ "needs": {
245
+ "minItems": 1,
246
+ "type": "array",
247
+ "items": {
248
+ "type": "string"
249
+ }
250
+ },
251
+ "needs_any": {
252
+ "type": "boolean"
253
+ },
254
+ "reason": {
255
+ "type": "string"
256
+ }
257
+ },
258
+ "required": ["skill", "needs", "reason"],
259
+ "additionalProperties": false
260
+ }
261
+ },
262
+ "alternatives": {
263
+ "type": "array",
264
+ "items": {
265
+ "type": "object",
266
+ "properties": {
267
+ "purpose": {
268
+ "type": "string"
269
+ },
270
+ "skills": {
271
+ "minItems": 1,
272
+ "type": "array",
273
+ "items": {
274
+ "type": "string"
275
+ }
276
+ }
277
+ },
278
+ "required": ["purpose", "skills"],
279
+ "additionalProperties": false
280
+ }
281
+ }
282
+ },
283
+ "required": ["conflicts", "discourages", "recommends", "requires", "alternatives"],
284
+ "additionalProperties": false
285
+ },
286
+ "skill_aliases": {
287
+ "type": "object",
288
+ "propertyNames": {
289
+ "type": "string",
290
+ "enum": [
291
+ "react",
292
+ "vue",
293
+ "angular",
294
+ "solidjs",
295
+ "nextjs-app-router",
296
+ "nextjs-server-actions",
297
+ "remix",
298
+ "nuxt",
299
+ "scss-modules",
300
+ "cva",
301
+ "tailwind",
302
+ "zustand",
303
+ "redux-toolkit",
304
+ "pinia",
305
+ "ngrx-signalstore",
306
+ "jotai",
307
+ "mobx",
308
+ "react-query",
309
+ "swr",
310
+ "graphql-apollo",
311
+ "graphql-urql",
312
+ "trpc",
313
+ "react-hook-form",
314
+ "vee-validate",
315
+ "zod-validation",
316
+ "vitest",
317
+ "playwright-e2e",
318
+ "cypress-e2e",
319
+ "react-testing-library",
320
+ "vue-test-utils",
321
+ "msw",
322
+ "shadcn-ui",
323
+ "tanstack-table",
324
+ "radix-ui",
325
+ "hono",
326
+ "express",
327
+ "fastify",
328
+ "drizzle",
329
+ "prisma",
330
+ "better-auth",
331
+ "axiom-pino-sentry",
332
+ "posthog",
333
+ "posthog-flags",
334
+ "resend",
335
+ "github-actions",
336
+ "react-native",
337
+ "expo",
338
+ "turborepo",
339
+ "tooling",
340
+ "posthog-setup",
341
+ "env",
342
+ "observability-setup",
343
+ "email-setup",
344
+ "framer-motion",
345
+ "css-animations",
346
+ "view-transitions",
347
+ "storybook",
348
+ "error-boundaries",
349
+ "accessibility",
350
+ "websockets",
351
+ "sse",
352
+ "socket-io",
353
+ "service-workers",
354
+ "file-upload",
355
+ "image-handling",
356
+ "date-fns",
357
+ "api-testing",
358
+ "api-performance",
359
+ "web-performance",
360
+ "security",
361
+ "commander",
362
+ "cli-commander",
363
+ "oclif",
364
+ "reviewing",
365
+ "cli-reviewing",
366
+ "research-methodology",
367
+ "investigation-requirements",
368
+ "anti-over-engineering",
369
+ "success-criteria",
370
+ "write-verification",
371
+ "improvement-protocol",
372
+ "context-management"
373
+ ]
374
+ },
375
+ "additionalProperties": {
376
+ "type": "string",
377
+ "pattern": "^(web|api|cli|mobile|infra|meta|security)-.+-.+$"
378
+ },
379
+ "required": [
380
+ "react",
381
+ "vue",
382
+ "angular",
383
+ "solidjs",
384
+ "nextjs-app-router",
385
+ "nextjs-server-actions",
386
+ "remix",
387
+ "nuxt",
388
+ "scss-modules",
389
+ "cva",
390
+ "tailwind",
391
+ "zustand",
392
+ "redux-toolkit",
393
+ "pinia",
394
+ "ngrx-signalstore",
395
+ "jotai",
396
+ "mobx",
397
+ "react-query",
398
+ "swr",
399
+ "graphql-apollo",
400
+ "graphql-urql",
401
+ "trpc",
402
+ "react-hook-form",
403
+ "vee-validate",
404
+ "zod-validation",
405
+ "vitest",
406
+ "playwright-e2e",
407
+ "cypress-e2e",
408
+ "react-testing-library",
409
+ "vue-test-utils",
410
+ "msw",
411
+ "shadcn-ui",
412
+ "tanstack-table",
413
+ "radix-ui",
414
+ "hono",
415
+ "express",
416
+ "fastify",
417
+ "drizzle",
418
+ "prisma",
419
+ "better-auth",
420
+ "axiom-pino-sentry",
421
+ "posthog",
422
+ "posthog-flags",
423
+ "resend",
424
+ "github-actions",
425
+ "react-native",
426
+ "expo",
427
+ "turborepo",
428
+ "tooling",
429
+ "posthog-setup",
430
+ "env",
431
+ "observability-setup",
432
+ "email-setup",
433
+ "framer-motion",
434
+ "css-animations",
435
+ "view-transitions",
436
+ "storybook",
437
+ "error-boundaries",
438
+ "accessibility",
439
+ "websockets",
440
+ "sse",
441
+ "socket-io",
442
+ "service-workers",
443
+ "file-upload",
444
+ "image-handling",
445
+ "date-fns",
446
+ "api-testing",
447
+ "api-performance",
448
+ "web-performance",
449
+ "security",
450
+ "commander",
451
+ "cli-commander",
452
+ "oclif",
453
+ "reviewing",
454
+ "cli-reviewing",
455
+ "research-methodology",
456
+ "investigation-requirements",
457
+ "anti-over-engineering",
458
+ "success-criteria",
459
+ "write-verification",
460
+ "improvement-protocol",
461
+ "context-management"
462
+ ]
463
+ }
464
+ },
465
+ "required": ["version", "categories", "relationships", "skill_aliases"],
466
+ "additionalProperties": false
467
+ }
@@ -0,0 +1,191 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "schemas/stack.schema.json",
4
+ "title": "Stack Config",
5
+ "description": "Schema for individual stack config.yaml files.",
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "type": "string",
10
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
11
+ },
12
+ "name": {
13
+ "type": "string",
14
+ "minLength": 1
15
+ },
16
+ "version": {
17
+ "type": "string"
18
+ },
19
+ "author": {
20
+ "type": "string",
21
+ "minLength": 1
22
+ },
23
+ "description": {
24
+ "type": "string"
25
+ },
26
+ "created": {
27
+ "type": "string"
28
+ },
29
+ "updated": {
30
+ "type": "string"
31
+ },
32
+ "framework": {
33
+ "type": "string"
34
+ },
35
+ "skills": {
36
+ "minItems": 1,
37
+ "type": "array",
38
+ "items": {
39
+ "type": "object",
40
+ "properties": {
41
+ "id": {
42
+ "type": "string",
43
+ "minLength": 1
44
+ },
45
+ "preloaded": {
46
+ "type": "boolean"
47
+ }
48
+ },
49
+ "required": ["id"],
50
+ "additionalProperties": false
51
+ }
52
+ },
53
+ "agents": {
54
+ "minItems": 1,
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string",
58
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
59
+ }
60
+ },
61
+ "agent_skills": {
62
+ "type": "object",
63
+ "propertyNames": {
64
+ "type": "string"
65
+ },
66
+ "additionalProperties": {
67
+ "type": "object",
68
+ "propertyNames": {
69
+ "type": "string"
70
+ },
71
+ "additionalProperties": {
72
+ "type": "array",
73
+ "items": {
74
+ "type": "object",
75
+ "properties": {
76
+ "id": {
77
+ "type": "string",
78
+ "minLength": 1
79
+ },
80
+ "preloaded": {
81
+ "type": "boolean"
82
+ }
83
+ },
84
+ "required": ["id"],
85
+ "additionalProperties": false
86
+ }
87
+ }
88
+ }
89
+ },
90
+ "philosophy": {
91
+ "type": "string"
92
+ },
93
+ "principles": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string",
97
+ "minLength": 1
98
+ }
99
+ },
100
+ "tags": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "string",
104
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
105
+ }
106
+ },
107
+ "overrides": {
108
+ "type": "object",
109
+ "propertyNames": {
110
+ "type": "string"
111
+ },
112
+ "additionalProperties": {
113
+ "type": "object",
114
+ "properties": {
115
+ "alternatives": {
116
+ "type": "array",
117
+ "items": {
118
+ "type": "string",
119
+ "minLength": 1
120
+ }
121
+ },
122
+ "locked": {
123
+ "type": "boolean"
124
+ }
125
+ },
126
+ "additionalProperties": false
127
+ }
128
+ },
129
+ "metrics": {
130
+ "type": "object",
131
+ "properties": {
132
+ "upvotes": {
133
+ "type": "integer",
134
+ "minimum": 0,
135
+ "maximum": 9007199254740991
136
+ },
137
+ "downloads": {
138
+ "type": "integer",
139
+ "minimum": 0,
140
+ "maximum": 9007199254740991
141
+ }
142
+ },
143
+ "additionalProperties": false
144
+ },
145
+ "hooks": {
146
+ "type": "object",
147
+ "propertyNames": {
148
+ "type": "string"
149
+ },
150
+ "additionalProperties": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "object",
154
+ "properties": {
155
+ "matcher": {
156
+ "type": "string"
157
+ },
158
+ "hooks": {
159
+ "minItems": 1,
160
+ "type": "array",
161
+ "items": {
162
+ "type": "object",
163
+ "properties": {
164
+ "type": {
165
+ "type": "string",
166
+ "enum": ["command", "script", "prompt"]
167
+ },
168
+ "command": {
169
+ "type": "string"
170
+ },
171
+ "script": {
172
+ "type": "string"
173
+ },
174
+ "prompt": {
175
+ "type": "string"
176
+ }
177
+ },
178
+ "required": ["type"],
179
+ "additionalProperties": false
180
+ }
181
+ }
182
+ },
183
+ "required": ["hooks"],
184
+ "additionalProperties": false
185
+ }
186
+ }
187
+ }
188
+ },
189
+ "required": ["name", "version", "author", "skills", "agents"],
190
+ "additionalProperties": false
191
+ }