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,76 @@
1
+ meta:
2
+ id: database-regulatory-landscape
3
+ level: 5
4
+ course: postgresql-query-optimization
5
+ type: output
6
+ description: "Navigate database regulatory compliance — design PostgreSQL configurations for GDPR, PCI DSS, HIPAA, SOX, and emerging data sovereignty regulations"
7
+ tags: [PostgreSQL, compliance, GDPR, PCI-DSS, HIPAA, SOX, data-sovereignty, master]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your company is expanding into 3 new markets (EU, healthcare, and
13
+ government contracts). Each market has different database compliance
14
+ requirements, and your PostgreSQL infrastructure wasn't designed for
15
+ regulatory compliance. The legal team has given you 6 months to achieve
16
+ compliance or the expansion deals ($30M combined) will be lost.
17
+
18
+ Current PostgreSQL infrastructure:
19
+ - 20 clusters, all in US-East region
20
+ - No data classification (PII mixed with non-PII)
21
+ - Audit logging: only pg_log (not queryable, not tamper-evident)
22
+ - Encryption: TLS in transit, no encryption at rest, no column-level
23
+ - Access control: 5 shared database users for 200 engineers
24
+ - Data retention: No automated deletion, data kept forever
25
+ - Backups: Daily pg_dump, stored unencrypted in same region
26
+
27
+ Compliance requirements by market:
28
+
29
+ 1. EU expansion (GDPR):
30
+ - Data residency: EU customer data must stay in EU
31
+ - Right to erasure: Must delete customer data on request within 30 days
32
+ - Data portability: Must export customer data in machine-readable format
33
+ - Breach notification: 72 hours to report data breaches
34
+ - Data minimization: Only collect what's necessary
35
+ - Audit trail: Prove who accessed what data and when
36
+
37
+ 2. Healthcare (HIPAA):
38
+ - PHI must be encrypted at rest and in transit
39
+ - Access controls: Role-based, minimum necessary access
40
+ - Audit trail: All access to PHI must be logged and retained 6 years
41
+ - Business Associate Agreements with all vendors (including AWS)
42
+ - Breach notification: 60 days for breaches affecting 500+ individuals
43
+
44
+ 3. Government (FedRAMP / NIST 800-53):
45
+ - Data must reside in US government-authorized regions
46
+ - FIPS 140-2 validated encryption modules
47
+ - Continuous monitoring and vulnerability scanning
48
+ - System categorization (Low, Moderate, High impact)
49
+ - Multi-factor authentication for all database access
50
+
51
+ Cross-cutting requirements:
52
+ - SOX compliance (public company): Database changes must be auditable,
53
+ separation of duties between development and production access
54
+ - PCI DSS (payment processing): Cardholder data encrypted, quarterly
55
+ vulnerability scans, access logging, tokenization
56
+
57
+ Task: Design the compliance architecture. Write: the data
58
+ classification and residency strategy, the encryption architecture
59
+ (at rest, in transit, column-level), the audit logging system (tamper-
60
+ evident, queryable, retained per regulation), the access control
61
+ redesign (from 5 shared users to RBAC), and the compliance automation
62
+ (how to continuously verify compliance, not just achieve it once).
63
+
64
+ assertions:
65
+ - type: llm_judge
66
+ criteria: "Data classification and residency are addressed — defines data classification tiers (public, internal, confidential, restricted), maps PII/PHI/cardholder data to appropriate tiers, designs multi-region deployment for EU data residency (PostgreSQL in EU region with logical replication or partitioned access), and addresses right-to-erasure with soft-delete + scheduled purge patterns"
67
+ weight: 0.35
68
+ description: "Data classification and residency"
69
+ - type: llm_judge
70
+ criteria: "Encryption and access control are comprehensive — implements TDE or filesystem encryption at rest, column-level encryption (pgcrypto or application-level) for PII/PHI/cardholder data, redesigns access from 5 shared users to role-based access with per-engineer credentials, implements row-level security for data isolation, and addresses FIPS 140-2 requirements for government"
71
+ weight: 0.35
72
+ description: "Encryption and access control"
73
+ - type: llm_judge
74
+ criteria: "Audit logging and compliance automation are production-ready — implements tamper-evident audit logging (pgAudit or custom triggers with hash chains), retains logs per regulation (6 years for HIPAA, 7 for SOX), provides queryable audit trail, and designs continuous compliance monitoring (automated checks, drift detection, compliance dashboard) rather than point-in-time audits"
75
+ weight: 0.30
76
+ description: "Audit and compliance automation"
@@ -0,0 +1,66 @@
1
+ meta:
2
+ id: master-optimization-shift
3
+ level: 5
4
+ course: postgresql-query-optimization
5
+ type: output
6
+ description: "Master optimization shift — advise a CEO on a complete database transformation combining M&A integration, regulatory compliance, AI adoption, and 10x scaling"
7
+ tags: [PostgreSQL, shift-simulation, transformation, CEO-advisory, comprehensive, master]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're an external database strategy advisor. A CEO calls you with
13
+ an urgent, complex situation that touches everything you know about
14
+ PostgreSQL.
15
+
16
+ The situation:
17
+ DataCorp ($500M ARR, 2,000 engineers) just acquired two companies
18
+ simultaneously:
19
+ - HealthSync ($50M ARR, healthcare SaaS, HIPAA-regulated)
20
+ - EuroTrade ($80M ARR, EU-based fintech, GDPR + PCI DSS)
21
+
22
+ DataCorp runs PostgreSQL 15 on Aurora (30 clusters, 100TB).
23
+ HealthSync runs PostgreSQL 13 on self-managed EC2 (5 clusters, 8TB).
24
+ EuroTrade runs PostgreSQL 16 on Citus (10 clusters, 40TB, sharded).
25
+
26
+ The board has set 4 concurrent mandates (18-month timeline):
27
+ 1. Integrate all three databases into a unified platform
28
+ 2. Achieve HIPAA, GDPR, and PCI DSS compliance across the platform
29
+ 3. Prepare for IPO (99.99% availability, SOX compliance, cost optimization)
30
+ 4. Support 10x growth (DataCorp expects to grow from $500M to $5B ARR
31
+ in 5 years)
32
+
33
+ Constraints:
34
+ - Total database team across all 3 companies: 15 DBAs
35
+ - Combined infrastructure cost: $2M/month
36
+ - Zero customer data loss is non-negotiable
37
+ - All 3 products must remain operational during integration
38
+ - EU data must stay in EU (HealthSync currently stores some EU patient
39
+ data in US)
40
+ - IPO due diligence begins in 12 months
41
+
42
+ The CEO asks: "Give me the plan. I need to know: What's the unified
43
+ architecture? What's the timeline? What's the budget? What's the risk?
44
+ And what should I tell the board?"
45
+
46
+ Task: Write the comprehensive advisory document. Include: the unified
47
+ database architecture (handling Aurora + self-managed + Citus), the
48
+ compliance strategy (achieving all 4 regulatory frameworks
49
+ simultaneously), the integration timeline (phased approach over 18
50
+ months), the budget projection (with cost optimization targets), and
51
+ the board communication strategy (how to frame this as opportunity,
52
+ not just cost).
53
+
54
+ assertions:
55
+ - type: llm_judge
56
+ criteria: "Unified architecture handles all 3 database platforms — addresses Aurora-to-Citus or Citus-to-Aurora consolidation (or hybrid approach), PG 13→16 upgrade path for HealthSync, handles Citus sharding patterns (distributed tables, reference tables) during migration, and designs for 10x scale (100TB→1PB trajectory). Architecture is realistic given 15 DBAs"
57
+ weight: 0.35
58
+ description: "Viable unified architecture"
59
+ - type: llm_judge
60
+ criteria: "Compliance strategy achieves all 4 frameworks — HIPAA (PHI encryption, access logging, BAAs), GDPR (EU data residency, right to erasure, DPA), PCI DSS (cardholder tokenization, network segmentation), and SOX (audit trails, separation of duties). Addresses the immediate risk of EU patient data in US. Identifies overlapping requirements to reduce effort"
61
+ weight: 0.35
62
+ description: "Multi-framework compliance"
63
+ - type: llm_judge
64
+ criteria: "Timeline, budget, and board communication are executive-ready — 18-month phased plan with clear milestones and go/no-go gates, budget includes infrastructure, personnel, and opportunity cost, risk register identifies top 5 risks with mitigation strategies, and the board narrative frames integration as competitive advantage (unified data platform enables cross-sell, AI/ML, faster innovation) not just technical debt remediation"
65
+ weight: 0.30
66
+ description: "Executive-ready delivery"
@@ -0,0 +1,11 @@
1
+ id: rest-api-error-handling
2
+ name: "REST API Error Handling"
3
+ description: >
4
+ Master REST API error handling from basic HTTP status codes to enterprise
5
+ error governance. Learn error response design, RFC 7807 Problem Details,
6
+ retry and circuit breaker patterns, distributed system error propagation,
7
+ error budgets, compliance-aware error handling, and API reliability
8
+ architecture for large-scale systems.
9
+ levels: 5
10
+ scenarios_per_level: 10
11
+ tags: [development, REST, API, error-handling, HTTP, status-codes, reliability, DevOps]
@@ -0,0 +1,71 @@
1
+ meta:
2
+ id: authentication-errors
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Handle authentication errors — design error responses for auth failures without leaking security information"
7
+ tags: [REST, API, authentication, 401, 403, security, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're working on the authentication error handling for a healthcare
13
+ appointment booking API. The security team reviewed your error
14
+ responses and flagged several issues.
15
+
16
+ Current error responses (flagged as problematic):
17
+
18
+ 1. Missing token:
19
+ 401 { "error": "No Authorization header provided" }
20
+ Security note: "This is fine, but be consistent"
21
+
22
+ 2. Malformed token:
23
+ 401 { "error": "JWT format invalid: expected 3 parts, got 1" }
24
+ Security note: "Reveals token implementation (JWT)"
25
+
26
+ 3. Expired token:
27
+ 401 { "error": "Token expired at 2026-02-26T14:30:00Z, current
28
+ time is 2026-02-27T08:15:00Z" }
29
+ Security note: "Reveals server clock — useful for timing attacks"
30
+
31
+ 4. Invalid signature:
32
+ 401 { "error": "JWT signature verification failed using RS256" }
33
+ Security note: "Reveals signing algorithm"
34
+
35
+ 5. Valid token but user deactivated:
36
+ 401 { "error": "User account deactivated since 2026-01-15" }
37
+ Security note: "Confirms account existence and status"
38
+
39
+ 6. Valid token but wrong role (patient trying admin endpoint):
40
+ 403 { "error": "User john.doe@email.com has role 'patient',
41
+ requires role 'admin'" }
42
+ Security note: "Reveals user email and role system"
43
+
44
+ 7. Valid token but IP not in allowlist:
45
+ 403 { "error": "IP 192.168.1.50 not in allowlist for admin API" }
46
+ Security note: "Reveals IP allowlist exists"
47
+
48
+ 8. API key instead of bearer token:
49
+ 401 { "error": "Expected Bearer token, received API key
50
+ sk-abc...xyz" }
51
+ Security note: "Echoes back the credential!"
52
+
53
+ Task: Rewrite all 8 error responses to be secure (no information
54
+ leakage) while still being useful enough for legitimate developers
55
+ to debug. Explain the security principle behind each change. Then
56
+ write guidelines for the team on what authentication errors should
57
+ and should not reveal.
58
+
59
+ assertions:
60
+ - type: llm_judge
61
+ criteria: "Rewritten errors eliminate information leakage — no JWT implementation details, no server timestamps, no user emails, no role system details, no IP allowlist information, and absolutely no credential echoing. Each response gives enough information to debug without revealing security internals"
62
+ weight: 0.35
63
+ description: "Secure error responses"
64
+ - type: llm_judge
65
+ criteria: "Security principles are correctly explained — covers information disclosure risks (token type, algorithm, clock), account enumeration prevention, principle of least information, and the difference between logging detailed errors server-side vs returning generic errors to clients"
66
+ weight: 0.35
67
+ description: "Correct security principles"
68
+ - type: llm_judge
69
+ criteria: "Team guidelines are practical — provides clear do/don't list for auth error messages, explains server-side logging of detailed errors for debugging, and addresses the balance between security and developer experience"
70
+ weight: 0.30
71
+ description: "Practical team guidelines"
@@ -0,0 +1,63 @@
1
+ meta:
2
+ id: content-negotiation-errors
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Handle content negotiation errors — respond correctly when clients send or request unsupported content types"
7
+ tags: [REST, API, content-type, accept, 406, 415, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're building an API that primarily serves JSON but also supports
13
+ XML for legacy enterprise clients. Users keep hitting confusing
14
+ errors related to content types.
15
+
16
+ Support tickets this week:
17
+
18
+ Ticket 1: "I'm sending a POST with form data (Content-Type:
19
+ application/x-www-form-urlencoded) but getting a 500 error with
20
+ 'Unexpected token' in the response."
21
+
22
+ Ticket 2: "I set Accept: text/html but got back JSON anyway. My XML
23
+ parser is choking on it."
24
+
25
+ Ticket 3: "I'm uploading a file with Content-Type: multipart/
26
+ form-data to the /reports endpoint but it says 'invalid JSON'."
27
+
28
+ Ticket 4: "My request works in Postman but fails in my code. I
29
+ think it's because Postman auto-sets Content-Type but my HTTP
30
+ library doesn't."
31
+
32
+ Ticket 5: "I'm sending JSON but with Content-Type: text/plain
33
+ and getting a 400 error that says 'Request body is empty' — but
34
+ the body is definitely there!"
35
+
36
+ Ticket 6: "I need CSV export of my data. GET /reports with Accept:
37
+ text/csv returns JSON. Is CSV supported?"
38
+
39
+ Current behavior: The API ignores the Accept header entirely and
40
+ always returns JSON. For request bodies, it tries to parse
41
+ everything as JSON regardless of Content-Type, causing cryptic
42
+ errors.
43
+
44
+ Task: Design the correct content negotiation error handling. For
45
+ each ticket, explain: what's going wrong, what the correct HTTP
46
+ status code and response should be, and what headers the response
47
+ should include. Then write the content negotiation middleware logic
48
+ that handles both request (Content-Type) and response (Accept)
49
+ negotiation properly.
50
+
51
+ assertions:
52
+ - type: llm_judge
53
+ criteria: "Correct status codes for each scenario — 415 Unsupported Media Type when the server can't parse the request body's content type, 406 Not Acceptable when the server can't produce the client's requested format, and appropriate error messages explaining what formats are supported"
54
+ weight: 0.35
55
+ description: "Correct content negotiation status codes"
56
+ - type: llm_judge
57
+ criteria: "All 6 tickets are addressed with clear explanations — explains why form-encoded data fails JSON parsing, why missing Content-Type causes issues, how Accept header should drive response format, and includes the supported content types in error responses"
58
+ weight: 0.35
59
+ description: "All tickets addressed"
60
+ - type: llm_judge
61
+ criteria: "Middleware logic is complete — validates Content-Type on requests with bodies, negotiates Accept header for responses, falls back to JSON when no Accept header is sent, and includes proper Content-Type header on all responses including error responses"
62
+ weight: 0.30
63
+ description: "Complete middleware logic"
@@ -0,0 +1,63 @@
1
+ meta:
2
+ id: error-logging-basics
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Set up API error logging — design structured error logs that make debugging fast without logging sensitive data"
7
+ tags: [REST, API, logging, debugging, structured-logs, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're debugging a production issue on a food delivery API.
13
+ Customers are getting 500 errors when placing orders, but your
14
+ current logs look like this:
15
+
16
+ 2026-02-27 10:15:33 ERROR: Something went wrong
17
+ 2026-02-27 10:15:34 ERROR: Something went wrong
18
+ 2026-02-27 10:15:35 ERROR: null
19
+ 2026-02-27 10:15:36 ERROR: Something went wrong
20
+ 2026-02-27 10:15:37 ERROR: [object Object]
21
+
22
+ You have no idea: which endpoint failed, what the request was,
23
+ which user was affected, what the actual error was, or how to
24
+ reproduce it.
25
+
26
+ After 2 hours of blind debugging, you find it's a null pointer
27
+ in the restaurant menu lookup. You realize you need proper error
28
+ logging.
29
+
30
+ Your API has these components:
31
+ - Order placement (POST /orders)
32
+ - Payment processing (POST /orders/:id/pay)
33
+ - Restaurant communication (POST /restaurants/:id/notify)
34
+ - Delivery assignment (POST /deliveries)
35
+ - User notifications (POST /notifications)
36
+
37
+ Sensitive data that must NOT appear in logs:
38
+ - Credit card numbers, CVVs
39
+ - User passwords
40
+ - Full addresses (only city/zip is OK)
41
+ - API keys and tokens
42
+ - Phone numbers (mask all but last 4)
43
+
44
+ Task: Design the structured error logging system. Show: the log
45
+ format (structured JSON), what fields every error log must include,
46
+ what sensitive fields must be masked or excluded, example log entries
47
+ for 3 different error types (validation error, third-party timeout,
48
+ unhandled exception), and how to search these logs to debug the
49
+ original "customers getting 500 errors" issue quickly.
50
+
51
+ assertions:
52
+ - type: llm_judge
53
+ criteria: "Log format is structured and searchable — uses JSON format with consistent fields (timestamp, level, request_id, method, path, status_code, error_type, message, duration_ms, user_id). Includes enough context to reproduce issues without needing to add more logging"
54
+ weight: 0.35
55
+ description: "Structured searchable log format"
56
+ - type: llm_judge
57
+ criteria: "Sensitive data handling is thorough — credit cards, passwords, tokens are never logged. Phone numbers and addresses are properly masked. Explains the masking strategy (middleware vs per-field) and how to prevent accidental logging of request/response bodies containing sensitive data"
58
+ weight: 0.35
59
+ description: "Thorough sensitive data handling"
60
+ - type: llm_judge
61
+ criteria: "Example log entries are realistic and the debugging workflow is practical — shows how to filter logs by request_id, status_code, error_type to quickly identify the root cause. The 3 example entries demonstrate different error severities and contexts"
62
+ weight: 0.30
63
+ description: "Realistic examples and debugging workflow"
@@ -0,0 +1,58 @@
1
+ meta:
2
+ id: error-response-format
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Design error response format — create a consistent JSON error response structure for a REST API"
7
+ tags: [REST, API, error-response, JSON, format, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're building a recipe sharing API and different endpoints return
13
+ errors in completely different formats. Your team lead says this is
14
+ confusing for frontend developers and asks you to standardize.
15
+
16
+ Current inconsistent error responses across your API:
17
+
18
+ Endpoint 1 - POST /recipes (validation error):
19
+ { "error": "Title is required" }
20
+
21
+ Endpoint 2 - GET /recipes/999 (not found):
22
+ { "message": "Recipe not found", "code": 404 }
23
+
24
+ Endpoint 3 - POST /recipes (auth error):
25
+ { "status": "error", "reason": "Invalid token" }
26
+
27
+ Endpoint 4 - POST /recipes/5/reviews (rate limit):
28
+ "Too many requests, please try again later"
29
+
30
+ Endpoint 5 - PATCH /recipes/5 (validation errors):
31
+ { "errors": ["Title too long", "Invalid category"] }
32
+
33
+ Frontend developers are complaining:
34
+ - "I never know which field to check for the error message"
35
+ - "Sometimes I get a string, sometimes an object"
36
+ - "Validation errors come in different shapes"
37
+ - "I can't tell if an error is my fault or the server's fault"
38
+ - "There's no way to show specific field errors in the form"
39
+
40
+ Task: Design a unified error response format for the entire API.
41
+ Show: the standard error response schema (with required and optional
42
+ fields), examples for each of the 5 error types above rewritten in
43
+ the new format, guidelines for when to include each optional field,
44
+ and the implementation approach (middleware vs per-handler).
45
+
46
+ assertions:
47
+ - type: llm_judge
48
+ criteria: "Error format is well-designed — includes a machine-readable error code/type, a human-readable message, and the HTTP status code. Handles single errors and multiple validation errors in the same structure. Includes a way to associate errors with specific fields for form validation"
49
+ weight: 0.35
50
+ description: "Well-designed error format"
51
+ - type: llm_judge
52
+ criteria: "All 5 error types are rewritten consistently — validation errors show field-level detail, not-found errors include resource identification, auth errors distinguish authentication vs authorization, rate limit errors include retry-after information, and all follow the same top-level structure"
53
+ weight: 0.35
54
+ description: "Consistent error rewrites"
55
+ - type: llm_judge
56
+ criteria: "Implementation guidance is practical — recommends middleware/error handler pattern for consistency, explains how to throw standardized errors from route handlers, and addresses how to prevent internal error details from leaking to the client"
57
+ weight: 0.30
58
+ description: "Practical implementation guidance"
@@ -0,0 +1,67 @@
1
+ meta:
2
+ id: first-error-handling-shift
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "First error handling shift — handle a stream of real-time API errors during a product launch event"
7
+ tags: [REST, API, error-handling, shift-simulation, launch, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're on your first on-call shift for a ticket marketplace API.
13
+ The company is launching sales for a major concert tonight and
14
+ traffic will spike 10x. Your job is to review the API's error
15
+ handling before the launch.
16
+
17
+ During your pre-launch review, you find these issues:
18
+
19
+ Issue 1 — No global error handler:
20
+ If any route throws an unhandled exception, Express returns:
21
+ <!DOCTYPE html><html><body><pre>TypeError: Cannot read property
22
+ 'email' of undefined<br>&nbsp; at /app/src/routes/tickets.js:45
23
+ </pre></body></html>
24
+ (HTML error page with stack trace)
25
+
26
+ Issue 2 — Inconsistent error shapes:
27
+ - /tickets returns { "error": "..." }
28
+ - /orders returns { "message": "...", "code": 123 }
29
+ - /payments returns { "errors": ["..."] }
30
+ - /users returns { "status": "fail", "data": { "message": "..." } }
31
+
32
+ Issue 3 — Database errors leak:
33
+ When the database constraint prevents duplicate ticket purchases:
34
+ "duplicate key value violates unique constraint
35
+ 'orders_user_id_ticket_id_key'"
36
+
37
+ Issue 4 — No rate limiting on search:
38
+ GET /tickets/search has no rate limit. During the last sale, bots
39
+ made 50,000 requests/second and the API crashed.
40
+
41
+ Issue 5 — Payment errors are too vague:
42
+ POST /orders/:id/pay returns 400 { "error": "Payment failed" }
43
+ for every payment issue (declined card, insufficient funds,
44
+ expired card, processing timeout, fraud detection).
45
+
46
+ Issue 6 — Timeout errors unhandled:
47
+ The external payment processor sometimes takes 30+ seconds. The API
48
+ has no timeout, so requests hang until the client gives up.
49
+
50
+ Task: Fix all 6 issues before the launch. For each, write: what's
51
+ wrong (the risk for tonight's launch), the fix (code structure or
52
+ configuration), and the expected error response after the fix.
53
+ Prioritize the fixes by launch impact.
54
+
55
+ assertions:
56
+ - type: llm_judge
57
+ criteria: "All 6 issues are fixed with correct solutions — global error handler catches unhandled exceptions (no HTML/stack traces), error format is standardized, database errors are translated to user-friendly messages, rate limiting is implemented for search, payment errors are specific but secure, and timeout handling is added with appropriate status codes"
58
+ weight: 0.35
59
+ description: "All issues fixed correctly"
60
+ - type: llm_judge
61
+ criteria: "Prioritization is sound — identifies which issues pose the greatest risk for a high-traffic launch event (no global error handler and no rate limiting are critical, inconsistent formats are important but not urgent). Each fix includes the expected error response"
62
+ weight: 0.35
63
+ description: "Sound prioritization"
64
+ - type: llm_judge
65
+ criteria: "Solutions are launch-ready — fixes are quick to implement (no major refactors), handle the specific high-traffic scenario (10x spike), and include monitoring so the on-call engineer can see errors in real-time during the launch"
66
+ weight: 0.30
67
+ description: "Launch-ready solutions"
@@ -0,0 +1,46 @@
1
+ meta:
2
+ id: http-status-codes
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Classify HTTP status codes — match API scenarios to correct status codes across 2xx, 4xx, and 5xx families"
7
+ tags: [REST, API, HTTP, status-codes, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're a junior backend developer who just joined a team building a
13
+ task management API. During your first code review, the senior
14
+ developer flagged that your endpoints return wrong status codes.
15
+
16
+ Your current mistakes:
17
+ 1. POST /tasks returns 200 when a task is created (should be 201)
18
+ 2. DELETE /tasks/:id returns 200 with empty body (should be 204)
19
+ 3. GET /tasks/:id returns 200 with { error: "not found" } when the
20
+ task doesn't exist (should be 404)
21
+ 4. POST /tasks with missing "title" field returns 500 (should be 400)
22
+ 5. GET /tasks with expired auth token returns 403 (should be 401)
23
+ 6. PUT /tasks/:id on someone else's task returns 404 (should be 403)
24
+ 7. POST /tasks when the database is down returns 400 (should be 503)
25
+ 8. PATCH /tasks/:id with Content-Type: text/plain returns 500
26
+ (should be 415)
27
+
28
+ Task: For each of the 8 mistakes, explain: (1) why your current
29
+ status code is wrong, (2) what the correct status code is and why,
30
+ and (3) the general rule for when to use that status code. Then
31
+ create a quick-reference cheat sheet mapping common API scenarios
32
+ to their correct HTTP status codes.
33
+
34
+ assertions:
35
+ - type: llm_judge
36
+ criteria: "Correctly identifies all 8 status code fixes — 201 Created for resource creation, 204 No Content for successful deletion, 404 Not Found for missing resources, 400 Bad Request for validation errors, 401 Unauthorized for expired/missing auth, 403 Forbidden for insufficient permissions, 503 Service Unavailable for downstream failures, 415 Unsupported Media Type for wrong content types"
37
+ weight: 0.35
38
+ description: "Correct status code identification"
39
+ - type: llm_judge
40
+ criteria: "Explanations demonstrate understanding of status code semantics — distinguishes between 401 (identity unknown) and 403 (identity known, permission denied), between 400 (client mistake) and 500 (server mistake), and between 200 (response body) and 204 (no body)"
41
+ weight: 0.35
42
+ description: "Status code semantic understanding"
43
+ - type: llm_judge
44
+ criteria: "Cheat sheet is practical and organized — groups status codes by family (2xx success, 4xx client error, 5xx server error), covers common API scenarios beyond just the 8 mistakes, and is formatted for quick reference"
45
+ weight: 0.30
46
+ description: "Practical cheat sheet"
@@ -0,0 +1,52 @@
1
+ meta:
2
+ id: not-found-errors
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Handle not-found errors — distinguish between missing resources, wrong URLs, and deleted content with appropriate responses"
7
+ tags: [REST, API, 404, not-found, routing, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're maintaining a blog API and users are reporting confusing
13
+ behavior. All of these return the same generic 404 response:
14
+
15
+ { "error": "Not found" }
16
+
17
+ But they represent very different situations:
18
+
19
+ 1. GET /posts/42 — Post exists but is in draft status (not published)
20
+ 2. GET /posts/99999 — Post ID doesn't exist at all
21
+ 3. GET /posts/abc — Post ID is not a valid integer
22
+ 4. GET /postz/42 — Typo in the URL path (postz instead of posts)
23
+ 5. GET /posts/42 — Post existed but was deleted 3 days ago
24
+ 6. GET /posts/42 — Post exists but belongs to a different tenant
25
+ in your multi-tenant system
26
+ 7. GET /users/5/posts/42 — User 5 exists but post 42 belongs to
27
+ user 8
28
+ 8. GET /v1/posts/42 — API v1 is deprecated, only v2 exists
29
+
30
+ The frontend developer says: "I can't tell if the user mistyped
31
+ the URL, if the post was deleted, if it's a permission issue, or
32
+ if the endpoint doesn't exist. They all look the same!"
33
+
34
+ Task: Design the appropriate response for each of the 8 scenarios.
35
+ Not all of them should be 404 — decide which HTTP status code
36
+ fits each case and explain why. Write the response body for each
37
+ scenario. Then create a decision tree for "when the resource isn't
38
+ there" that the team can follow.
39
+
40
+ assertions:
41
+ - type: llm_judge
42
+ criteria: "Status code selection is correct for each case — distinguishes between 404 (truly not found), 400 (invalid ID format), 410 Gone (deleted content), 403 (wrong tenant/ownership), and appropriate handling for draft content and deprecated API versions. Not all 8 should be 404"
43
+ weight: 0.35
44
+ description: "Correct status code selection"
45
+ - type: llm_judge
46
+ criteria: "Response bodies are helpful without leaking information — draft posts don't reveal that the post exists (security consideration in multi-tenant), deleted posts may use 410 Gone with deletion context, invalid IDs explain the expected format, and deprecated versions redirect to the current version"
47
+ weight: 0.35
48
+ description: "Helpful secure responses"
49
+ - type: llm_judge
50
+ criteria: "Decision tree is clear and usable — provides a logical flow for developers to determine the right response when a resource isn't found, considers security implications (don't confirm existence to unauthorized users), and handles edge cases like soft deletes and multi-tenancy"
51
+ weight: 0.30
52
+ description: "Clear decision tree"
@@ -0,0 +1,56 @@
1
+ meta:
2
+ id: rate-limiting-errors
3
+ level: 1
4
+ course: rest-api-error-handling
5
+ type: output
6
+ description: "Implement rate limiting errors — design 429 responses with proper headers and retry guidance for API consumers"
7
+ tags: [REST, API, rate-limiting, 429, throttling, beginner]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're building a weather data API that offers free and paid tiers.
13
+ The current rate limiting returns 429 with this response:
14
+
15
+ HTTP/1.1 429
16
+ { "error": "Too many requests" }
17
+
18
+ Customers are complaining:
19
+ - "When can I retry? 1 second? 1 hour?"
20
+ - "How many requests do I have left?"
21
+ - "I didn't even know there was a rate limit until my app broke"
22
+ - "My batch job got rate limited and I lost 2 hours of processing"
23
+ - "The paid plan says 1000 requests/minute but I got limited at 800"
24
+
25
+ Rate limit tiers:
26
+ - Free: 60 requests/minute, 1000 requests/day
27
+ - Basic ($29/mo): 600 requests/minute, 50,000 requests/day
28
+ - Pro ($99/mo): 3000 requests/minute, unlimited daily
29
+ - Enterprise: custom limits
30
+
31
+ Additional rules:
32
+ - Burst allowance: 2x the per-minute limit for up to 10 seconds
33
+ - Different limits for different endpoints (search: 10/min free,
34
+ forecast: 60/min free)
35
+ - Authenticated vs unauthenticated requests have different limits
36
+
37
+ Task: Design the complete rate limiting error response. Include:
38
+ the 429 response body with all necessary information, the rate
39
+ limit headers (standard and custom), the response headers that
40
+ should appear on ALL responses (not just 429) so clients can
41
+ proactively manage their usage, and a guide for API consumers
42
+ on how to handle rate limits gracefully (backoff strategies).
43
+
44
+ assertions:
45
+ - type: llm_judge
46
+ criteria: "429 response includes standard rate limit headers — X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (or Retry-After), with clear documentation of header semantics. Response body includes retry timing, current limit, and which limit was hit (per-minute vs daily)"
47
+ weight: 0.35
48
+ description: "Proper 429 response with headers"
49
+ - type: llm_judge
50
+ criteria: "Rate limit information appears on ALL responses — successful responses include remaining quota and reset time so clients can proactively avoid hitting limits. The design handles the complexity of multiple limit windows (per-minute and daily) and per-endpoint limits"
51
+ weight: 0.35
52
+ description: "Proactive rate limit headers"
53
+ - type: llm_judge
54
+ criteria: "Consumer guidance is practical — explains exponential backoff with jitter, how to read rate limit headers proactively, how to build a request queue that respects limits, and addresses the batch processing use case (how to process large workloads within rate limits)"
55
+ weight: 0.30
56
+ description: "Practical consumer guidance"