dojo.md 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/courses/GENERATION_LOG.md +72 -0
  2. package/courses/api-error-handling/course.yaml +16 -0
  3. package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
  4. package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
  5. package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
  6. package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
  7. package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
  8. package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
  9. package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
  10. package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
  11. package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
  12. package/courses/aws-lambda-debugging/course.yaml +11 -0
  13. package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
  14. package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
  15. package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
  16. package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
  17. package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
  18. package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
  19. package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
  20. package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
  21. package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
  22. package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
  23. package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
  24. package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
  25. package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
  26. package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
  27. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
  28. package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
  29. package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
  30. package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
  31. package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
  32. package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
  33. package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
  34. package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
  35. package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
  36. package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
  37. package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
  38. package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
  39. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
  40. package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
  41. package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
  42. package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
  43. package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
  44. package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
  45. package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
  46. package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
  47. package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
  48. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
  49. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
  50. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
  51. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
  52. package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
  53. package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
  54. package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
  55. package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
  56. package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
  57. package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
  58. package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
  59. package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
  60. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
  61. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
  62. package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
  63. package/courses/docker-container-debugging/course.yaml +11 -0
  64. package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
  65. package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
  66. package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
  67. package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
  68. package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
  69. package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
  70. package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
  71. package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
  72. package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
  73. package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
  74. package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
  75. package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
  76. package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
  77. package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
  78. package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
  79. package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
  80. package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
  81. package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
  82. package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
  83. package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
  84. package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
  85. package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
  86. package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
  87. package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
  88. package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
  89. package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
  90. package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
  91. package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
  92. package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
  93. package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
  94. package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
  95. package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
  96. package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
  97. package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
  98. package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
  99. package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
  100. package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
  101. package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
  102. package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
  103. package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
  104. package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
  105. package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
  106. package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
  107. package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
  108. package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
  109. package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
  110. package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
  111. package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
  112. package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
  113. package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
  114. package/courses/github-actions-cicd/course.yaml +10 -0
  115. package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
  116. package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
  117. package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
  118. package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
  119. package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
  120. package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
  121. package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
  122. package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
  123. package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
  124. package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
  125. package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
  126. package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
  127. package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
  128. package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
  129. package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
  130. package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
  131. package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
  132. package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
  133. package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
  134. package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
  135. package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
  136. package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
  137. package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
  138. package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
  139. package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
  140. package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
  141. package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
  142. package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
  143. package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
  144. package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
  145. package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
  146. package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
  147. package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
  148. package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
  149. package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
  150. package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
  151. package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
  152. package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
  153. package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
  154. package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
  155. package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
  156. package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
  157. package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
  158. package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
  159. package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
  160. package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
  161. package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
  162. package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
  163. package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
  164. package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
  165. package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
  166. package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
  167. package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
  168. package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
  169. package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
  170. package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
  171. package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
  172. package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
  173. package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
  174. package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
  175. package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
  176. package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
  177. package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
  178. package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
  179. package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
  180. package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
  181. package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
  182. package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
  183. package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
  184. package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
  185. package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
  186. package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
  187. package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
  188. package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
  189. package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
  190. package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
  191. package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
  192. package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
  193. package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
  194. package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
  195. package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
  196. package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
  197. package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
  198. package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
  199. package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
  200. package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
  201. package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
  202. package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
  203. package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
  204. package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
  205. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
  206. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
  207. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
  208. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
  209. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
  210. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
  211. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
  212. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
  213. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
  214. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
  215. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
  216. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
  217. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
  218. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
  219. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
  220. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
  221. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
  222. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
  223. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
  224. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
  225. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
  226. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
  227. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
  228. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
  229. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
  230. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
  231. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
  232. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
  233. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
  234. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
  235. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
  236. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
  237. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
  238. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
  239. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
  240. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
  241. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
  242. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
  243. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
  244. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
  245. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
  246. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
  247. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
  248. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
  249. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
  250. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
  251. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
  252. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
  253. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
  254. package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
  255. package/courses/mysql-query-optimization/course.yaml +11 -0
  256. package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
  257. package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
  258. package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
  259. package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
  260. package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
  261. package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
  262. package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
  263. package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
  264. package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
  265. package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
  266. package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
  267. package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
  268. package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
  269. package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
  270. package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
  271. package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
  272. package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
  273. package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
  274. package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
  275. package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
  276. package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  277. package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
  278. package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
  279. package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
  280. package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
  281. package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
  282. package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
  283. package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
  284. package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
  285. package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
  286. package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
  287. package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
  288. package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
  289. package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
  290. package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
  291. package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
  292. package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
  293. package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
  294. package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
  295. package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
  296. package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
  297. package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
  298. package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
  299. package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
  300. package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
  301. package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
  302. package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
  303. package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
  304. package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
  305. package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
  306. package/courses/postgresql-query-optimization/course.yaml +11 -0
  307. package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
  308. package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
  309. package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
  310. package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
  311. package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
  312. package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
  313. package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
  314. package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
  315. package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
  316. package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
  317. package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
  318. package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
  319. package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
  320. package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
  321. package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
  322. package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
  323. package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
  324. package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
  325. package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
  326. package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
  327. package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
  328. package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
  329. package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
  330. package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
  331. package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
  332. package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
  333. package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
  334. package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
  335. package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
  336. package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
  337. package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
  338. package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
  339. package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
  340. package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
  341. package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
  342. package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
  343. package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
  344. package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
  345. package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
  346. package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
  347. package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
  348. package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
  349. package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
  350. package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
  351. package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
  352. package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
  353. package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
  354. package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
  355. package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
  356. package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
  357. package/courses/rest-api-error-handling/course.yaml +11 -0
  358. package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
  359. package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
  360. package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
  361. package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
  362. package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
  363. package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
  364. package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
  365. package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
  366. package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
  367. package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
  368. package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
  369. package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
  370. package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
  371. package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
  372. package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
  373. package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
  374. package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
  375. package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
  376. package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
  377. package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
  378. package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
  379. package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
  380. package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
  381. package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
  382. package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
  383. package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
  384. package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
  385. package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
  386. package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
  387. package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
  388. package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
  389. package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
  390. package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
  391. package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
  392. package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
  393. package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
  394. package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
  395. package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
  396. package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
  397. package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
  398. package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
  399. package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
  400. package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
  401. package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
  402. package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
  403. package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
  404. package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
  405. package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
  406. package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
  407. package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
  408. package/courses/terraform-infrastructure-setup/course.yaml +11 -0
  409. package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
  410. package/dist/cli/commands/add.d.ts.map +1 -1
  411. package/dist/cli/commands/add.js +6 -5
  412. package/dist/cli/commands/add.js.map +1 -1
  413. package/dist/cli/commands/generate.d.ts.map +1 -1
  414. package/dist/cli/commands/generate.js +4 -0
  415. package/dist/cli/commands/generate.js.map +1 -1
  416. package/dist/cli/commands/list.d.ts.map +1 -1
  417. package/dist/cli/commands/list.js +6 -18
  418. package/dist/cli/commands/list.js.map +1 -1
  419. package/dist/cli/commands/train.d.ts.map +1 -1
  420. package/dist/cli/commands/train.js +18 -18
  421. package/dist/cli/commands/train.js.map +1 -1
  422. package/dist/cli/index.js +93 -55
  423. package/dist/cli/index.js.map +1 -1
  424. package/dist/cli/run-demo.js +2 -1
  425. package/dist/cli/run-demo.js.map +1 -1
  426. package/dist/cli/setup.d.ts +18 -0
  427. package/dist/cli/setup.d.ts.map +1 -0
  428. package/dist/cli/setup.js +154 -0
  429. package/dist/cli/setup.js.map +1 -0
  430. package/dist/engine/agent-bridge.d.ts +5 -2
  431. package/dist/engine/agent-bridge.d.ts.map +1 -1
  432. package/dist/engine/agent-bridge.js +36 -9
  433. package/dist/engine/agent-bridge.js.map +1 -1
  434. package/dist/engine/loader.d.ts +21 -0
  435. package/dist/engine/loader.d.ts.map +1 -1
  436. package/dist/engine/loader.js +54 -1
  437. package/dist/engine/loader.js.map +1 -1
  438. package/dist/engine/training-loop.d.ts.map +1 -1
  439. package/dist/engine/training-loop.js +1 -0
  440. package/dist/engine/training-loop.js.map +1 -1
  441. package/dist/engine/training.d.ts.map +1 -1
  442. package/dist/engine/training.js +1 -0
  443. package/dist/engine/training.js.map +1 -1
  444. package/dist/generator/skill-generator.d.ts +1 -1
  445. package/dist/generator/skill-generator.d.ts.map +1 -1
  446. package/dist/generator/skill-generator.js +21 -2
  447. package/dist/generator/skill-generator.js.map +1 -1
  448. package/dist/mcp/server.d.ts.map +1 -1
  449. package/dist/mcp/server.js +11 -26
  450. package/dist/mcp/server.js.map +1 -1
  451. package/dist/mcp/session-manager.d.ts +9 -4
  452. package/dist/mcp/session-manager.d.ts.map +1 -1
  453. package/dist/mcp/session-manager.js +65 -28
  454. package/dist/mcp/session-manager.js.map +1 -1
  455. package/dist/types/schemas.d.ts +38 -13
  456. package/dist/types/schemas.d.ts.map +1 -1
  457. package/dist/types/schemas.js +9 -5
  458. package/dist/types/schemas.js.map +1 -1
  459. package/package.json +1 -1
@@ -0,0 +1,178 @@
1
+ name: "RFC 7807 Problem Details Standard"
2
+ level: 2
3
+ difficulty: intermediate
4
+ description: "Implement standardized error responses using RFC 7807 Problem Details format"
5
+
6
+ context: |
7
+ Migrate your API error responses to the RFC 7807 standard. This standardized format
8
+ improves interoperability across tools and clients. Implement problem details with
9
+ type URI, title, status, detail, and instance fields.
10
+
11
+ scenario:
12
+ state:
13
+ bank_accounts:
14
+ "acc_001": { balance: 5000, account_holder: "John Doe" }
15
+ "acc_002": { balance: 100, account_holder: "Jane Smith" }
16
+
17
+ endpoint: "POST /api/v1/accounts/{accountId}/transfer"
18
+
19
+ test_cases:
20
+ - name: "successful_transfer"
21
+ request:
22
+ path: "/api/v1/accounts/acc_001/transfer"
23
+ body:
24
+ to_account: "acc_002"
25
+ amount: 100
26
+ expected_status: 200
27
+ expected_response:
28
+ transaction_id: "txn_123"
29
+ status: "completed"
30
+
31
+ - name: "insufficient_funds_rfc7807"
32
+ request:
33
+ path: "/api/v1/accounts/acc_002/transfer"
34
+ body:
35
+ to_account: "acc_001"
36
+ amount: 500
37
+ expected_status: 422
38
+ expected_response:
39
+ type: "https://api.example.com/errors/insufficient-funds"
40
+ title: "Insufficient Funds"
41
+ status: 422
42
+ detail: "Account acc_002 has balance of 100 but requires 500 for this transfer"
43
+ instance: "/api/v1/accounts/acc_002/transfer"
44
+ balance: 100
45
+ required_amount: 500
46
+
47
+ - name: "account_not_found_rfc7807"
48
+ request:
49
+ path: "/api/v1/accounts/acc_999/transfer"
50
+ body:
51
+ to_account: "acc_001"
52
+ amount: 100
53
+ expected_status: 404
54
+ expected_response:
55
+ type: "https://api.example.com/errors/account-not-found"
56
+ title: "Account Not Found"
57
+ status: 404
58
+ detail: "The account acc_999 does not exist in the system"
59
+ instance: "/api/v1/accounts/acc_999/transfer"
60
+
61
+ - name: "invalid_amount_validation"
62
+ request:
63
+ path: "/api/v1/accounts/acc_001/transfer"
64
+ body:
65
+ to_account: "acc_002"
66
+ amount: -50
67
+ expected_status: 400
68
+ expected_response:
69
+ type: "https://api.example.com/errors/validation-error"
70
+ title: "Validation Error"
71
+ status: 400
72
+ detail: "The request body contains invalid values"
73
+ instance: "/api/v1/accounts/acc_001/transfer"
74
+ validation_errors:
75
+ - field: "amount"
76
+ message: "Amount must be positive"
77
+ rejected_value: -50
78
+
79
+ - name: "self_transfer_error"
80
+ request:
81
+ path: "/api/v1/accounts/acc_001/transfer"
82
+ body:
83
+ to_account: "acc_001"
84
+ amount: 100
85
+ expected_status: 409
86
+ expected_response:
87
+ type: "https://api.example.com/errors/invalid-operation"
88
+ title: "Invalid Operation"
89
+ status: 409
90
+ detail: "Cannot transfer funds to the same account"
91
+ instance: "/api/v1/accounts/acc_001/transfer"
92
+
93
+ assertions:
94
+ - type: "api_called"
95
+ description: "type field contains URI identifying problem"
96
+ test: "error response includes type field with URI"
97
+
98
+ - type: "api_called"
99
+ description: "title field is human-readable problem type"
100
+ test: "title field is constant for same error type"
101
+
102
+ - type: "api_called"
103
+ description: "status field echoes HTTP status code"
104
+ test: "status field matches HTTP response status"
105
+
106
+ - type: "api_called"
107
+ description: "detail field explains specific instance"
108
+ test: "detail contains instance-specific information"
109
+
110
+ - type: "api_called"
111
+ description: "instance field identifies affected resource"
112
+ test: "instance field contains request path"
113
+
114
+ - type: "api_called"
115
+ description: "Extensions included for domain-specific details"
116
+ test: "error response includes custom fields as extensions"
117
+
118
+ - type: "outcome"
119
+ description: "RFC 7807 enables standard error tooling"
120
+ test: "error responses conform to standard specification"
121
+
122
+ learning_objectives:
123
+ - "Understand RFC 7807 Problem Details specification"
124
+ - "Map problem types to type URIs"
125
+ - "Distinguish between title (constant) and detail (instance-specific)"
126
+ - "Include appropriate HTTP status codes in problem details"
127
+ - "Extend RFC 7807 with domain-specific fields"
128
+ - "Communicate problem details to generic HTTP clients"
129
+
130
+ rfc7807_fields:
131
+ "type": "URI identifying problem type (required, should dereference to documentation)"
132
+ "title": "Short human-readable summary of problem type (required, same for same type)"
133
+ "status": "HTTP status code (optional, but recommended)"
134
+ "detail": "Human-readable explanation of specific problem instance (optional, instance-specific)"
135
+ "instance": "URI identifying specific problem occurrence (optional, usually request path)"
136
+
137
+ example_error_responses: |
138
+ Example 1: Insufficient Funds
139
+ {
140
+ "type": "https://api.example.com/errors/insufficient-funds",
141
+ "title": "Insufficient Funds",
142
+ "status": 422,
143
+ "detail": "Account acc_002 has balance of 100 but requires 500 for this transfer",
144
+ "instance": "/api/v1/accounts/acc_002/transfer",
145
+ "balance": 100,
146
+ "required_amount": 500
147
+ }
148
+
149
+ Example 2: Validation Error
150
+ {
151
+ "type": "https://api.example.com/errors/validation-error",
152
+ "title": "Validation Error",
153
+ "status": 400,
154
+ "detail": "The request body contains invalid values",
155
+ "instance": "/api/v1/accounts/acc_001/transfer",
156
+ "validation_errors": [
157
+ {
158
+ "field": "amount",
159
+ "message": "Amount must be positive",
160
+ "rejected_value": -50
161
+ }
162
+ ]
163
+ }
164
+
165
+ advantages:
166
+ - "Standard format recognized by HTTP tools and libraries"
167
+ - "Generic clients can handle errors without API-specific code"
168
+ - "Clear semantics: type vs title vs detail"
169
+ - "Extensibility through custom fields"
170
+ - "Easier debugging and error tracking"
171
+ - "Better integration with API gateways and monitoring"
172
+
173
+ content_type:
174
+ "application/problem+json": "Standard MIME type for RFC 7807 responses"
175
+
176
+ references:
177
+ - "https://datatracker.ietf.org/doc/html/rfc7807"
178
+ - "https://datatracker.ietf.org/doc/html/rfc9457 (RFC 9457 - Problem Details for HTTP APIs)"
@@ -0,0 +1,211 @@
1
+ name: "Webhook Error Handling and Retry Logic"
2
+ level: 2
3
+ difficulty: intermediate
4
+ description: "Implement webhook delivery with exponential backoff retry strategy and dead letter queues"
5
+
6
+ context: |
7
+ Build a webhook delivery system for payment events. Handle failed deliveries with
8
+ exponential backoff, respect HTTP error codes (don't retry 4xx), and move permanently
9
+ failed webhooks to dead letter queue for inspection.
10
+
11
+ scenario:
12
+ state:
13
+ webhooks:
14
+ "wh_payment_complete":
15
+ url: "https://customer-1.example.com/webhooks/payments"
16
+ status: "active"
17
+ retry_count: 0
18
+ last_attempt: null
19
+ events:
20
+ "evt_001": { type: "payment.completed", customer_id: "cust_1", status: "pending" }
21
+ "evt_002": { type: "payment.completed", customer_id: "cust_2", status: "pending" }
22
+ webhook_endpoints:
23
+ "https://customer-1.example.com/webhooks/payments":
24
+ response_status: 500
25
+ consecutive_failures: 0
26
+ "https://customer-2.example.com/webhooks/payments":
27
+ response_status: 404
28
+ consecutive_failures: 0
29
+
30
+ endpoint: "Internal: Webhook Delivery System"
31
+
32
+ test_cases:
33
+ - name: "successful_webhook_delivery"
34
+ event: "evt_001"
35
+ webhook_url: "https://customer-1.example.com/webhooks/payments"
36
+ endpoint_status: 200
37
+ expected_result: "delivered"
38
+ expected_retry_count: 0
39
+
40
+ - name: "temporary_failure_retry"
41
+ event: "evt_001"
42
+ webhook_url: "https://customer-1.example.com/webhooks/payments"
43
+ endpoint_status: 503
44
+ retry_strategy: "exponential_backoff"
45
+ expected_retries:
46
+ - attempt: 1
47
+ delay: 1
48
+ endpoint_status: 503
49
+ - attempt: 2
50
+ delay: 5
51
+ endpoint_status: 503
52
+ - attempt: 3
53
+ delay: 30
54
+ endpoint_status: 200
55
+ result: "delivered"
56
+
57
+ - name: "timeout_is_retriable"
58
+ event: "evt_001"
59
+ webhook_url: "https://customer-1.example.com/webhooks/payments"
60
+ endpoint_behavior: "timeout"
61
+ endpoint_timeout_ms: 35000
62
+ expected_retries:
63
+ - attempt: 1
64
+ delay: 1
65
+ result: "timeout"
66
+ - attempt: 2
67
+ delay: 5
68
+ result: "timeout"
69
+ - attempt: 3
70
+ delay: 30
71
+ endpoint_status: 200
72
+ result: "delivered"
73
+
74
+ - name: "404_not_found_not_retried"
75
+ event: "evt_001"
76
+ webhook_url: "https://nonexistent.example.com/webhooks/payments"
77
+ endpoint_status: 404
78
+ expected_retries: 0
79
+ expected_result: "dead_letter_queue"
80
+ expected_reason: "endpoint_not_found"
81
+
82
+ - name: "401_unauthorized_not_retried"
83
+ event: "evt_001"
84
+ webhook_url: "https://customer-2.example.com/webhooks/payments"
85
+ endpoint_status: 401
86
+ expected_retries: 0
87
+ expected_result: "dead_letter_queue"
88
+ expected_reason: "authorization_failed"
89
+
90
+ - name: "400_bad_request_not_retried"
91
+ event: "evt_001"
92
+ webhook_url: "https://customer-3.example.com/webhooks/payments"
93
+ endpoint_status: 400
94
+ expected_retries: 0
95
+ expected_result: "dead_letter_queue"
96
+ expected_reason: "malformed_request"
97
+
98
+ - name: "max_retries_exceeded"
99
+ event: "evt_001"
100
+ webhook_url: "https://customer-1.example.com/webhooks/payments"
101
+ endpoint_status: 502
102
+ max_retries: 5
103
+ expected_retries:
104
+ - attempt: 1
105
+ delay: 1
106
+ endpoint_status: 502
107
+ - attempt: 2
108
+ delay: 5
109
+ endpoint_status: 502
110
+ - attempt: 3
111
+ delay: 30
112
+ endpoint_status: 502
113
+ - attempt: 4
114
+ delay: 120
115
+ endpoint_status: 502
116
+ - attempt: 5
117
+ delay: 300
118
+ endpoint_status: 502
119
+ expected_result: "dead_letter_queue"
120
+ expected_reason: "max_retries_exceeded"
121
+
122
+ - name: "jitter_prevents_thundering_herd"
123
+ events_count: 100
124
+ all_failing: true
125
+ retry_schedule: "exponential_with_jitter"
126
+ expected_behavior: "retry_attempts_spread_across_time"
127
+
128
+ - name: "idempotency_prevents_duplicates"
129
+ event: "evt_001"
130
+ webhook_url: "https://customer-1.example.com/webhooks/payments"
131
+ attempt_1_result: "timeout"
132
+ attempt_1_delivered: true
133
+ attempt_2_result: 200
134
+ expected_behavior: "idempotent_delivery (delivered once)"
135
+
136
+ assertions:
137
+ - type: "api_called"
138
+ description: "Webhook called with event payload"
139
+ test: "webhook POST includes event data"
140
+
141
+ - type: "api_called"
142
+ description: "5xx errors are retried"
143
+ test: "502/503 errors trigger retry"
144
+
145
+ - type: "api_called"
146
+ description: "4xx errors are not retried"
147
+ test: "404/401/400 moved to dead letter queue"
148
+
149
+ - type: "outcome"
150
+ description: "Exponential backoff used"
151
+ test: "retry delays follow: 1s, 5s, 30s, 120s, 300s"
152
+
153
+ - type: "api_called"
154
+ description: "Jitter added to prevent thundering herd"
155
+ test: "retry_schedule uses jitter"
156
+
157
+ - type: "api_called"
158
+ description: "Dead letter queue stores permanently failed"
159
+ test: "max_retries_exceeded moves to DLQ"
160
+
161
+ - type: "outcome"
162
+ description: "Idempotent delivery"
163
+ test: "webhook called once despite retries"
164
+
165
+ learning_objectives:
166
+ - "Understand transient vs permanent webhook failures"
167
+ - "Implement exponential backoff retry strategy"
168
+ - "Distinguish retriable (5xx) vs non-retriable (4xx) errors"
169
+ - "Add jitter to prevent synchronized retries"
170
+ - "Implement dead letter queue for manual inspection"
171
+ - "Track retry attempts and timing"
172
+ - "Handle webhook idempotency"
173
+
174
+ retry_strategy:
175
+ "retriable_status_codes": [408, 429, 500, 502, 503, 504]
176
+ "non_retriable_status_codes": [400, 401, 403, 404, 405, 410]
177
+ "transient_failures": ["timeout", "connection_reset", "dns_failure"]
178
+ "backoff_pattern": "exponential: 1s, 5s, 30s, 120s, 300s"
179
+ "max_attempts": 5
180
+ "jitter": "random 0-10% of delay"
181
+
182
+ headers:
183
+ "X-Webhook-ID": "Unique webhook endpoint identifier"
184
+ "X-Event-ID": "Unique event identifier for idempotency"
185
+ "X-Delivery-Attempt": "Attempt number (1, 2, 3, ...)"
186
+ "X-Webhook-Signature": "HMAC signature for verification"
187
+
188
+ dead_letter_queue:
189
+ "storage": "Separate database table or queue"
190
+ "retention": "30 days minimum for inspection"
191
+ "alerting": "Alert ops team after 10 DLQ entries"
192
+ "manual_retry": "Allow manual redelivery from UI"
193
+
194
+ monitoring:
195
+ "metrics":
196
+ - "delivery_success_rate"
197
+ - "delivery_latency_p50/p95/p99"
198
+ - "retry_count_distribution"
199
+ - "dlq_entries_rate"
200
+ "alerts":
201
+ - "delivery_success_rate < 95%"
202
+ - "dlq_entries > 100 in 1 hour"
203
+
204
+ common_mistakes:
205
+ - "Retrying 404 Not Found (never succeeds)"
206
+ - "No exponential backoff (overwhelming server)"
207
+ - "No jitter (thundering herd effect)"
208
+ - "Unbounded retries (never gives up)"
209
+ - "Not idempotent (duplicate deliveries)"
210
+ - "No dead letter queue (lost events)"
211
+ - "Not respecting Retry-After header"
@@ -0,0 +1,275 @@
1
+ name: "Distributed Tracing and Error Correlation"
2
+ level: 3
3
+ difficulty: advanced
4
+ description: "Track errors across multiple services using correlation IDs and distributed tracing"
5
+
6
+ context: |
7
+ Build a microservice system where a single user request flows through Order Service
8
+ → Payment Service → Shipping Service. Implement distributed tracing with correlation
9
+ IDs to track errors across all services and perform root cause analysis.
10
+
11
+ scenario:
12
+ state:
13
+ services:
14
+ order_service:
15
+ url: "http://order-api:3000"
16
+ status: "healthy"
17
+ payment_service:
18
+ url: "http://payment-api:3001"
19
+ status: "healthy"
20
+ shipping_service:
21
+ url: "http://shipping-api:3002"
22
+ status: "healthy"
23
+ orders:
24
+ "ord_001": { customer_id: "cust_1", total: 100, status: "pending" }
25
+
26
+ endpoint: "POST /api/v1/orders"
27
+
28
+ test_cases:
29
+ - name: "successful_order_with_trace"
30
+ request:
31
+ path: "/api/v1/orders"
32
+ body: { customer_id: "cust_1", items: ["item_1"] }
33
+ headers:
34
+ X-Correlation-ID: "trace_123"
35
+ service_calls:
36
+ - service: "order_service"
37
+ action: "create_order"
38
+ status: 201
39
+ trace_id: "trace_123"
40
+ span_id: "span_order_1"
41
+ duration_ms: 50
42
+ - service: "payment_service"
43
+ action: "charge_card"
44
+ status: 200
45
+ trace_id: "trace_123"
46
+ parent_span: "span_order_1"
47
+ span_id: "span_payment_1"
48
+ duration_ms: 200
49
+ - service: "shipping_service"
50
+ action: "create_shipment"
51
+ status: 201
52
+ trace_id: "trace_123"
53
+ parent_span: "span_order_1"
54
+ span_id: "span_shipping_1"
55
+ duration_ms: 100
56
+ expected_response:
57
+ status: 201
58
+ order_id: "ord_002"
59
+ expected_trace:
60
+ spans:
61
+ - span_order_1: "50ms"
62
+ - span_payment_1: "200ms"
63
+ - span_shipping_1: "100ms"
64
+ total_time: "350ms"
65
+
66
+ - name: "payment_service_timeout_traced"
67
+ request:
68
+ path: "/api/v1/orders"
69
+ body: { customer_id: "cust_1", items: ["item_1"] }
70
+ headers:
71
+ X-Correlation-ID: "trace_456"
72
+ service_calls:
73
+ - service: "order_service"
74
+ action: "create_order"
75
+ status: 201
76
+ trace_id: "trace_456"
77
+ span_id: "span_order_2"
78
+ duration_ms: 50
79
+ - service: "payment_service"
80
+ action: "charge_card"
81
+ status: 504
82
+ error: "gateway_timeout"
83
+ trace_id: "trace_456"
84
+ parent_span: "span_order_2"
85
+ span_id: "span_payment_2"
86
+ duration_ms: 30000
87
+ error_details:
88
+ message: "Payment processing took too long"
89
+ timeout_ms: 30000
90
+ expected_response:
91
+ status: 502
92
+ error:
93
+ code: "PAYMENT_SERVICE_UNAVAILABLE"
94
+ correlation_id: "trace_456"
95
+ distributed_trace:
96
+ spans:
97
+ - name: "POST /orders"
98
+ service: "order_service"
99
+ span_id: "span_order_2"
100
+ status: "error"
101
+ - name: "POST /charges"
102
+ service: "payment_service"
103
+ parent_span: "span_order_2"
104
+ span_id: "span_payment_2"
105
+ status: "error"
106
+ error_type: "timeout"
107
+
108
+ - name: "cascading_failure_visible_in_trace"
109
+ request:
110
+ path: "/api/v1/orders"
111
+ body: { customer_id: "cust_1", items: ["item_1"] }
112
+ headers:
113
+ X-Correlation-ID: "trace_789"
114
+ service_calls:
115
+ - service: "order_service"
116
+ action: "create_order"
117
+ status: 201
118
+ trace_id: "trace_789"
119
+ span_id: "span_order_3"
120
+ - service: "payment_service"
121
+ action: "charge_card"
122
+ status: 500
123
+ trace_id: "trace_789"
124
+ parent_span: "span_order_3"
125
+ span_id: "span_payment_3"
126
+ error: "database_connection_failed"
127
+ - service: "shipping_service"
128
+ action: "create_shipment"
129
+ status: 500
130
+ trace_id: "trace_789"
131
+ parent_span: "span_order_3"
132
+ span_id: "span_shipping_3"
133
+ error: "order_not_confirmed"
134
+ expected_response:
135
+ status: 502
136
+ distributed_trace:
137
+ critical_path: "trace_789 → order_service fails payment → shipping can't proceed"
138
+ error_summary: "Payment service database unavailable, causing cascade"
139
+
140
+ - name: "error_context_preserved_across_services"
141
+ request:
142
+ path: "/api/v1/orders"
143
+ headers:
144
+ X-Correlation-ID: "trace_101"
145
+ X-Request-ID: "req_101"
146
+ X-User-ID: "user_123"
147
+ propagated_headers:
148
+ - service: "order_service"
149
+ headers: { X-Correlation-ID: "trace_101", X-Request-ID: "req_101", X-User-ID: "user_123" }
150
+ - service: "payment_service"
151
+ headers: { X-Correlation-ID: "trace_101", X-Request-ID: "req_101", X-User-ID: "user_123" }
152
+ - service: "shipping_service"
153
+ headers: { X-Correlation-ID: "trace_101", X-Request-ID: "req_101", X-User-ID: "user_123" }
154
+ expected_behavior: "all services log with same correlation ID"
155
+
156
+ - name: "root_cause_analysis_via_trace"
157
+ incident:
158
+ symptom: "Orders taking 30+ seconds"
159
+ correlation_ids: ["trace_111", "trace_112", "trace_113"]
160
+ analysis:
161
+ - step: "1. Review distributed trace"
162
+ finding: "All traces show: order_service 50ms, payment_service 25000ms, shipping_service 5000ms"
163
+ - step: "2. Identify critical path"
164
+ finding: "Payment service is bottleneck"
165
+ - step: "3. Check payment service logs"
166
+ finding: "SELECT * FROM charges WHERE status='processing' returns 10000 rows"
167
+ - step: "4. Check metrics"
168
+ finding: "Database CPU at 95%, pending queries at 10000"
169
+ - step: "5. Root cause"
170
+ finding: "Payment processing queries missing index, causing full table scans"
171
+ - step: "6. Solution"
172
+ action: "Add index on charges(status, created_at)"
173
+
174
+ - name: "trace_context_loss_error"
175
+ request:
176
+ path: "/api/v1/orders"
177
+ headers:
178
+ X-Correlation-ID: "trace_202"
179
+ service_calls:
180
+ - service: "order_service"
181
+ trace_id: "trace_202"
182
+ passes_header: true
183
+ - service: "payment_service"
184
+ trace_id: "trace_202"
185
+ passes_header: false # Bug: forgot to propagate
186
+ implicit_trace: "span_payment_lost"
187
+ expected_problem: "Payment service error not correlated with order trace"
188
+ solution: "Add middleware to always propagate X-Correlation-ID"
189
+
190
+ assertions:
191
+ - type: "api_called"
192
+ description: "Correlation ID propagated to all services"
193
+ test: "X-Correlation-ID passed through service chain"
194
+
195
+ - type: "api_called"
196
+ description: "Trace IDs captured in logs"
197
+ test: "all log entries include trace_id"
198
+
199
+ - type: "outcome"
200
+ description: "Error path visible in distributed trace"
201
+ test: "trace shows which service failed and why"
202
+
203
+ - type: "api_called"
204
+ description: "Timing data collected per service"
205
+ test: "trace includes duration for each span"
206
+
207
+ - type: "outcome"
208
+ description: "Root cause identifiable from trace"
209
+ test: "cascading_failure_visible_in_trace shows error progression"
210
+
211
+ learning_objectives:
212
+ - "Understand importance of correlation IDs in microservices"
213
+ - "Implement trace ID propagation across service calls"
214
+ - "Collect span timing for performance analysis"
215
+ - "Correlate logs across multiple services"
216
+ - "Identify root cause from distributed traces"
217
+ - "Detect cascading failures in real-time"
218
+ - "Perform effective post-mortem analysis"
219
+
220
+ correlation_headers:
221
+ "X-Correlation-ID": "Unique ID for entire request"
222
+ "X-Request-ID": "Specific request identifier"
223
+ "X-Trace-ID": "OpenTelemetry trace ID"
224
+ "X-Span-ID": "OpenTelemetry span ID"
225
+ "X-Parent-Span-ID": "Parent span for nesting"
226
+
227
+ trace_structure:
228
+ "trace_id": "abc123def456"
229
+ "spans":
230
+ - "span_id": "span_order_1"
231
+ "operation": "create_order"
232
+ "service": "order_service"
233
+ "start_time": "2024-01-01T10:00:00.000Z"
234
+ "duration_ms": 50
235
+ "status": "OK"
236
+ "child_spans": ["span_payment_1", "span_shipping_1"]
237
+ - "span_id": "span_payment_1"
238
+ "operation": "charge_card"
239
+ "service": "payment_service"
240
+ "start_time": "2024-01-01T10:00:00.050Z"
241
+ "duration_ms": 200
242
+ "status": "OK"
243
+ "parent_span": "span_order_1"
244
+
245
+ tools:
246
+ "OpenTelemetry": "Standard instrumentation library"
247
+ "Jaeger": "Distributed tracing backend"
248
+ "Zipkin": "Alternative tracing system"
249
+ "Datadog APM": "Commercial observability"
250
+ "AWS X-Ray": "AWS distributed tracing"
251
+ "Google Cloud Trace": "GCP tracing"
252
+
253
+ common_mistakes:
254
+ - "Not propagating correlation ID to called services"
255
+ - "No trace ID in error messages"
256
+ - "Losing context in async operations"
257
+ - "Not collecting timing data"
258
+ - "Insufficient log detail for debugging"
259
+ - "No central trace storage"
260
+ - "Can't query traces by error type"
261
+
262
+ post_mortem_example: |
263
+ Timeline:
264
+ 10:00:00 - Order received (trace_abc)
265
+ 10:00:00 - Order created in order_service (50ms)
266
+ 10:00:00 - Payment service called
267
+ 10:00:25 - Payment timeout after 25 seconds
268
+ 10:00:25 - Shipping service never called
269
+ 10:00:25 - 502 Bad Gateway returned
270
+
271
+ Trace shows: Payment service database locked
272
+ Root cause: Concurrent deployment and query
273
+ Fix: Add connection pooling, query timeout
274
+
275
+ Prevention: Monitor query latency in traces
@@ -0,0 +1,11 @@
1
+ id: aws-lambda-debugging
2
+ name: "AWS Lambda Function Debugging"
3
+ description: >
4
+ Master AWS Lambda function debugging from basic invocation errors to
5
+ enterprise serverless platform operations. Learn to diagnose cold starts,
6
+ timeout issues, permission failures, memory problems, event source mapping
7
+ errors, layer conflicts, VPC connectivity, Step Functions orchestration,
8
+ and production serverless operations at scale.
9
+ levels: 5
10
+ scenarios_per_level: 10
11
+ tags: [development, AWS, Lambda, serverless, debugging, cloud, FaaS, event-driven]