agileflow 3.3.0 → 3.4.1

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 (210) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +6 -6
  3. package/lib/skill-loader.js +0 -1
  4. package/package.json +1 -1
  5. package/scripts/agileflow-statusline.sh +81 -0
  6. package/scripts/agileflow-welcome.js +79 -0
  7. package/scripts/claude-tmux.sh +90 -23
  8. package/scripts/claude-watchdog.sh +225 -0
  9. package/scripts/generators/agent-registry.js +14 -1
  10. package/scripts/generators/inject-babysit.js +22 -9
  11. package/scripts/generators/inject-help.js +19 -9
  12. package/scripts/lib/ac-test-matcher.js +452 -0
  13. package/scripts/lib/audit-cleanup.js +250 -0
  14. package/scripts/lib/audit-registry.js +304 -0
  15. package/scripts/lib/configure-features.js +35 -0
  16. package/scripts/lib/feature-catalog.js +3 -3
  17. package/scripts/lib/gate-enforcer.js +295 -0
  18. package/scripts/lib/model-profiles.js +118 -0
  19. package/scripts/lib/quality-gates.js +163 -0
  20. package/scripts/lib/signal-detectors.js +44 -1
  21. package/scripts/lib/skill-catalog.js +557 -0
  22. package/scripts/lib/skill-recommender.js +311 -0
  23. package/scripts/lib/status-writer.js +255 -0
  24. package/scripts/lib/story-claiming.js +128 -45
  25. package/scripts/lib/task-sync.js +32 -38
  26. package/scripts/lib/tdd-phase-manager.js +455 -0
  27. package/scripts/lib/team-events.js +34 -3
  28. package/scripts/lib/tmux-audit-monitor.js +611 -0
  29. package/scripts/lib/tmux-group-colors.js +113 -0
  30. package/scripts/lib/tool-registry.yaml +241 -0
  31. package/scripts/lib/tool-shed.js +441 -0
  32. package/scripts/messaging-bridge.js +209 -1
  33. package/scripts/native-team-observer.js +219 -0
  34. package/scripts/obtain-context.js +14 -0
  35. package/scripts/ralph-loop.js +30 -5
  36. package/scripts/smart-detect.js +21 -0
  37. package/scripts/spawn-audit-sessions.js +877 -0
  38. package/scripts/team-manager.js +56 -16
  39. package/scripts/tmux-close-windows.sh +180 -0
  40. package/src/core/agents/a11y-analyzer-aria.md +155 -0
  41. package/src/core/agents/a11y-analyzer-forms.md +162 -0
  42. package/src/core/agents/a11y-analyzer-keyboard.md +175 -0
  43. package/src/core/agents/a11y-analyzer-semantic.md +153 -0
  44. package/src/core/agents/a11y-analyzer-visual.md +158 -0
  45. package/src/core/agents/a11y-consensus.md +248 -0
  46. package/src/core/agents/ads-audit-budget.md +181 -0
  47. package/src/core/agents/ads-audit-compliance.md +169 -0
  48. package/src/core/agents/ads-audit-creative.md +164 -0
  49. package/src/core/agents/ads-audit-google.md +226 -0
  50. package/src/core/agents/ads-audit-meta.md +183 -0
  51. package/src/core/agents/ads-audit-tracking.md +197 -0
  52. package/src/core/agents/ads-consensus.md +396 -0
  53. package/src/core/agents/ads-generate.md +145 -0
  54. package/src/core/agents/ads-performance-tracker.md +197 -0
  55. package/src/core/agents/api-quality-analyzer-conventions.md +148 -0
  56. package/src/core/agents/api-quality-analyzer-docs.md +176 -0
  57. package/src/core/agents/api-quality-analyzer-errors.md +183 -0
  58. package/src/core/agents/api-quality-analyzer-pagination.md +171 -0
  59. package/src/core/agents/api-quality-analyzer-versioning.md +143 -0
  60. package/src/core/agents/api-quality-consensus.md +214 -0
  61. package/src/core/agents/arch-analyzer-circular.md +148 -0
  62. package/src/core/agents/arch-analyzer-complexity.md +171 -0
  63. package/src/core/agents/arch-analyzer-coupling.md +146 -0
  64. package/src/core/agents/arch-analyzer-layering.md +151 -0
  65. package/src/core/agents/arch-analyzer-patterns.md +162 -0
  66. package/src/core/agents/arch-consensus.md +227 -0
  67. package/src/core/agents/brainstorm-analyzer-features.md +169 -0
  68. package/src/core/agents/brainstorm-analyzer-growth.md +161 -0
  69. package/src/core/agents/brainstorm-analyzer-integration.md +172 -0
  70. package/src/core/agents/brainstorm-analyzer-market.md +147 -0
  71. package/src/core/agents/brainstorm-analyzer-ux.md +167 -0
  72. package/src/core/agents/brainstorm-consensus.md +237 -0
  73. package/src/core/agents/completeness-consensus.md +5 -5
  74. package/src/core/agents/perf-consensus.md +2 -2
  75. package/src/core/agents/security-consensus.md +2 -2
  76. package/src/core/agents/seo-analyzer-content.md +167 -0
  77. package/src/core/agents/seo-analyzer-images.md +187 -0
  78. package/src/core/agents/seo-analyzer-performance.md +206 -0
  79. package/src/core/agents/seo-analyzer-schema.md +176 -0
  80. package/src/core/agents/seo-analyzer-sitemap.md +172 -0
  81. package/src/core/agents/seo-analyzer-technical.md +144 -0
  82. package/src/core/agents/seo-consensus.md +289 -0
  83. package/src/core/agents/test-consensus.md +2 -2
  84. package/src/core/commands/adr.md +1 -0
  85. package/src/core/commands/ads/audit.md +375 -0
  86. package/src/core/commands/ads/budget.md +97 -0
  87. package/src/core/commands/ads/competitor.md +112 -0
  88. package/src/core/commands/ads/creative.md +85 -0
  89. package/src/core/commands/ads/generate.md +238 -0
  90. package/src/core/commands/ads/google.md +112 -0
  91. package/src/core/commands/ads/health.md +327 -0
  92. package/src/core/commands/ads/landing.md +119 -0
  93. package/src/core/commands/ads/linkedin.md +112 -0
  94. package/src/core/commands/ads/meta.md +91 -0
  95. package/src/core/commands/ads/microsoft.md +115 -0
  96. package/src/core/commands/ads/plan.md +321 -0
  97. package/src/core/commands/ads/test-plan.md +317 -0
  98. package/src/core/commands/ads/tiktok.md +129 -0
  99. package/src/core/commands/ads/track.md +288 -0
  100. package/src/core/commands/ads/youtube.md +124 -0
  101. package/src/core/commands/ads.md +140 -0
  102. package/src/core/commands/assign.md +1 -0
  103. package/src/core/commands/audit.md +43 -6
  104. package/src/core/commands/babysit.md +315 -1266
  105. package/src/core/commands/baseline.md +1 -0
  106. package/src/core/commands/blockers.md +1 -0
  107. package/src/core/commands/board.md +1 -0
  108. package/src/core/commands/changelog.md +1 -0
  109. package/src/core/commands/choose.md +1 -0
  110. package/src/core/commands/ci.md +1 -0
  111. package/src/core/commands/code/accessibility.md +347 -0
  112. package/src/core/commands/code/api.md +297 -0
  113. package/src/core/commands/code/architecture.md +297 -0
  114. package/src/core/commands/{audit → code}/completeness.md +72 -25
  115. package/src/core/commands/{audit → code}/legal.md +63 -16
  116. package/src/core/commands/{audit → code}/logic.md +64 -16
  117. package/src/core/commands/{audit → code}/performance.md +67 -20
  118. package/src/core/commands/{audit → code}/security.md +69 -19
  119. package/src/core/commands/{audit → code}/test.md +67 -20
  120. package/src/core/commands/configure.md +1 -0
  121. package/src/core/commands/council.md +1 -0
  122. package/src/core/commands/deploy.md +1 -0
  123. package/src/core/commands/diagnose.md +1 -0
  124. package/src/core/commands/docs.md +1 -0
  125. package/src/core/commands/epic/edit.md +213 -0
  126. package/src/core/commands/epic.md +1 -0
  127. package/src/core/commands/export.md +238 -0
  128. package/src/core/commands/help.md +16 -1
  129. package/src/core/commands/{discovery → ideate}/brief.md +12 -12
  130. package/src/core/commands/{discovery/new.md → ideate/discover.md} +20 -16
  131. package/src/core/commands/ideate/features.md +496 -0
  132. package/src/core/commands/ideate/new.md +158 -124
  133. package/src/core/commands/impact.md +1 -0
  134. package/src/core/commands/learn/explain.md +118 -0
  135. package/src/core/commands/learn/glossary.md +135 -0
  136. package/src/core/commands/learn/patterns.md +138 -0
  137. package/src/core/commands/learn/tour.md +126 -0
  138. package/src/core/commands/migrate/codemods.md +151 -0
  139. package/src/core/commands/migrate/plan.md +131 -0
  140. package/src/core/commands/migrate/scan.md +114 -0
  141. package/src/core/commands/migrate/validate.md +119 -0
  142. package/src/core/commands/multi-expert.md +1 -0
  143. package/src/core/commands/pr.md +1 -0
  144. package/src/core/commands/review.md +1 -0
  145. package/src/core/commands/seo/audit.md +373 -0
  146. package/src/core/commands/seo/competitor.md +174 -0
  147. package/src/core/commands/seo/content.md +107 -0
  148. package/src/core/commands/seo/geo.md +229 -0
  149. package/src/core/commands/seo/hreflang.md +140 -0
  150. package/src/core/commands/seo/images.md +96 -0
  151. package/src/core/commands/seo/page.md +198 -0
  152. package/src/core/commands/seo/plan.md +163 -0
  153. package/src/core/commands/seo/programmatic.md +131 -0
  154. package/src/core/commands/seo/references/cwv-thresholds.md +64 -0
  155. package/src/core/commands/seo/references/eeat-framework.md +110 -0
  156. package/src/core/commands/seo/references/quality-gates.md +91 -0
  157. package/src/core/commands/seo/references/schema-types.md +102 -0
  158. package/src/core/commands/seo/schema.md +183 -0
  159. package/src/core/commands/seo/sitemap.md +97 -0
  160. package/src/core/commands/seo/technical.md +100 -0
  161. package/src/core/commands/seo.md +107 -0
  162. package/src/core/commands/skill/list.md +68 -212
  163. package/src/core/commands/skill/recommend.md +216 -0
  164. package/src/core/commands/sprint.md +1 -0
  165. package/src/core/commands/status/undo.md +191 -0
  166. package/src/core/commands/status.md +1 -0
  167. package/src/core/commands/story/edit.md +204 -0
  168. package/src/core/commands/story/view.md +29 -7
  169. package/src/core/commands/story-validate.md +1 -0
  170. package/src/core/commands/story.md +1 -0
  171. package/src/core/commands/tdd-next.md +238 -0
  172. package/src/core/commands/tdd.md +211 -0
  173. package/src/core/commands/team/start.md +10 -6
  174. package/src/core/commands/tests.md +1 -0
  175. package/src/core/commands/verify.md +27 -1
  176. package/src/core/commands/workflow.md +2 -0
  177. package/src/core/experts/_core-expertise.yaml +105 -0
  178. package/src/core/experts/analytics/expertise.yaml +5 -99
  179. package/src/core/experts/codebase-query/expertise.yaml +3 -72
  180. package/src/core/experts/compliance/expertise.yaml +6 -72
  181. package/src/core/experts/database/expertise.yaml +9 -52
  182. package/src/core/experts/documentation/expertise.yaml +7 -140
  183. package/src/core/experts/integrations/expertise.yaml +7 -127
  184. package/src/core/experts/mentor/expertise.yaml +8 -35
  185. package/src/core/experts/monitoring/expertise.yaml +7 -49
  186. package/src/core/experts/performance/expertise.yaml +1 -26
  187. package/src/core/experts/security/expertise.yaml +9 -34
  188. package/src/core/experts/ui/expertise.yaml +6 -36
  189. package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +424 -0
  190. package/src/core/knowledge/ads/ad-optimization-logic.md +590 -0
  191. package/src/core/knowledge/ads/ad-technical-specifications.md +385 -0
  192. package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +506 -0
  193. package/src/core/knowledge/ads/paid-advertising-research-2026.md +445 -0
  194. package/src/core/teams/backend.json +41 -0
  195. package/src/core/teams/frontend.json +41 -0
  196. package/src/core/teams/qa.json +41 -0
  197. package/src/core/teams/solo.json +35 -0
  198. package/src/core/templates/agileflow-metadata.json +20 -1
  199. package/tools/cli/commands/setup.js +85 -3
  200. package/tools/cli/commands/update.js +42 -0
  201. package/tools/cli/installers/ide/_base-ide.js +42 -5
  202. package/tools/cli/installers/ide/claude-code.js +71 -3
  203. package/tools/cli/lib/content-injector.js +160 -12
  204. package/tools/cli/lib/docs-setup.js +1 -1
  205. package/src/core/commands/skill/create.md +0 -698
  206. package/src/core/commands/skill/delete.md +0 -316
  207. package/src/core/commands/skill/edit.md +0 -359
  208. package/src/core/commands/skill/test.md +0 -394
  209. package/src/core/commands/skill/upgrade.md +0 -552
  210. package/src/core/templates/skill-template.md +0 -117
@@ -0,0 +1,557 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * skill-catalog.js
4
+ *
5
+ * Two-tier skill discovery for AgileFlow:
6
+ *
7
+ * Tier 1: Curated picks (~60 vetted skills shipped with AgileFlow)
8
+ * - Organized by category (Frontend, Backend, Database, Testing, DevOps, Security)
9
+ * - Each entry has name, repo, description, tags, category, installCmd
10
+ *
11
+ * Tier 2: Live search from skills.sh via `npx skills search <keyword>`
12
+ * - Users always see curated picks first, then "Browse more on skills.sh"
13
+ */
14
+
15
+ 'use strict';
16
+
17
+ // =============================================================================
18
+ // Curated Skill Catalog
19
+ // =============================================================================
20
+
21
+ /**
22
+ * Create a curated skill entry.
23
+ * @param {string} name - Skill display name
24
+ * @param {string} repo - GitHub owner/repo or registry identifier
25
+ * @param {string} description - Short description
26
+ * @param {string[]} tags - Technology tags for matching
27
+ * @param {string} category - Category grouping
28
+ * @returns {Object} Curated skill entry
29
+ */
30
+ function skill(name, repo, description, tags, category) {
31
+ return {
32
+ name,
33
+ repo,
34
+ description,
35
+ tags,
36
+ category,
37
+ installCmd: `npx skills add ${repo}`,
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Full curated catalog of vetted skills.
43
+ * Organized by category for display and filtered by tags for recommendations.
44
+ */
45
+ const CURATED_SKILLS = [
46
+ // ===== Frontend (13) =====
47
+ skill(
48
+ 'react-best-practices',
49
+ 'vercel/agent-skills',
50
+ 'React patterns, hooks, and component architecture',
51
+ ['react', 'jsx', 'hooks'],
52
+ 'Frontend'
53
+ ),
54
+ skill(
55
+ 'next-best-practices',
56
+ 'vercel/next-skills',
57
+ 'Next.js App Router, RSC, and data fetching patterns',
58
+ ['next', 'nextjs', 'react', 'app-router'],
59
+ 'Frontend'
60
+ ),
61
+ skill(
62
+ 'web-design-guidelines',
63
+ 'vercel/agent-skills',
64
+ 'Web design principles and responsive layouts',
65
+ ['design', 'css', 'responsive'],
66
+ 'Frontend'
67
+ ),
68
+ skill(
69
+ 'frontend-design',
70
+ 'anthropics/skills',
71
+ 'Frontend design system and component patterns',
72
+ ['frontend', 'design-system', 'components'],
73
+ 'Frontend'
74
+ ),
75
+ skill(
76
+ 'web-artifacts-builder',
77
+ 'anthropics/skills',
78
+ 'Build interactive web artifacts and prototypes',
79
+ ['html', 'css', 'javascript', 'prototype'],
80
+ 'Frontend'
81
+ ),
82
+ skill(
83
+ 'svelte5-sveltekit',
84
+ 'claude-skills/sveltekit-svelte5-tailwind-skill',
85
+ 'Svelte 5 runes, SvelteKit routing, and Tailwind integration',
86
+ ['svelte', 'sveltekit', 'tailwind'],
87
+ 'Frontend'
88
+ ),
89
+ skill(
90
+ 'vue-development',
91
+ 'alexanderop/claude-skill-vue-development',
92
+ 'Vue 3 Composition API and ecosystem patterns',
93
+ ['vue', 'vuejs', 'vue3', 'pinia'],
94
+ 'Frontend'
95
+ ),
96
+ skill(
97
+ 'typescript-pro',
98
+ 'anthropics/skills',
99
+ 'Advanced TypeScript patterns, generics, and type utilities',
100
+ ['typescript', 'ts'],
101
+ 'Frontend'
102
+ ),
103
+ skill(
104
+ 'tailwind-mastery',
105
+ 'anthropics/skills',
106
+ 'Tailwind CSS utility patterns and custom configurations',
107
+ ['tailwind', 'tailwindcss', 'css'],
108
+ 'Frontend'
109
+ ),
110
+ skill(
111
+ 'angular-best-practices',
112
+ 'anthropics/skills',
113
+ 'Angular signals, standalone components, and RxJS patterns',
114
+ ['angular', 'rxjs'],
115
+ 'Frontend'
116
+ ),
117
+ skill(
118
+ 'component-library',
119
+ 'anthropics/skills',
120
+ 'Building reusable component libraries with design tokens',
121
+ ['components', 'design-tokens', 'storybook'],
122
+ 'Frontend'
123
+ ),
124
+ skill(
125
+ 'react-native-guidelines',
126
+ 'anthropics/skills',
127
+ 'React Native mobile development patterns',
128
+ ['react-native', 'mobile', 'expo'],
129
+ 'Frontend'
130
+ ),
131
+ skill(
132
+ 'composition-patterns',
133
+ 'anthropics/skills',
134
+ 'Composition over inheritance in frontend architectures',
135
+ ['composition', 'patterns', 'architecture'],
136
+ 'Frontend'
137
+ ),
138
+
139
+ // ===== Backend (11) =====
140
+ skill(
141
+ 'graphql-api-dev',
142
+ 'anthropics/skills',
143
+ 'GraphQL schema design, resolvers, and federation',
144
+ ['graphql', 'apollo', 'api'],
145
+ 'Backend'
146
+ ),
147
+ skill(
148
+ 'apollo-skills',
149
+ 'apollographql/skills',
150
+ 'Apollo GraphQL server and client best practices',
151
+ ['apollo', 'graphql'],
152
+ 'Backend'
153
+ ),
154
+ skill(
155
+ 'backend-patterns',
156
+ 'affaan-m/everything-claude-code',
157
+ 'Comprehensive backend architecture patterns',
158
+ ['backend', 'api', 'architecture'],
159
+ 'Backend'
160
+ ),
161
+ skill(
162
+ 'express-best-practices',
163
+ 'anthropics/skills',
164
+ 'Express.js middleware, routing, and error handling',
165
+ ['express', 'expressjs', 'node'],
166
+ 'Backend'
167
+ ),
168
+ skill(
169
+ 'fastapi-pydantic',
170
+ 'anthropics/skills',
171
+ 'FastAPI with Pydantic models and dependency injection',
172
+ ['fastapi', 'python', 'pydantic'],
173
+ 'Backend'
174
+ ),
175
+ skill(
176
+ 'nodejs-patterns',
177
+ 'Jeffallan/claude-skills',
178
+ 'Node.js patterns for scalable applications',
179
+ ['node', 'nodejs', 'javascript'],
180
+ 'Backend'
181
+ ),
182
+ skill(
183
+ 'python-backend',
184
+ 'greyhaven-ai/claude-code-config',
185
+ 'Python backend development with best practices',
186
+ ['python', 'django', 'flask'],
187
+ 'Backend'
188
+ ),
189
+ skill(
190
+ 'microservices-arch',
191
+ 'anthropics/skills',
192
+ 'Microservices architecture and communication patterns',
193
+ ['microservices', 'distributed', 'event-driven'],
194
+ 'Backend'
195
+ ),
196
+ skill(
197
+ 'websocket-patterns',
198
+ 'anthropics/skills',
199
+ 'WebSocket real-time communication patterns',
200
+ ['websocket', 'ws', 'socket.io', 'real-time'],
201
+ 'Backend'
202
+ ),
203
+ skill(
204
+ 'api-design-mastery',
205
+ 'anthropics/skills',
206
+ 'REST API design, versioning, and documentation',
207
+ ['rest', 'api', 'openapi'],
208
+ 'Backend'
209
+ ),
210
+ skill(
211
+ 'go-backend',
212
+ 'anthropics/skills',
213
+ 'Go backend patterns with net/http and standard library',
214
+ ['go', 'golang'],
215
+ 'Backend'
216
+ ),
217
+
218
+ // ===== Database (8) =====
219
+ skill(
220
+ 'prisma-orm',
221
+ 'mcpmarket/skills',
222
+ 'Prisma schema design, migrations, and query patterns',
223
+ ['prisma', 'orm', 'database'],
224
+ 'Database'
225
+ ),
226
+ skill(
227
+ 'supabase-ops',
228
+ 'supabase/agent-skills',
229
+ 'Supabase database, auth, storage, and edge functions',
230
+ ['supabase', 'postgres', 'auth'],
231
+ 'Database'
232
+ ),
233
+ skill(
234
+ 'mongodb-patterns',
235
+ 'anthropics/skills',
236
+ 'MongoDB schema design, aggregation, and indexing',
237
+ ['mongodb', 'mongoose', 'nosql'],
238
+ 'Database'
239
+ ),
240
+ skill(
241
+ 'postgresql-advanced',
242
+ 'anthropics/skills',
243
+ 'PostgreSQL advanced queries, indexing, and performance',
244
+ ['postgresql', 'postgres', 'pg', 'sql'],
245
+ 'Database'
246
+ ),
247
+ skill(
248
+ 'redis-patterns',
249
+ 'anthropics/skills',
250
+ 'Redis caching, pub/sub, and data structure patterns',
251
+ ['redis', 'cache', 'pub-sub'],
252
+ 'Database'
253
+ ),
254
+ skill(
255
+ 'db-migrations',
256
+ 'anthropics/skills',
257
+ 'Database migration strategies and zero-downtime changes',
258
+ ['migrations', 'database', 'schema'],
259
+ 'Database'
260
+ ),
261
+ skill(
262
+ 'drizzle-orm',
263
+ 'anthropics/skills',
264
+ 'Drizzle ORM schema definition and type-safe queries',
265
+ ['drizzle', 'orm', 'typescript'],
266
+ 'Database'
267
+ ),
268
+ skill(
269
+ 'data-pipelines',
270
+ 'K-Dense-AI/claude-scientific-skills',
271
+ 'Data pipeline design and ETL patterns',
272
+ ['data', 'pipeline', 'etl'],
273
+ 'Database'
274
+ ),
275
+
276
+ // ===== Testing (10) =====
277
+ skill(
278
+ 'tdd-enforcement',
279
+ 'jmagly/claude-skills',
280
+ 'Test-driven development workflow and patterns',
281
+ ['tdd', 'testing', 'test-first'],
282
+ 'Testing'
283
+ ),
284
+ skill(
285
+ 'python-testing',
286
+ 'laurigates/claude-plugins',
287
+ 'Python testing with pytest, fixtures, and mocks',
288
+ ['pytest', 'python', 'testing'],
289
+ 'Testing'
290
+ ),
291
+ skill(
292
+ 'playwright-automation',
293
+ 'anthropics/skills',
294
+ 'Playwright end-to-end testing and browser automation',
295
+ ['playwright', 'e2e', 'testing'],
296
+ 'Testing'
297
+ ),
298
+ skill(
299
+ 'jest-testing',
300
+ 'anthropics/skills',
301
+ 'Jest unit and integration testing patterns',
302
+ ['jest', 'testing', 'javascript'],
303
+ 'Testing'
304
+ ),
305
+ skill(
306
+ 'k6-load-testing',
307
+ 'anthropics/skills',
308
+ 'k6 performance and load testing scripts',
309
+ ['k6', 'load-testing', 'performance'],
310
+ 'Testing'
311
+ ),
312
+ skill(
313
+ 'cypress-e2e',
314
+ 'anthropics/skills',
315
+ 'Cypress end-to-end testing with component tests',
316
+ ['cypress', 'e2e', 'testing'],
317
+ 'Testing'
318
+ ),
319
+ skill(
320
+ 'accessibility-testing',
321
+ 'anthropics/skills',
322
+ 'Automated accessibility testing with axe and WAVE',
323
+ ['a11y', 'accessibility', 'wcag'],
324
+ 'Testing'
325
+ ),
326
+ skill(
327
+ 'unit-test-patterns',
328
+ 'anthropics/skills',
329
+ 'Unit testing patterns, mocking, and test organization',
330
+ ['unit-test', 'testing', 'mocking'],
331
+ 'Testing'
332
+ ),
333
+ skill(
334
+ 'integration-testing',
335
+ 'anthropics/skills',
336
+ 'Integration testing strategies for APIs and databases',
337
+ ['integration', 'testing', 'api-testing'],
338
+ 'Testing'
339
+ ),
340
+ skill(
341
+ 'vitest-framework',
342
+ 'anthropics/skills',
343
+ 'Vitest fast unit testing with Vite integration',
344
+ ['vitest', 'vite', 'testing'],
345
+ 'Testing'
346
+ ),
347
+
348
+ // ===== DevOps (9) =====
349
+ skill(
350
+ 'devops-engineer',
351
+ 'Jeffallan/claude-skills',
352
+ 'DevOps best practices and infrastructure patterns',
353
+ ['devops', 'infrastructure', 'ci-cd'],
354
+ 'DevOps'
355
+ ),
356
+ skill(
357
+ 'devops-cloudskills',
358
+ 'ahmedasmar/devops-claude-skills',
359
+ 'Cloud-native DevOps with AWS, GCP, and Azure',
360
+ ['aws', 'gcp', 'azure', 'cloud'],
361
+ 'DevOps'
362
+ ),
363
+ skill(
364
+ 'github-actions',
365
+ 'anthropics/skills',
366
+ 'GitHub Actions workflow design and optimization',
367
+ ['github-actions', 'ci', 'automation'],
368
+ 'DevOps'
369
+ ),
370
+ skill(
371
+ 'dockerfile-best-practices',
372
+ 'anthropics/skills',
373
+ 'Dockerfile optimization, multi-stage builds, and security',
374
+ ['docker', 'dockerfile', 'containers'],
375
+ 'DevOps'
376
+ ),
377
+ skill(
378
+ 'kubernetes-troubleshooting',
379
+ 'anthropics/skills',
380
+ 'Kubernetes debugging, scaling, and resource management',
381
+ ['kubernetes', 'k8s', 'helm'],
382
+ 'DevOps'
383
+ ),
384
+ skill(
385
+ 'terraform-iac',
386
+ 'anthropics/skills',
387
+ 'Terraform infrastructure as code patterns',
388
+ ['terraform', 'iac', 'infrastructure'],
389
+ 'DevOps'
390
+ ),
391
+ skill(
392
+ 'vercel-deploy',
393
+ 'vercel/agent-skills',
394
+ 'Vercel deployment, edge functions, and configuration',
395
+ ['vercel', 'deployment', 'edge'],
396
+ 'DevOps'
397
+ ),
398
+ skill(
399
+ 'nginx-config',
400
+ 'anthropics/skills',
401
+ 'Nginx reverse proxy, load balancing, and TLS setup',
402
+ ['nginx', 'reverse-proxy', 'tls'],
403
+ 'DevOps'
404
+ ),
405
+ skill(
406
+ 'monitoring-observability',
407
+ 'anthropics/skills',
408
+ 'Application monitoring with Prometheus, Grafana, and OpenTelemetry',
409
+ ['monitoring', 'prometheus', 'grafana'],
410
+ 'DevOps'
411
+ ),
412
+
413
+ // ===== Security (8) =====
414
+ skill(
415
+ 'owasp-2025',
416
+ 'agamm/claude-code-owasp',
417
+ 'OWASP Top 10 2025 security checks and prevention',
418
+ ['owasp', 'security', 'vulnerabilities'],
419
+ 'Security'
420
+ ),
421
+ skill(
422
+ 'security-code-review',
423
+ 'harperaa/secure-claude-skills',
424
+ 'Security-focused code review patterns',
425
+ ['security', 'code-review', 'audit'],
426
+ 'Security'
427
+ ),
428
+ skill(
429
+ 'trail-of-bits',
430
+ 'trailofbits/agent-skills',
431
+ 'Trail of Bits security analysis patterns',
432
+ ['security', 'audit', 'vulnerabilities'],
433
+ 'Security'
434
+ ),
435
+ skill(
436
+ 'input-validation',
437
+ 'anthropics/skills',
438
+ 'Input validation and sanitization patterns',
439
+ ['validation', 'sanitization', 'security'],
440
+ 'Security'
441
+ ),
442
+ skill(
443
+ 'auth-patterns',
444
+ 'anthropics/skills',
445
+ 'Authentication with JWT, OAuth, and session management',
446
+ ['auth', 'jwt', 'oauth', 'session'],
447
+ 'Security'
448
+ ),
449
+ skill(
450
+ 'authz-rbac',
451
+ 'anthropics/skills',
452
+ 'Authorization with RBAC, ABAC, and policy engines',
453
+ ['rbac', 'authorization', 'permissions'],
454
+ 'Security'
455
+ ),
456
+ skill(
457
+ 'security-headers',
458
+ 'anthropics/skills',
459
+ 'HTTP security headers and CSP configuration',
460
+ ['security-headers', 'csp', 'cors'],
461
+ 'Security'
462
+ ),
463
+ skill(
464
+ 'php-security-audit',
465
+ 'anthropics/skills',
466
+ 'PHP security audit for common vulnerabilities',
467
+ ['php', 'security', 'audit'],
468
+ 'Security'
469
+ ),
470
+ ];
471
+
472
+ // =============================================================================
473
+ // Catalog Query Functions
474
+ // =============================================================================
475
+
476
+ /**
477
+ * Get all curated skills.
478
+ * @returns {Object[]} Full curated catalog
479
+ */
480
+ function getAllCuratedSkills() {
481
+ return CURATED_SKILLS;
482
+ }
483
+
484
+ /**
485
+ * Get curated skills by category.
486
+ * @param {string} category - Category name
487
+ * @returns {Object[]} Skills in that category
488
+ */
489
+ function getByCategory(category) {
490
+ return CURATED_SKILLS.filter(s => s.category === category);
491
+ }
492
+
493
+ /**
494
+ * Get all category names with counts.
495
+ * @returns {Object} Map of category name to count
496
+ */
497
+ function getCategoryCounts() {
498
+ const counts = {};
499
+ for (const s of CURATED_SKILLS) {
500
+ counts[s.category] = (counts[s.category] || 0) + 1;
501
+ }
502
+ return counts;
503
+ }
504
+
505
+ /**
506
+ * Search curated skills by tag.
507
+ * @param {string} tag - Tag to search for
508
+ * @returns {Object[]} Matching skills
509
+ */
510
+ function searchByTag(tag) {
511
+ const lower = tag.toLowerCase();
512
+ return CURATED_SKILLS.filter(s => s.tags.some(t => t.includes(lower)));
513
+ }
514
+
515
+ /**
516
+ * Search curated skills by keyword (searches name + description + tags).
517
+ * @param {string} keyword - Keyword to search for
518
+ * @returns {Object[]} Matching skills sorted by relevance
519
+ */
520
+ function searchByKeyword(keyword) {
521
+ const lower = keyword.toLowerCase();
522
+ return CURATED_SKILLS.filter(s => {
523
+ return (
524
+ s.name.toLowerCase().includes(lower) ||
525
+ s.description.toLowerCase().includes(lower) ||
526
+ s.tags.some(t => t.includes(lower))
527
+ );
528
+ });
529
+ }
530
+
531
+ /**
532
+ * Get the live search command for skills.sh marketplace.
533
+ * @param {string} keyword - Search term
534
+ * @returns {string} Command to run
535
+ */
536
+ function getLiveSearchCommand(keyword) {
537
+ return `npx skills search ${keyword}`;
538
+ }
539
+
540
+ /**
541
+ * Get the full marketplace browse command.
542
+ * @returns {string} Command to run
543
+ */
544
+ function getBrowseCommand() {
545
+ return 'npx skills find';
546
+ }
547
+
548
+ module.exports = {
549
+ CURATED_SKILLS,
550
+ getAllCuratedSkills,
551
+ getByCategory,
552
+ getCategoryCounts,
553
+ searchByTag,
554
+ searchByKeyword,
555
+ getLiveSearchCommand,
556
+ getBrowseCommand,
557
+ };