@ruaruababa/vibe-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CATALOG.md +317 -0
  2. package/README.md +121 -0
  3. package/aliases.json +65 -0
  4. package/bin/vibe.js +2 -0
  5. package/bundles.json +265 -0
  6. package/catalog.json +1560 -0
  7. package/dist/antigravity-skills/bin/cli.js +438 -0
  8. package/dist/antigravity-skills/lib/skill-utils.js +158 -0
  9. package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
  10. package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
  11. package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
  12. package/dist/bin/vibe.js +2 -0
  13. package/dist/dist/src/cli/index.js +26 -0
  14. package/dist/lib/skill-utils.js +158 -0
  15. package/dist/scripts/build-catalog.js +50 -0
  16. package/dist/scripts/normalize-frontmatter.js +144 -0
  17. package/dist/scripts/validate-skills.js +56 -0
  18. package/dist/src/cli/index.js +146 -0
  19. package/dist/src/types/index.js +13 -0
  20. package/dist/src/utils/fs.js +1 -0
  21. package/package.json +43 -0
  22. package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
  23. package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
  24. package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
  25. package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
  26. package/skills/agent-orchestrator/SKILL.md +24 -0
  27. package/skills/ai-engineer/SKILL.md +171 -0
  28. package/skills/airflow-dag-patterns/SKILL.md +41 -0
  29. package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  30. package/skills/angular-migration/SKILL.md +428 -0
  31. package/skills/anti-reversing-techniques/SKILL.md +42 -0
  32. package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
  33. package/skills/api-design-principles/SKILL.md +37 -0
  34. package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  35. package/skills/api-design-principles/assets/rest-api-template.py +182 -0
  36. package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  37. package/skills/api-design-principles/references/rest-best-practices.md +408 -0
  38. package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  39. package/skills/api-documenter/SKILL.md +184 -0
  40. package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
  41. package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  42. package/skills/application-performance-performance-optimization/SKILL.md +154 -0
  43. package/skills/architect-review/SKILL.md +174 -0
  44. package/skills/architecture-decision-records/SKILL.md +441 -0
  45. package/skills/architecture-patterns/SKILL.md +37 -0
  46. package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  47. package/skills/arm-cortex-expert/SKILL.md +306 -0
  48. package/skills/async-python-patterns/SKILL.md +39 -0
  49. package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  50. package/skills/attack-tree-construction/SKILL.md +38 -0
  51. package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
  52. package/skills/auth-implementation-patterns/SKILL.md +39 -0
  53. package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  54. package/skills/backend-architect/SKILL.md +333 -0
  55. package/skills/backend-development-feature-development/SKILL.md +180 -0
  56. package/skills/backend-security-coder/SKILL.md +156 -0
  57. package/skills/backtesting-frameworks/SKILL.md +39 -0
  58. package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  59. package/skills/bash-defensive-patterns/SKILL.md +43 -0
  60. package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  61. package/skills/bash-pro/SKILL.md +310 -0
  62. package/skills/bats-testing-patterns/SKILL.md +34 -0
  63. package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  64. package/skills/bazel-build-optimization/SKILL.md +397 -0
  65. package/skills/billing-automation/SKILL.md +42 -0
  66. package/skills/billing-automation/resources/implementation-playbook.md +544 -0
  67. package/skills/binary-analysis-patterns/SKILL.md +450 -0
  68. package/skills/blockchain-developer/SKILL.md +208 -0
  69. package/skills/business-analyst/SKILL.md +182 -0
  70. package/skills/c-pro/SKILL.md +56 -0
  71. package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
  72. package/skills/c4-code/SKILL.md +244 -0
  73. package/skills/c4-component/SKILL.md +153 -0
  74. package/skills/c4-container/SKILL.md +171 -0
  75. package/skills/c4-context/SKILL.md +150 -0
  76. package/skills/changelog-automation/SKILL.md +38 -0
  77. package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
  78. package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
  79. package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
  80. package/skills/clean-markdown/SKILL.md +23 -0
  81. package/skills/cloud-architect/SKILL.md +135 -0
  82. package/skills/code-documentation-code-explain/SKILL.md +46 -0
  83. package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
  84. package/skills/code-documentation-doc-generate/SKILL.md +48 -0
  85. package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
  86. package/skills/code-refactoring-context-restore/SKILL.md +179 -0
  87. package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
  88. package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  89. package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
  90. package/skills/code-review-ai-ai-review/SKILL.md +450 -0
  91. package/skills/code-review-excellence/SKILL.md +40 -0
  92. package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
  93. package/skills/code-reviewer/SKILL.md +178 -0
  94. package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
  95. package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  96. package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
  97. package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  98. package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
  99. package/skills/competitive-landscape/SKILL.md +34 -0
  100. package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
  101. package/skills/comprehensive-review-full-review/SKILL.md +146 -0
  102. package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
  103. package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
  104. package/skills/conductor-implement/SKILL.md +388 -0
  105. package/skills/conductor-manage/SKILL.md +39 -0
  106. package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
  107. package/skills/conductor-new-track/SKILL.md +433 -0
  108. package/skills/conductor-revert/SKILL.md +372 -0
  109. package/skills/conductor-setup/SKILL.md +426 -0
  110. package/skills/conductor-status/SKILL.md +338 -0
  111. package/skills/conductor-validator/SKILL.md +62 -0
  112. package/skills/content-marketer/SKILL.md +170 -0
  113. package/skills/context-driven-development/SKILL.md +400 -0
  114. package/skills/context-management-context-restore/SKILL.md +179 -0
  115. package/skills/context-management-context-save/SKILL.md +177 -0
  116. package/skills/context-manager/SKILL.md +185 -0
  117. package/skills/cost-optimization/SKILL.md +286 -0
  118. package/skills/cpp-pro/SKILL.md +59 -0
  119. package/skills/cqrs-implementation/SKILL.md +35 -0
  120. package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
  121. package/skills/csharp-pro/SKILL.md +59 -0
  122. package/skills/customer-support/SKILL.md +170 -0
  123. package/skills/data-engineer/SKILL.md +224 -0
  124. package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
  125. package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
  126. package/skills/data-quality-frameworks/SKILL.md +40 -0
  127. package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
  128. package/skills/data-scientist/SKILL.md +199 -0
  129. package/skills/data-storytelling/SKILL.md +465 -0
  130. package/skills/database-admin/SKILL.md +165 -0
  131. package/skills/database-architect/SKILL.md +268 -0
  132. package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
  133. package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  134. package/skills/database-migration/SKILL.md +436 -0
  135. package/skills/database-migrations-migration-observability/SKILL.md +420 -0
  136. package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
  137. package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  138. package/skills/database-optimizer/SKILL.md +167 -0
  139. package/skills/dbt-transformation-patterns/SKILL.md +34 -0
  140. package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  141. package/skills/debugger/SKILL.md +49 -0
  142. package/skills/debugging-strategies/SKILL.md +34 -0
  143. package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
  144. package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
  145. package/skills/defi-protocol-templates/SKILL.md +466 -0
  146. package/skills/dependency-management-deps-audit/SKILL.md +44 -0
  147. package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
  148. package/skills/dependency-upgrade/SKILL.md +421 -0
  149. package/skills/deployment-engineer/SKILL.md +170 -0
  150. package/skills/deployment-pipeline-design/SKILL.md +371 -0
  151. package/skills/deployment-validation-config-validate/SKILL.md +496 -0
  152. package/skills/devops-troubleshooter/SKILL.md +161 -0
  153. package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
  154. package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
  155. package/skills/distributed-tracing/SKILL.md +450 -0
  156. package/skills/django-pro/SKILL.md +180 -0
  157. package/skills/docs-architect/SKILL.md +98 -0
  158. package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
  159. package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
  160. package/skills/dotnet-architect/SKILL.md +197 -0
  161. package/skills/dotnet-backend-patterns/SKILL.md +37 -0
  162. package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
  163. package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
  164. package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  165. package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  166. package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  167. package/skills/dummy-skill/SKILL.md +5 -0
  168. package/skills/dx-optimizer/SKILL.md +83 -0
  169. package/skills/e2e-testing-patterns/SKILL.md +41 -0
  170. package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  171. package/skills/elixir-pro/SKILL.md +59 -0
  172. package/skills/embedding-strategies/SKILL.md +491 -0
  173. package/skills/employment-contract-templates/SKILL.md +39 -0
  174. package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
  175. package/skills/error-debugging-error-analysis/SKILL.md +47 -0
  176. package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
  177. package/skills/error-debugging-error-trace/SKILL.md +43 -0
  178. package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
  179. package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
  180. package/skills/error-detective/SKILL.md +53 -0
  181. package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
  182. package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
  183. package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
  184. package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
  185. package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
  186. package/skills/error-handling-patterns/SKILL.md +35 -0
  187. package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  188. package/skills/event-sourcing-architect/SKILL.md +58 -0
  189. package/skills/event-store-design/SKILL.md +449 -0
  190. package/skills/fastapi-pro/SKILL.md +192 -0
  191. package/skills/fastapi-templates/SKILL.md +32 -0
  192. package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  193. package/skills/final-test/SKILL.md +5 -0
  194. package/skills/firmware-analyst/SKILL.md +320 -0
  195. package/skills/flutter-expert/SKILL.md +200 -0
  196. package/skills/framework-migration-code-migrate/SKILL.md +48 -0
  197. package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
  198. package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
  199. package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
  200. package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
  201. package/skills/frontend-developer/SKILL.md +171 -0
  202. package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
  203. package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
  204. package/skills/frontend-security-coder/SKILL.md +170 -0
  205. package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
  206. package/skills/gdpr-data-handling/SKILL.md +33 -0
  207. package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
  208. package/skills/git-advanced-workflows/SKILL.md +412 -0
  209. package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
  210. package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
  211. package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
  212. package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  213. package/skills/github-actions-templates/SKILL.md +345 -0
  214. package/skills/gitlab-ci-patterns/SKILL.md +283 -0
  215. package/skills/gitops-workflow/SKILL.md +303 -0
  216. package/skills/gitops-workflow/references/argocd-setup.md +134 -0
  217. package/skills/gitops-workflow/references/sync-policies.md +131 -0
  218. package/skills/go-concurrency-patterns/SKILL.md +33 -0
  219. package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  220. package/skills/godot-gdscript-patterns/SKILL.md +33 -0
  221. package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  222. package/skills/golang-pro/SKILL.md +179 -0
  223. package/skills/grafana-dashboards/SKILL.md +381 -0
  224. package/skills/graphql-architect/SKILL.md +182 -0
  225. package/skills/haskell-pro/SKILL.md +56 -0
  226. package/skills/helm-chart-scaffolding/SKILL.md +34 -0
  227. package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  228. package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  229. package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  230. package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
  231. package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  232. package/skills/hr-pro/SKILL.md +126 -0
  233. package/skills/hybrid-cloud-architect/SKILL.md +168 -0
  234. package/skills/hybrid-cloud-networking/SKILL.md +238 -0
  235. package/skills/hybrid-search-implementation/SKILL.md +32 -0
  236. package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
  237. package/skills/incident-responder/SKILL.md +213 -0
  238. package/skills/incident-response-incident-response/SKILL.md +168 -0
  239. package/skills/incident-response-smart-fix/SKILL.md +29 -0
  240. package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
  241. package/skills/incident-runbook-templates/SKILL.md +395 -0
  242. package/skills/ios-developer/SKILL.md +219 -0
  243. package/skills/istio-traffic-management/SKILL.md +337 -0
  244. package/skills/java-pro/SKILL.md +177 -0
  245. package/skills/javascript-pro/SKILL.md +57 -0
  246. package/skills/javascript-testing-patterns/SKILL.md +35 -0
  247. package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  248. package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
  249. package/skills/julia-pro/SKILL.md +209 -0
  250. package/skills/k8s-manifest-generator/SKILL.md +35 -0
  251. package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  252. package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  253. package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  254. package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  255. package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  256. package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
  257. package/skills/k8s-security-policies/SKILL.md +346 -0
  258. package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  259. package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  260. package/skills/kpi-dashboard-design/SKILL.md +440 -0
  261. package/skills/kubernetes-architect/SKILL.md +170 -0
  262. package/skills/langchain-architecture/SKILL.md +350 -0
  263. package/skills/legacy-modernizer/SKILL.md +53 -0
  264. package/skills/legal-advisor/SKILL.md +70 -0
  265. package/skills/linkerd-patterns/SKILL.md +321 -0
  266. package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
  267. package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
  268. package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
  269. package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
  270. package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  271. package/skills/llm-evaluation/SKILL.md +483 -0
  272. package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
  273. package/skills/malware-analyst/SKILL.md +247 -0
  274. package/skills/market-sizing-analysis/SKILL.md +425 -0
  275. package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
  276. package/skills/market-sizing-analysis/references/data-sources.md +360 -0
  277. package/skills/memory-forensics/SKILL.md +491 -0
  278. package/skills/memory-safety-patterns/SKILL.md +33 -0
  279. package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  280. package/skills/mermaid-expert/SKILL.md +59 -0
  281. package/skills/microservices-patterns/SKILL.md +35 -0
  282. package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  283. package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
  284. package/skills/ml-engineer/SKILL.md +168 -0
  285. package/skills/ml-pipeline-workflow/SKILL.md +257 -0
  286. package/skills/mlops-engineer/SKILL.md +219 -0
  287. package/skills/mobile-developer/SKILL.md +205 -0
  288. package/skills/mobile-security-coder/SKILL.md +184 -0
  289. package/skills/modern-javascript-patterns/SKILL.md +35 -0
  290. package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  291. package/skills/monorepo-architect/SKILL.md +61 -0
  292. package/skills/monorepo-management/SKILL.md +35 -0
  293. package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
  294. package/skills/mtls-configuration/SKILL.md +359 -0
  295. package/skills/multi-cloud-architecture/SKILL.md +189 -0
  296. package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
  297. package/skills/network-engineer/SKILL.md +169 -0
  298. package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
  299. package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  300. package/skills/nft-standards/SKILL.md +395 -0
  301. package/skills/node-expert/SKILL.md +23 -0
  302. package/skills/nodejs-backend-patterns/SKILL.md +35 -0
  303. package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  304. package/skills/nx-workspace-patterns/SKILL.md +464 -0
  305. package/skills/observability-engineer/SKILL.md +237 -0
  306. package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
  307. package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
  308. package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
  309. package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
  310. package/skills/on-call-handoff-patterns/SKILL.md +453 -0
  311. package/skills/openapi-spec-generation/SKILL.md +33 -0
  312. package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  313. package/skills/payment-integration/SKILL.md +77 -0
  314. package/skills/paypal-integration/SKILL.md +479 -0
  315. package/skills/pci-compliance/SKILL.md +478 -0
  316. package/skills/performance-engineer/SKILL.md +180 -0
  317. package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
  318. package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
  319. package/skills/php-pro/SKILL.md +63 -0
  320. package/skills/posix-shell-pro/SKILL.md +304 -0
  321. package/skills/postgresql/SKILL.md +230 -0
  322. package/skills/postmortem-writing/SKILL.md +386 -0
  323. package/skills/projection-patterns/SKILL.md +33 -0
  324. package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  325. package/skills/prometheus-configuration/SKILL.md +404 -0
  326. package/skills/prompt-engineer/SKILL.md +272 -0
  327. package/skills/prompt-engineering-patterns/SKILL.md +213 -0
  328. package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  329. package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  330. package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  331. package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  332. package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  333. package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  334. package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  335. package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  336. package/skills/protocol-reverse-engineering/SKILL.md +29 -0
  337. package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
  338. package/skills/python-development-python-scaffold/SKILL.md +331 -0
  339. package/skills/python-packaging/SKILL.md +36 -0
  340. package/skills/python-packaging/resources/implementation-playbook.md +869 -0
  341. package/skills/python-performance-optimization/SKILL.md +36 -0
  342. package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  343. package/skills/python-pro/SKILL.md +158 -0
  344. package/skills/python-testing-patterns/SKILL.md +37 -0
  345. package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  346. package/skills/quant-analyst/SKILL.md +53 -0
  347. package/skills/rag-implementation/SKILL.md +421 -0
  348. package/skills/react-modernization/SKILL.md +34 -0
  349. package/skills/react-modernization/resources/implementation-playbook.md +512 -0
  350. package/skills/react-native-architecture/SKILL.md +33 -0
  351. package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  352. package/skills/react-state-management/SKILL.md +441 -0
  353. package/skills/reference-builder/SKILL.md +188 -0
  354. package/skills/reverse-engineer/SKILL.md +173 -0
  355. package/skills/risk-manager/SKILL.md +61 -0
  356. package/skills/risk-metrics-calculation/SKILL.md +33 -0
  357. package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
  358. package/skills/ruby-pro/SKILL.md +56 -0
  359. package/skills/rust-async-patterns/SKILL.md +33 -0
  360. package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  361. package/skills/rust-pro/SKILL.md +178 -0
  362. package/skills/saga-orchestration/SKILL.md +496 -0
  363. package/skills/sales-automator/SKILL.md +55 -0
  364. package/skills/sast-configuration/SKILL.md +212 -0
  365. package/skills/scala-pro/SKILL.md +82 -0
  366. package/skills/screen-reader-testing/SKILL.md +33 -0
  367. package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  368. package/skills/search-specialist/SKILL.md +80 -0
  369. package/skills/secrets-management/SKILL.md +364 -0
  370. package/skills/security-auditor/SKILL.md +169 -0
  371. package/skills/security-compliance-compliance-check/SKILL.md +55 -0
  372. package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  373. package/skills/security-requirement-extraction/SKILL.md +33 -0
  374. package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  375. package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
  376. package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  377. package/skills/security-scanning-security-hardening/SKILL.md +147 -0
  378. package/skills/security-scanning-security-sast/SKILL.md +495 -0
  379. package/skills/seo-authority-builder/SKILL.md +136 -0
  380. package/skills/seo-cannibalization-detector/SKILL.md +123 -0
  381. package/skills/seo-content-auditor/SKILL.md +83 -0
  382. package/skills/seo-content-planner/SKILL.md +108 -0
  383. package/skills/seo-content-refresher/SKILL.md +118 -0
  384. package/skills/seo-content-writer/SKILL.md +96 -0
  385. package/skills/seo-keyword-strategist/SKILL.md +95 -0
  386. package/skills/seo-meta-optimizer/SKILL.md +92 -0
  387. package/skills/seo-snippet-hunter/SKILL.md +114 -0
  388. package/skills/seo-structure-architect/SKILL.md +108 -0
  389. package/skills/service-mesh-expert/SKILL.md +58 -0
  390. package/skills/service-mesh-observability/SKILL.md +395 -0
  391. package/skills/shellcheck-configuration/SKILL.md +466 -0
  392. package/skills/similarity-search-patterns/SKILL.md +33 -0
  393. package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  394. package/skills/slo-implementation/SKILL.md +341 -0
  395. package/skills/solidity-security/SKILL.md +34 -0
  396. package/skills/solidity-security/resources/implementation-playbook.md +524 -0
  397. package/skills/spark-optimization/SKILL.md +427 -0
  398. package/skills/sql-optimization-patterns/SKILL.md +35 -0
  399. package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  400. package/skills/sql-pro/SKILL.md +173 -0
  401. package/skills/startup-analyst/SKILL.md +328 -0
  402. package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
  403. package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
  404. package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
  405. package/skills/startup-financial-modeling/SKILL.md +467 -0
  406. package/skills/startup-metrics-framework/SKILL.md +34 -0
  407. package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
  408. package/skills/stride-analysis-patterns/SKILL.md +33 -0
  409. package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  410. package/skills/stripe-integration/SKILL.md +454 -0
  411. package/skills/systems-programming-rust-project/SKILL.md +440 -0
  412. package/skills/tailwind-design-system/SKILL.md +33 -0
  413. package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  414. package/skills/tdd-orchestrator/SKILL.md +205 -0
  415. package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
  416. package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
  417. package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
  418. package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
  419. package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
  420. package/skills/team-collaboration-issue/SKILL.md +37 -0
  421. package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
  422. package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
  423. package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
  424. package/skills/team-composition-analysis/SKILL.md +413 -0
  425. package/skills/temporal-python-pro/SKILL.md +370 -0
  426. package/skills/temporal-python-testing/SKILL.md +170 -0
  427. package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  428. package/skills/temporal-python-testing/resources/local-setup.md +553 -0
  429. package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  430. package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  431. package/skills/terraform-module-library/SKILL.md +261 -0
  432. package/skills/terraform-module-library/references/aws-modules.md +63 -0
  433. package/skills/terraform-specialist/SKILL.md +166 -0
  434. package/skills/test-automator/SKILL.md +224 -0
  435. package/skills/threat-mitigation-mapping/SKILL.md +33 -0
  436. package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
  437. package/skills/threat-modeling-expert/SKILL.md +60 -0
  438. package/skills/track-management/SKILL.md +38 -0
  439. package/skills/track-management/resources/implementation-playbook.md +591 -0
  440. package/skills/turborepo-caching/SKILL.md +419 -0
  441. package/skills/tutorial-engineer/SKILL.md +139 -0
  442. package/skills/typescript-advanced-types/SKILL.md +35 -0
  443. package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  444. package/skills/typescript-pro/SKILL.md +55 -0
  445. package/skills/ui-minimal/SKILL.md +23 -0
  446. package/skills/ui-ux-designer/SKILL.md +209 -0
  447. package/skills/ui-visual-validator/SKILL.md +214 -0
  448. package/skills/unit-testing-test-generate/SKILL.md +319 -0
  449. package/skills/unity-developer/SKILL.md +230 -0
  450. package/skills/unity-ecs-patterns/SKILL.md +33 -0
  451. package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  452. package/skills/uv-package-manager/SKILL.md +37 -0
  453. package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
  454. package/skills/vector-database-engineer/SKILL.md +60 -0
  455. package/skills/vector-index-tuning/SKILL.md +42 -0
  456. package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
  457. package/skills/wcag-audit-patterns/SKILL.md +41 -0
  458. package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  459. package/skills/web3-testing/SKILL.md +427 -0
  460. package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
  461. package/skills/workflow-patterns/SKILL.md +38 -0
  462. package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import chalk from 'chalk';
3
+ import { Command } from 'commander';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ const program = new Command();
7
+ program
8
+ .name('vibe')
9
+ .description('Vibe Kit CLI - Manage your AI agent vibes')
10
+ .version('1.0.0');
11
+ program
12
+ .command('list')
13
+ .description('List all available vibes')
14
+ .action(async () => {
15
+ const catalogPath = path.join(process.cwd(), 'catalog.json');
16
+ if (!fs.existsSync(catalogPath)) {
17
+ console.error(chalk.red('❌ Catalog not found. Run npm run build:catalog first.'));
18
+ return;
19
+ }
20
+ const catalog = await fs.readJSON(catalogPath);
21
+ console.log(chalk.bold('\nAvailable Vibes:'));
22
+ catalog.skills.forEach((skill) => {
23
+ console.log(`${chalk.green('•')} ${chalk.bold(skill.name)} - ${skill.description}`);
24
+ });
25
+ });
26
+ program.parse();
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+ const yaml = require('yaml');
5
+ function stripQuotes(value) {
6
+ if (typeof value !== 'string')
7
+ return value;
8
+ if (value.length < 2)
9
+ return value.trim();
10
+ const first = value[0];
11
+ const last = value[value.length - 1];
12
+ if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
13
+ return value.slice(1, -1).trim();
14
+ }
15
+ if (first === '"' || first === "'") {
16
+ return value.slice(1).trim();
17
+ }
18
+ if (last === '"' || last === "'") {
19
+ return value.slice(0, -1).trim();
20
+ }
21
+ return value.trim();
22
+ }
23
+ function parseInlineList(raw) {
24
+ if (typeof raw !== 'string')
25
+ return [];
26
+ const value = raw.trim();
27
+ if (!value.startsWith('[') || !value.endsWith(']'))
28
+ return [];
29
+ const inner = value.slice(1, -1).trim();
30
+ if (!inner)
31
+ return [];
32
+ return inner
33
+ .split(',')
34
+ .map(item => stripQuotes(item.trim()))
35
+ .filter(Boolean);
36
+ }
37
+ function isPlainObject(value) {
38
+ return value && typeof value === 'object' && !Array.isArray(value);
39
+ }
40
+ function parseFrontmatter(content) {
41
+ const sanitized = content.replace(/^\uFEFF/, '');
42
+ const lines = sanitized.split(/\r?\n/);
43
+ if (!lines.length || lines[0].trim() !== '---') {
44
+ return { data: {}, body: content, errors: [], hasFrontmatter: false };
45
+ }
46
+ let endIndex = -1;
47
+ for (let i = 1; i < lines.length; i += 1) {
48
+ if (lines[i].trim() === '---') {
49
+ endIndex = i;
50
+ break;
51
+ }
52
+ }
53
+ if (endIndex === -1) {
54
+ return {
55
+ data: {},
56
+ body: content,
57
+ errors: ['Missing closing frontmatter delimiter (---).'],
58
+ hasFrontmatter: true,
59
+ };
60
+ }
61
+ const errors = [];
62
+ const fmText = lines.slice(1, endIndex).join('\n');
63
+ let data = {};
64
+ try {
65
+ const doc = yaml.parseDocument(fmText, { prettyErrors: false });
66
+ if (doc.errors && doc.errors.length) {
67
+ errors.push(...doc.errors.map(error => error.message));
68
+ }
69
+ data = doc.toJS();
70
+ }
71
+ catch (err) {
72
+ errors.push(err.message);
73
+ data = {};
74
+ }
75
+ if (!isPlainObject(data)) {
76
+ errors.push('Frontmatter must be a YAML mapping/object.');
77
+ data = {};
78
+ }
79
+ const body = lines.slice(endIndex + 1).join('\n');
80
+ return { data, body, errors, hasFrontmatter: true };
81
+ }
82
+ function tokenize(value) {
83
+ if (!value)
84
+ return [];
85
+ return value
86
+ .toLowerCase()
87
+ .replace(/[^a-z0-9]+/g, ' ')
88
+ .split(' ')
89
+ .map(token => token.trim())
90
+ .filter(Boolean);
91
+ }
92
+ function unique(list) {
93
+ const seen = new Set();
94
+ const result = [];
95
+ for (const item of list) {
96
+ if (!item || seen.has(item))
97
+ continue;
98
+ seen.add(item);
99
+ result.push(item);
100
+ }
101
+ return result;
102
+ }
103
+ function readSkill(skillDir, skillId) {
104
+ const skillPath = path.join(skillDir, skillId, 'SKILL.md');
105
+ const content = fs.readFileSync(skillPath, 'utf8');
106
+ const { data } = parseFrontmatter(content);
107
+ const name = typeof data.name === 'string' && data.name.trim()
108
+ ? data.name.trim()
109
+ : skillId;
110
+ const description = typeof data.description === 'string'
111
+ ? data.description.trim()
112
+ : '';
113
+ let tags = [];
114
+ if (Array.isArray(data.tags)) {
115
+ tags = data.tags.map(tag => String(tag).trim());
116
+ }
117
+ else if (typeof data.tags === 'string' && data.tags.trim()) {
118
+ const parts = data.tags.includes(',')
119
+ ? data.tags.split(',')
120
+ : data.tags.split(/\s+/);
121
+ tags = parts.map(tag => tag.trim());
122
+ }
123
+ else if (isPlainObject(data.metadata) && data.metadata.tags) {
124
+ const rawTags = data.metadata.tags;
125
+ if (Array.isArray(rawTags)) {
126
+ tags = rawTags.map(tag => String(tag).trim());
127
+ }
128
+ else if (typeof rawTags === 'string' && rawTags.trim()) {
129
+ const parts = rawTags.includes(',')
130
+ ? rawTags.split(',')
131
+ : rawTags.split(/\s+/);
132
+ tags = parts.map(tag => tag.trim());
133
+ }
134
+ }
135
+ tags = tags.filter(Boolean);
136
+ return {
137
+ id: skillId,
138
+ name,
139
+ description,
140
+ tags,
141
+ path: skillPath,
142
+ content,
143
+ };
144
+ }
145
+ function listSkillIds(skillsDir) {
146
+ return fs.readdirSync(skillsDir)
147
+ .filter(entry => !entry.startsWith('.') && fs.statSync(path.join(skillsDir, entry)).isDirectory())
148
+ .sort();
149
+ }
150
+ module.exports = {
151
+ listSkillIds,
152
+ parseFrontmatter,
153
+ parseInlineList,
154
+ readSkill,
155
+ stripQuotes,
156
+ tokenize,
157
+ unique,
158
+ };
@@ -0,0 +1,50 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'fs-extra';
3
+ import path from 'path';
4
+ async function run() {
5
+ const skillsDir = path.resolve(process.cwd(), 'skills');
6
+ const items = await fs.readdir(skillsDir);
7
+ const skills = [];
8
+ for (const item of items) {
9
+ const skillPath = path.join(skillsDir, item);
10
+ if (!(await fs.stat(skillPath)).isDirectory())
11
+ continue;
12
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
13
+ if (!fs.existsSync(skillMdPath))
14
+ continue;
15
+ const content = await fs.readFile(skillMdPath, 'utf-8');
16
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
17
+ if (frontmatterMatch) {
18
+ const yamlLines = frontmatterMatch[1].split('\n');
19
+ const frontmatter = {};
20
+ for (const line of yamlLines) {
21
+ const [key, ...valueParts] = line.split(':');
22
+ if (key && valueParts.length > 0) {
23
+ frontmatter[key.trim()] = valueParts.join(':').trim();
24
+ }
25
+ }
26
+ skills.push({
27
+ name: frontmatter.name || item,
28
+ description: frontmatter.description || '',
29
+ path: `skills/${item}`,
30
+ });
31
+ }
32
+ }
33
+ const catalog = {
34
+ lastUpdated: new Date().toISOString(),
35
+ skills,
36
+ };
37
+ await fs.writeJSON(path.join(process.cwd(), 'catalog.json'), catalog, { spaces: 2 });
38
+ console.log(chalk.blue(`📂 catalog.json built with ${skills.length} skills.`));
39
+ // Generate CATALOG.md
40
+ let markdown = `# Vibe Kit Catalog\n\n`;
41
+ markdown += `Explore our curated collection of ${skills.length} vibes. Last updated: ${new Date().toLocaleDateString()}\n\n`;
42
+ markdown += `| Name | Description | Path |\n`;
43
+ markdown += `|------|-------------|------|\n`;
44
+ for (const skill of skills) {
45
+ markdown += `| **${skill.name}** | ${skill.description} | [View](./${skill.path}) |\n`;
46
+ }
47
+ await fs.writeFile(path.join(process.cwd(), 'CATALOG.md'), markdown);
48
+ console.log(chalk.magenta(`📝 CATALOG.md generated.`));
49
+ }
50
+ run();
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+ const yaml = require('yaml');
5
+ const { listSkillIds, parseFrontmatter } = require('../lib/skill-utils');
6
+ const ROOT = path.resolve(__dirname, '..');
7
+ const SKILLS_DIR = path.join(ROOT, 'skills');
8
+ const ALLOWED_FIELDS = new Set([
9
+ 'name',
10
+ 'description',
11
+ 'license',
12
+ 'compatibility',
13
+ 'metadata',
14
+ 'allowed-tools',
15
+ ]);
16
+ function isPlainObject(value) {
17
+ return value && typeof value === 'object' && !Array.isArray(value);
18
+ }
19
+ function coerceToString(value) {
20
+ if (value === null || value === undefined)
21
+ return '';
22
+ if (typeof value === 'string')
23
+ return value.trim();
24
+ if (typeof value === 'number' || typeof value === 'boolean')
25
+ return String(value);
26
+ if (Array.isArray(value)) {
27
+ const simple = value.every(item => ['string', 'number', 'boolean'].includes(typeof item));
28
+ return simple ? value.map(item => String(item).trim()).filter(Boolean).join(', ') : JSON.stringify(value);
29
+ }
30
+ if (isPlainObject(value)) {
31
+ return JSON.stringify(value);
32
+ }
33
+ return String(value).trim();
34
+ }
35
+ function appendMetadata(metadata, key, value) {
36
+ const nextValue = coerceToString(value);
37
+ if (!nextValue)
38
+ return;
39
+ if (!metadata[key]) {
40
+ metadata[key] = nextValue;
41
+ return;
42
+ }
43
+ if (metadata[key].includes(nextValue))
44
+ return;
45
+ metadata[key] = `${metadata[key]}, ${nextValue}`;
46
+ }
47
+ function collectAllowedTools(value, toolSet) {
48
+ if (!value)
49
+ return;
50
+ if (typeof value === 'string') {
51
+ value
52
+ .split(/[\s,]+/)
53
+ .map(token => token.trim())
54
+ .filter(Boolean)
55
+ .forEach(token => toolSet.add(token));
56
+ return;
57
+ }
58
+ if (Array.isArray(value)) {
59
+ value
60
+ .map(token => String(token).trim())
61
+ .filter(Boolean)
62
+ .forEach(token => toolSet.add(token));
63
+ }
64
+ }
65
+ function normalizeSkill(skillId) {
66
+ const skillPath = path.join(SKILLS_DIR, skillId, 'SKILL.md');
67
+ const content = fs.readFileSync(skillPath, 'utf8');
68
+ const { data, body, hasFrontmatter } = parseFrontmatter(content);
69
+ if (!hasFrontmatter)
70
+ return false;
71
+ let modified = false;
72
+ const updated = { ...data };
73
+ const metadata = isPlainObject(updated.metadata) ? { ...updated.metadata } : {};
74
+ if (updated.metadata !== undefined && !isPlainObject(updated.metadata)) {
75
+ appendMetadata(metadata, 'legacy_metadata', updated.metadata);
76
+ modified = true;
77
+ }
78
+ const allowedTools = new Set();
79
+ collectAllowedTools(updated['allowed-tools'], allowedTools);
80
+ collectAllowedTools(updated.tools, allowedTools);
81
+ collectAllowedTools(updated.tool_access, allowedTools);
82
+ if (updated.tools !== undefined) {
83
+ delete updated.tools;
84
+ modified = true;
85
+ }
86
+ if (updated.tool_access !== undefined) {
87
+ delete updated.tool_access;
88
+ modified = true;
89
+ }
90
+ for (const key of Object.keys(updated)) {
91
+ if (ALLOWED_FIELDS.has(key))
92
+ continue;
93
+ if (key === 'tags') {
94
+ appendMetadata(metadata, 'tags', updated[key]);
95
+ }
96
+ else {
97
+ appendMetadata(metadata, key, updated[key]);
98
+ }
99
+ delete updated[key];
100
+ modified = true;
101
+ }
102
+ if (allowedTools.size) {
103
+ updated['allowed-tools'] = Array.from(allowedTools).join(' ');
104
+ modified = true;
105
+ }
106
+ else if (updated['allowed-tools'] !== undefined) {
107
+ delete updated['allowed-tools'];
108
+ modified = true;
109
+ }
110
+ if (Object.keys(metadata).length) {
111
+ updated.metadata = metadata;
112
+ modified = true;
113
+ }
114
+ else if (updated.metadata !== undefined) {
115
+ delete updated.metadata;
116
+ modified = true;
117
+ }
118
+ if (!modified)
119
+ return false;
120
+ const ordered = {};
121
+ for (const key of ['name', 'description', 'license', 'compatibility', 'allowed-tools', 'metadata']) {
122
+ if (updated[key] !== undefined) {
123
+ ordered[key] = updated[key];
124
+ }
125
+ }
126
+ const fm = yaml.stringify(ordered).trimEnd();
127
+ const bodyPrefix = body.length && (body.startsWith('\n') || body.startsWith('\r\n')) ? '' : '\n';
128
+ const next = `---\n${fm}\n---${bodyPrefix}${body}`;
129
+ fs.writeFileSync(skillPath, next);
130
+ return true;
131
+ }
132
+ function run() {
133
+ const skillIds = listSkillIds(SKILLS_DIR);
134
+ let updatedCount = 0;
135
+ for (const skillId of skillIds) {
136
+ if (normalizeSkill(skillId))
137
+ updatedCount += 1;
138
+ }
139
+ console.log(`Normalized frontmatter for ${updatedCount} skills.`);
140
+ }
141
+ if (require.main === module) {
142
+ run();
143
+ }
144
+ module.exports = { run };
@@ -0,0 +1,56 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'fs-extra';
3
+ import path from 'path';
4
+ import { SkillFrontmatterSchema } from '../src/types/index.js';
5
+ async function validateSkill(skillPath) {
6
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
7
+ if (!fs.existsSync(skillMdPath)) {
8
+ console.error(chalk.red(`❌ Missing SKILL.md in ${skillPath}`));
9
+ return false;
10
+ }
11
+ try {
12
+ const content = await fs.readFile(skillMdPath, 'utf-8');
13
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
14
+ if (!frontmatterMatch) {
15
+ console.error(chalk.red(`❌ No frontmatter found in ${skillMdPath}`));
16
+ return false;
17
+ }
18
+ const yamlLines = frontmatterMatch[1].split('\n');
19
+ const frontmatter = {};
20
+ for (const line of yamlLines) {
21
+ const [key, ...valueParts] = line.split(':');
22
+ if (key && valueParts.length > 0) {
23
+ frontmatter[key.trim()] = valueParts.join(':').trim();
24
+ }
25
+ }
26
+ const result = SkillFrontmatterSchema.safeParse(frontmatter);
27
+ if (!result.success) {
28
+ console.error(chalk.red(`❌ Validation failed for ${skillMdPath}:`));
29
+ console.error(result.error.issues);
30
+ return false;
31
+ }
32
+ console.log(chalk.green(`✅ ${frontmatter.name} validated.`));
33
+ return true;
34
+ }
35
+ catch (err) {
36
+ console.error(chalk.red(`❌ Error reading ${skillMdPath}:`), err);
37
+ return false;
38
+ }
39
+ }
40
+ async function run() {
41
+ const skillsDir = path.resolve(process.cwd(), 'skills');
42
+ const items = await fs.readdir(skillsDir);
43
+ let allValid = true;
44
+ for (const item of items) {
45
+ const fullPath = path.join(skillsDir, item);
46
+ if ((await fs.stat(fullPath)).isDirectory()) {
47
+ const isValid = await validateSkill(fullPath);
48
+ if (!isValid)
49
+ allValid = false;
50
+ }
51
+ }
52
+ if (!allValid) {
53
+ process.exit(1);
54
+ }
55
+ }
56
+ run();
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env node
2
+ import chalk from 'chalk';
3
+ import { Command } from 'commander';
4
+ import fs from 'fs-extra';
5
+ import ora from 'ora';
6
+ import path from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+ const KIT_ROOT = path.resolve(__dirname, '../../../');
11
+ const ALIASES_PATH = path.join(KIT_ROOT, 'aliases.json');
12
+ const BUNDLES_PATH = path.join(KIT_ROOT, 'bundles.json');
13
+ const program = new Command();
14
+ program
15
+ .name('vibe')
16
+ .description('Vibe Kit CLI - Manage your AI agent vibes')
17
+ .version('1.0.0');
18
+ program
19
+ .command('list')
20
+ .description('List all available vibes')
21
+ .action(async () => {
22
+ const catalogPath = path.join(KIT_ROOT, 'catalog.json');
23
+ if (!fs.existsSync(catalogPath)) {
24
+ console.error(chalk.red(`❌ Catalog not found at ${catalogPath}. Run npm run build:catalog in kit root.`));
25
+ return;
26
+ }
27
+ const catalog = await fs.readJSON(catalogPath);
28
+ console.log(chalk.bold('\nAvailable Vibes:'));
29
+ catalog.skills.forEach((skill) => {
30
+ console.log(`${chalk.green('•')} ${chalk.bold(skill.name)} - ${skill.description}`);
31
+ });
32
+ });
33
+ program
34
+ .command('bundles')
35
+ .description('List available skill bundles')
36
+ .action(async () => {
37
+ if (!fs.existsSync(BUNDLES_PATH)) {
38
+ console.error(chalk.red('❌ bundles.json not found.'));
39
+ return;
40
+ }
41
+ const data = await fs.readJSON(BUNDLES_PATH);
42
+ console.log(chalk.bold('\nAvailable Bundles:'));
43
+ Object.entries(data.bundles).forEach(([name, bundle]) => {
44
+ console.log(`${chalk.cyan('•')} ${chalk.bold(name)}: ${bundle.description}`);
45
+ console.log(` ${chalk.dim('Skills: ' + bundle.skills.slice(0, 5).join(', ') + (bundle.skills.length > 5 ? '...' : ''))}`);
46
+ });
47
+ });
48
+ program
49
+ .command('aliases')
50
+ .description('List skill aliases')
51
+ .action(async () => {
52
+ if (!fs.existsSync(ALIASES_PATH)) {
53
+ console.error(chalk.red('❌ aliases.json not found.'));
54
+ return;
55
+ }
56
+ const aliases = await fs.readJSON(ALIASES_PATH);
57
+ console.log(chalk.bold('\nSkill Aliases:'));
58
+ Object.entries(aliases).forEach(([alias, skill]) => {
59
+ console.log(`${chalk.yellow('•')} ${chalk.bold(alias)} ${chalk.dim('→')} ${skill}`);
60
+ });
61
+ });
62
+ program
63
+ .command('search <query>')
64
+ .description('Search for vibes in the catalog')
65
+ .action(async (query) => {
66
+ const catalogPath = path.join(KIT_ROOT, 'catalog.json');
67
+ if (!fs.existsSync(catalogPath)) {
68
+ console.error(chalk.red(`❌ Catalog not found at ${catalogPath}. Run npm run build:catalog in kit root.`));
69
+ return;
70
+ }
71
+ const catalog = await fs.readJSON(catalogPath);
72
+ const results = catalog.skills.filter(skill => skill.name.toLowerCase().includes(query.toLowerCase()) ||
73
+ skill.description.toLowerCase().includes(query.toLowerCase()));
74
+ if (results.length === 0) {
75
+ console.log(chalk.yellow(`\nNo vibes found matching "${query}"`));
76
+ return;
77
+ }
78
+ console.log(chalk.bold(`\nSearch Results for "${query}":`));
79
+ results.forEach((skill) => {
80
+ console.log(`${chalk.green('•')} ${chalk.bold(skill.name)} - ${skill.description}`);
81
+ });
82
+ });
83
+ program
84
+ .command('install <name>')
85
+ .description('Install a vibe or bundle to the current workspace')
86
+ .option('-b, --bundle', 'Install a bundle of skills')
87
+ .option('-g, --global', 'Install globally (not implemented)')
88
+ .action(async (name, options) => {
89
+ const catalogPath = path.join(KIT_ROOT, 'catalog.json');
90
+ if (!fs.existsSync(catalogPath)) {
91
+ console.error(chalk.red(`❌ Catalog not found at ${catalogPath}. Run npm run build:catalog in kit root.`));
92
+ return;
93
+ }
94
+ const catalog = await fs.readJSON(catalogPath);
95
+ if (options.bundle) {
96
+ if (!fs.existsSync(BUNDLES_PATH)) {
97
+ console.error(chalk.red('❌ bundles.json not found.'));
98
+ return;
99
+ }
100
+ const bundleData = await fs.readJSON(BUNDLES_PATH);
101
+ const bundle = bundleData.bundles[name];
102
+ if (!bundle) {
103
+ console.error(chalk.red(`❌ Bundle "${name}" not found.`));
104
+ return;
105
+ }
106
+ const spinner = ora(`Installing bundle: ${name}...`).start();
107
+ let count = 0;
108
+ for (const skillName of bundle.skills) {
109
+ const skill = catalog.skills.find(s => s.name === skillName);
110
+ if (skill) {
111
+ const destDir = path.join(process.cwd(), '.agent', 'skills', skillName);
112
+ const srcDir = path.join(KIT_ROOT, skill.path);
113
+ await fs.ensureDir(destDir);
114
+ await fs.copy(srcDir, destDir);
115
+ count++;
116
+ }
117
+ }
118
+ spinner.succeed(chalk.green(`Bundle "${name}" installed! (${count} skills)`));
119
+ return;
120
+ }
121
+ // Single skill install (with alias support)
122
+ let skillName = name;
123
+ if (fs.existsSync(ALIASES_PATH)) {
124
+ const aliases = await fs.readJSON(ALIASES_PATH);
125
+ if (aliases[name]) {
126
+ skillName = aliases[name];
127
+ }
128
+ }
129
+ const skill = catalog.skills.find(s => s.name === skillName);
130
+ if (!skill) {
131
+ console.error(chalk.red(`❌ Vibe "${skillName}" not found in catalog.`));
132
+ return;
133
+ }
134
+ const spinner = ora(`Installing vibe: ${skillName}...`).start();
135
+ try {
136
+ const destDir = path.join(process.cwd(), '.agent', 'skills', skillName);
137
+ const srcDir = path.join(KIT_ROOT, skill.path);
138
+ await fs.ensureDir(destDir);
139
+ await fs.copy(srcDir, destDir);
140
+ spinner.succeed(chalk.green(`Vibe "${skillName}" installed to .agent/skills/${skillName}`));
141
+ }
142
+ catch (err) {
143
+ spinner.fail(chalk.red(`Failed to install vibe: ${err.message}`));
144
+ }
145
+ });
146
+ program.parse();
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export const SkillFrontmatterSchema = z.object({
3
+ name: z.string().min(1, "Skill name is required"),
4
+ description: z.string().min(1, "Description is required"),
5
+ });
6
+ export const CatalogItemSchema = SkillFrontmatterSchema.extend({
7
+ path: z.string(),
8
+ category: z.string().optional(),
9
+ });
10
+ export const CatalogSchema = z.object({
11
+ lastUpdated: z.string(),
12
+ skills: z.array(CatalogItemSchema),
13
+ });
@@ -0,0 +1 @@
1
+ "use strict";
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@ruaruababa/vibe-kit",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "type": "module",
6
+ "bin": {
7
+ "vibe": "./bin/vibe.js"
8
+ },
9
+ "scripts": {
10
+ "build": "npx tsc && npm run build:catalog",
11
+ "build:catalog": "node --loader ts-node/esm scripts/build-catalog.ts",
12
+ "validate": "node --loader ts-node/esm scripts/validate-skills.ts",
13
+ "test": "echo \"Error: no test specified\" && exit 1",
14
+ "prepack": "npm run build"
15
+ },
16
+ "files": [
17
+ "bin",
18
+ "dist",
19
+ "skills",
20
+ "catalog.json",
21
+ "CATALOG.md",
22
+ "bundles.json",
23
+ "aliases.json",
24
+ "README.md"
25
+ ],
26
+ "keywords": [],
27
+ "author": "",
28
+ "license": "ISC",
29
+ "devDependencies": {
30
+ "@types/fs-extra": "^11.0.4",
31
+ "@types/node": "^25.0.10",
32
+ "ts-node": "^10.9.2",
33
+ "typescript": "^5.9.3"
34
+ },
35
+ "dependencies": {
36
+ "chalk": "^5.6.2",
37
+ "commander": "^14.0.2",
38
+ "fs-extra": "^11.3.3",
39
+ "ora": "^9.1.0",
40
+ "yaml": "^2.8.2",
41
+ "zod": "^4.3.6"
42
+ }
43
+ }
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: accessibility-compliance-accessibility-audit
3
+ description: "You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance."
4
+ ---
5
+
6
+ # Accessibility Audit and Testing
7
+
8
+ You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct comprehensive audits, identify barriers, provide remediation guidance, and ensure digital products are accessible to all users.
9
+
10
+ ## Use this skill when
11
+
12
+ - Auditing web or mobile experiences for WCAG compliance
13
+ - Identifying accessibility barriers and remediation priorities
14
+ - Establishing ongoing accessibility testing practices
15
+ - Preparing compliance evidence for stakeholders
16
+
17
+ ## Do not use this skill when
18
+
19
+ - You only need a general UI design review without accessibility scope
20
+ - The request is unrelated to user experience or compliance
21
+ - You cannot access the UI, design artifacts, or content
22
+
23
+ ## Context
24
+
25
+ The user needs to audit and improve accessibility to ensure compliance with WCAG standards and provide an inclusive experience for users with disabilities. Focus on automated testing, manual verification, remediation strategies, and establishing ongoing accessibility practices.
26
+
27
+ ## Requirements
28
+
29
+ $ARGUMENTS
30
+
31
+ ## Instructions
32
+
33
+ - Confirm scope (platforms, WCAG level, target pages, key user journeys).
34
+ - Run automated scans to collect baseline violations and coverage gaps.
35
+ - Perform manual checks (keyboard, screen reader, focus order, contrast).
36
+ - Map findings to WCAG criteria, severity, and user impact.
37
+ - Provide remediation steps and re-test after fixes.
38
+ - If detailed procedures are required, open `resources/implementation-playbook.md`.
39
+
40
+ ## Resources
41
+
42
+ - `resources/implementation-playbook.md` for detailed audit steps, tooling, and remediation examples.