@ngxtm/devkit 3.7.0 → 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 (769) hide show
  1. package/merged-commands/3d-web-experience.md +254 -0
  2. package/merged-commands/ab-test-setup.md +232 -0
  3. package/merged-commands/accessibility-compliance-accessibility-audit.md +42 -0
  4. package/merged-commands/active-directory-attacks.md +383 -0
  5. package/merged-commands/address-github-comments.md +55 -0
  6. package/merged-commands/aesthetic.md +134 -0
  7. package/merged-commands/agent-evaluation.md +64 -0
  8. package/merged-commands/agent-framework-azure-hosted-agents.md +332 -0
  9. package/merged-commands/agent-manager-skill.md +40 -0
  10. package/merged-commands/agent-memory-mcp.md +82 -0
  11. package/merged-commands/agent-memory-systems.md +67 -0
  12. package/merged-commands/agent-orchestration-improve-agent.md +349 -0
  13. package/merged-commands/agent-orchestration-multi-agent-optimize.md +239 -0
  14. package/merged-commands/agent-tool-builder.md +53 -0
  15. package/merged-commands/agile-product-owner.md +31 -0
  16. package/merged-commands/ai-agents-architect.md +90 -0
  17. package/merged-commands/ai-artist.md +75 -0
  18. package/merged-commands/ai-engineer.md +171 -0
  19. package/merged-commands/ai-multimodal.md +109 -0
  20. package/merged-commands/ai-product.md +54 -0
  21. package/merged-commands/ai-wrapper-product.md +273 -0
  22. package/merged-commands/airflow-dag-patterns.md +41 -0
  23. package/merged-commands/algolia-search.md +66 -0
  24. package/merged-commands/algorithmic-art.md +405 -0
  25. package/merged-commands/analytics-tracking.md +404 -0
  26. package/merged-commands/angular-architect.md +97 -0
  27. package/merged-commands/angular-migration.md +428 -0
  28. package/merged-commands/anti-reversing-techniques.md +42 -0
  29. package/merged-commands/api-design-principles.md +37 -0
  30. package/merged-commands/api-designer.md +101 -0
  31. package/merged-commands/api-documentation-generator.md +484 -0
  32. package/merged-commands/api-documenter.md +184 -0
  33. package/merged-commands/api-fuzzing-bug-bounty.md +433 -0
  34. package/merged-commands/api-patterns.md +81 -0
  35. package/merged-commands/api-security-best-practices.md +907 -0
  36. package/merged-commands/api-testing-observability-api-mock.md +46 -0
  37. package/merged-commands/app-builder.md +75 -0
  38. package/merged-commands/app-store-optimization.md +403 -0
  39. package/merged-commands/application-performance-performance-optimization.md +154 -0
  40. package/merged-commands/architect-review.md +174 -0
  41. package/merged-commands/architecture-decision-records.md +441 -0
  42. package/merged-commands/architecture-designer.md +89 -0
  43. package/merged-commands/architecture-patterns.md +37 -0
  44. package/merged-commands/architecture.md +55 -0
  45. package/merged-commands/arm-cortex-expert.md +306 -0
  46. package/merged-commands/artifacts-builder.md +74 -0
  47. package/merged-commands/ask-questions-if-underspecified.md +81 -0
  48. package/merged-commands/async-python-patterns.md +39 -0
  49. package/merged-commands/atlassian-mcp.md +100 -0
  50. package/merged-commands/attack-tree-construction.md +38 -0
  51. package/merged-commands/auth-implementation-patterns.md +39 -0
  52. package/merged-commands/automate-whatsapp.md +257 -0
  53. package/merged-commands/autonomous-agent-patterns.md +761 -0
  54. package/merged-commands/autonomous-agents.md +68 -0
  55. package/merged-commands/avalonia-layout-zafiro.md +59 -0
  56. package/merged-commands/avalonia-viewmodels-zafiro.md +29 -0
  57. package/merged-commands/avalonia-zafiro-development.md +29 -0
  58. package/merged-commands/aws-agentic-ai.md +117 -0
  59. package/merged-commands/aws-cdk-development.md +278 -0
  60. package/merged-commands/aws-cost-operations.md +317 -0
  61. package/merged-commands/aws-penetration-testing.md +405 -0
  62. package/merged-commands/aws-serverless-eda.md +757 -0
  63. package/merged-commands/aws-serverless.md +323 -0
  64. package/merged-commands/aws-skills.md +22 -0
  65. package/merged-commands/azd-deployment.md +296 -0
  66. package/merged-commands/azure-ai-agents-python.md +277 -0
  67. package/merged-commands/azure-ai-search-python.md +198 -0
  68. package/merged-commands/azure-ai-voicelive-skill.md +294 -0
  69. package/merged-commands/azure-functions.md +42 -0
  70. package/merged-commands/backend-architect.md +333 -0
  71. package/merged-commands/backend-dev-guidelines.md +342 -0
  72. package/merged-commands/backend-development-feature-development.md +180 -0
  73. package/merged-commands/backend-development.md +155 -0
  74. package/merged-commands/backend-security-coder.md +156 -0
  75. package/merged-commands/backtesting-frameworks.md +39 -0
  76. package/merged-commands/bash-defensive-patterns.md +43 -0
  77. package/merged-commands/bash-linux.md +199 -0
  78. package/merged-commands/bash-pro.md +310 -0
  79. package/merged-commands/bats-testing-patterns.md +34 -0
  80. package/merged-commands/bazel-build-optimization.md +397 -0
  81. package/merged-commands/beautiful-prose.md +22 -0
  82. package/merged-commands/behavioral-modes.md +242 -0
  83. package/merged-commands/best-practices.md +500 -0
  84. package/merged-commands/better-auth.md +204 -0
  85. package/merged-commands/billing-automation.md +42 -0
  86. package/merged-commands/binary-analysis-patterns.md +450 -0
  87. package/merged-commands/blockchain-developer.md +208 -0
  88. package/merged-commands/blockrun.md +292 -0
  89. package/merged-commands/brainstorming.md +230 -0
  90. package/merged-commands/brand-guidelines-anthropic.md +73 -0
  91. package/merged-commands/brand-guidelines-community.md +73 -0
  92. package/merged-commands/brand-guidelines.md +73 -0
  93. package/merged-commands/broken-authentication.md +476 -0
  94. package/merged-commands/browser-automation.md +70 -0
  95. package/merged-commands/browser-extension-builder.md +261 -0
  96. package/merged-commands/building-ai-agent-on-cloudflare.md +391 -0
  97. package/merged-commands/building-mcp-server-on-cloudflare.md +265 -0
  98. package/merged-commands/bullmq-specialist.md +57 -0
  99. package/merged-commands/bun-development.md +691 -0
  100. package/merged-commands/burp-suite-testing.md +380 -0
  101. package/merged-commands/business-analyst.md +182 -0
  102. package/merged-commands/busybox-on-windows.md +30 -0
  103. package/merged-commands/c-pro.md +56 -0
  104. package/merged-commands/c4-architecture-c4-architecture.md +389 -0
  105. package/merged-commands/c4-code.md +244 -0
  106. package/merged-commands/c4-component.md +153 -0
  107. package/merged-commands/c4-container.md +171 -0
  108. package/merged-commands/c4-context.md +150 -0
  109. package/merged-commands/canvas-design.md +130 -0
  110. package/merged-commands/cc-skill-backend-patterns.md +584 -0
  111. package/merged-commands/cc-skill-clickhouse-io.md +431 -0
  112. package/merged-commands/cc-skill-coding-standards.md +522 -0
  113. package/merged-commands/cc-skill-continuous-learning.md +10 -0
  114. package/merged-commands/cc-skill-frontend-patterns.md +633 -0
  115. package/merged-commands/cc-skill-project-guidelines-example.md +352 -0
  116. package/merged-commands/cc-skill-security-review.md +496 -0
  117. package/merged-commands/cc-skill-strategic-compact.md +10 -0
  118. package/merged-commands/changelog-automation.md +38 -0
  119. package/merged-commands/changelog-generator.md +104 -0
  120. package/merged-commands/chaos-engineer.md +98 -0
  121. package/merged-commands/chrome-devtools.md +407 -0
  122. package/merged-commands/cicd-automation-workflow-automate.md +51 -0
  123. package/merged-commands/clarity-gate.md +22 -0
  124. package/merged-commands/claude-ally-health.md +22 -0
  125. package/merged-commands/claude-code-guide.md +68 -0
  126. package/merged-commands/claude-d3js-skill.md +820 -0
  127. package/merged-commands/claude-scientific-skills.md +22 -0
  128. package/merged-commands/claude-speed-reader.md +22 -0
  129. package/merged-commands/claude-win11-speckit-update-skill.md +22 -0
  130. package/merged-commands/clean-code.md +201 -0
  131. package/merged-commands/clerk-auth.md +56 -0
  132. package/merged-commands/cli-developer.md +97 -0
  133. package/merged-commands/cloud-architect.md +135 -0
  134. package/merged-commands/cloud-penetration-testing.md +501 -0
  135. package/merged-commands/cloudflare-expert.md +227 -0
  136. package/merged-commands/code-documentation-code-explain.md +46 -0
  137. package/merged-commands/code-documentation-doc-generate.md +48 -0
  138. package/merged-commands/code-documentation.md +263 -0
  139. package/merged-commands/code-documenter.md +95 -0
  140. package/merged-commands/code-refactoring-context-restore.md +179 -0
  141. package/merged-commands/code-refactoring-refactor-clean.md +51 -0
  142. package/merged-commands/code-refactoring-tech-debt.md +386 -0
  143. package/merged-commands/code-refactoring.md +209 -0
  144. package/merged-commands/code-review-ai-ai-review.md +450 -0
  145. package/merged-commands/code-review-checklist.md +444 -0
  146. package/merged-commands/code-review-excellence.md +40 -0
  147. package/merged-commands/code-review.md +121 -0
  148. package/merged-commands/code-reviewer.md +178 -0
  149. package/merged-commands/codebase-cleanup-deps-audit.md +51 -0
  150. package/merged-commands/codebase-cleanup-refactor-clean.md +51 -0
  151. package/merged-commands/codebase-cleanup-tech-debt.md +386 -0
  152. package/merged-commands/codex-review.md +37 -0
  153. package/merged-commands/commit.md +171 -0
  154. package/merged-commands/competitive-ads-extractor.md +293 -0
  155. package/merged-commands/competitive-landscape.md +34 -0
  156. package/merged-commands/competitor-alternatives.md +750 -0
  157. package/merged-commands/comprehensive-review-full-review.md +146 -0
  158. package/merged-commands/comprehensive-review-pr-enhance.md +46 -0
  159. package/merged-commands/computer-use-agents.md +315 -0
  160. package/merged-commands/concise-planning.md +62 -0
  161. package/merged-commands/conductor-implement.md +388 -0
  162. package/merged-commands/conductor-manage.md +39 -0
  163. package/merged-commands/conductor-new-track.md +433 -0
  164. package/merged-commands/conductor-revert.md +372 -0
  165. package/merged-commands/conductor-setup.md +426 -0
  166. package/merged-commands/conductor-status.md +338 -0
  167. package/merged-commands/conductor-validator.md +62 -0
  168. package/merged-commands/content-creator.md +248 -0
  169. package/merged-commands/content-marketer.md +170 -0
  170. package/merged-commands/content-research-writer.md +538 -0
  171. package/merged-commands/context-compression.md +266 -0
  172. package/merged-commands/context-degradation.md +238 -0
  173. package/merged-commands/context-driven-development.md +400 -0
  174. package/merged-commands/context-engineering.md +107 -0
  175. package/merged-commands/context-fundamentals.md +192 -0
  176. package/merged-commands/context-management-context-restore.md +179 -0
  177. package/merged-commands/context-management-context-save.md +177 -0
  178. package/merged-commands/context-manager.md +185 -0
  179. package/merged-commands/context-optimization.md +186 -0
  180. package/merged-commands/context-window-management.md +53 -0
  181. package/merged-commands/context7-auto-research.md +36 -0
  182. package/merged-commands/conversation-memory.md +61 -0
  183. package/merged-commands/copy-editing.md +439 -0
  184. package/merged-commands/copywriting.md +225 -0
  185. package/merged-commands/core-components.md +264 -0
  186. package/merged-commands/cosmos-db-python-skill.md +198 -0
  187. package/merged-commands/cost-optimization.md +286 -0
  188. package/merged-commands/cpp-pro.md +59 -0
  189. package/merged-commands/cqrs-implementation.md +35 -0
  190. package/merged-commands/create-pr.md +192 -0
  191. package/merged-commands/crewai.md +243 -0
  192. package/merged-commands/csharp-developer.md +94 -0
  193. package/merged-commands/csharp-pro.md +59 -0
  194. package/merged-commands/culture-index.md +43 -0
  195. package/merged-commands/customer-support.md +170 -0
  196. package/merged-commands/daily-news-report.md +356 -0
  197. package/merged-commands/data-engineer.md +224 -0
  198. package/merged-commands/data-engineering-data-driven-feature.md +182 -0
  199. package/merged-commands/data-engineering-data-pipeline.md +201 -0
  200. package/merged-commands/data-quality-frameworks.md +40 -0
  201. package/merged-commands/data-scientist.md +199 -0
  202. package/merged-commands/data-storytelling.md +465 -0
  203. package/merged-commands/database-admin.md +165 -0
  204. package/merged-commands/database-architect.md +268 -0
  205. package/merged-commands/database-cloud-optimization-cost-optimize.md +44 -0
  206. package/merged-commands/database-design.md +52 -0
  207. package/merged-commands/database-migration.md +436 -0
  208. package/merged-commands/database-migrations-migration-observability.md +420 -0
  209. package/merged-commands/database-migrations-sql-migrations.md +53 -0
  210. package/merged-commands/database-optimizer.md +167 -0
  211. package/merged-commands/databases.md +232 -0
  212. package/merged-commands/dbt-transformation-patterns.md +34 -0
  213. package/merged-commands/debugger.md +49 -0
  214. package/merged-commands/debugging-strategies.md +34 -0
  215. package/merged-commands/debugging-toolkit-smart-debug.md +197 -0
  216. package/merged-commands/debugging-wizard.md +93 -0
  217. package/merged-commands/debugging.md +84 -0
  218. package/merged-commands/deep-research.md +114 -0
  219. package/merged-commands/defi-protocol-templates.md +466 -0
  220. package/merged-commands/dependency-management-deps-audit.md +44 -0
  221. package/merged-commands/dependency-upgrade.md +421 -0
  222. package/merged-commands/deployment-engineer.md +170 -0
  223. package/merged-commands/deployment-pipeline-design.md +371 -0
  224. package/merged-commands/deployment-procedures.md +241 -0
  225. package/merged-commands/deployment-validation-config-validate.md +496 -0
  226. package/merged-commands/design-md.md +178 -0
  227. package/merged-commands/design-orchestration.md +167 -0
  228. package/merged-commands/developer-growth-analysis.md +322 -0
  229. package/merged-commands/devops-engineer.md +92 -0
  230. package/merged-commands/devops-troubleshooter.md +161 -0
  231. package/merged-commands/devops.md +285 -0
  232. package/merged-commands/discord-bot-architect.md +277 -0
  233. package/merged-commands/dispatching-parallel-agents.md +180 -0
  234. package/merged-commands/distributed-debugging-debug-trace.md +44 -0
  235. package/merged-commands/distributed-tracing.md +450 -0
  236. package/merged-commands/django-expert.md +89 -0
  237. package/merged-commands/django-pro.md +180 -0
  238. package/merged-commands/doc-coauthoring.md +375 -0
  239. package/merged-commands/docker-expert.md +409 -0
  240. package/merged-commands/docs-architect.md +98 -0
  241. package/merged-commands/docs-seeker.md +102 -0
  242. package/merged-commands/documentation-generation-doc-generate.md +48 -0
  243. package/merged-commands/documentation-templates.md +194 -0
  244. package/merged-commands/docx-official.md +197 -0
  245. package/merged-commands/docx.md +197 -0
  246. package/merged-commands/domain-name-brainstormer.md +212 -0
  247. package/merged-commands/dotnet-architect.md +197 -0
  248. package/merged-commands/dotnet-backend-patterns.md +37 -0
  249. package/merged-commands/dotnet-core-expert.md +96 -0
  250. package/merged-commands/dx-optimizer.md +83 -0
  251. package/merged-commands/e2e-testing-patterns.md +41 -0
  252. package/merged-commands/elixir-pro.md +59 -0
  253. package/merged-commands/email-sequence.md +925 -0
  254. package/merged-commands/email-systems.md +54 -0
  255. package/merged-commands/embedded-systems.md +98 -0
  256. package/merged-commands/embedding-strategies.md +491 -0
  257. package/merged-commands/employment-contract-templates.md +39 -0
  258. package/merged-commands/environment-setup-guide.md +479 -0
  259. package/merged-commands/error-debugging-error-analysis.md +47 -0
  260. package/merged-commands/error-debugging-error-trace.md +43 -0
  261. package/merged-commands/error-debugging-multi-agent-review.md +216 -0
  262. package/merged-commands/error-detective.md +53 -0
  263. package/merged-commands/error-diagnostics-error-analysis.md +47 -0
  264. package/merged-commands/error-diagnostics-error-trace.md +48 -0
  265. package/merged-commands/error-diagnostics-smart-debug.md +197 -0
  266. package/merged-commands/error-handling-patterns.md +35 -0
  267. package/merged-commands/ethical-hacking-methodology.md +466 -0
  268. package/merged-commands/evaluation.md +238 -0
  269. package/merged-commands/event-sourcing-architect.md +58 -0
  270. package/merged-commands/event-store-design.md +449 -0
  271. package/merged-commands/exa-search.md +36 -0
  272. package/merged-commands/executing-plans.md +76 -0
  273. package/merged-commands/expo-app-design.md +22 -0
  274. package/merged-commands/expo-deployment.md +72 -0
  275. package/merged-commands/fal-audio.md +22 -0
  276. package/merged-commands/fal-generate.md +22 -0
  277. package/merged-commands/fal-image-edit.md +22 -0
  278. package/merged-commands/fal-platform.md +22 -0
  279. package/merged-commands/fal-upscale.md +22 -0
  280. package/merged-commands/fal-workflow.md +22 -0
  281. package/merged-commands/fastapi-expert.md +93 -0
  282. package/merged-commands/fastapi-pro.md +192 -0
  283. package/merged-commands/fastapi-router.md +52 -0
  284. package/merged-commands/fastapi-templates.md +32 -0
  285. package/merged-commands/feature-forge.md +90 -0
  286. package/merged-commands/ffuf-claude-skill.md +22 -0
  287. package/merged-commands/file-organizer.md +250 -0
  288. package/merged-commands/file-path-traversal.md +486 -0
  289. package/merged-commands/file-uploads.md +22 -0
  290. package/merged-commands/find-bugs.md +86 -0
  291. package/merged-commands/fine-tuning-expert.md +98 -0
  292. package/merged-commands/finishing-a-development-branch.md +200 -0
  293. package/merged-commands/firebase.md +56 -0
  294. package/merged-commands/firecrawl-scraper.md +37 -0
  295. package/merged-commands/firmware-analyst.md +320 -0
  296. package/merged-commands/fix-review.md +53 -0
  297. package/merged-commands/fixing.md +72 -0
  298. package/merged-commands/flutter-expert.md +200 -0
  299. package/merged-commands/form-cro.md +441 -0
  300. package/merged-commands/foundry-iq-agent.md +15 -0
  301. package/merged-commands/foundry-iq-python.md +275 -0
  302. package/merged-commands/foundry-nextgen-frontend.md +555 -0
  303. package/merged-commands/foundry-sdk-python.md +290 -0
  304. package/merged-commands/fp-ts-errors.md +856 -0
  305. package/merged-commands/fp-ts-pragmatic.md +598 -0
  306. package/merged-commands/fp-ts-react.md +796 -0
  307. package/merged-commands/framework-migration-code-migrate.md +48 -0
  308. package/merged-commands/framework-migration-deps-upgrade.md +48 -0
  309. package/merged-commands/framework-migration-legacy-modernize.md +132 -0
  310. package/merged-commands/free-tool-strategy.md +576 -0
  311. package/merged-commands/frontend-design.md +272 -0
  312. package/merged-commands/frontend-dev-guidelines.md +359 -0
  313. package/merged-commands/frontend-developer.md +171 -0
  314. package/merged-commands/frontend-development.md +399 -0
  315. package/merged-commands/frontend-mobile-development-component-scaffold.md +403 -0
  316. package/merged-commands/frontend-mobile-security-xss-scan.md +322 -0
  317. package/merged-commands/frontend-security-coder.md +170 -0
  318. package/merged-commands/frontend-slides.md +770 -0
  319. package/merged-commands/full-stack-orchestration-full-stack-feature.md +135 -0
  320. package/merged-commands/fullstack-guardian.md +99 -0
  321. package/merged-commands/game-developer.md +94 -0
  322. package/merged-commands/game-development.md +167 -0
  323. package/merged-commands/gcp-cloud-run.md +288 -0
  324. package/merged-commands/gdpr-data-handling.md +33 -0
  325. package/merged-commands/geo-fundamentals.md +156 -0
  326. package/merged-commands/git-advanced-workflows.md +412 -0
  327. package/merged-commands/git-pr-workflows-git-workflow.md +140 -0
  328. package/merged-commands/git-pr-workflows-onboard.md +416 -0
  329. package/merged-commands/git-pr-workflows-pr-enhance.md +48 -0
  330. package/merged-commands/git-pushing.md +33 -0
  331. package/merged-commands/github-actions-templates.md +345 -0
  332. package/merged-commands/github-workflow-automation.md +846 -0
  333. package/merged-commands/gitlab-ci-patterns.md +283 -0
  334. package/merged-commands/gitops-workflow.md +303 -0
  335. package/merged-commands/go-concurrency-patterns.md +33 -0
  336. package/merged-commands/godot-gdscript-patterns.md +33 -0
  337. package/merged-commands/golang-pro.md +179 -0
  338. package/merged-commands/google-adk-python.md +243 -0
  339. package/merged-commands/grafana-dashboards.md +381 -0
  340. package/merged-commands/graphql-architect.md +182 -0
  341. package/merged-commands/graphql.md +68 -0
  342. package/merged-commands/haskell-pro.md +56 -0
  343. package/merged-commands/helm-chart-scaffolding.md +34 -0
  344. package/merged-commands/hr-pro.md +126 -0
  345. package/merged-commands/html-injection-testing.md +498 -0
  346. package/merged-commands/hubspot-integration.md +42 -0
  347. package/merged-commands/hugging-face-cli.md +198 -0
  348. package/merged-commands/hugging-face-jobs.md +1038 -0
  349. package/merged-commands/hybrid-cloud-architect.md +168 -0
  350. package/merged-commands/hybrid-cloud-networking.md +238 -0
  351. package/merged-commands/hybrid-search-implementation.md +32 -0
  352. package/merged-commands/i18n-localization.md +154 -0
  353. package/merged-commands/idor-testing.md +442 -0
  354. package/merged-commands/image-enhancer.md +99 -0
  355. package/merged-commands/imagen.md +77 -0
  356. package/merged-commands/incident-responder.md +213 -0
  357. package/merged-commands/incident-response-incident-response.md +168 -0
  358. package/merged-commands/incident-response-smart-fix.md +29 -0
  359. package/merged-commands/incident-runbook-templates.md +395 -0
  360. package/merged-commands/infinite-gratitude.md +26 -0
  361. package/merged-commands/inngest.md +55 -0
  362. package/merged-commands/interactive-portfolio.md +223 -0
  363. package/merged-commands/internal-comms-anthropic.md +32 -0
  364. package/merged-commands/internal-comms-community.md +32 -0
  365. package/merged-commands/internal-comms.md +32 -0
  366. package/merged-commands/invoice-organizer.md +446 -0
  367. package/merged-commands/ios-developer.md +219 -0
  368. package/merged-commands/issue-creator.md +137 -0
  369. package/merged-commands/istio-traffic-management.md +337 -0
  370. package/merged-commands/iterate-pr.md +150 -0
  371. package/merged-commands/java-architect.md +95 -0
  372. package/merged-commands/java-pro.md +177 -0
  373. package/merged-commands/javascript-mastery.md +645 -0
  374. package/merged-commands/javascript-pro.md +57 -0
  375. package/merged-commands/javascript-testing-patterns.md +35 -0
  376. package/merged-commands/javascript-typescript-typescript-scaffold.md +361 -0
  377. package/merged-commands/javascript-typescript.md +142 -0
  378. package/merged-commands/jira-issues.md +181 -0
  379. package/merged-commands/job-application.md +90 -0
  380. package/merged-commands/julia-pro.md +209 -0
  381. package/merged-commands/k8s-manifest-generator.md +35 -0
  382. package/merged-commands/k8s-security-policies.md +346 -0
  383. package/merged-commands/kaizen.md +730 -0
  384. package/merged-commands/kotlin-specialist.md +94 -0
  385. package/merged-commands/kpi-dashboard-design.md +440 -0
  386. package/merged-commands/kubernetes-architect.md +170 -0
  387. package/merged-commands/kubernetes-specialist.md +117 -0
  388. package/merged-commands/langchain-architecture.md +350 -0
  389. package/merged-commands/langfuse.md +238 -0
  390. package/merged-commands/langgraph.md +287 -0
  391. package/merged-commands/laravel-specialist.md +101 -0
  392. package/merged-commands/last30days.md +421 -0
  393. package/merged-commands/launch-strategy.md +344 -0
  394. package/merged-commands/lead-research-assistant.md +199 -0
  395. package/merged-commands/learn.md +476 -0
  396. package/merged-commands/legacy-modernizer.md +53 -0
  397. package/merged-commands/legal-advisor.md +70 -0
  398. package/merged-commands/linear-claude-skill.md +543 -0
  399. package/merged-commands/linkerd-patterns.md +321 -0
  400. package/merged-commands/lint-and-validate.md +45 -0
  401. package/merged-commands/linux-privilege-escalation.md +504 -0
  402. package/merged-commands/linux-shell-scripting.md +504 -0
  403. package/merged-commands/llm-app-patterns.md +760 -0
  404. package/merged-commands/llm-application-dev-ai-assistant.md +35 -0
  405. package/merged-commands/llm-application-dev-langchain-agent.md +246 -0
  406. package/merged-commands/llm-application-dev-prompt-optimize.md +37 -0
  407. package/merged-commands/llm-application-dev.md +216 -0
  408. package/merged-commands/llm-evaluation.md +483 -0
  409. package/merged-commands/loki-mode.md +721 -0
  410. package/merged-commands/machine-learning-ops-ml-pipeline.md +314 -0
  411. package/merged-commands/makepad-skills.md +22 -0
  412. package/merged-commands/malware-analyst.md +247 -0
  413. package/merged-commands/markdown-novel-viewer.md +281 -0
  414. package/merged-commands/market-sizing-analysis.md +425 -0
  415. package/merged-commands/marketing-ideas.md +221 -0
  416. package/merged-commands/marketing-psychology.md +255 -0
  417. package/merged-commands/mcp-builder.md +236 -0
  418. package/merged-commands/mcp-developer.md +94 -0
  419. package/merged-commands/mcp-management.md +209 -0
  420. package/merged-commands/media-processing.md +358 -0
  421. package/merged-commands/meeting-insights-analyzer.md +327 -0
  422. package/merged-commands/memory-forensics.md +491 -0
  423. package/merged-commands/memory-safety-patterns.md +33 -0
  424. package/merged-commands/memory-systems.md +228 -0
  425. package/merged-commands/mermaid-expert.md +59 -0
  426. package/merged-commands/mermaidjs-v11.md +115 -0
  427. package/merged-commands/metasploit-framework.md +478 -0
  428. package/merged-commands/micro-saas-launcher.md +212 -0
  429. package/merged-commands/microservices-architect.md +102 -0
  430. package/merged-commands/microservices-patterns.md +35 -0
  431. package/merged-commands/minecraft-bukkit-pro.md +126 -0
  432. package/merged-commands/ml-engineer.md +168 -0
  433. package/merged-commands/ml-pipeline-workflow.md +257 -0
  434. package/merged-commands/ml-pipeline.md +111 -0
  435. package/merged-commands/mlops-engineer.md +219 -0
  436. package/merged-commands/mobile-design.md +284 -0
  437. package/merged-commands/mobile-developer.md +205 -0
  438. package/merged-commands/mobile-development.md +212 -0
  439. package/merged-commands/mobile-security-coder.md +184 -0
  440. package/merged-commands/modern-javascript-patterns.md +35 -0
  441. package/merged-commands/monitoring-expert.md +92 -0
  442. package/merged-commands/monorepo-architect.md +61 -0
  443. package/merged-commands/monorepo-management.md +35 -0
  444. package/merged-commands/moodle-external-api-development.md +597 -0
  445. package/merged-commands/mtls-configuration.md +359 -0
  446. package/merged-commands/multi-agent-brainstorming.md +256 -0
  447. package/merged-commands/multi-agent-patterns.md +262 -0
  448. package/merged-commands/multi-cloud-architecture.md +189 -0
  449. package/merged-commands/multi-platform-apps-multi-platform.md +203 -0
  450. package/merged-commands/n8n-code-python.md +750 -0
  451. package/merged-commands/n8n-mcp-tools-expert.md +654 -0
  452. package/merged-commands/n8n-node-configuration.md +796 -0
  453. package/merged-commands/nanobanana-ppt-skills.md +22 -0
  454. package/merged-commands/neon-postgres.md +56 -0
  455. package/merged-commands/nestjs-expert.md +552 -0
  456. package/merged-commands/network-101.md +342 -0
  457. package/merged-commands/network-engineer.md +169 -0
  458. package/merged-commands/nextjs-app-router-patterns.md +33 -0
  459. package/merged-commands/nextjs-best-practices.md +203 -0
  460. package/merged-commands/nextjs-developer.md +97 -0
  461. package/merged-commands/nextjs-supabase-auth.md +56 -0
  462. package/merged-commands/nft-standards.md +395 -0
  463. package/merged-commands/nodejs-backend-patterns.md +35 -0
  464. package/merged-commands/nodejs-best-practices.md +333 -0
  465. package/merged-commands/nosql-expert.md +111 -0
  466. package/merged-commands/notebooklm-skill.md +269 -0
  467. package/merged-commands/notebooklm.md +269 -0
  468. package/merged-commands/notion-template-business.md +216 -0
  469. package/merged-commands/nx-workspace-patterns.md +464 -0
  470. package/merged-commands/observability-engineer.md +237 -0
  471. package/merged-commands/observability-monitoring-monitor-setup.md +48 -0
  472. package/merged-commands/observability-monitoring-slo-implement.md +43 -0
  473. package/merged-commands/observe-whatsapp.md +109 -0
  474. package/merged-commands/obsidian-clipper-template-creator.md +64 -0
  475. package/merged-commands/on-call-handoff-patterns.md +453 -0
  476. package/merged-commands/onboarding-cro.md +433 -0
  477. package/merged-commands/openapi-spec-generation.md +33 -0
  478. package/merged-commands/page-cro.md +343 -0
  479. package/merged-commands/paid-ads.md +551 -0
  480. package/merged-commands/pandas-pro.md +96 -0
  481. package/merged-commands/parallel-agents.md +175 -0
  482. package/merged-commands/payment-integration.md +77 -0
  483. package/merged-commands/paypal-integration.md +479 -0
  484. package/merged-commands/paywall-upgrade-cro.md +570 -0
  485. package/merged-commands/pci-compliance.md +478 -0
  486. package/merged-commands/pdf-official.md +294 -0
  487. package/merged-commands/pdf.md +294 -0
  488. package/merged-commands/pentest-checklist.md +334 -0
  489. package/merged-commands/pentest-commands.md +438 -0
  490. package/merged-commands/performance-engineer.md +180 -0
  491. package/merged-commands/performance-profiling.md +143 -0
  492. package/merged-commands/performance-testing-review-ai-review.md +450 -0
  493. package/merged-commands/performance-testing-review-multi-agent-review.md +216 -0
  494. package/merged-commands/personal-tool-builder.md +289 -0
  495. package/merged-commands/php-pro.md +63 -0
  496. package/merged-commands/plaid-fintech.md +50 -0
  497. package/merged-commands/plan-writing.md +152 -0
  498. package/merged-commands/planning-with-files.md +211 -0
  499. package/merged-commands/planning.md +95 -0
  500. package/merged-commands/plans-kanban.md +166 -0
  501. package/merged-commands/playwright-expert.md +87 -0
  502. package/merged-commands/playwright-skill.md +453 -0
  503. package/merged-commands/podcast-generation.md +121 -0
  504. package/merged-commands/popup-cro.md +346 -0
  505. package/merged-commands/posix-shell-pro.md +304 -0
  506. package/merged-commands/postgres-best-practices.md +57 -0
  507. package/merged-commands/postgres-pro.md +98 -0
  508. package/merged-commands/postgresql.md +230 -0
  509. package/merged-commands/postmortem-writing.md +386 -0
  510. package/merged-commands/powershell-windows.md +167 -0
  511. package/merged-commands/pptx-official.md +484 -0
  512. package/merged-commands/pptx.md +484 -0
  513. package/merged-commands/pricing-strategy.md +356 -0
  514. package/merged-commands/prisma-expert.md +355 -0
  515. package/merged-commands/privilege-escalation-methods.md +333 -0
  516. package/merged-commands/problem-solving.md +96 -0
  517. package/merged-commands/product-manager-toolkit.md +351 -0
  518. package/merged-commands/product-strategist.md +26 -0
  519. package/merged-commands/production-code-audit.md +540 -0
  520. package/merged-commands/programmatic-seo.md +351 -0
  521. package/merged-commands/projection-patterns.md +33 -0
  522. package/merged-commands/prometheus-configuration.md +404 -0
  523. package/merged-commands/prompt-caching.md +61 -0
  524. package/merged-commands/prompt-engineer.md +272 -0
  525. package/merged-commands/prompt-engineering-patterns.md +213 -0
  526. package/merged-commands/prompt-engineering.md +171 -0
  527. package/merged-commands/prompt-library.md +322 -0
  528. package/merged-commands/protocol-reverse-engineering.md +29 -0
  529. package/merged-commands/pydantic-models.md +58 -0
  530. package/merged-commands/pypict-skill.md +22 -0
  531. package/merged-commands/python-development-python-scaffold.md +331 -0
  532. package/merged-commands/python-development.md +139 -0
  533. package/merged-commands/python-packaging.md +36 -0
  534. package/merged-commands/python-patterns.md +441 -0
  535. package/merged-commands/python-performance-optimization.md +36 -0
  536. package/merged-commands/python-pro.md +158 -0
  537. package/merged-commands/python-testing-patterns.md +37 -0
  538. package/merged-commands/qa-regression.md +337 -0
  539. package/merged-commands/quant-analyst.md +53 -0
  540. package/merged-commands/radix-ui-design-system.md +847 -0
  541. package/merged-commands/raffle-winner-picker.md +159 -0
  542. package/merged-commands/rag-architect.md +100 -0
  543. package/merged-commands/rag-engineer.md +90 -0
  544. package/merged-commands/rag-implementation.md +421 -0
  545. package/merged-commands/rails-expert.md +97 -0
  546. package/merged-commands/react-best-practices.md +121 -0
  547. package/merged-commands/react-expert.md +98 -0
  548. package/merged-commands/react-flow-node.md +66 -0
  549. package/merged-commands/react-modernization.md +34 -0
  550. package/merged-commands/react-native-architecture.md +33 -0
  551. package/merged-commands/react-native-expert.md +88 -0
  552. package/merged-commands/react-patterns.md +198 -0
  553. package/merged-commands/react-state-management.md +441 -0
  554. package/merged-commands/react-ui-patterns.md +289 -0
  555. package/merged-commands/readme.md +775 -0
  556. package/merged-commands/receiving-code-review.md +213 -0
  557. package/merged-commands/red-team-tactics.md +199 -0
  558. package/merged-commands/red-team-tools.md +310 -0
  559. package/merged-commands/reference-builder.md +188 -0
  560. package/merged-commands/referral-program.md +602 -0
  561. package/merged-commands/remotion-best-practices.md +45 -0
  562. package/merged-commands/repomix.md +275 -0
  563. package/merged-commands/requesting-code-review.md +105 -0
  564. package/merged-commands/research-engineer.md +135 -0
  565. package/merged-commands/research.md +191 -0
  566. package/merged-commands/reverse-engineer.md +173 -0
  567. package/merged-commands/risk-manager.md +61 -0
  568. package/merged-commands/risk-metrics-calculation.md +33 -0
  569. package/merged-commands/ruby-pro.md +56 -0
  570. package/merged-commands/rust-async-patterns.md +33 -0
  571. package/merged-commands/rust-engineer.md +96 -0
  572. package/merged-commands/rust-pro.md +178 -0
  573. package/merged-commands/saga-orchestration.md +496 -0
  574. package/merged-commands/sales-automator.md +55 -0
  575. package/merged-commands/salesforce-developer.md +105 -0
  576. package/merged-commands/salesforce-development.md +51 -0
  577. package/merged-commands/sast-configuration.md +212 -0
  578. package/merged-commands/scala-pro.md +82 -0
  579. package/merged-commands/scanning-tools.md +589 -0
  580. package/merged-commands/schema-markup.md +360 -0
  581. package/merged-commands/screen-reader-testing.md +33 -0
  582. package/merged-commands/screenshots.md +401 -0
  583. package/merged-commands/scroll-experience.md +263 -0
  584. package/merged-commands/search-specialist.md +80 -0
  585. package/merged-commands/secrets-management.md +364 -0
  586. package/merged-commands/secure-code-guardian.md +93 -0
  587. package/merged-commands/security-auditor.md +169 -0
  588. package/merged-commands/security-bluebook-builder.md +22 -0
  589. package/merged-commands/security-compliance-compliance-check.md +55 -0
  590. package/merged-commands/security-requirement-extraction.md +33 -0
  591. package/merged-commands/security-reviewer.md +94 -0
  592. package/merged-commands/security-scanning-security-dependencies.md +43 -0
  593. package/merged-commands/security-scanning-security-hardening.md +147 -0
  594. package/merged-commands/security-scanning-security-sast.md +495 -0
  595. package/merged-commands/segment-cdp.md +50 -0
  596. package/merged-commands/senior-architect.md +209 -0
  597. package/merged-commands/senior-backend.md +209 -0
  598. package/merged-commands/senior-computer-vision.md +226 -0
  599. package/merged-commands/senior-data-engineer.md +226 -0
  600. package/merged-commands/senior-data-scientist.md +226 -0
  601. package/merged-commands/senior-devops.md +209 -0
  602. package/merged-commands/senior-frontend.md +209 -0
  603. package/merged-commands/senior-fullstack.md +209 -0
  604. package/merged-commands/senior-ml-engineer.md +226 -0
  605. package/merged-commands/senior-prompt-engineer.md +226 -0
  606. package/merged-commands/senior-qa.md +209 -0
  607. package/merged-commands/senior-secops.md +209 -0
  608. package/merged-commands/senior-security.md +209 -0
  609. package/merged-commands/seo-audit.md +487 -0
  610. package/merged-commands/seo-authority-builder.md +136 -0
  611. package/merged-commands/seo-cannibalization-detector.md +123 -0
  612. package/merged-commands/seo-content-auditor.md +83 -0
  613. package/merged-commands/seo-content-planner.md +108 -0
  614. package/merged-commands/seo-content-refresher.md +118 -0
  615. package/merged-commands/seo-content-writer.md +96 -0
  616. package/merged-commands/seo-fundamentals.md +173 -0
  617. package/merged-commands/seo-keyword-strategist.md +95 -0
  618. package/merged-commands/seo-meta-optimizer.md +92 -0
  619. package/merged-commands/seo-snippet-hunter.md +114 -0
  620. package/merged-commands/seo-structure-architect.md +108 -0
  621. package/merged-commands/sequential-thinking.md +94 -0
  622. package/merged-commands/server-management.md +161 -0
  623. package/merged-commands/service-mesh-expert.md +58 -0
  624. package/merged-commands/service-mesh-observability.md +395 -0
  625. package/merged-commands/sharp-edges.md +70 -0
  626. package/merged-commands/shellcheck-configuration.md +466 -0
  627. package/merged-commands/shodan-reconnaissance.md +503 -0
  628. package/merged-commands/shopify-apps.md +42 -0
  629. package/merged-commands/shopify-development.md +366 -0
  630. package/merged-commands/shopify-expert.md +102 -0
  631. package/merged-commands/signup-flow-cro.md +355 -0
  632. package/merged-commands/similarity-search-patterns.md +33 -0
  633. package/merged-commands/skill-creator.md +356 -0
  634. package/merged-commands/skill-developer.md +426 -0
  635. package/merged-commands/skill-rails-upgrade.md +408 -0
  636. package/merged-commands/skill-seekers.md +22 -0
  637. package/merged-commands/skill-share.md +80 -0
  638. package/merged-commands/slack-bot-builder.md +264 -0
  639. package/merged-commands/slack-gif-creator.md +254 -0
  640. package/merged-commands/slo-implementation.md +341 -0
  641. package/merged-commands/smtp-penetration-testing.md +500 -0
  642. package/merged-commands/social-content.md +807 -0
  643. package/merged-commands/software-architecture.md +75 -0
  644. package/merged-commands/solidity-security.md +34 -0
  645. package/merged-commands/spark-engineer.md +100 -0
  646. package/merged-commands/spark-optimization.md +427 -0
  647. package/merged-commands/spec-miner.md +88 -0
  648. package/merged-commands/spring-boot-engineer.md +104 -0
  649. package/merged-commands/sql-injection-testing.md +448 -0
  650. package/merged-commands/sql-optimization-patterns.md +35 -0
  651. package/merged-commands/sql-pro.md +173 -0
  652. package/merged-commands/sqlmap-database-pentesting.md +400 -0
  653. package/merged-commands/sre-engineer.md +98 -0
  654. package/merged-commands/ssh-penetration-testing.md +488 -0
  655. package/merged-commands/startup-analyst.md +328 -0
  656. package/merged-commands/startup-business-analyst-business-case.md +487 -0
  657. package/merged-commands/startup-business-analyst-financial-projections.md +353 -0
  658. package/merged-commands/startup-business-analyst-market-opportunity.md +240 -0
  659. package/merged-commands/startup-financial-modeling.md +467 -0
  660. package/merged-commands/startup-metrics-framework.md +34 -0
  661. package/merged-commands/stitch-ui-design.md +378 -0
  662. package/merged-commands/stride-analysis-patterns.md +33 -0
  663. package/merged-commands/stripe-integration.md +454 -0
  664. package/merged-commands/subagent-driven-development.md +240 -0
  665. package/merged-commands/superpowers-lab.md +22 -0
  666. package/merged-commands/swift-expert.md +94 -0
  667. package/merged-commands/swiftui-expert-skill.md +275 -0
  668. package/merged-commands/systematic-debugging.md +296 -0
  669. package/merged-commands/systems-programming-rust-project.md +440 -0
  670. package/merged-commands/tailwind-design-system.md +33 -0
  671. package/merged-commands/tailwind-patterns.md +269 -0
  672. package/merged-commands/tavily-web.md +36 -0
  673. package/merged-commands/tdd-orchestrator.md +205 -0
  674. package/merged-commands/tdd-workflow.md +149 -0
  675. package/merged-commands/tdd-workflows-tdd-cycle.md +221 -0
  676. package/merged-commands/tdd-workflows-tdd-green.md +73 -0
  677. package/merged-commands/tdd-workflows-tdd-red.md +164 -0
  678. package/merged-commands/tdd-workflows-tdd-refactor.md +187 -0
  679. package/merged-commands/team-collaboration-issue.md +37 -0
  680. package/merged-commands/team-collaboration-standup-notes.md +44 -0
  681. package/merged-commands/team-composition-analysis.md +413 -0
  682. package/merged-commands/telegram-bot-builder.md +254 -0
  683. package/merged-commands/telegram-mini-app.md +279 -0
  684. package/merged-commands/template-skill.md +6 -0
  685. package/merged-commands/temporal-python-pro.md +370 -0
  686. package/merged-commands/temporal-python-testing.md +170 -0
  687. package/merged-commands/terraform-engineer.md +97 -0
  688. package/merged-commands/terraform-module-library.md +261 -0
  689. package/merged-commands/terraform-skill.md +517 -0
  690. package/merged-commands/terraform-specialist.md +166 -0
  691. package/merged-commands/test-automator.md +224 -0
  692. package/merged-commands/test-driven-development.md +371 -0
  693. package/merged-commands/test-fixing.md +119 -0
  694. package/merged-commands/test-master.md +104 -0
  695. package/merged-commands/testing-patterns.md +259 -0
  696. package/merged-commands/theme-factory.md +59 -0
  697. package/merged-commands/threat-mitigation-mapping.md +33 -0
  698. package/merged-commands/threat-modeling-expert.md +60 -0
  699. package/merged-commands/threejs-skills.md +22 -0
  700. package/merged-commands/threejs.md +89 -0
  701. package/merged-commands/tool-design.md +318 -0
  702. package/merged-commands/top-web-vulnerabilities.md +543 -0
  703. package/merged-commands/track-management.md +38 -0
  704. package/merged-commands/trigger-dev.md +67 -0
  705. package/merged-commands/turborepo-caching.md +419 -0
  706. package/merged-commands/tutorial-engineer.md +139 -0
  707. package/merged-commands/twilio-communications.md +295 -0
  708. package/merged-commands/typescript-advanced-types.md +35 -0
  709. package/merged-commands/typescript-expert.md +429 -0
  710. package/merged-commands/typescript-pro.md +55 -0
  711. package/merged-commands/ui-design-system.md +32 -0
  712. package/merged-commands/ui-skills.md +22 -0
  713. package/merged-commands/ui-styling.md +321 -0
  714. package/merged-commands/ui-ux-designer.md +209 -0
  715. package/merged-commands/ui-ux-pro-max.md +351 -0
  716. package/merged-commands/ui-visual-validator.md +214 -0
  717. package/merged-commands/unit-testing-test-generate.md +319 -0
  718. package/merged-commands/unity-developer.md +230 -0
  719. package/merged-commands/unity-ecs-patterns.md +33 -0
  720. package/merged-commands/unreal-engine-cpp-pro.md +114 -0
  721. package/merged-commands/upgrading-expo.md +118 -0
  722. package/merged-commands/upstash-qstash.md +68 -0
  723. package/merged-commands/using-git-worktrees.md +217 -0
  724. package/merged-commands/using-neon.md +84 -0
  725. package/merged-commands/using-superpowers.md +87 -0
  726. package/merged-commands/uv-package-manager.md +37 -0
  727. package/merged-commands/ux-researcher-designer.md +30 -0
  728. package/merged-commands/varlock-claude-skill.md +22 -0
  729. package/merged-commands/vector-database-engineer.md +60 -0
  730. package/merged-commands/vector-index-tuning.md +42 -0
  731. package/merged-commands/vercel-deploy-claimable.md +120 -0
  732. package/merged-commands/vercel-deploy.md +22 -0
  733. package/merged-commands/vercel-deployment.md +79 -0
  734. package/merged-commands/verification-before-completion.md +139 -0
  735. package/merged-commands/vexor.md +22 -0
  736. package/merged-commands/video-downloader.md +106 -0
  737. package/merged-commands/viral-generator-builder.md +199 -0
  738. package/merged-commands/voice-agents.md +68 -0
  739. package/merged-commands/voice-ai-development.md +302 -0
  740. package/merged-commands/voice-ai-engine-development.md +721 -0
  741. package/merged-commands/vue-expert-js.md +91 -0
  742. package/merged-commands/vue-expert.md +374 -0
  743. package/merged-commands/vulnerability-scanner.md +276 -0
  744. package/merged-commands/wcag-audit-patterns.md +41 -0
  745. package/merged-commands/web-artifacts-builder.md +74 -0
  746. package/merged-commands/web-design-guidelines.md +36 -0
  747. package/merged-commands/web-frameworks.md +324 -0
  748. package/merged-commands/web-performance-optimization.md +646 -0
  749. package/merged-commands/web3-testing.md +427 -0
  750. package/merged-commands/webapp-testing.md +96 -0
  751. package/merged-commands/websocket-engineer.md +96 -0
  752. package/merged-commands/windows-privilege-escalation.md +496 -0
  753. package/merged-commands/wireshark-analysis.md +497 -0
  754. package/merged-commands/wordpress-penetration-testing.md +485 -0
  755. package/merged-commands/wordpress-pro.md +105 -0
  756. package/merged-commands/workflow-automation.md +68 -0
  757. package/merged-commands/workflow-orchestration-patterns.md +333 -0
  758. package/merged-commands/workflow-patterns.md +38 -0
  759. package/merged-commands/writing-plans.md +116 -0
  760. package/merged-commands/writing-skills.md +125 -0
  761. package/merged-commands/x-article-publisher-skill.md +22 -0
  762. package/merged-commands/xlsx-official.md +289 -0
  763. package/merged-commands/xlsx.md +289 -0
  764. package/merged-commands/xss-html-injection.md +499 -0
  765. package/merged-commands/youtube-transcript.md +415 -0
  766. package/merged-commands/zapier-make-patterns.md +67 -0
  767. package/merged-commands/zustand-store.md +68 -0
  768. package/package.json +1 -1
  769. package/scripts/merge-commands.js +21 -0
@@ -0,0 +1,597 @@
1
+ ---
2
+ name: moodle-external-api-development
3
+ description: Create custom external web service APIs for Moodle LMS. Use when implementing web services for course management, user tracking, quiz operations, or custom plugin functionality. Covers parameter validation, database operations, error handling, service registration, and Moodle coding standards.
4
+ ---
5
+
6
+ # Moodle External API Development
7
+
8
+ This skill guides you through creating custom external web service APIs for Moodle LMS, following Moodle's external API framework and coding standards.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Creating custom web services for Moodle plugins
13
+ - Implementing REST/AJAX endpoints for course management
14
+ - Building APIs for quiz operations, user tracking, or reporting
15
+ - Exposing Moodle functionality to external applications
16
+ - Developing mobile app backends using Moodle
17
+
18
+ ## Core Architecture Pattern
19
+
20
+ Moodle external APIs follow a strict three-method pattern:
21
+
22
+ 1. **`execute_parameters()`** - Defines input parameter structure
23
+ 2. **`execute()`** - Contains business logic
24
+ 3. **`execute_returns()`** - Defines return structure
25
+
26
+ ## Step-by-Step Implementation
27
+
28
+ ### Step 1: Create the External API Class File
29
+
30
+ **Location**: `/local/yourplugin/classes/external/your_api_name.php`
31
+
32
+ ```php
33
+ <?php
34
+ namespace local_yourplugin\external;
35
+
36
+ defined('MOODLE_INTERNAL') || die();
37
+ require_once("$CFG->libdir/externallib.php");
38
+
39
+ use external_api;
40
+ use external_function_parameters;
41
+ use external_single_structure;
42
+ use external_value;
43
+
44
+ class your_api_name extends external_api {
45
+
46
+ // Three required methods will go here
47
+
48
+ }
49
+ ```
50
+
51
+ **Key Points**:
52
+ - Class must extend `external_api`
53
+ - Namespace follows: `local_pluginname\external` or `mod_modname\external`
54
+ - Include the security check: `defined('MOODLE_INTERNAL') || die();`
55
+ - Require externallib.php for base classes
56
+
57
+ ### Step 2: Define Input Parameters
58
+
59
+ ```php
60
+ public static function execute_parameters() {
61
+ return new external_function_parameters([
62
+ 'userid' => new external_value(PARAM_INT, 'User ID', VALUE_REQUIRED),
63
+ 'courseid' => new external_value(PARAM_INT, 'Course ID', VALUE_REQUIRED),
64
+ 'options' => new external_single_structure([
65
+ 'includedetails' => new external_value(PARAM_BOOL, 'Include details', VALUE_DEFAULT, false),
66
+ 'limit' => new external_value(PARAM_INT, 'Result limit', VALUE_DEFAULT, 10)
67
+ ], 'Options', VALUE_OPTIONAL)
68
+ ]);
69
+ }
70
+ ```
71
+
72
+ **Common Parameter Types**:
73
+ - `PARAM_INT` - Integers
74
+ - `PARAM_TEXT` - Plain text (HTML stripped)
75
+ - `PARAM_RAW` - Raw text (no cleaning)
76
+ - `PARAM_BOOL` - Boolean values
77
+ - `PARAM_FLOAT` - Floating point numbers
78
+ - `PARAM_ALPHANUMEXT` - Alphanumeric with extended chars
79
+
80
+ **Structures**:
81
+ - `external_value` - Single value
82
+ - `external_single_structure` - Object with named fields
83
+ - `external_multiple_structure` - Array of items
84
+
85
+ **Value Flags**:
86
+ - `VALUE_REQUIRED` - Parameter must be provided
87
+ - `VALUE_OPTIONAL` - Parameter is optional
88
+ - `VALUE_DEFAULT, defaultvalue` - Optional with default
89
+
90
+ ### Step 3: Implement Business Logic
91
+
92
+ ```php
93
+ public static function execute($userid, $courseid, $options = []) {
94
+ global $DB, $USER;
95
+
96
+ // 1. Validate parameters
97
+ $params = self::validate_parameters(self::execute_parameters(), [
98
+ 'userid' => $userid,
99
+ 'courseid' => $courseid,
100
+ 'options' => $options
101
+ ]);
102
+
103
+ // 2. Check permissions/capabilities
104
+ $context = \context_course::instance($params['courseid']);
105
+ self::validate_context($context);
106
+ require_capability('moodle/course:view', $context);
107
+
108
+ // 3. Verify user access
109
+ if ($params['userid'] != $USER->id) {
110
+ require_capability('moodle/course:viewhiddenactivities', $context);
111
+ }
112
+
113
+ // 4. Database operations
114
+ $sql = "SELECT id, name, timecreated
115
+ FROM {your_table}
116
+ WHERE userid = :userid
117
+ AND courseid = :courseid
118
+ LIMIT :limit";
119
+
120
+ $records = $DB->get_records_sql($sql, [
121
+ 'userid' => $params['userid'],
122
+ 'courseid' => $params['courseid'],
123
+ 'limit' => $params['options']['limit']
124
+ ]);
125
+
126
+ // 5. Process and return data
127
+ $results = [];
128
+ foreach ($records as $record) {
129
+ $results[] = [
130
+ 'id' => $record->id,
131
+ 'name' => $record->name,
132
+ 'timestamp' => $record->timecreated
133
+ ];
134
+ }
135
+
136
+ return [
137
+ 'items' => $results,
138
+ 'count' => count($results)
139
+ ];
140
+ }
141
+ ```
142
+
143
+ **Critical Steps**:
144
+ 1. **Always validate parameters** using `validate_parameters()`
145
+ 2. **Check context** using `validate_context()`
146
+ 3. **Verify capabilities** using `require_capability()`
147
+ 4. **Use parameterized queries** to prevent SQL injection
148
+ 5. **Return structured data** matching return definition
149
+
150
+ ### Step 4: Define Return Structure
151
+
152
+ ```php
153
+ public static function execute_returns() {
154
+ return new external_single_structure([
155
+ 'items' => new external_multiple_structure(
156
+ new external_single_structure([
157
+ 'id' => new external_value(PARAM_INT, 'Item ID'),
158
+ 'name' => new external_value(PARAM_TEXT, 'Item name'),
159
+ 'timestamp' => new external_value(PARAM_INT, 'Creation time')
160
+ ])
161
+ ),
162
+ 'count' => new external_value(PARAM_INT, 'Total items')
163
+ ]);
164
+ }
165
+ ```
166
+
167
+ **Return Structure Rules**:
168
+ - Must match exactly what `execute()` returns
169
+ - Use appropriate parameter types
170
+ - Document each field with description
171
+ - Nested structures allowed
172
+
173
+ ### Step 5: Register the Service
174
+
175
+ **Location**: `/local/yourplugin/db/services.php`
176
+
177
+ ```php
178
+ <?php
179
+ defined('MOODLE_INTERNAL') || die();
180
+
181
+ $functions = [
182
+ 'local_yourplugin_your_api_name' => [
183
+ 'classname' => 'local_yourplugin\external\your_api_name',
184
+ 'methodname' => 'execute',
185
+ 'classpath' => 'local/yourplugin/classes/external/your_api_name.php',
186
+ 'description' => 'Brief description of what this API does',
187
+ 'type' => 'read', // or 'write'
188
+ 'ajax' => true,
189
+ 'capabilities'=> 'moodle/course:view', // comma-separated if multiple
190
+ 'services' => [MOODLE_OFFICIAL_MOBILE_SERVICE] // Optional
191
+ ],
192
+ ];
193
+
194
+ $services = [
195
+ 'Your Plugin Web Service' => [
196
+ 'functions' => [
197
+ 'local_yourplugin_your_api_name'
198
+ ],
199
+ 'restrictedusers' => 0,
200
+ 'enabled' => 1
201
+ ]
202
+ ];
203
+ ```
204
+
205
+ **Service Registration Keys**:
206
+ - `classname` - Full namespaced class name
207
+ - `methodname` - Always 'execute'
208
+ - `type` - 'read' (SELECT) or 'write' (INSERT/UPDATE/DELETE)
209
+ - `ajax` - Set true for AJAX/REST access
210
+ - `capabilities` - Required Moodle capabilities
211
+ - `services` - Optional service bundles
212
+
213
+ ### Step 6: Implement Error Handling & Logging
214
+
215
+ ```php
216
+ private static function log_debug($message) {
217
+ global $CFG;
218
+ $logdir = $CFG->dataroot . '/local_yourplugin';
219
+ if (!file_exists($logdir)) {
220
+ mkdir($logdir, 0777, true);
221
+ }
222
+ $debuglog = $logdir . '/api_debug.log';
223
+ $timestamp = date('Y-m-d H:i:s');
224
+ file_put_contents($debuglog, "[$timestamp] $message\n", FILE_APPEND | LOCK_EX);
225
+ }
226
+
227
+ public static function execute($userid, $courseid) {
228
+ global $DB;
229
+
230
+ try {
231
+ self::log_debug("API called: userid=$userid, courseid=$courseid");
232
+
233
+ // Validate parameters
234
+ $params = self::validate_parameters(self::execute_parameters(), [
235
+ 'userid' => $userid,
236
+ 'courseid' => $courseid
237
+ ]);
238
+
239
+ // Your logic here
240
+
241
+ self::log_debug("API completed successfully");
242
+ return $result;
243
+
244
+ } catch (\invalid_parameter_exception $e) {
245
+ self::log_debug("Parameter validation failed: " . $e->getMessage());
246
+ throw $e;
247
+ } catch (\moodle_exception $e) {
248
+ self::log_debug("Moodle exception: " . $e->getMessage());
249
+ throw $e;
250
+ } catch (\Exception $e) {
251
+ // Log detailed error info
252
+ $lastsql = method_exists($DB, 'get_last_sql') ? $DB->get_last_sql() : '[N/A]';
253
+ self::log_debug("Fatal error: " . $e->getMessage());
254
+ self::log_debug("Last SQL: " . $lastsql);
255
+ self::log_debug("Stack trace: " . $e->getTraceAsString());
256
+ throw $e;
257
+ }
258
+ }
259
+ ```
260
+
261
+ **Error Handling Best Practices**:
262
+ - Wrap logic in try-catch blocks
263
+ - Log errors with timestamps and context
264
+ - Capture SQL queries on database errors
265
+ - Preserve stack traces for debugging
266
+ - Re-throw exceptions after logging
267
+
268
+ ## Advanced Patterns
269
+
270
+ ### Complex Database Operations
271
+
272
+ ```php
273
+ // Transaction example
274
+ $transaction = $DB->start_delegated_transaction();
275
+
276
+ try {
277
+ // Insert record
278
+ $recordid = $DB->insert_record('your_table', $dataobject);
279
+
280
+ // Update related records
281
+ $DB->set_field('another_table', 'status', 1, ['recordid' => $recordid]);
282
+
283
+ // Commit transaction
284
+ $transaction->allow_commit();
285
+ } catch (\Exception $e) {
286
+ $transaction->rollback($e);
287
+ throw $e;
288
+ }
289
+ ```
290
+
291
+ ### Working with Course Modules
292
+
293
+ ```php
294
+ // Create course module
295
+ $moduleid = $DB->get_field('modules', 'id', ['name' => 'quiz'], MUST_EXIST);
296
+
297
+ $cm = new \stdClass();
298
+ $cm->course = $courseid;
299
+ $cm->module = $moduleid;
300
+ $cm->instance = 0; // Will be updated after activity creation
301
+ $cm->visible = 1;
302
+ $cm->groupmode = 0;
303
+ $cmid = add_course_module($cm);
304
+
305
+ // Create activity instance (e.g., quiz)
306
+ $quiz = new \stdClass();
307
+ $quiz->course = $courseid;
308
+ $quiz->name = 'My Quiz';
309
+ $quiz->coursemodule = $cmid;
310
+ // ... other quiz fields ...
311
+
312
+ $quizid = quiz_add_instance($quiz, null);
313
+
314
+ // Update course module with instance ID
315
+ $DB->set_field('course_modules', 'instance', $quizid, ['id' => $cmid]);
316
+ course_add_cm_to_section($courseid, $cmid, 0);
317
+ ```
318
+
319
+ ### Access Restrictions (Groups/Availability)
320
+
321
+ ```php
322
+ // Restrict activity to specific user via group
323
+ $groupname = 'activity_' . $activityid . '_user_' . $userid;
324
+
325
+ // Create or get group
326
+ if (!$groupid = $DB->get_field('groups', 'id', ['courseid' => $courseid, 'name' => $groupname])) {
327
+ $groupdata = (object)[
328
+ 'courseid' => $courseid,
329
+ 'name' => $groupname,
330
+ 'timecreated' => time(),
331
+ 'timemodified' => time()
332
+ ];
333
+ $groupid = $DB->insert_record('groups', $groupdata);
334
+ }
335
+
336
+ // Add user to group
337
+ if (!$DB->record_exists('groups_members', ['groupid' => $groupid, 'userid' => $userid])) {
338
+ $DB->insert_record('groups_members', (object)[
339
+ 'groupid' => $groupid,
340
+ 'userid' => $userid,
341
+ 'timeadded' => time()
342
+ ]);
343
+ }
344
+
345
+ // Set availability condition
346
+ $restriction = [
347
+ 'op' => '&',
348
+ 'show' => false,
349
+ 'c' => [
350
+ [
351
+ 'type' => 'group',
352
+ 'id' => $groupid
353
+ ]
354
+ ],
355
+ 'showc' => [false]
356
+ ];
357
+
358
+ $DB->set_field('course_modules', 'availability', json_encode($restriction), ['id' => $cmid]);
359
+ ```
360
+
361
+ ### Random Question Selection with Tags
362
+
363
+ ```php
364
+ private static function get_random_questions($categoryid, $tagname, $limit) {
365
+ global $DB;
366
+
367
+ $sql = "SELECT q.id
368
+ FROM {question} q
369
+ INNER JOIN {question_versions} qv ON qv.questionid = q.id
370
+ INNER JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
371
+ INNER JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
372
+ JOIN {tag_instance} ti ON ti.itemid = q.id
373
+ JOIN {tag} t ON t.id = ti.tagid
374
+ WHERE LOWER(t.name) = :tagname
375
+ AND qc.id = :categoryid
376
+ AND ti.itemtype = 'question'
377
+ AND q.qtype = 'multichoice'";
378
+
379
+ $qids = $DB->get_fieldset_sql($sql, [
380
+ 'categoryid' => $categoryid,
381
+ 'tagname' => strtolower($tagname)
382
+ ]);
383
+
384
+ shuffle($qids);
385
+ return array_slice($qids, 0, $limit);
386
+ }
387
+ ```
388
+
389
+ ## Testing Your API
390
+
391
+ ### 1. Via Moodle Web Services Test Client
392
+
393
+ 1. Enable web services: **Site administration > Advanced features**
394
+ 2. Enable REST protocol: **Site administration > Plugins > Web services > Manage protocols**
395
+ 3. Create service: **Site administration > Server > Web services > External services**
396
+ 4. Test function: **Site administration > Development > Web service test client**
397
+
398
+ ### 2. Via curl
399
+
400
+ ```bash
401
+ # Get token first
402
+ curl -X POST "https://yourmoodle.com/login/token.php" \
403
+ -d "username=admin" \
404
+ -d "password=yourpassword" \
405
+ -d "service=moodle_mobile_app"
406
+
407
+ # Call your API
408
+ curl -X POST "https://yourmoodle.com/webservice/rest/server.php" \
409
+ -d "wstoken=YOUR_TOKEN" \
410
+ -d "wsfunction=local_yourplugin_your_api_name" \
411
+ -d "moodlewsrestformat=json" \
412
+ -d "userid=2" \
413
+ -d "courseid=3"
414
+ ```
415
+
416
+ ### 3. Via JavaScript (AJAX)
417
+
418
+ ```javascript
419
+ require(['core/ajax'], function(ajax) {
420
+ var promises = ajax.call([{
421
+ methodname: 'local_yourplugin_your_api_name',
422
+ args: {
423
+ userid: 2,
424
+ courseid: 3
425
+ }
426
+ }]);
427
+
428
+ promises[0].done(function(response) {
429
+ console.log('Success:', response);
430
+ }).fail(function(error) {
431
+ console.error('Error:', error);
432
+ });
433
+ });
434
+ ```
435
+
436
+ ## Common Pitfalls & Solutions
437
+
438
+ ### 1. "Function not found" Error
439
+ **Solution**:
440
+ - Purge caches: **Site administration > Development > Purge all caches**
441
+ - Verify function name in services.php matches exactly
442
+ - Check namespace and class name are correct
443
+
444
+ ### 2. "Invalid parameter value detected"
445
+ **Solution**:
446
+ - Ensure parameter types match between definition and usage
447
+ - Check required vs optional parameters
448
+ - Validate nested structure definitions
449
+
450
+ ### 3. SQL Injection Vulnerabilities
451
+ **Solution**:
452
+ - Always use placeholder parameters (`:paramname`)
453
+ - Never concatenate user input into SQL strings
454
+ - Use Moodle's database methods: `get_record()`, `get_records()`, etc.
455
+
456
+ ### 4. Permission Denied Errors
457
+ **Solution**:
458
+ - Call `self::validate_context($context)` early in execute()
459
+ - Check required capabilities match user's permissions
460
+ - Verify user has role assignments in the context
461
+
462
+ ### 5. Transaction Deadlocks
463
+ **Solution**:
464
+ - Keep transactions short
465
+ - Always commit or rollback in finally blocks
466
+ - Avoid nested transactions
467
+
468
+ ## Debugging Checklist
469
+
470
+ - [ ] Check Moodle debug mode: **Site administration > Development > Debugging**
471
+ - [ ] Review web services logs: **Site administration > Reports > Logs**
472
+ - [ ] Check custom log files in `$CFG->dataroot/local_yourplugin/`
473
+ - [ ] Verify database queries using `$DB->set_debug(true)`
474
+ - [ ] Test with admin user to rule out permission issues
475
+ - [ ] Clear browser cache and Moodle caches
476
+ - [ ] Check PHP error logs on server
477
+
478
+ ## Plugin Structure Checklist
479
+
480
+ ```
481
+ local/yourplugin/
482
+ ├── version.php # Plugin version and metadata
483
+ ├── db/
484
+ │ ├── services.php # External service definitions
485
+ │ └── access.php # Capability definitions (optional)
486
+ ├── classes/
487
+ │ └── external/
488
+ │ ├── your_api_name.php # External API implementation
489
+ │ └── another_api.php # Additional APIs
490
+ ├── lang/
491
+ │ └── en/
492
+ │ └── local_yourplugin.php # Language strings
493
+ └── tests/
494
+ └── external_test.php # Unit tests (optional but recommended)
495
+ ```
496
+
497
+ ## Examples from Real Implementation
498
+
499
+ ### Simple Read API (Get Quiz Attempts)
500
+
501
+ ```php
502
+ <?php
503
+ namespace local_userlog\external;
504
+
505
+ defined('MOODLE_INTERNAL') || die();
506
+ require_once("$CFG->libdir/externallib.php");
507
+
508
+ use external_api;
509
+ use external_function_parameters;
510
+ use external_single_structure;
511
+ use external_value;
512
+
513
+ class get_quiz_attempts extends external_api {
514
+ public static function execute_parameters() {
515
+ return new external_function_parameters([
516
+ 'userid' => new external_value(PARAM_INT, 'User ID'),
517
+ 'courseid' => new external_value(PARAM_INT, 'Course ID')
518
+ ]);
519
+ }
520
+
521
+ public static function execute($userid, $courseid) {
522
+ global $DB;
523
+
524
+ self::validate_parameters(self::execute_parameters(), [
525
+ 'userid' => $userid,
526
+ 'courseid' => $courseid
527
+ ]);
528
+
529
+ $sql = "SELECT COUNT(*) AS quiz_attempts
530
+ FROM {quiz_attempts} qa
531
+ JOIN {quiz} q ON qa.quiz = q.id
532
+ WHERE qa.userid = :userid AND q.course = :courseid";
533
+
534
+ $attempts = $DB->get_field_sql($sql, [
535
+ 'userid' => $userid,
536
+ 'courseid' => $courseid
537
+ ]);
538
+
539
+ return ['quiz_attempts' => (int)$attempts];
540
+ }
541
+
542
+ public static function execute_returns() {
543
+ return new external_single_structure([
544
+ 'quiz_attempts' => new external_value(PARAM_INT, 'Total number of quiz attempts')
545
+ ]);
546
+ }
547
+ }
548
+ ```
549
+
550
+ ### Complex Write API (Create Quiz from Categories)
551
+
552
+ See attached `create_quiz_from_categories.php` for a comprehensive example including:
553
+ - Multiple database insertions
554
+ - Course module creation
555
+ - Quiz instance configuration
556
+ - Random question selection with tags
557
+ - Group-based access restrictions
558
+ - Extensive error logging
559
+ - Transaction management
560
+
561
+ ## Quick Reference: Common Moodle Tables
562
+
563
+ | Table | Purpose |
564
+ |-------|---------|
565
+ | `{user}` | User accounts |
566
+ | `{course}` | Courses |
567
+ | `{course_modules}` | Activity instances in courses |
568
+ | `{modules}` | Available activity types (quiz, forum, etc.) |
569
+ | `{quiz}` | Quiz configurations |
570
+ | `{quiz_attempts}` | Quiz attempt records |
571
+ | `{question}` | Question bank |
572
+ | `{question_categories}` | Question categories |
573
+ | `{grade_items}` | Gradebook items |
574
+ | `{grade_grades}` | Student grades |
575
+ | `{groups}` | Course groups |
576
+ | `{groups_members}` | Group memberships |
577
+ | `{logstore_standard_log}` | Activity logs |
578
+
579
+ ## Additional Resources
580
+
581
+ - [Moodle External API Documentation](https://moodledev.io/docs/5.2/apis/subsystems/external/functions)
582
+ - [Moodle Coding Style](https://moodledev.io/general/development/policies/codingstyle)
583
+ - [Moodle Database API](https://moodledev.io/docs/5.2/apis/core/dml)
584
+ - [Web Services API Documentation](https://moodledev.io/docs/5.2/apis/subsystems/external)
585
+
586
+ ## Guidelines
587
+
588
+ - Always validate input parameters using `validate_parameters()`
589
+ - Check user context and capabilities before operations
590
+ - Use parameterized SQL queries (never string concatenation)
591
+ - Implement comprehensive error handling and logging
592
+ - Follow Moodle naming conventions (lowercase, underscores)
593
+ - Document all parameters and return values clearly
594
+ - Test with different user roles and permissions
595
+ - Consider transaction safety for write operations
596
+ - Purge caches after service registration changes
597
+ - Keep API methods focused and single-purpose