@ngxtm/devkit 3.6.1 → 3.8.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 (773) hide show
  1. package/SKILLS_INDEX.md +2419 -634
  2. package/cli/update.js +145 -77
  3. package/merged-commands/3d-web-experience.md +254 -0
  4. package/merged-commands/ab-test-setup.md +232 -0
  5. package/merged-commands/accessibility-compliance-accessibility-audit.md +42 -0
  6. package/merged-commands/active-directory-attacks.md +383 -0
  7. package/merged-commands/address-github-comments.md +55 -0
  8. package/merged-commands/aesthetic.md +134 -0
  9. package/merged-commands/agent-evaluation.md +64 -0
  10. package/merged-commands/agent-framework-azure-hosted-agents.md +332 -0
  11. package/merged-commands/agent-manager-skill.md +40 -0
  12. package/merged-commands/agent-memory-mcp.md +82 -0
  13. package/merged-commands/agent-memory-systems.md +67 -0
  14. package/merged-commands/agent-orchestration-improve-agent.md +349 -0
  15. package/merged-commands/agent-orchestration-multi-agent-optimize.md +239 -0
  16. package/merged-commands/agent-tool-builder.md +53 -0
  17. package/merged-commands/agile-product-owner.md +31 -0
  18. package/merged-commands/ai-agents-architect.md +90 -0
  19. package/merged-commands/ai-artist.md +75 -0
  20. package/merged-commands/ai-engineer.md +171 -0
  21. package/merged-commands/ai-multimodal.md +109 -0
  22. package/merged-commands/ai-product.md +54 -0
  23. package/merged-commands/ai-wrapper-product.md +273 -0
  24. package/merged-commands/airflow-dag-patterns.md +41 -0
  25. package/merged-commands/algolia-search.md +66 -0
  26. package/merged-commands/algorithmic-art.md +405 -0
  27. package/merged-commands/analytics-tracking.md +404 -0
  28. package/merged-commands/angular-architect.md +97 -0
  29. package/merged-commands/angular-migration.md +428 -0
  30. package/merged-commands/anti-reversing-techniques.md +42 -0
  31. package/merged-commands/api-design-principles.md +37 -0
  32. package/merged-commands/api-designer.md +101 -0
  33. package/merged-commands/api-documentation-generator.md +484 -0
  34. package/merged-commands/api-documenter.md +184 -0
  35. package/merged-commands/api-fuzzing-bug-bounty.md +433 -0
  36. package/merged-commands/api-patterns.md +81 -0
  37. package/merged-commands/api-security-best-practices.md +907 -0
  38. package/merged-commands/api-testing-observability-api-mock.md +46 -0
  39. package/merged-commands/app-builder.md +75 -0
  40. package/merged-commands/app-store-optimization.md +403 -0
  41. package/merged-commands/application-performance-performance-optimization.md +154 -0
  42. package/merged-commands/architect-review.md +174 -0
  43. package/merged-commands/architecture-decision-records.md +441 -0
  44. package/merged-commands/architecture-designer.md +89 -0
  45. package/merged-commands/architecture-patterns.md +37 -0
  46. package/merged-commands/architecture.md +55 -0
  47. package/merged-commands/arm-cortex-expert.md +306 -0
  48. package/merged-commands/artifacts-builder.md +74 -0
  49. package/merged-commands/ask-questions-if-underspecified.md +81 -0
  50. package/merged-commands/async-python-patterns.md +39 -0
  51. package/merged-commands/atlassian-mcp.md +100 -0
  52. package/merged-commands/attack-tree-construction.md +38 -0
  53. package/merged-commands/auth-implementation-patterns.md +39 -0
  54. package/merged-commands/automate-whatsapp.md +257 -0
  55. package/merged-commands/autonomous-agent-patterns.md +761 -0
  56. package/merged-commands/autonomous-agents.md +68 -0
  57. package/merged-commands/avalonia-layout-zafiro.md +59 -0
  58. package/merged-commands/avalonia-viewmodels-zafiro.md +29 -0
  59. package/merged-commands/avalonia-zafiro-development.md +29 -0
  60. package/merged-commands/aws-agentic-ai.md +117 -0
  61. package/merged-commands/aws-cdk-development.md +278 -0
  62. package/merged-commands/aws-cost-operations.md +317 -0
  63. package/merged-commands/aws-penetration-testing.md +405 -0
  64. package/merged-commands/aws-serverless-eda.md +757 -0
  65. package/merged-commands/aws-serverless.md +323 -0
  66. package/merged-commands/aws-skills.md +22 -0
  67. package/merged-commands/azd-deployment.md +296 -0
  68. package/merged-commands/azure-ai-agents-python.md +277 -0
  69. package/merged-commands/azure-ai-search-python.md +198 -0
  70. package/merged-commands/azure-ai-voicelive-skill.md +294 -0
  71. package/merged-commands/azure-functions.md +42 -0
  72. package/merged-commands/backend-architect.md +333 -0
  73. package/merged-commands/backend-dev-guidelines.md +342 -0
  74. package/merged-commands/backend-development-feature-development.md +180 -0
  75. package/merged-commands/backend-development.md +155 -0
  76. package/merged-commands/backend-security-coder.md +156 -0
  77. package/merged-commands/backtesting-frameworks.md +39 -0
  78. package/merged-commands/bash-defensive-patterns.md +43 -0
  79. package/merged-commands/bash-linux.md +199 -0
  80. package/merged-commands/bash-pro.md +310 -0
  81. package/merged-commands/bats-testing-patterns.md +34 -0
  82. package/merged-commands/bazel-build-optimization.md +397 -0
  83. package/merged-commands/beautiful-prose.md +22 -0
  84. package/merged-commands/behavioral-modes.md +242 -0
  85. package/merged-commands/best-practices.md +500 -0
  86. package/merged-commands/better-auth.md +204 -0
  87. package/merged-commands/billing-automation.md +42 -0
  88. package/merged-commands/binary-analysis-patterns.md +450 -0
  89. package/merged-commands/blockchain-developer.md +208 -0
  90. package/merged-commands/blockrun.md +292 -0
  91. package/merged-commands/brainstorming.md +230 -0
  92. package/merged-commands/brand-guidelines-anthropic.md +73 -0
  93. package/merged-commands/brand-guidelines-community.md +73 -0
  94. package/merged-commands/brand-guidelines.md +73 -0
  95. package/merged-commands/broken-authentication.md +476 -0
  96. package/merged-commands/browser-automation.md +70 -0
  97. package/merged-commands/browser-extension-builder.md +261 -0
  98. package/merged-commands/building-ai-agent-on-cloudflare.md +391 -0
  99. package/merged-commands/building-mcp-server-on-cloudflare.md +265 -0
  100. package/merged-commands/bullmq-specialist.md +57 -0
  101. package/merged-commands/bun-development.md +691 -0
  102. package/merged-commands/burp-suite-testing.md +380 -0
  103. package/merged-commands/business-analyst.md +182 -0
  104. package/merged-commands/busybox-on-windows.md +30 -0
  105. package/merged-commands/c-pro.md +56 -0
  106. package/merged-commands/c4-architecture-c4-architecture.md +389 -0
  107. package/merged-commands/c4-code.md +244 -0
  108. package/merged-commands/c4-component.md +153 -0
  109. package/merged-commands/c4-container.md +171 -0
  110. package/merged-commands/c4-context.md +150 -0
  111. package/merged-commands/canvas-design.md +130 -0
  112. package/merged-commands/cc-skill-backend-patterns.md +584 -0
  113. package/merged-commands/cc-skill-clickhouse-io.md +431 -0
  114. package/merged-commands/cc-skill-coding-standards.md +522 -0
  115. package/merged-commands/cc-skill-continuous-learning.md +10 -0
  116. package/merged-commands/cc-skill-frontend-patterns.md +633 -0
  117. package/merged-commands/cc-skill-project-guidelines-example.md +352 -0
  118. package/merged-commands/cc-skill-security-review.md +496 -0
  119. package/merged-commands/cc-skill-strategic-compact.md +10 -0
  120. package/merged-commands/changelog-automation.md +38 -0
  121. package/merged-commands/changelog-generator.md +104 -0
  122. package/merged-commands/chaos-engineer.md +98 -0
  123. package/merged-commands/chrome-devtools.md +407 -0
  124. package/merged-commands/cicd-automation-workflow-automate.md +51 -0
  125. package/merged-commands/clarity-gate.md +22 -0
  126. package/merged-commands/claude-ally-health.md +22 -0
  127. package/merged-commands/claude-code-guide.md +68 -0
  128. package/merged-commands/claude-d3js-skill.md +820 -0
  129. package/merged-commands/claude-scientific-skills.md +22 -0
  130. package/merged-commands/claude-speed-reader.md +22 -0
  131. package/merged-commands/claude-win11-speckit-update-skill.md +22 -0
  132. package/merged-commands/clean-code.md +201 -0
  133. package/merged-commands/clerk-auth.md +56 -0
  134. package/merged-commands/cli-developer.md +97 -0
  135. package/merged-commands/cloud-architect.md +135 -0
  136. package/merged-commands/cloud-penetration-testing.md +501 -0
  137. package/merged-commands/cloudflare-expert.md +227 -0
  138. package/merged-commands/code-documentation-code-explain.md +46 -0
  139. package/merged-commands/code-documentation-doc-generate.md +48 -0
  140. package/merged-commands/code-documentation.md +263 -0
  141. package/merged-commands/code-documenter.md +95 -0
  142. package/merged-commands/code-refactoring-context-restore.md +179 -0
  143. package/merged-commands/code-refactoring-refactor-clean.md +51 -0
  144. package/merged-commands/code-refactoring-tech-debt.md +386 -0
  145. package/merged-commands/code-refactoring.md +209 -0
  146. package/merged-commands/code-review-ai-ai-review.md +450 -0
  147. package/merged-commands/code-review-checklist.md +444 -0
  148. package/merged-commands/code-review-excellence.md +40 -0
  149. package/merged-commands/code-review.md +121 -0
  150. package/merged-commands/code-reviewer.md +178 -0
  151. package/merged-commands/codebase-cleanup-deps-audit.md +51 -0
  152. package/merged-commands/codebase-cleanup-refactor-clean.md +51 -0
  153. package/merged-commands/codebase-cleanup-tech-debt.md +386 -0
  154. package/merged-commands/codex-review.md +37 -0
  155. package/merged-commands/commit.md +171 -0
  156. package/merged-commands/competitive-ads-extractor.md +293 -0
  157. package/merged-commands/competitive-landscape.md +34 -0
  158. package/merged-commands/competitor-alternatives.md +750 -0
  159. package/merged-commands/comprehensive-review-full-review.md +146 -0
  160. package/merged-commands/comprehensive-review-pr-enhance.md +46 -0
  161. package/merged-commands/computer-use-agents.md +315 -0
  162. package/merged-commands/concise-planning.md +62 -0
  163. package/merged-commands/conductor-implement.md +388 -0
  164. package/merged-commands/conductor-manage.md +39 -0
  165. package/merged-commands/conductor-new-track.md +433 -0
  166. package/merged-commands/conductor-revert.md +372 -0
  167. package/merged-commands/conductor-setup.md +426 -0
  168. package/merged-commands/conductor-status.md +338 -0
  169. package/merged-commands/conductor-validator.md +62 -0
  170. package/merged-commands/content-creator.md +248 -0
  171. package/merged-commands/content-marketer.md +170 -0
  172. package/merged-commands/content-research-writer.md +538 -0
  173. package/merged-commands/context-compression.md +266 -0
  174. package/merged-commands/context-degradation.md +238 -0
  175. package/merged-commands/context-driven-development.md +400 -0
  176. package/merged-commands/context-engineering.md +107 -0
  177. package/merged-commands/context-fundamentals.md +192 -0
  178. package/merged-commands/context-management-context-restore.md +179 -0
  179. package/merged-commands/context-management-context-save.md +177 -0
  180. package/merged-commands/context-manager.md +185 -0
  181. package/merged-commands/context-optimization.md +186 -0
  182. package/merged-commands/context-window-management.md +53 -0
  183. package/merged-commands/context7-auto-research.md +36 -0
  184. package/merged-commands/conversation-memory.md +61 -0
  185. package/merged-commands/copy-editing.md +439 -0
  186. package/merged-commands/copywriting.md +225 -0
  187. package/merged-commands/core-components.md +264 -0
  188. package/merged-commands/cosmos-db-python-skill.md +198 -0
  189. package/merged-commands/cost-optimization.md +286 -0
  190. package/merged-commands/cpp-pro.md +59 -0
  191. package/merged-commands/cqrs-implementation.md +35 -0
  192. package/merged-commands/create-pr.md +192 -0
  193. package/merged-commands/crewai.md +243 -0
  194. package/merged-commands/csharp-developer.md +94 -0
  195. package/merged-commands/csharp-pro.md +59 -0
  196. package/merged-commands/culture-index.md +43 -0
  197. package/merged-commands/customer-support.md +170 -0
  198. package/merged-commands/daily-news-report.md +356 -0
  199. package/merged-commands/data-engineer.md +224 -0
  200. package/merged-commands/data-engineering-data-driven-feature.md +182 -0
  201. package/merged-commands/data-engineering-data-pipeline.md +201 -0
  202. package/merged-commands/data-quality-frameworks.md +40 -0
  203. package/merged-commands/data-scientist.md +199 -0
  204. package/merged-commands/data-storytelling.md +465 -0
  205. package/merged-commands/database-admin.md +165 -0
  206. package/merged-commands/database-architect.md +268 -0
  207. package/merged-commands/database-cloud-optimization-cost-optimize.md +44 -0
  208. package/merged-commands/database-design.md +52 -0
  209. package/merged-commands/database-migration.md +436 -0
  210. package/merged-commands/database-migrations-migration-observability.md +420 -0
  211. package/merged-commands/database-migrations-sql-migrations.md +53 -0
  212. package/merged-commands/database-optimizer.md +167 -0
  213. package/merged-commands/databases.md +232 -0
  214. package/merged-commands/dbt-transformation-patterns.md +34 -0
  215. package/merged-commands/debugger.md +49 -0
  216. package/merged-commands/debugging-strategies.md +34 -0
  217. package/merged-commands/debugging-toolkit-smart-debug.md +197 -0
  218. package/merged-commands/debugging-wizard.md +93 -0
  219. package/merged-commands/debugging.md +84 -0
  220. package/merged-commands/deep-research.md +114 -0
  221. package/merged-commands/defi-protocol-templates.md +466 -0
  222. package/merged-commands/dependency-management-deps-audit.md +44 -0
  223. package/merged-commands/dependency-upgrade.md +421 -0
  224. package/merged-commands/deployment-engineer.md +170 -0
  225. package/merged-commands/deployment-pipeline-design.md +371 -0
  226. package/merged-commands/deployment-procedures.md +241 -0
  227. package/merged-commands/deployment-validation-config-validate.md +496 -0
  228. package/merged-commands/design-md.md +178 -0
  229. package/merged-commands/design-orchestration.md +167 -0
  230. package/merged-commands/developer-growth-analysis.md +322 -0
  231. package/merged-commands/devops-engineer.md +92 -0
  232. package/merged-commands/devops-troubleshooter.md +161 -0
  233. package/merged-commands/devops.md +285 -0
  234. package/merged-commands/discord-bot-architect.md +277 -0
  235. package/merged-commands/dispatching-parallel-agents.md +180 -0
  236. package/merged-commands/distributed-debugging-debug-trace.md +44 -0
  237. package/merged-commands/distributed-tracing.md +450 -0
  238. package/merged-commands/django-expert.md +89 -0
  239. package/merged-commands/django-pro.md +180 -0
  240. package/merged-commands/doc-coauthoring.md +375 -0
  241. package/merged-commands/docker-expert.md +409 -0
  242. package/merged-commands/docs-architect.md +98 -0
  243. package/merged-commands/docs-seeker.md +102 -0
  244. package/merged-commands/documentation-generation-doc-generate.md +48 -0
  245. package/merged-commands/documentation-templates.md +194 -0
  246. package/merged-commands/docx-official.md +197 -0
  247. package/merged-commands/docx.md +197 -0
  248. package/merged-commands/domain-name-brainstormer.md +212 -0
  249. package/merged-commands/dotnet-architect.md +197 -0
  250. package/merged-commands/dotnet-backend-patterns.md +37 -0
  251. package/merged-commands/dotnet-core-expert.md +96 -0
  252. package/merged-commands/dx-optimizer.md +83 -0
  253. package/merged-commands/e2e-testing-patterns.md +41 -0
  254. package/merged-commands/elixir-pro.md +59 -0
  255. package/merged-commands/email-sequence.md +925 -0
  256. package/merged-commands/email-systems.md +54 -0
  257. package/merged-commands/embedded-systems.md +98 -0
  258. package/merged-commands/embedding-strategies.md +491 -0
  259. package/merged-commands/employment-contract-templates.md +39 -0
  260. package/merged-commands/environment-setup-guide.md +479 -0
  261. package/merged-commands/error-debugging-error-analysis.md +47 -0
  262. package/merged-commands/error-debugging-error-trace.md +43 -0
  263. package/merged-commands/error-debugging-multi-agent-review.md +216 -0
  264. package/merged-commands/error-detective.md +53 -0
  265. package/merged-commands/error-diagnostics-error-analysis.md +47 -0
  266. package/merged-commands/error-diagnostics-error-trace.md +48 -0
  267. package/merged-commands/error-diagnostics-smart-debug.md +197 -0
  268. package/merged-commands/error-handling-patterns.md +35 -0
  269. package/merged-commands/ethical-hacking-methodology.md +466 -0
  270. package/merged-commands/evaluation.md +238 -0
  271. package/merged-commands/event-sourcing-architect.md +58 -0
  272. package/merged-commands/event-store-design.md +449 -0
  273. package/merged-commands/exa-search.md +36 -0
  274. package/merged-commands/executing-plans.md +76 -0
  275. package/merged-commands/expo-app-design.md +22 -0
  276. package/merged-commands/expo-deployment.md +72 -0
  277. package/merged-commands/fal-audio.md +22 -0
  278. package/merged-commands/fal-generate.md +22 -0
  279. package/merged-commands/fal-image-edit.md +22 -0
  280. package/merged-commands/fal-platform.md +22 -0
  281. package/merged-commands/fal-upscale.md +22 -0
  282. package/merged-commands/fal-workflow.md +22 -0
  283. package/merged-commands/fastapi-expert.md +93 -0
  284. package/merged-commands/fastapi-pro.md +192 -0
  285. package/merged-commands/fastapi-router.md +52 -0
  286. package/merged-commands/fastapi-templates.md +32 -0
  287. package/merged-commands/feature-forge.md +90 -0
  288. package/merged-commands/ffuf-claude-skill.md +22 -0
  289. package/merged-commands/file-organizer.md +250 -0
  290. package/merged-commands/file-path-traversal.md +486 -0
  291. package/merged-commands/file-uploads.md +22 -0
  292. package/merged-commands/find-bugs.md +86 -0
  293. package/merged-commands/fine-tuning-expert.md +98 -0
  294. package/merged-commands/finishing-a-development-branch.md +200 -0
  295. package/merged-commands/firebase.md +56 -0
  296. package/merged-commands/firecrawl-scraper.md +37 -0
  297. package/merged-commands/firmware-analyst.md +320 -0
  298. package/merged-commands/fix-review.md +53 -0
  299. package/merged-commands/fixing.md +72 -0
  300. package/merged-commands/flutter-expert.md +200 -0
  301. package/merged-commands/form-cro.md +441 -0
  302. package/merged-commands/foundry-iq-agent.md +15 -0
  303. package/merged-commands/foundry-iq-python.md +275 -0
  304. package/merged-commands/foundry-nextgen-frontend.md +555 -0
  305. package/merged-commands/foundry-sdk-python.md +290 -0
  306. package/merged-commands/fp-ts-errors.md +856 -0
  307. package/merged-commands/fp-ts-pragmatic.md +598 -0
  308. package/merged-commands/fp-ts-react.md +796 -0
  309. package/merged-commands/framework-migration-code-migrate.md +48 -0
  310. package/merged-commands/framework-migration-deps-upgrade.md +48 -0
  311. package/merged-commands/framework-migration-legacy-modernize.md +132 -0
  312. package/merged-commands/free-tool-strategy.md +576 -0
  313. package/merged-commands/frontend-design.md +272 -0
  314. package/merged-commands/frontend-dev-guidelines.md +359 -0
  315. package/merged-commands/frontend-developer.md +171 -0
  316. package/merged-commands/frontend-development.md +399 -0
  317. package/merged-commands/frontend-mobile-development-component-scaffold.md +403 -0
  318. package/merged-commands/frontend-mobile-security-xss-scan.md +322 -0
  319. package/merged-commands/frontend-security-coder.md +170 -0
  320. package/merged-commands/frontend-slides.md +770 -0
  321. package/merged-commands/full-stack-orchestration-full-stack-feature.md +135 -0
  322. package/merged-commands/fullstack-guardian.md +99 -0
  323. package/merged-commands/game-developer.md +94 -0
  324. package/merged-commands/game-development.md +167 -0
  325. package/merged-commands/gcp-cloud-run.md +288 -0
  326. package/merged-commands/gdpr-data-handling.md +33 -0
  327. package/merged-commands/geo-fundamentals.md +156 -0
  328. package/merged-commands/git-advanced-workflows.md +412 -0
  329. package/merged-commands/git-pr-workflows-git-workflow.md +140 -0
  330. package/merged-commands/git-pr-workflows-onboard.md +416 -0
  331. package/merged-commands/git-pr-workflows-pr-enhance.md +48 -0
  332. package/merged-commands/git-pushing.md +33 -0
  333. package/merged-commands/github-actions-templates.md +345 -0
  334. package/merged-commands/github-workflow-automation.md +846 -0
  335. package/merged-commands/gitlab-ci-patterns.md +283 -0
  336. package/merged-commands/gitops-workflow.md +303 -0
  337. package/merged-commands/go-concurrency-patterns.md +33 -0
  338. package/merged-commands/godot-gdscript-patterns.md +33 -0
  339. package/merged-commands/golang-pro.md +179 -0
  340. package/merged-commands/google-adk-python.md +243 -0
  341. package/merged-commands/grafana-dashboards.md +381 -0
  342. package/merged-commands/graphql-architect.md +182 -0
  343. package/merged-commands/graphql.md +68 -0
  344. package/merged-commands/haskell-pro.md +56 -0
  345. package/merged-commands/helm-chart-scaffolding.md +34 -0
  346. package/merged-commands/hr-pro.md +126 -0
  347. package/merged-commands/html-injection-testing.md +498 -0
  348. package/merged-commands/hubspot-integration.md +42 -0
  349. package/merged-commands/hugging-face-cli.md +198 -0
  350. package/merged-commands/hugging-face-jobs.md +1038 -0
  351. package/merged-commands/hybrid-cloud-architect.md +168 -0
  352. package/merged-commands/hybrid-cloud-networking.md +238 -0
  353. package/merged-commands/hybrid-search-implementation.md +32 -0
  354. package/merged-commands/i18n-localization.md +154 -0
  355. package/merged-commands/idor-testing.md +442 -0
  356. package/merged-commands/image-enhancer.md +99 -0
  357. package/merged-commands/imagen.md +77 -0
  358. package/merged-commands/incident-responder.md +213 -0
  359. package/merged-commands/incident-response-incident-response.md +168 -0
  360. package/merged-commands/incident-response-smart-fix.md +29 -0
  361. package/merged-commands/incident-runbook-templates.md +395 -0
  362. package/merged-commands/infinite-gratitude.md +26 -0
  363. package/merged-commands/inngest.md +55 -0
  364. package/merged-commands/interactive-portfolio.md +223 -0
  365. package/merged-commands/internal-comms-anthropic.md +32 -0
  366. package/merged-commands/internal-comms-community.md +32 -0
  367. package/merged-commands/internal-comms.md +32 -0
  368. package/merged-commands/invoice-organizer.md +446 -0
  369. package/merged-commands/ios-developer.md +219 -0
  370. package/merged-commands/issue-creator.md +137 -0
  371. package/merged-commands/istio-traffic-management.md +337 -0
  372. package/merged-commands/iterate-pr.md +150 -0
  373. package/merged-commands/java-architect.md +95 -0
  374. package/merged-commands/java-pro.md +177 -0
  375. package/merged-commands/javascript-mastery.md +645 -0
  376. package/merged-commands/javascript-pro.md +57 -0
  377. package/merged-commands/javascript-testing-patterns.md +35 -0
  378. package/merged-commands/javascript-typescript-typescript-scaffold.md +361 -0
  379. package/merged-commands/javascript-typescript.md +142 -0
  380. package/merged-commands/jira-issues.md +181 -0
  381. package/merged-commands/job-application.md +90 -0
  382. package/merged-commands/julia-pro.md +209 -0
  383. package/merged-commands/k8s-manifest-generator.md +35 -0
  384. package/merged-commands/k8s-security-policies.md +346 -0
  385. package/merged-commands/kaizen.md +730 -0
  386. package/merged-commands/kotlin-specialist.md +94 -0
  387. package/merged-commands/kpi-dashboard-design.md +440 -0
  388. package/merged-commands/kubernetes-architect.md +170 -0
  389. package/merged-commands/kubernetes-specialist.md +117 -0
  390. package/merged-commands/langchain-architecture.md +350 -0
  391. package/merged-commands/langfuse.md +238 -0
  392. package/merged-commands/langgraph.md +287 -0
  393. package/merged-commands/laravel-specialist.md +101 -0
  394. package/merged-commands/last30days.md +421 -0
  395. package/merged-commands/launch-strategy.md +344 -0
  396. package/merged-commands/lead-research-assistant.md +199 -0
  397. package/merged-commands/learn.md +476 -0
  398. package/merged-commands/legacy-modernizer.md +53 -0
  399. package/merged-commands/legal-advisor.md +70 -0
  400. package/merged-commands/linear-claude-skill.md +543 -0
  401. package/merged-commands/linkerd-patterns.md +321 -0
  402. package/merged-commands/lint-and-validate.md +45 -0
  403. package/merged-commands/linux-privilege-escalation.md +504 -0
  404. package/merged-commands/linux-shell-scripting.md +504 -0
  405. package/merged-commands/llm-app-patterns.md +760 -0
  406. package/merged-commands/llm-application-dev-ai-assistant.md +35 -0
  407. package/merged-commands/llm-application-dev-langchain-agent.md +246 -0
  408. package/merged-commands/llm-application-dev-prompt-optimize.md +37 -0
  409. package/merged-commands/llm-application-dev.md +216 -0
  410. package/merged-commands/llm-evaluation.md +483 -0
  411. package/merged-commands/loki-mode.md +721 -0
  412. package/merged-commands/machine-learning-ops-ml-pipeline.md +314 -0
  413. package/merged-commands/makepad-skills.md +22 -0
  414. package/merged-commands/malware-analyst.md +247 -0
  415. package/merged-commands/markdown-novel-viewer.md +281 -0
  416. package/merged-commands/market-sizing-analysis.md +425 -0
  417. package/merged-commands/marketing-ideas.md +221 -0
  418. package/merged-commands/marketing-psychology.md +255 -0
  419. package/merged-commands/mcp-builder.md +236 -0
  420. package/merged-commands/mcp-developer.md +94 -0
  421. package/merged-commands/mcp-management.md +209 -0
  422. package/merged-commands/media-processing.md +358 -0
  423. package/merged-commands/meeting-insights-analyzer.md +327 -0
  424. package/merged-commands/memory-forensics.md +491 -0
  425. package/merged-commands/memory-safety-patterns.md +33 -0
  426. package/merged-commands/memory-systems.md +228 -0
  427. package/merged-commands/mermaid-expert.md +59 -0
  428. package/merged-commands/mermaidjs-v11.md +115 -0
  429. package/merged-commands/metasploit-framework.md +478 -0
  430. package/merged-commands/micro-saas-launcher.md +212 -0
  431. package/merged-commands/microservices-architect.md +102 -0
  432. package/merged-commands/microservices-patterns.md +35 -0
  433. package/merged-commands/minecraft-bukkit-pro.md +126 -0
  434. package/merged-commands/ml-engineer.md +168 -0
  435. package/merged-commands/ml-pipeline-workflow.md +257 -0
  436. package/merged-commands/ml-pipeline.md +111 -0
  437. package/merged-commands/mlops-engineer.md +219 -0
  438. package/merged-commands/mobile-design.md +284 -0
  439. package/merged-commands/mobile-developer.md +205 -0
  440. package/merged-commands/mobile-development.md +212 -0
  441. package/merged-commands/mobile-security-coder.md +184 -0
  442. package/merged-commands/modern-javascript-patterns.md +35 -0
  443. package/merged-commands/monitoring-expert.md +92 -0
  444. package/merged-commands/monorepo-architect.md +61 -0
  445. package/merged-commands/monorepo-management.md +35 -0
  446. package/merged-commands/moodle-external-api-development.md +597 -0
  447. package/merged-commands/mtls-configuration.md +359 -0
  448. package/merged-commands/multi-agent-brainstorming.md +256 -0
  449. package/merged-commands/multi-agent-patterns.md +262 -0
  450. package/merged-commands/multi-cloud-architecture.md +189 -0
  451. package/merged-commands/multi-platform-apps-multi-platform.md +203 -0
  452. package/merged-commands/n8n-code-python.md +750 -0
  453. package/merged-commands/n8n-mcp-tools-expert.md +654 -0
  454. package/merged-commands/n8n-node-configuration.md +796 -0
  455. package/merged-commands/nanobanana-ppt-skills.md +22 -0
  456. package/merged-commands/neon-postgres.md +56 -0
  457. package/merged-commands/nestjs-expert.md +552 -0
  458. package/merged-commands/network-101.md +342 -0
  459. package/merged-commands/network-engineer.md +169 -0
  460. package/merged-commands/nextjs-app-router-patterns.md +33 -0
  461. package/merged-commands/nextjs-best-practices.md +203 -0
  462. package/merged-commands/nextjs-developer.md +97 -0
  463. package/merged-commands/nextjs-supabase-auth.md +56 -0
  464. package/merged-commands/nft-standards.md +395 -0
  465. package/merged-commands/nodejs-backend-patterns.md +35 -0
  466. package/merged-commands/nodejs-best-practices.md +333 -0
  467. package/merged-commands/nosql-expert.md +111 -0
  468. package/merged-commands/notebooklm-skill.md +269 -0
  469. package/merged-commands/notebooklm.md +269 -0
  470. package/merged-commands/notion-template-business.md +216 -0
  471. package/merged-commands/nx-workspace-patterns.md +464 -0
  472. package/merged-commands/observability-engineer.md +237 -0
  473. package/merged-commands/observability-monitoring-monitor-setup.md +48 -0
  474. package/merged-commands/observability-monitoring-slo-implement.md +43 -0
  475. package/merged-commands/observe-whatsapp.md +109 -0
  476. package/merged-commands/obsidian-clipper-template-creator.md +64 -0
  477. package/merged-commands/on-call-handoff-patterns.md +453 -0
  478. package/merged-commands/onboarding-cro.md +433 -0
  479. package/merged-commands/openapi-spec-generation.md +33 -0
  480. package/merged-commands/page-cro.md +343 -0
  481. package/merged-commands/paid-ads.md +551 -0
  482. package/merged-commands/pandas-pro.md +96 -0
  483. package/merged-commands/parallel-agents.md +175 -0
  484. package/merged-commands/payment-integration.md +77 -0
  485. package/merged-commands/paypal-integration.md +479 -0
  486. package/merged-commands/paywall-upgrade-cro.md +570 -0
  487. package/merged-commands/pci-compliance.md +478 -0
  488. package/merged-commands/pdf-official.md +294 -0
  489. package/merged-commands/pdf.md +294 -0
  490. package/merged-commands/pentest-checklist.md +334 -0
  491. package/merged-commands/pentest-commands.md +438 -0
  492. package/merged-commands/performance-engineer.md +180 -0
  493. package/merged-commands/performance-profiling.md +143 -0
  494. package/merged-commands/performance-testing-review-ai-review.md +450 -0
  495. package/merged-commands/performance-testing-review-multi-agent-review.md +216 -0
  496. package/merged-commands/personal-tool-builder.md +289 -0
  497. package/merged-commands/php-pro.md +63 -0
  498. package/merged-commands/plaid-fintech.md +50 -0
  499. package/merged-commands/plan-writing.md +152 -0
  500. package/merged-commands/planning-with-files.md +211 -0
  501. package/merged-commands/planning.md +95 -0
  502. package/merged-commands/plans-kanban.md +166 -0
  503. package/merged-commands/playwright-expert.md +87 -0
  504. package/merged-commands/playwright-skill.md +453 -0
  505. package/merged-commands/podcast-generation.md +121 -0
  506. package/merged-commands/popup-cro.md +346 -0
  507. package/merged-commands/posix-shell-pro.md +304 -0
  508. package/merged-commands/postgres-best-practices.md +57 -0
  509. package/merged-commands/postgres-pro.md +98 -0
  510. package/merged-commands/postgresql.md +230 -0
  511. package/merged-commands/postmortem-writing.md +386 -0
  512. package/merged-commands/powershell-windows.md +167 -0
  513. package/merged-commands/pptx-official.md +484 -0
  514. package/merged-commands/pptx.md +484 -0
  515. package/merged-commands/pricing-strategy.md +356 -0
  516. package/merged-commands/prisma-expert.md +355 -0
  517. package/merged-commands/privilege-escalation-methods.md +333 -0
  518. package/merged-commands/problem-solving.md +96 -0
  519. package/merged-commands/product-manager-toolkit.md +351 -0
  520. package/merged-commands/product-strategist.md +26 -0
  521. package/merged-commands/production-code-audit.md +540 -0
  522. package/merged-commands/programmatic-seo.md +351 -0
  523. package/merged-commands/projection-patterns.md +33 -0
  524. package/merged-commands/prometheus-configuration.md +404 -0
  525. package/merged-commands/prompt-caching.md +61 -0
  526. package/merged-commands/prompt-engineer.md +272 -0
  527. package/merged-commands/prompt-engineering-patterns.md +213 -0
  528. package/merged-commands/prompt-engineering.md +171 -0
  529. package/merged-commands/prompt-library.md +322 -0
  530. package/merged-commands/protocol-reverse-engineering.md +29 -0
  531. package/merged-commands/pydantic-models.md +58 -0
  532. package/merged-commands/pypict-skill.md +22 -0
  533. package/merged-commands/python-development-python-scaffold.md +331 -0
  534. package/merged-commands/python-development.md +139 -0
  535. package/merged-commands/python-packaging.md +36 -0
  536. package/merged-commands/python-patterns.md +441 -0
  537. package/merged-commands/python-performance-optimization.md +36 -0
  538. package/merged-commands/python-pro.md +158 -0
  539. package/merged-commands/python-testing-patterns.md +37 -0
  540. package/merged-commands/qa-regression.md +337 -0
  541. package/merged-commands/quant-analyst.md +53 -0
  542. package/merged-commands/radix-ui-design-system.md +847 -0
  543. package/merged-commands/raffle-winner-picker.md +159 -0
  544. package/merged-commands/rag-architect.md +100 -0
  545. package/merged-commands/rag-engineer.md +90 -0
  546. package/merged-commands/rag-implementation.md +421 -0
  547. package/merged-commands/rails-expert.md +97 -0
  548. package/merged-commands/react-best-practices.md +121 -0
  549. package/merged-commands/react-expert.md +98 -0
  550. package/merged-commands/react-flow-node.md +66 -0
  551. package/merged-commands/react-modernization.md +34 -0
  552. package/merged-commands/react-native-architecture.md +33 -0
  553. package/merged-commands/react-native-expert.md +88 -0
  554. package/merged-commands/react-patterns.md +198 -0
  555. package/merged-commands/react-state-management.md +441 -0
  556. package/merged-commands/react-ui-patterns.md +289 -0
  557. package/merged-commands/readme.md +775 -0
  558. package/merged-commands/receiving-code-review.md +213 -0
  559. package/merged-commands/red-team-tactics.md +199 -0
  560. package/merged-commands/red-team-tools.md +310 -0
  561. package/merged-commands/reference-builder.md +188 -0
  562. package/merged-commands/referral-program.md +602 -0
  563. package/merged-commands/remotion-best-practices.md +45 -0
  564. package/merged-commands/repomix.md +275 -0
  565. package/merged-commands/requesting-code-review.md +105 -0
  566. package/merged-commands/research-engineer.md +135 -0
  567. package/merged-commands/research.md +191 -0
  568. package/merged-commands/reverse-engineer.md +173 -0
  569. package/merged-commands/risk-manager.md +61 -0
  570. package/merged-commands/risk-metrics-calculation.md +33 -0
  571. package/merged-commands/ruby-pro.md +56 -0
  572. package/merged-commands/rust-async-patterns.md +33 -0
  573. package/merged-commands/rust-engineer.md +96 -0
  574. package/merged-commands/rust-pro.md +178 -0
  575. package/merged-commands/saga-orchestration.md +496 -0
  576. package/merged-commands/sales-automator.md +55 -0
  577. package/merged-commands/salesforce-developer.md +105 -0
  578. package/merged-commands/salesforce-development.md +51 -0
  579. package/merged-commands/sast-configuration.md +212 -0
  580. package/merged-commands/scala-pro.md +82 -0
  581. package/merged-commands/scanning-tools.md +589 -0
  582. package/merged-commands/schema-markup.md +360 -0
  583. package/merged-commands/screen-reader-testing.md +33 -0
  584. package/merged-commands/screenshots.md +401 -0
  585. package/merged-commands/scroll-experience.md +263 -0
  586. package/merged-commands/search-specialist.md +80 -0
  587. package/merged-commands/secrets-management.md +364 -0
  588. package/merged-commands/secure-code-guardian.md +93 -0
  589. package/merged-commands/security-auditor.md +169 -0
  590. package/merged-commands/security-bluebook-builder.md +22 -0
  591. package/merged-commands/security-compliance-compliance-check.md +55 -0
  592. package/merged-commands/security-requirement-extraction.md +33 -0
  593. package/merged-commands/security-reviewer.md +94 -0
  594. package/merged-commands/security-scanning-security-dependencies.md +43 -0
  595. package/merged-commands/security-scanning-security-hardening.md +147 -0
  596. package/merged-commands/security-scanning-security-sast.md +495 -0
  597. package/merged-commands/segment-cdp.md +50 -0
  598. package/merged-commands/senior-architect.md +209 -0
  599. package/merged-commands/senior-backend.md +209 -0
  600. package/merged-commands/senior-computer-vision.md +226 -0
  601. package/merged-commands/senior-data-engineer.md +226 -0
  602. package/merged-commands/senior-data-scientist.md +226 -0
  603. package/merged-commands/senior-devops.md +209 -0
  604. package/merged-commands/senior-frontend.md +209 -0
  605. package/merged-commands/senior-fullstack.md +209 -0
  606. package/merged-commands/senior-ml-engineer.md +226 -0
  607. package/merged-commands/senior-prompt-engineer.md +226 -0
  608. package/merged-commands/senior-qa.md +209 -0
  609. package/merged-commands/senior-secops.md +209 -0
  610. package/merged-commands/senior-security.md +209 -0
  611. package/merged-commands/seo-audit.md +487 -0
  612. package/merged-commands/seo-authority-builder.md +136 -0
  613. package/merged-commands/seo-cannibalization-detector.md +123 -0
  614. package/merged-commands/seo-content-auditor.md +83 -0
  615. package/merged-commands/seo-content-planner.md +108 -0
  616. package/merged-commands/seo-content-refresher.md +118 -0
  617. package/merged-commands/seo-content-writer.md +96 -0
  618. package/merged-commands/seo-fundamentals.md +173 -0
  619. package/merged-commands/seo-keyword-strategist.md +95 -0
  620. package/merged-commands/seo-meta-optimizer.md +92 -0
  621. package/merged-commands/seo-snippet-hunter.md +114 -0
  622. package/merged-commands/seo-structure-architect.md +108 -0
  623. package/merged-commands/sequential-thinking.md +94 -0
  624. package/merged-commands/server-management.md +161 -0
  625. package/merged-commands/service-mesh-expert.md +58 -0
  626. package/merged-commands/service-mesh-observability.md +395 -0
  627. package/merged-commands/sharp-edges.md +70 -0
  628. package/merged-commands/shellcheck-configuration.md +466 -0
  629. package/merged-commands/shodan-reconnaissance.md +503 -0
  630. package/merged-commands/shopify-apps.md +42 -0
  631. package/merged-commands/shopify-development.md +366 -0
  632. package/merged-commands/shopify-expert.md +102 -0
  633. package/merged-commands/signup-flow-cro.md +355 -0
  634. package/merged-commands/similarity-search-patterns.md +33 -0
  635. package/merged-commands/skill-creator.md +356 -0
  636. package/merged-commands/skill-developer.md +426 -0
  637. package/merged-commands/skill-rails-upgrade.md +408 -0
  638. package/merged-commands/skill-seekers.md +22 -0
  639. package/merged-commands/skill-share.md +80 -0
  640. package/merged-commands/slack-bot-builder.md +264 -0
  641. package/merged-commands/slack-gif-creator.md +254 -0
  642. package/merged-commands/slo-implementation.md +341 -0
  643. package/merged-commands/smtp-penetration-testing.md +500 -0
  644. package/merged-commands/social-content.md +807 -0
  645. package/merged-commands/software-architecture.md +75 -0
  646. package/merged-commands/solidity-security.md +34 -0
  647. package/merged-commands/spark-engineer.md +100 -0
  648. package/merged-commands/spark-optimization.md +427 -0
  649. package/merged-commands/spec-miner.md +88 -0
  650. package/merged-commands/spring-boot-engineer.md +104 -0
  651. package/merged-commands/sql-injection-testing.md +448 -0
  652. package/merged-commands/sql-optimization-patterns.md +35 -0
  653. package/merged-commands/sql-pro.md +173 -0
  654. package/merged-commands/sqlmap-database-pentesting.md +400 -0
  655. package/merged-commands/sre-engineer.md +98 -0
  656. package/merged-commands/ssh-penetration-testing.md +488 -0
  657. package/merged-commands/startup-analyst.md +328 -0
  658. package/merged-commands/startup-business-analyst-business-case.md +487 -0
  659. package/merged-commands/startup-business-analyst-financial-projections.md +353 -0
  660. package/merged-commands/startup-business-analyst-market-opportunity.md +240 -0
  661. package/merged-commands/startup-financial-modeling.md +467 -0
  662. package/merged-commands/startup-metrics-framework.md +34 -0
  663. package/merged-commands/stitch-ui-design.md +378 -0
  664. package/merged-commands/stride-analysis-patterns.md +33 -0
  665. package/merged-commands/stripe-integration.md +454 -0
  666. package/merged-commands/subagent-driven-development.md +240 -0
  667. package/merged-commands/superpowers-lab.md +22 -0
  668. package/merged-commands/swift-expert.md +94 -0
  669. package/merged-commands/swiftui-expert-skill.md +275 -0
  670. package/merged-commands/systematic-debugging.md +296 -0
  671. package/merged-commands/systems-programming-rust-project.md +440 -0
  672. package/merged-commands/tailwind-design-system.md +33 -0
  673. package/merged-commands/tailwind-patterns.md +269 -0
  674. package/merged-commands/tavily-web.md +36 -0
  675. package/merged-commands/tdd-orchestrator.md +205 -0
  676. package/merged-commands/tdd-workflow.md +149 -0
  677. package/merged-commands/tdd-workflows-tdd-cycle.md +221 -0
  678. package/merged-commands/tdd-workflows-tdd-green.md +73 -0
  679. package/merged-commands/tdd-workflows-tdd-red.md +164 -0
  680. package/merged-commands/tdd-workflows-tdd-refactor.md +187 -0
  681. package/merged-commands/team-collaboration-issue.md +37 -0
  682. package/merged-commands/team-collaboration-standup-notes.md +44 -0
  683. package/merged-commands/team-composition-analysis.md +413 -0
  684. package/merged-commands/telegram-bot-builder.md +254 -0
  685. package/merged-commands/telegram-mini-app.md +279 -0
  686. package/merged-commands/template-skill.md +6 -0
  687. package/merged-commands/temporal-python-pro.md +370 -0
  688. package/merged-commands/temporal-python-testing.md +170 -0
  689. package/merged-commands/terraform-engineer.md +97 -0
  690. package/merged-commands/terraform-module-library.md +261 -0
  691. package/merged-commands/terraform-skill.md +517 -0
  692. package/merged-commands/terraform-specialist.md +166 -0
  693. package/merged-commands/test-automator.md +224 -0
  694. package/merged-commands/test-driven-development.md +371 -0
  695. package/merged-commands/test-fixing.md +119 -0
  696. package/merged-commands/test-master.md +104 -0
  697. package/merged-commands/testing-patterns.md +259 -0
  698. package/merged-commands/theme-factory.md +59 -0
  699. package/merged-commands/threat-mitigation-mapping.md +33 -0
  700. package/merged-commands/threat-modeling-expert.md +60 -0
  701. package/merged-commands/threejs-skills.md +22 -0
  702. package/merged-commands/threejs.md +89 -0
  703. package/merged-commands/tool-design.md +318 -0
  704. package/merged-commands/top-web-vulnerabilities.md +543 -0
  705. package/merged-commands/track-management.md +38 -0
  706. package/merged-commands/trigger-dev.md +67 -0
  707. package/merged-commands/turborepo-caching.md +419 -0
  708. package/merged-commands/tutorial-engineer.md +139 -0
  709. package/merged-commands/twilio-communications.md +295 -0
  710. package/merged-commands/typescript-advanced-types.md +35 -0
  711. package/merged-commands/typescript-expert.md +429 -0
  712. package/merged-commands/typescript-pro.md +55 -0
  713. package/merged-commands/ui-design-system.md +32 -0
  714. package/merged-commands/ui-skills.md +22 -0
  715. package/merged-commands/ui-styling.md +321 -0
  716. package/merged-commands/ui-ux-designer.md +209 -0
  717. package/merged-commands/ui-ux-pro-max.md +351 -0
  718. package/merged-commands/ui-visual-validator.md +214 -0
  719. package/merged-commands/unit-testing-test-generate.md +319 -0
  720. package/merged-commands/unity-developer.md +230 -0
  721. package/merged-commands/unity-ecs-patterns.md +33 -0
  722. package/merged-commands/unreal-engine-cpp-pro.md +114 -0
  723. package/merged-commands/upgrading-expo.md +118 -0
  724. package/merged-commands/upstash-qstash.md +68 -0
  725. package/merged-commands/using-git-worktrees.md +217 -0
  726. package/merged-commands/using-neon.md +84 -0
  727. package/merged-commands/using-superpowers.md +87 -0
  728. package/merged-commands/uv-package-manager.md +37 -0
  729. package/merged-commands/ux-researcher-designer.md +30 -0
  730. package/merged-commands/varlock-claude-skill.md +22 -0
  731. package/merged-commands/vector-database-engineer.md +60 -0
  732. package/merged-commands/vector-index-tuning.md +42 -0
  733. package/merged-commands/vercel-deploy-claimable.md +120 -0
  734. package/merged-commands/vercel-deploy.md +22 -0
  735. package/merged-commands/vercel-deployment.md +79 -0
  736. package/merged-commands/verification-before-completion.md +139 -0
  737. package/merged-commands/vexor.md +22 -0
  738. package/merged-commands/video-downloader.md +106 -0
  739. package/merged-commands/viral-generator-builder.md +199 -0
  740. package/merged-commands/voice-agents.md +68 -0
  741. package/merged-commands/voice-ai-development.md +302 -0
  742. package/merged-commands/voice-ai-engine-development.md +721 -0
  743. package/merged-commands/vue-expert-js.md +91 -0
  744. package/merged-commands/vue-expert.md +374 -0
  745. package/merged-commands/vulnerability-scanner.md +276 -0
  746. package/merged-commands/wcag-audit-patterns.md +41 -0
  747. package/merged-commands/web-artifacts-builder.md +74 -0
  748. package/merged-commands/web-design-guidelines.md +36 -0
  749. package/merged-commands/web-frameworks.md +324 -0
  750. package/merged-commands/web-performance-optimization.md +646 -0
  751. package/merged-commands/web3-testing.md +427 -0
  752. package/merged-commands/webapp-testing.md +96 -0
  753. package/merged-commands/websocket-engineer.md +96 -0
  754. package/merged-commands/windows-privilege-escalation.md +496 -0
  755. package/merged-commands/wireshark-analysis.md +497 -0
  756. package/merged-commands/wordpress-penetration-testing.md +485 -0
  757. package/merged-commands/wordpress-pro.md +105 -0
  758. package/merged-commands/workflow-automation.md +68 -0
  759. package/merged-commands/workflow-orchestration-patterns.md +333 -0
  760. package/merged-commands/workflow-patterns.md +38 -0
  761. package/merged-commands/writing-plans.md +116 -0
  762. package/merged-commands/writing-skills.md +125 -0
  763. package/merged-commands/x-article-publisher-skill.md +22 -0
  764. package/merged-commands/xlsx-official.md +289 -0
  765. package/merged-commands/xlsx.md +289 -0
  766. package/merged-commands/xss-html-injection.md +499 -0
  767. package/merged-commands/youtube-transcript.md +415 -0
  768. package/merged-commands/zapier-make-patterns.md +67 -0
  769. package/merged-commands/zustand-store.md +68 -0
  770. package/package.json +1 -1
  771. package/scripts/generate-index.js +3 -1
  772. package/scripts/merge-commands.js +21 -0
  773. package/skills-index.json +2248 -463
@@ -0,0 +1,907 @@
1
+ ---
2
+ name: api-security-best-practices
3
+ description: "Implement secure API design patterns including authentication, authorization, input validation, rate limiting, and protection against common API vulnerabilities"
4
+ ---
5
+
6
+ # API Security Best Practices
7
+
8
+ ## Overview
9
+
10
+ Guide developers in building secure APIs by implementing authentication, authorization, input validation, rate limiting, and protection against common vulnerabilities. This skill covers security patterns for REST, GraphQL, and WebSocket APIs.
11
+
12
+ ## When to Use This Skill
13
+
14
+ - Use when designing new API endpoints
15
+ - Use when securing existing APIs
16
+ - Use when implementing authentication and authorization
17
+ - Use when protecting against API attacks (injection, DDoS, etc.)
18
+ - Use when conducting API security reviews
19
+ - Use when preparing for security audits
20
+ - Use when implementing rate limiting and throttling
21
+ - Use when handling sensitive data in APIs
22
+
23
+ ## How It Works
24
+
25
+ ### Step 1: Authentication & Authorization
26
+
27
+ I'll help you implement secure authentication:
28
+ - Choose authentication method (JWT, OAuth 2.0, API keys)
29
+ - Implement token-based authentication
30
+ - Set up role-based access control (RBAC)
31
+ - Secure session management
32
+ - Implement multi-factor authentication (MFA)
33
+
34
+ ### Step 2: Input Validation & Sanitization
35
+
36
+ Protect against injection attacks:
37
+ - Validate all input data
38
+ - Sanitize user inputs
39
+ - Use parameterized queries
40
+ - Implement request schema validation
41
+ - Prevent SQL injection, XSS, and command injection
42
+
43
+ ### Step 3: Rate Limiting & Throttling
44
+
45
+ Prevent abuse and DDoS attacks:
46
+ - Implement rate limiting per user/IP
47
+ - Set up API throttling
48
+ - Configure request quotas
49
+ - Handle rate limit errors gracefully
50
+ - Monitor for suspicious activity
51
+
52
+ ### Step 4: Data Protection
53
+
54
+ Secure sensitive data:
55
+ - Encrypt data in transit (HTTPS/TLS)
56
+ - Encrypt sensitive data at rest
57
+ - Implement proper error handling (no data leaks)
58
+ - Sanitize error messages
59
+ - Use secure headers
60
+
61
+ ### Step 5: API Security Testing
62
+
63
+ Verify security implementation:
64
+ - Test authentication and authorization
65
+ - Perform penetration testing
66
+ - Check for common vulnerabilities (OWASP API Top 10)
67
+ - Validate input handling
68
+ - Test rate limiting
69
+
70
+
71
+ ## Examples
72
+
73
+ ### Example 1: Implementing JWT Authentication
74
+
75
+ ```markdown
76
+ ## Secure JWT Authentication Implementation
77
+
78
+ ### Authentication Flow
79
+
80
+ 1. User logs in with credentials
81
+ 2. Server validates credentials
82
+ 3. Server generates JWT token
83
+ 4. Client stores token securely
84
+ 5. Client sends token with each request
85
+ 6. Server validates token
86
+
87
+ ### Implementation
88
+
89
+ #### 1. Generate Secure JWT Tokens
90
+
91
+ \`\`\`javascript
92
+ // auth.js
93
+ const jwt = require('jsonwebtoken');
94
+ const bcrypt = require('bcrypt');
95
+
96
+ // Login endpoint
97
+ app.post('/api/auth/login', async (req, res) => {
98
+ try {
99
+ const { email, password } = req.body;
100
+
101
+ // Validate input
102
+ if (!email || !password) {
103
+ return res.status(400).json({
104
+ error: 'Email and password are required'
105
+ });
106
+ }
107
+
108
+ // Find user
109
+ const user = await db.user.findUnique({
110
+ where: { email }
111
+ });
112
+
113
+ if (!user) {
114
+ // Don't reveal if user exists
115
+ return res.status(401).json({
116
+ error: 'Invalid credentials'
117
+ });
118
+ }
119
+
120
+ // Verify password
121
+ const validPassword = await bcrypt.compare(
122
+ password,
123
+ user.passwordHash
124
+ );
125
+
126
+ if (!validPassword) {
127
+ return res.status(401).json({
128
+ error: 'Invalid credentials'
129
+ });
130
+ }
131
+
132
+ // Generate JWT token
133
+ const token = jwt.sign(
134
+ {
135
+ userId: user.id,
136
+ email: user.email,
137
+ role: user.role
138
+ },
139
+ process.env.JWT_SECRET,
140
+ {
141
+ expiresIn: '1h',
142
+ issuer: 'your-app',
143
+ audience: 'your-app-users'
144
+ }
145
+ );
146
+
147
+ // Generate refresh token
148
+ const refreshToken = jwt.sign(
149
+ { userId: user.id },
150
+ process.env.JWT_REFRESH_SECRET,
151
+ { expiresIn: '7d' }
152
+ );
153
+
154
+ // Store refresh token in database
155
+ await db.refreshToken.create({
156
+ data: {
157
+ token: refreshToken,
158
+ userId: user.id,
159
+ expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000)
160
+ }
161
+ });
162
+
163
+ res.json({
164
+ token,
165
+ refreshToken,
166
+ expiresIn: 3600
167
+ });
168
+
169
+ } catch (error) {
170
+ console.error('Login error:', error);
171
+ res.status(500).json({
172
+ error: 'An error occurred during login'
173
+ });
174
+ }
175
+ });
176
+ \`\`\`
177
+
178
+ #### 2. Verify JWT Tokens (Middleware)
179
+
180
+ \`\`\`javascript
181
+ // middleware/auth.js
182
+ const jwt = require('jsonwebtoken');
183
+
184
+ function authenticateToken(req, res, next) {
185
+ // Get token from header
186
+ const authHeader = req.headers['authorization'];
187
+ const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
188
+
189
+ if (!token) {
190
+ return res.status(401).json({
191
+ error: 'Access token required'
192
+ });
193
+ }
194
+
195
+ // Verify token
196
+ jwt.verify(
197
+ token,
198
+ process.env.JWT_SECRET,
199
+ {
200
+ issuer: 'your-app',
201
+ audience: 'your-app-users'
202
+ },
203
+ (err, user) => {
204
+ if (err) {
205
+ if (err.name === 'TokenExpiredError') {
206
+ return res.status(401).json({
207
+ error: 'Token expired'
208
+ });
209
+ }
210
+ return res.status(403).json({
211
+ error: 'Invalid token'
212
+ });
213
+ }
214
+
215
+ // Attach user to request
216
+ req.user = user;
217
+ next();
218
+ }
219
+ );
220
+ }
221
+
222
+ module.exports = { authenticateToken };
223
+ \`\`\`
224
+
225
+ #### 3. Protect Routes
226
+
227
+ \`\`\`javascript
228
+ const { authenticateToken } = require('./middleware/auth');
229
+
230
+ // Protected route
231
+ app.get('/api/user/profile', authenticateToken, async (req, res) => {
232
+ try {
233
+ const user = await db.user.findUnique({
234
+ where: { id: req.user.userId },
235
+ select: {
236
+ id: true,
237
+ email: true,
238
+ name: true,
239
+ // Don't return passwordHash
240
+ }
241
+ });
242
+
243
+ res.json(user);
244
+ } catch (error) {
245
+ res.status(500).json({ error: 'Server error' });
246
+ }
247
+ });
248
+ \`\`\`
249
+
250
+ #### 4. Implement Token Refresh
251
+
252
+ \`\`\`javascript
253
+ app.post('/api/auth/refresh', async (req, res) => {
254
+ const { refreshToken } = req.body;
255
+
256
+ if (!refreshToken) {
257
+ return res.status(401).json({
258
+ error: 'Refresh token required'
259
+ });
260
+ }
261
+
262
+ try {
263
+ // Verify refresh token
264
+ const decoded = jwt.verify(
265
+ refreshToken,
266
+ process.env.JWT_REFRESH_SECRET
267
+ );
268
+
269
+ // Check if refresh token exists in database
270
+ const storedToken = await db.refreshToken.findFirst({
271
+ where: {
272
+ token: refreshToken,
273
+ userId: decoded.userId,
274
+ expiresAt: { gt: new Date() }
275
+ }
276
+ });
277
+
278
+ if (!storedToken) {
279
+ return res.status(403).json({
280
+ error: 'Invalid refresh token'
281
+ });
282
+ }
283
+
284
+ // Generate new access token
285
+ const user = await db.user.findUnique({
286
+ where: { id: decoded.userId }
287
+ });
288
+
289
+ const newToken = jwt.sign(
290
+ {
291
+ userId: user.id,
292
+ email: user.email,
293
+ role: user.role
294
+ },
295
+ process.env.JWT_SECRET,
296
+ { expiresIn: '1h' }
297
+ );
298
+
299
+ res.json({
300
+ token: newToken,
301
+ expiresIn: 3600
302
+ });
303
+
304
+ } catch (error) {
305
+ res.status(403).json({
306
+ error: 'Invalid refresh token'
307
+ });
308
+ }
309
+ });
310
+ \`\`\`
311
+
312
+ ### Security Best Practices
313
+
314
+ - ✅ Use strong JWT secrets (256-bit minimum)
315
+ - ✅ Set short expiration times (1 hour for access tokens)
316
+ - ✅ Implement refresh tokens for long-lived sessions
317
+ - ✅ Store refresh tokens in database (can be revoked)
318
+ - ✅ Use HTTPS only
319
+ - ✅ Don't store sensitive data in JWT payload
320
+ - ✅ Validate token issuer and audience
321
+ - ✅ Implement token blacklisting for logout
322
+ ```
323
+
324
+
325
+ ### Example 2: Input Validation and SQL Injection Prevention
326
+
327
+ ```markdown
328
+ ## Preventing SQL Injection and Input Validation
329
+
330
+ ### The Problem
331
+
332
+ **❌ Vulnerable Code:**
333
+ \`\`\`javascript
334
+ // NEVER DO THIS - SQL Injection vulnerability
335
+ app.get('/api/users/:id', async (req, res) => {
336
+ const userId = req.params.id;
337
+
338
+ // Dangerous: User input directly in query
339
+ const query = \`SELECT * FROM users WHERE id = '\${userId}'\`;
340
+ const user = await db.query(query);
341
+
342
+ res.json(user);
343
+ });
344
+
345
+ // Attack example:
346
+ // GET /api/users/1' OR '1'='1
347
+ // Returns all users!
348
+ \`\`\`
349
+
350
+ ### The Solution
351
+
352
+ #### 1. Use Parameterized Queries
353
+
354
+ \`\`\`javascript
355
+ // ✅ Safe: Parameterized query
356
+ app.get('/api/users/:id', async (req, res) => {
357
+ const userId = req.params.id;
358
+
359
+ // Validate input first
360
+ if (!userId || !/^\d+$/.test(userId)) {
361
+ return res.status(400).json({
362
+ error: 'Invalid user ID'
363
+ });
364
+ }
365
+
366
+ // Use parameterized query
367
+ const user = await db.query(
368
+ 'SELECT id, email, name FROM users WHERE id = $1',
369
+ [userId]
370
+ );
371
+
372
+ if (!user) {
373
+ return res.status(404).json({
374
+ error: 'User not found'
375
+ });
376
+ }
377
+
378
+ res.json(user);
379
+ });
380
+ \`\`\`
381
+
382
+ #### 2. Use ORM with Proper Escaping
383
+
384
+ \`\`\`javascript
385
+ // ✅ Safe: Using Prisma ORM
386
+ app.get('/api/users/:id', async (req, res) => {
387
+ const userId = parseInt(req.params.id);
388
+
389
+ if (isNaN(userId)) {
390
+ return res.status(400).json({
391
+ error: 'Invalid user ID'
392
+ });
393
+ }
394
+
395
+ const user = await prisma.user.findUnique({
396
+ where: { id: userId },
397
+ select: {
398
+ id: true,
399
+ email: true,
400
+ name: true,
401
+ // Don't select sensitive fields
402
+ }
403
+ });
404
+
405
+ if (!user) {
406
+ return res.status(404).json({
407
+ error: 'User not found'
408
+ });
409
+ }
410
+
411
+ res.json(user);
412
+ });
413
+ \`\`\`
414
+
415
+ #### 3. Implement Request Validation with Zod
416
+
417
+ \`\`\`javascript
418
+ const { z } = require('zod');
419
+
420
+ // Define validation schema
421
+ const createUserSchema = z.object({
422
+ email: z.string().email('Invalid email format'),
423
+ password: z.string()
424
+ .min(8, 'Password must be at least 8 characters')
425
+ .regex(/[A-Z]/, 'Password must contain uppercase letter')
426
+ .regex(/[a-z]/, 'Password must contain lowercase letter')
427
+ .regex(/[0-9]/, 'Password must contain number'),
428
+ name: z.string()
429
+ .min(2, 'Name must be at least 2 characters')
430
+ .max(100, 'Name too long'),
431
+ age: z.number()
432
+ .int('Age must be an integer')
433
+ .min(18, 'Must be 18 or older')
434
+ .max(120, 'Invalid age')
435
+ .optional()
436
+ });
437
+
438
+ // Validation middleware
439
+ function validateRequest(schema) {
440
+ return (req, res, next) => {
441
+ try {
442
+ schema.parse(req.body);
443
+ next();
444
+ } catch (error) {
445
+ res.status(400).json({
446
+ error: 'Validation failed',
447
+ details: error.errors
448
+ });
449
+ }
450
+ };
451
+ }
452
+
453
+ // Use validation
454
+ app.post('/api/users',
455
+ validateRequest(createUserSchema),
456
+ async (req, res) => {
457
+ // Input is validated at this point
458
+ const { email, password, name, age } = req.body;
459
+
460
+ // Hash password
461
+ const passwordHash = await bcrypt.hash(password, 10);
462
+
463
+ // Create user
464
+ const user = await prisma.user.create({
465
+ data: {
466
+ email,
467
+ passwordHash,
468
+ name,
469
+ age
470
+ }
471
+ });
472
+
473
+ // Don't return password hash
474
+ const { passwordHash: _, ...userWithoutPassword } = user;
475
+ res.status(201).json(userWithoutPassword);
476
+ }
477
+ );
478
+ \`\`\`
479
+
480
+ #### 4. Sanitize Output to Prevent XSS
481
+
482
+ \`\`\`javascript
483
+ const DOMPurify = require('isomorphic-dompurify');
484
+
485
+ app.post('/api/comments', authenticateToken, async (req, res) => {
486
+ const { content } = req.body;
487
+
488
+ // Validate
489
+ if (!content || content.length > 1000) {
490
+ return res.status(400).json({
491
+ error: 'Invalid comment content'
492
+ });
493
+ }
494
+
495
+ // Sanitize HTML to prevent XSS
496
+ const sanitizedContent = DOMPurify.sanitize(content, {
497
+ ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a'],
498
+ ALLOWED_ATTR: ['href']
499
+ });
500
+
501
+ const comment = await prisma.comment.create({
502
+ data: {
503
+ content: sanitizedContent,
504
+ userId: req.user.userId
505
+ }
506
+ });
507
+
508
+ res.status(201).json(comment);
509
+ });
510
+ \`\`\`
511
+
512
+ ### Validation Checklist
513
+
514
+ - [ ] Validate all user inputs
515
+ - [ ] Use parameterized queries or ORM
516
+ - [ ] Validate data types (string, number, email, etc.)
517
+ - [ ] Validate data ranges (min/max length, value ranges)
518
+ - [ ] Sanitize HTML content
519
+ - [ ] Escape special characters
520
+ - [ ] Validate file uploads (type, size, content)
521
+ - [ ] Use allowlists, not blocklists
522
+ ```
523
+
524
+
525
+ ### Example 3: Rate Limiting and DDoS Protection
526
+
527
+ ```markdown
528
+ ## Implementing Rate Limiting
529
+
530
+ ### Why Rate Limiting?
531
+
532
+ - Prevent brute force attacks
533
+ - Protect against DDoS
534
+ - Prevent API abuse
535
+ - Ensure fair usage
536
+ - Reduce server costs
537
+
538
+ ### Implementation with Express Rate Limit
539
+
540
+ \`\`\`javascript
541
+ const rateLimit = require('express-rate-limit');
542
+ const RedisStore = require('rate-limit-redis');
543
+ const Redis = require('ioredis');
544
+
545
+ // Create Redis client
546
+ const redis = new Redis({
547
+ host: process.env.REDIS_HOST,
548
+ port: process.env.REDIS_PORT
549
+ });
550
+
551
+ // General API rate limit
552
+ const apiLimiter = rateLimit({
553
+ store: new RedisStore({
554
+ client: redis,
555
+ prefix: 'rl:api:'
556
+ }),
557
+ windowMs: 15 * 60 * 1000, // 15 minutes
558
+ max: 100, // 100 requests per window
559
+ message: {
560
+ error: 'Too many requests, please try again later',
561
+ retryAfter: 900 // seconds
562
+ },
563
+ standardHeaders: true, // Return rate limit info in headers
564
+ legacyHeaders: false,
565
+ // Custom key generator (by user ID or IP)
566
+ keyGenerator: (req) => {
567
+ return req.user?.userId || req.ip;
568
+ }
569
+ });
570
+
571
+ // Strict rate limit for authentication endpoints
572
+ const authLimiter = rateLimit({
573
+ store: new RedisStore({
574
+ client: redis,
575
+ prefix: 'rl:auth:'
576
+ }),
577
+ windowMs: 15 * 60 * 1000, // 15 minutes
578
+ max: 5, // Only 5 login attempts per 15 minutes
579
+ skipSuccessfulRequests: true, // Don't count successful logins
580
+ message: {
581
+ error: 'Too many login attempts, please try again later',
582
+ retryAfter: 900
583
+ }
584
+ });
585
+
586
+ // Apply rate limiters
587
+ app.use('/api/', apiLimiter);
588
+ app.use('/api/auth/login', authLimiter);
589
+ app.use('/api/auth/register', authLimiter);
590
+
591
+ // Custom rate limiter for expensive operations
592
+ const expensiveLimiter = rateLimit({
593
+ windowMs: 60 * 60 * 1000, // 1 hour
594
+ max: 10, // 10 requests per hour
595
+ message: {
596
+ error: 'Rate limit exceeded for this operation'
597
+ }
598
+ });
599
+
600
+ app.post('/api/reports/generate',
601
+ authenticateToken,
602
+ expensiveLimiter,
603
+ async (req, res) => {
604
+ // Expensive operation
605
+ }
606
+ );
607
+ \`\`\`
608
+
609
+ ### Advanced: Per-User Rate Limiting
610
+
611
+ \`\`\`javascript
612
+ // Different limits based on user tier
613
+ function createTieredRateLimiter() {
614
+ const limits = {
615
+ free: { windowMs: 60 * 60 * 1000, max: 100 },
616
+ pro: { windowMs: 60 * 60 * 1000, max: 1000 },
617
+ enterprise: { windowMs: 60 * 60 * 1000, max: 10000 }
618
+ };
619
+
620
+ return async (req, res, next) => {
621
+ const user = req.user;
622
+ const tier = user?.tier || 'free';
623
+ const limit = limits[tier];
624
+
625
+ const key = \`rl:user:\${user.userId}\`;
626
+ const current = await redis.incr(key);
627
+
628
+ if (current === 1) {
629
+ await redis.expire(key, limit.windowMs / 1000);
630
+ }
631
+
632
+ if (current > limit.max) {
633
+ return res.status(429).json({
634
+ error: 'Rate limit exceeded',
635
+ limit: limit.max,
636
+ remaining: 0,
637
+ reset: await redis.ttl(key)
638
+ });
639
+ }
640
+
641
+ // Set rate limit headers
642
+ res.set({
643
+ 'X-RateLimit-Limit': limit.max,
644
+ 'X-RateLimit-Remaining': limit.max - current,
645
+ 'X-RateLimit-Reset': await redis.ttl(key)
646
+ });
647
+
648
+ next();
649
+ };
650
+ }
651
+
652
+ app.use('/api/', authenticateToken, createTieredRateLimiter());
653
+ \`\`\`
654
+
655
+ ### DDoS Protection with Helmet
656
+
657
+ \`\`\`javascript
658
+ const helmet = require('helmet');
659
+
660
+ app.use(helmet({
661
+ // Content Security Policy
662
+ contentSecurityPolicy: {
663
+ directives: {
664
+ defaultSrc: ["'self'"],
665
+ styleSrc: ["'self'", "'unsafe-inline'"],
666
+ scriptSrc: ["'self'"],
667
+ imgSrc: ["'self'", 'data:', 'https:']
668
+ }
669
+ },
670
+ // Prevent clickjacking
671
+ frameguard: { action: 'deny' },
672
+ // Hide X-Powered-By header
673
+ hidePoweredBy: true,
674
+ // Prevent MIME type sniffing
675
+ noSniff: true,
676
+ // Enable HSTS
677
+ hsts: {
678
+ maxAge: 31536000,
679
+ includeSubDomains: true,
680
+ preload: true
681
+ }
682
+ }));
683
+ \`\`\`
684
+
685
+ ### Rate Limit Response Headers
686
+
687
+ \`\`\`
688
+ X-RateLimit-Limit: 100
689
+ X-RateLimit-Remaining: 87
690
+ X-RateLimit-Reset: 1640000000
691
+ Retry-After: 900
692
+ \`\`\`
693
+ ```
694
+
695
+ ## Best Practices
696
+
697
+ ### ✅ Do This
698
+
699
+ - **Use HTTPS Everywhere** - Never send sensitive data over HTTP
700
+ - **Implement Authentication** - Require authentication for protected endpoints
701
+ - **Validate All Inputs** - Never trust user input
702
+ - **Use Parameterized Queries** - Prevent SQL injection
703
+ - **Implement Rate Limiting** - Protect against brute force and DDoS
704
+ - **Hash Passwords** - Use bcrypt with salt rounds >= 10
705
+ - **Use Short-Lived Tokens** - JWT access tokens should expire quickly
706
+ - **Implement CORS Properly** - Only allow trusted origins
707
+ - **Log Security Events** - Monitor for suspicious activity
708
+ - **Keep Dependencies Updated** - Regularly update packages
709
+ - **Use Security Headers** - Implement Helmet.js
710
+ - **Sanitize Error Messages** - Don't leak sensitive information
711
+
712
+ ### ❌ Don't Do This
713
+
714
+ - **Don't Store Passwords in Plain Text** - Always hash passwords
715
+ - **Don't Use Weak Secrets** - Use strong, random JWT secrets
716
+ - **Don't Trust User Input** - Always validate and sanitize
717
+ - **Don't Expose Stack Traces** - Hide error details in production
718
+ - **Don't Use String Concatenation for SQL** - Use parameterized queries
719
+ - **Don't Store Sensitive Data in JWT** - JWTs are not encrypted
720
+ - **Don't Ignore Security Updates** - Update dependencies regularly
721
+ - **Don't Use Default Credentials** - Change all default passwords
722
+ - **Don't Disable CORS Completely** - Configure it properly instead
723
+ - **Don't Log Sensitive Data** - Sanitize logs
724
+
725
+ ## Common Pitfalls
726
+
727
+ ### Problem: JWT Secret Exposed in Code
728
+ **Symptoms:** JWT secret hardcoded or committed to Git
729
+ **Solution:**
730
+ \`\`\`javascript
731
+ // ❌ Bad
732
+ const JWT_SECRET = 'my-secret-key';
733
+
734
+ // ✅ Good
735
+ const JWT_SECRET = process.env.JWT_SECRET;
736
+ if (!JWT_SECRET) {
737
+ throw new Error('JWT_SECRET environment variable is required');
738
+ }
739
+
740
+ // Generate strong secret
741
+ // node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
742
+ \`\`\`
743
+
744
+ ### Problem: Weak Password Requirements
745
+ **Symptoms:** Users can set weak passwords like "password123"
746
+ **Solution:**
747
+ \`\`\`javascript
748
+ const passwordSchema = z.string()
749
+ .min(12, 'Password must be at least 12 characters')
750
+ .regex(/[A-Z]/, 'Must contain uppercase letter')
751
+ .regex(/[a-z]/, 'Must contain lowercase letter')
752
+ .regex(/[0-9]/, 'Must contain number')
753
+ .regex(/[^A-Za-z0-9]/, 'Must contain special character');
754
+
755
+ // Or use a password strength library
756
+ const zxcvbn = require('zxcvbn');
757
+ const result = zxcvbn(password);
758
+ if (result.score < 3) {
759
+ return res.status(400).json({
760
+ error: 'Password too weak',
761
+ suggestions: result.feedback.suggestions
762
+ });
763
+ }
764
+ \`\`\`
765
+
766
+ ### Problem: Missing Authorization Checks
767
+ **Symptoms:** Users can access resources they shouldn't
768
+ **Solution:**
769
+ \`\`\`javascript
770
+ // ❌ Bad: Only checks authentication
771
+ app.delete('/api/posts/:id', authenticateToken, async (req, res) => {
772
+ await prisma.post.delete({ where: { id: req.params.id } });
773
+ res.json({ success: true });
774
+ });
775
+
776
+ // ✅ Good: Checks both authentication and authorization
777
+ app.delete('/api/posts/:id', authenticateToken, async (req, res) => {
778
+ const post = await prisma.post.findUnique({
779
+ where: { id: req.params.id }
780
+ });
781
+
782
+ if (!post) {
783
+ return res.status(404).json({ error: 'Post not found' });
784
+ }
785
+
786
+ // Check if user owns the post or is admin
787
+ if (post.userId !== req.user.userId && req.user.role !== 'admin') {
788
+ return res.status(403).json({
789
+ error: 'Not authorized to delete this post'
790
+ });
791
+ }
792
+
793
+ await prisma.post.delete({ where: { id: req.params.id } });
794
+ res.json({ success: true });
795
+ });
796
+ \`\`\`
797
+
798
+ ### Problem: Verbose Error Messages
799
+ **Symptoms:** Error messages reveal system details
800
+ **Solution:**
801
+ \`\`\`javascript
802
+ // ❌ Bad: Exposes database details
803
+ app.post('/api/users', async (req, res) => {
804
+ try {
805
+ const user = await prisma.user.create({ data: req.body });
806
+ res.json(user);
807
+ } catch (error) {
808
+ res.status(500).json({ error: error.message });
809
+ // Error: "Unique constraint failed on the fields: (`email`)"
810
+ }
811
+ });
812
+
813
+ // ✅ Good: Generic error message
814
+ app.post('/api/users', async (req, res) => {
815
+ try {
816
+ const user = await prisma.user.create({ data: req.body });
817
+ res.json(user);
818
+ } catch (error) {
819
+ console.error('User creation error:', error); // Log full error
820
+
821
+ if (error.code === 'P2002') {
822
+ return res.status(400).json({
823
+ error: 'Email already exists'
824
+ });
825
+ }
826
+
827
+ res.status(500).json({
828
+ error: 'An error occurred while creating user'
829
+ });
830
+ }
831
+ });
832
+ \`\`\`
833
+
834
+ ## Security Checklist
835
+
836
+ ### Authentication & Authorization
837
+ - [ ] Implement strong authentication (JWT, OAuth 2.0)
838
+ - [ ] Use HTTPS for all endpoints
839
+ - [ ] Hash passwords with bcrypt (salt rounds >= 10)
840
+ - [ ] Implement token expiration
841
+ - [ ] Add refresh token mechanism
842
+ - [ ] Verify user authorization for each request
843
+ - [ ] Implement role-based access control (RBAC)
844
+
845
+ ### Input Validation
846
+ - [ ] Validate all user inputs
847
+ - [ ] Use parameterized queries or ORM
848
+ - [ ] Sanitize HTML content
849
+ - [ ] Validate file uploads
850
+ - [ ] Implement request schema validation
851
+ - [ ] Use allowlists, not blocklists
852
+
853
+ ### Rate Limiting & DDoS Protection
854
+ - [ ] Implement rate limiting per user/IP
855
+ - [ ] Add stricter limits for auth endpoints
856
+ - [ ] Use Redis for distributed rate limiting
857
+ - [ ] Return proper rate limit headers
858
+ - [ ] Implement request throttling
859
+
860
+ ### Data Protection
861
+ - [ ] Use HTTPS/TLS for all traffic
862
+ - [ ] Encrypt sensitive data at rest
863
+ - [ ] Don't store sensitive data in JWT
864
+ - [ ] Sanitize error messages
865
+ - [ ] Implement proper CORS configuration
866
+ - [ ] Use security headers (Helmet.js)
867
+
868
+ ### Monitoring & Logging
869
+ - [ ] Log security events
870
+ - [ ] Monitor for suspicious activity
871
+ - [ ] Set up alerts for failed auth attempts
872
+ - [ ] Track API usage patterns
873
+ - [ ] Don't log sensitive data
874
+
875
+ ## OWASP API Security Top 10
876
+
877
+ 1. **Broken Object Level Authorization** - Always verify user can access resource
878
+ 2. **Broken Authentication** - Implement strong authentication mechanisms
879
+ 3. **Broken Object Property Level Authorization** - Validate which properties user can access
880
+ 4. **Unrestricted Resource Consumption** - Implement rate limiting and quotas
881
+ 5. **Broken Function Level Authorization** - Verify user role for each function
882
+ 6. **Unrestricted Access to Sensitive Business Flows** - Protect critical workflows
883
+ 7. **Server Side Request Forgery (SSRF)** - Validate and sanitize URLs
884
+ 8. **Security Misconfiguration** - Use security best practices and headers
885
+ 9. **Improper Inventory Management** - Document and secure all API endpoints
886
+ 10. **Unsafe Consumption of APIs** - Validate data from third-party APIs
887
+
888
+ ## Related Skills
889
+
890
+ - `@ethical-hacking-methodology` - Security testing perspective
891
+ - `@sql-injection-testing` - Testing for SQL injection
892
+ - `@xss-html-injection` - Testing for XSS vulnerabilities
893
+ - `@broken-authentication` - Authentication vulnerabilities
894
+ - `@backend-dev-guidelines` - Backend development standards
895
+ - `@systematic-debugging` - Debug security issues
896
+
897
+ ## Additional Resources
898
+
899
+ - [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
900
+ - [JWT Best Practices](https://tools.ietf.org/html/rfc8725)
901
+ - [Express Security Best Practices](https://expressjs.com/en/advanced/best-practice-security.html)
902
+ - [Node.js Security Checklist](https://blog.risingstack.com/node-js-security-checklist/)
903
+ - [API Security Checklist](https://github.com/shieldfy/API-Security-Checklist)
904
+
905
+ ---
906
+
907
+ **Pro Tip:** Security is not a one-time task - regularly audit your APIs, keep dependencies updated, and stay informed about new vulnerabilities!