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,90 @@
1
+ meta:
2
+ id: workflow-debugging
3
+ level: 1
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Debug GitHub Actions workflows — diagnose and fix common workflow failures, read logs effectively, and use debug mode"
7
+ tags: [github, actions, debugging, troubleshooting, logs, basics]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're helping a junior developer debug their first GitHub Actions
13
+ workflow. They've hit 5 different errors and can't figure out what's
14
+ wrong. For each error, diagnose the problem and provide the fix.
15
+
16
+ Error 1 — Workflow not triggering:
17
+ "I pushed to my feature branch but the workflow didn't run at all.
18
+ No entry in the Actions tab."
19
+ Their trigger config:
20
+ ```yaml
21
+ on:
22
+ push:
23
+ branches: [main]
24
+ pull_request:
25
+ branches: [main]
26
+ ```
27
+ They pushed to the branch 'feature/login' without opening a PR.
28
+
29
+ Error 2 — Permission denied:
30
+ ```
31
+ Error: HttpError: Resource not accessible by integration
32
+ ```
33
+ Their workflow tries to comment on a PR using the GITHUB_TOKEN.
34
+ The workflow is triggered by pull_request from a fork.
35
+
36
+ Error 3 — Action not found:
37
+ ```
38
+ Error: Can't find 'action.yml', 'action.yaml' or 'Dockerfile'
39
+ under '/home/runner/work/_actions/actions/setup-node/4'
40
+ ```
41
+ Their step: `uses: actions/setup-node@4` (missing the 'v' prefix)
42
+
43
+ Error 4 — Cache miss every time:
44
+ "My workflow takes 8 minutes because npm install runs fresh every
45
+ time. I added caching but it never hits."
46
+ ```yaml
47
+ - uses: actions/cache@v4
48
+ with:
49
+ path: node_modules
50
+ key: npm-${{ hashFiles('package.json') }}
51
+ ```
52
+ The issue: they're hashing package.json not package-lock.json.
53
+
54
+ Error 5 — Job output not available:
55
+ "My second job can't read the output from my first job. It's always
56
+ empty."
57
+ ```yaml
58
+ jobs:
59
+ build:
60
+ runs-on: ubuntu-latest
61
+ steps:
62
+ - run: echo "version=1.2.3" >> $GITHUB_OUTPUT
63
+ deploy:
64
+ needs: build
65
+ runs-on: ubuntu-latest
66
+ steps:
67
+ - run: echo "Deploying ${{ needs.build.outputs.version }}"
68
+ ```
69
+ They forgot to declare outputs at the job level.
70
+
71
+ Task: For each error, write: the diagnosis (what went wrong and why),
72
+ the fix (corrected YAML or configuration), the prevention strategy
73
+ (how to avoid this in the future), and the debugging technique (how
74
+ to find this type of error faster). Include a general GitHub Actions
75
+ debugging guide covering: enabling debug logging, reading workflow
76
+ run logs effectively, and the act tool for local testing.
77
+
78
+ assertions:
79
+ - type: llm_judge
80
+ criteria: "All 5 errors are correctly diagnosed — trigger scope for Error 1, fork PR permissions for Error 2, version tag format for Error 3, cache key using wrong file for Error 4, and missing job-level outputs declaration for Error 5"
81
+ weight: 0.35
82
+ description: "Correct error diagnoses"
83
+ - type: llm_judge
84
+ criteria: "Fixes are specific and correct — each fix shows the corrected YAML snippet, and the fixes address the root cause (not just the symptom). Error 2's fix addresses the fundamental fork permission model, not just a workaround"
85
+ weight: 0.35
86
+ description: "Specific correct fixes"
87
+ - type: llm_judge
88
+ criteria: "Debugging guide is practical — covers ACTIONS_RUNNER_DEBUG and ACTIONS_STEP_DEBUG secrets, how to navigate workflow run logs in the GitHub UI, the 'act' tool for local workflow testing, and at least 3 prevention strategies (linting, local testing, PR templates)"
89
+ weight: 0.30
90
+ description: "Practical debugging guide"
@@ -0,0 +1,59 @@
1
+ meta:
2
+ id: workflow-status-notifications
3
+ level: 1
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Configure workflow notifications — set up status badges, Slack alerts, and PR comments to communicate CI results effectively"
7
+ tags: [github, actions, notifications, badges, Slack, PR-comments, basics]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your team wants better visibility into CI status. Currently, the
13
+ only way to know if CI passed is to click into the Actions tab.
14
+ You need to set up 3 notification channels.
15
+
16
+ Channel 1 — README status badges:
17
+ - Add build status badge to README.md
18
+ - Show status for the main branch
19
+ - Include separate badges for: CI tests, deploy status, and
20
+ code coverage percentage
21
+
22
+ Channel 2 — Slack notifications:
23
+ - Send a message to #engineering-ci channel when:
24
+ * A deployment to production succeeds (green message)
25
+ * Any CI run on main fails (red message with link to logs)
26
+ - Do NOT notify on:
27
+ * Successful PR CI runs (too noisy)
28
+ * Cancelled workflows
29
+ - Include: commit message, author, branch, link to workflow run
30
+
31
+ Channel 3 — PR comments:
32
+ - Post a comment on the PR with:
33
+ * Test results summary (X passed, Y failed, Z skipped)
34
+ * Code coverage percentage (from coverage report)
35
+ * Build size comparison (current vs main)
36
+ * Link to full logs
37
+ - Update the existing comment instead of posting a new one each
38
+ time (avoid comment spam)
39
+
40
+ Task: Write the workflow additions for all 3 channels. Include: the
41
+ status badge markdown for the README, the Slack notification workflow
42
+ job (using a Slack webhook or action), the PR comment job (using
43
+ actions/github-script or similar), and the logic to update existing
44
+ comments instead of creating new ones. Explain the trade-offs of each
45
+ notification approach.
46
+
47
+ assertions:
48
+ - type: llm_judge
49
+ criteria: "Status badges are correct — uses the correct GitHub badge URL format (https://github.com/OWNER/REPO/actions/workflows/FILE/badge.svg?branch=main), includes multiple badges, and the markdown syntax is valid for README.md"
50
+ weight: 0.35
51
+ description: "Correct status badges"
52
+ - type: llm_judge
53
+ criteria: "Slack notification is properly conditional — only sends on main branch failures and production deploy successes, uses correct if: conditions to filter events, and the message includes all required context (commit, author, link)"
54
+ weight: 0.35
55
+ description: "Properly conditional Slack notification"
56
+ - type: llm_judge
57
+ criteria: "PR comment uses find-and-update pattern — searches for existing bot comment (by marker text or comment body pattern), updates if found or creates if not, includes test results and coverage, and the implementation uses GitHub API correctly"
58
+ weight: 0.30
59
+ description: "Smart PR comment updates"
@@ -0,0 +1,56 @@
1
+ meta:
2
+ id: workflow-triggers
3
+ level: 1
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Configure workflow triggers — set up push, pull_request, schedule, workflow_dispatch, and release triggers with filters"
7
+ tags: [github, actions, triggers, events, schedule, workflow-dispatch, basics]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're configuring triggers for an e-commerce application's CI/CD
13
+ pipeline. The team needs 5 different workflow files, each with a
14
+ specific trigger configuration.
15
+
16
+ Workflow 1 — CI Tests (ci.yml):
17
+ - Run on every push to any branch
18
+ - Run on every pull request to the main branch
19
+ - Only run when source code changes (src/** or package.json), NOT
20
+ when only documentation (docs/**) or README changes
21
+
22
+ Workflow 2 — Nightly Cleanup (nightly.yml):
23
+ - Run every day at 2:00 AM UTC
24
+ - Also allow manual triggering for on-demand cleanup
25
+
26
+ Workflow 3 — Production Deploy (deploy.yml):
27
+ - Manual trigger only (workflow_dispatch)
28
+ - Accept an input parameter "environment" with options: staging, production
29
+ - Accept an input parameter "version" (required, string)
30
+
31
+ Workflow 4 — Release (release.yml):
32
+ - Trigger when a GitHub Release is published
33
+ - Should NOT trigger on draft releases or pre-releases
34
+
35
+ Workflow 5 — Dependency Update (deps.yml):
36
+ - Run every Monday at 9:00 AM UTC
37
+ - Also trigger when package-lock.json changes on push to main
38
+
39
+ Task: Write the complete 'on:' section for each workflow file. For
40
+ each, explain: when it will trigger, when it will NOT trigger, and
41
+ one common pitfall to avoid. Also explain the difference between
42
+ 'paths' and 'paths-ignore' filters, and when to use each.
43
+
44
+ assertions:
45
+ - type: llm_judge
46
+ criteria: "All 5 trigger configurations are syntactically correct — push with branch and path filters, schedule with valid cron expressions (0 2 * * * for daily 2AM, 0 9 * * 1 for Monday 9AM), workflow_dispatch with typed inputs, release with types: [published]"
47
+ weight: 0.35
48
+ description: "Syntactically correct triggers"
49
+ - type: llm_judge
50
+ criteria: "Trigger behavior is accurately explained — each workflow's trigger and non-trigger conditions are correct, the paths/paths-ignore distinction is clear, and pitfalls are practical (e.g., schedule cron runs on default branch only, workflow_dispatch only works on default branch)"
51
+ weight: 0.35
52
+ description: "Accurate trigger behavior explanation"
53
+ - type: llm_judge
54
+ criteria: "Pitfalls and edge cases are noted — mentions that paths filters don't work with schedule triggers, that release published excludes drafts, that cron schedules can be delayed by GitHub load, and that workflow_dispatch inputs have no runtime validation by default"
55
+ weight: 0.30
56
+ description: "Practical pitfalls and edge cases"
@@ -0,0 +1,58 @@
1
+ meta:
2
+ id: concurrency-control
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Manage workflow concurrency — prevent duplicate runs, configure merge queues, and handle parallel deployments safely"
7
+ tags: [github, actions, concurrency, merge-queue, parallel, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your team's CI/CD has several concurrency problems causing wasted
13
+ resources and deployment conflicts:
14
+
15
+ Problem 1 — Duplicate CI runs:
16
+ A developer pushes 3 commits in quick succession. Each push triggers
17
+ a separate CI run. The first 2 runs are wasted because only the
18
+ latest commit matters. This wastes 24 minutes of runner time per
19
+ occurrence, happening ~20 times per day.
20
+
21
+ Problem 2 — Deployment conflicts:
22
+ Two PRs merge to main within seconds of each other. Both trigger
23
+ deployment workflows. The deployments race — sometimes deployment B
24
+ starts before deployment A finishes, causing a partially deployed
25
+ state. Last week this caused a 30-minute outage.
26
+
27
+ Problem 3 — PR merge bottleneck:
28
+ With "require branch up to date with main" enabled, only one PR can
29
+ merge at a time. Each PR merge triggers CI again. With 15 PRs per
30
+ day, this creates a 2-hour queue. The team is considering GitHub's
31
+ merge queue feature.
32
+
33
+ Problem 4 — Resource contention:
34
+ Self-hosted runners (4 total) are overwhelmed during peak hours
35
+ (10AM-2PM). 12 workflows queue up for runners, and some time out
36
+ after 30 minutes waiting.
37
+
38
+ Task: Solve all 4 problems. For each, write: the root cause analysis,
39
+ the solution using GitHub Actions concurrency features (concurrency
40
+ groups, cancel-in-progress, merge queue), the workflow YAML changes,
41
+ and the trade-offs of each solution. Include: the concurrency group
42
+ naming strategy (how to scope groups by PR, branch, or workflow),
43
+ the merge queue configuration, and the runner capacity planning
44
+ recommendations.
45
+
46
+ assertions:
47
+ - type: llm_judge
48
+ criteria: "Concurrency groups are correctly configured — uses concurrency with group names scoped appropriately (e.g., ci-${{ github.ref }} for CI, deploy-production for deployments), cancel-in-progress: true for CI but false for deployments, and the naming strategy prevents accidental conflicts"
49
+ weight: 0.35
50
+ description: "Correct concurrency configuration"
51
+ - type: llm_judge
52
+ criteria: "All 4 problems are solved — duplicate runs cancelled with concurrency groups, deployments serialized with concurrency (no cancel), merge queue configured to batch PRs, and runner capacity recommendations address peak load (scaling, priority queues)"
53
+ weight: 0.35
54
+ description: "All problems solved"
55
+ - type: llm_judge
56
+ criteria: "Trade-offs are explained — notes that cancel-in-progress means intermediate results are lost, serialized deployments slow down when many PRs merge, merge queue adds complexity, and runner scaling has cost implications"
57
+ weight: 0.30
58
+ description: "Trade-offs explained"
@@ -0,0 +1,60 @@
1
+ meta:
2
+ id: conditional-execution
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Master conditional execution — use if expressions, status functions, and context variables to control when jobs and steps run"
7
+ tags: [github, actions, conditional, if-expressions, contexts, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're building a sophisticated deployment workflow that must behave
13
+ differently based on various conditions. The workflow needs to handle
14
+ multiple deployment targets, branch-specific logic, and failure
15
+ recovery.
16
+
17
+ Scenarios to implement:
18
+
19
+ Scenario 1 — Branch-based deployment:
20
+ - Push to main → deploy to staging
21
+ - Push with tag v*.*.* → deploy to production
22
+ - Push to feature/* → deploy to preview environment
23
+ - Pull request → run tests only (no deployment)
24
+
25
+ Scenario 2 — Conditional step execution:
26
+ - Run database migrations only if migration files changed
27
+ - Send Slack notification only on failure
28
+ - Skip expensive E2E tests if the PR is labeled "skip-e2e"
29
+ - Run security scan only on PRs touching src/auth/** files
30
+
31
+ Scenario 3 — Context-based decisions:
32
+ - Use different AWS accounts based on environment (staging/production)
33
+ - Set different resource limits based on runner type
34
+ - Include debug logging only when triggered manually with debug=true
35
+
36
+ Scenario 4 — Error recovery:
37
+ - If deployment fails, automatically run rollback
38
+ - If rollback also fails, page the on-call engineer
39
+ - Always run cleanup steps regardless of failure
40
+ - Produce a deployment report with pass/fail status for each step
41
+
42
+ Task: Write the workflow YAML covering all 4 scenarios. For each
43
+ condition, explain: the expression syntax, the available context
44
+ variables (github.event_name, github.ref, contains(), startsWith()),
45
+ and the evaluation rules (when does a condition short-circuit). Include
46
+ a cheat sheet of the most useful conditional expressions.
47
+
48
+ assertions:
49
+ - type: llm_judge
50
+ criteria: "Conditional expressions are syntactically correct — uses github.ref, github.event_name, contains(), startsWith(), success(), failure(), always(), and the expressions handle all 4 scenarios correctly including tag matching for semver"
51
+ weight: 0.35
52
+ description: "Correct conditional expressions"
53
+ - type: llm_judge
54
+ criteria: "Error recovery pattern is sound — deployment failure triggers rollback step (if: failure()), rollback failure triggers paging, cleanup runs with if: always(), and the deployment report captures status from all steps using step outcomes"
55
+ weight: 0.35
56
+ description: "Sound error recovery pattern"
57
+ - type: llm_judge
58
+ criteria: "Cheat sheet is comprehensive and practical — covers the most common 10+ conditional patterns, explains boolean logic in expressions, notes that secrets context is not available in if: conditions, and clarifies the difference between job-level and step-level if:"
59
+ weight: 0.30
60
+ description: "Comprehensive conditional cheat sheet"
@@ -0,0 +1,55 @@
1
+ meta:
2
+ id: custom-actions-development
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Develop custom GitHub Actions — build JavaScript, Docker, and composite actions for team-specific automation needs"
7
+ tags: [github, actions, custom-actions, JavaScript, Docker, composite, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your team has 3 automation needs that aren't covered by existing
13
+ marketplace actions. You need to build custom actions.
14
+
15
+ Action 1 — "deployment-notifier" (Composite action):
16
+ Purpose: Post a formatted deployment summary to Slack and update
17
+ a GitHub deployment status. Used in 8 repos.
18
+ Inputs: environment, version, status (success/failure), slack-webhook
19
+ Behavior: Posts Slack message with deployment details, creates GitHub
20
+ deployment status, and writes a summary to $GITHUB_STEP_SUMMARY
21
+
22
+ Action 2 — "pr-size-labeler" (JavaScript action):
23
+ Purpose: Automatically label PRs by size (XS, S, M, L, XL) based
24
+ on lines changed. Also warn if the PR exceeds 500 lines.
25
+ Inputs: github-token, size-thresholds (JSON: {XS: 10, S: 50, ...})
26
+ Behavior: Reads PR diff stats, applies label, posts warning comment
27
+ if over threshold
28
+
29
+ Action 3 — "security-context-check" (Docker action):
30
+ Purpose: Scan environment for leaked secrets, check that no
31
+ hardcoded credentials exist in the code, and verify .env files
32
+ aren't committed. Runs in an isolated Docker container for security.
33
+ Inputs: scan-paths, exclude-patterns, severity-threshold
34
+ Outputs: findings-count, report-path
35
+
36
+ Task: Build all 3 actions. For each, write: the action.yml metadata
37
+ file, the implementation (shell script for composite, index.js for
38
+ JavaScript, Dockerfile + entrypoint for Docker), the test strategy
39
+ (how to test custom actions), and the publishing approach (how to
40
+ version and release). Compare the 3 action types: when to use each,
41
+ performance differences, and maintenance considerations.
42
+
43
+ assertions:
44
+ - type: llm_judge
45
+ criteria: "action.yml files are correctly structured — each has proper name, description, inputs with types/defaults/required, outputs where applicable, runs section matching the action type (composite/node20/docker), and branding metadata"
46
+ weight: 0.35
47
+ description: "Correct action.yml structure"
48
+ - type: llm_judge
49
+ criteria: "Implementations are functional — composite action uses correct shell syntax with ${{ inputs.* }}, JavaScript action uses @actions/core and @actions/github packages correctly, Docker action has proper Dockerfile and entrypoint script receiving inputs as env vars"
50
+ weight: 0.35
51
+ description: "Functional implementations"
52
+ - type: llm_judge
53
+ criteria: "Comparison helps decision-making — explains when to choose composite (simple, no build step), JavaScript (rich API access, fast startup), or Docker (isolation, any language), and covers testing strategies, versioning with tags, and the marketplace publishing process"
54
+ weight: 0.30
55
+ description: "Decision-helping comparison"
@@ -0,0 +1,58 @@
1
+ meta:
2
+ id: dependency-caching
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Optimize dependency caching — configure actions/cache and built-in caching to dramatically reduce CI build times"
7
+ tags: [github, actions, caching, dependencies, optimization, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your team's CI workflow takes 12 minutes per run, and 8 of those
13
+ minutes are spent installing dependencies. With 80 CI runs per day,
14
+ that's over 10 hours wasted on dependency installation daily. You
15
+ need to implement an effective caching strategy.
16
+
17
+ Project details:
18
+ - Monorepo with 3 packages (frontend, backend, shared)
19
+ - Frontend: npm (package-lock.json)
20
+ - Backend: pip (requirements.txt + requirements-dev.txt)
21
+ - Shared: Go modules (go.sum)
22
+ - Docker builds: multi-stage Dockerfile for backend
23
+
24
+ Current (no caching) timing:
25
+ - npm ci: 3 minutes
26
+ - pip install: 2 minutes
27
+ - go mod download: 1.5 minutes
28
+ - Docker build: 1.5 minutes (downloads base images each time)
29
+
30
+ Caching scenarios to solve:
31
+ 1. Basic npm caching using actions/setup-node's built-in cache
32
+ 2. Advanced npm caching using actions/cache with fallback keys
33
+ 3. pip caching with multiple requirements files as cache key
34
+ 4. Go module caching
35
+ 5. Docker layer caching (using actions/cache or buildx cache)
36
+ 6. Cross-branch cache sharing (feature branch uses main's cache)
37
+
38
+ Task: Implement caching for all 5 dependency types. For each, write:
39
+ the cache configuration (key, restore-keys, path), the explanation
40
+ of the cache key strategy (why hash this file, what happens on
41
+ cache miss), the expected time savings, and common caching pitfalls
42
+ to avoid. Include a comparison of built-in caching (setup-node,
43
+ setup-python) vs explicit actions/cache, and explain when each is
44
+ preferred.
45
+
46
+ assertions:
47
+ - type: llm_judge
48
+ criteria: "Cache keys are correctly designed — npm uses hashFiles('**/package-lock.json'), pip uses hashFiles of requirements files, Go uses hashFiles('**/go.sum'), restore-keys provide fallback for partial matches, and the cross-branch sharing strategy is explained"
49
+ weight: 0.35
50
+ description: "Correctly designed cache keys"
51
+ - type: llm_judge
52
+ criteria: "All 5 dependency types are cached — npm, pip, Go modules, and Docker layers all have correct cache configurations with appropriate paths (node_modules or ~/.npm, ~/.cache/pip, ~/go/pkg/mod) and the Docker caching uses buildx with cache-from/cache-to or actions/cache"
53
+ weight: 0.35
54
+ description: "Complete caching for all types"
55
+ - type: llm_judge
56
+ criteria: "Pitfalls and trade-offs are addressed — explains cache size limits (10GB per repo), cache eviction policy (LRU, 7-day expiry), the danger of caching node_modules vs ~/.npm, and when built-in caching (setup-node cache: npm) is simpler than explicit actions/cache"
57
+ weight: 0.30
58
+ description: "Pitfalls and trade-offs addressed"
@@ -0,0 +1,61 @@
1
+ meta:
2
+ id: deployment-workflows
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Build deployment workflows — create staging and production deployment pipelines with approval gates and rollback"
7
+ tags: [github, actions, deployment, staging, production, rollback, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're building deployment workflows for a web application that needs
13
+ to deploy to staging automatically and to production with manual
14
+ approval. The application runs on AWS (ECS for the API, S3 + CloudFront
15
+ for the frontend).
16
+
17
+ Deployment requirements:
18
+ 1. Staging deployment:
19
+ - Automatically deploy when PR is merged to main
20
+ - Deploy both frontend (S3) and backend (ECS)
21
+ - Run smoke tests after deployment
22
+ - Notify #staging Slack channel with deployment URL
23
+
24
+ 2. Production deployment:
25
+ - Requires manual approval from a team lead
26
+ - Uses GitHub Environments with protection rules
27
+ - Deploy frontend first, then backend (ordered)
28
+ - Run health checks between each deployment step
29
+ - If health check fails, automatically rollback
30
+ - Notify #production Slack channel
31
+
32
+ 3. Rollback workflow:
33
+ - Manual trigger (workflow_dispatch) with version input
34
+ - Rolls back to the specified previous version
35
+ - Can also be triggered automatically from deployment failure
36
+
37
+ 4. Environment configuration:
38
+ - Staging: auto-deploy, no approval, 5-minute timeout
39
+ - Production: manual approval (2 required reviewers), deployment
40
+ window (weekdays 9AM-4PM ET only)
41
+
42
+ Task: Write all 3 workflow files (deploy-staging.yml, deploy-
43
+ production.yml, rollback.yml). Include: the GitHub Environment
44
+ configuration (protection rules, secrets per environment), the
45
+ deployment steps with health checks, the rollback mechanism, and
46
+ the Slack notification integration. Explain the deployment strategy
47
+ (blue-green, rolling, or canary) and why you chose it.
48
+
49
+ assertions:
50
+ - type: llm_judge
51
+ criteria: "GitHub Environments are correctly used — staging environment has no protection rules (auto-deploy), production has required reviewers and deployment branch restriction (main only), and environment-specific secrets are referenced correctly"
52
+ weight: 0.35
53
+ description: "Correct GitHub Environment usage"
54
+ - type: llm_judge
55
+ criteria: "Deployment and rollback are properly orchestrated — staging deploys automatically on merge, production requires approval, health checks run between steps, failures trigger automatic rollback, and the manual rollback workflow accepts a version input"
56
+ weight: 0.35
57
+ description: "Proper deployment orchestration"
58
+ - type: llm_judge
59
+ criteria: "Deployment strategy is explained and implemented — the chosen strategy (blue-green, rolling, or canary) is justified for the architecture (ECS + S3), the implementation matches the strategy, and the rollback mechanism is consistent with the deployment approach"
60
+ weight: 0.30
61
+ description: "Explained deployment strategy"
@@ -0,0 +1,59 @@
1
+ meta:
2
+ id: github-packages-publishing
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Publish to GitHub Packages — automate npm, Docker, and container registry publishing with versioning and access control"
7
+ tags: [github, actions, packages, npm, Docker, registry, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ Your organization has internal libraries and Docker images that need
13
+ to be published to GitHub Packages. You need to set up automated
14
+ publishing workflows for 3 different package types.
15
+
16
+ Package 1 — npm library (@myorg/shared-utils):
17
+ - Publish to GitHub Packages npm registry (not npmjs.com)
18
+ - Version from package.json
19
+ - Publish on GitHub Release creation
20
+ - Include provenance attestation
21
+ - Scoped to the organization (@myorg/*)
22
+
23
+ Package 2 — Docker image (myorg/api-server):
24
+ - Build and push to GitHub Container Registry (ghcr.io)
25
+ - Tag with: git SHA, branch name, semver from git tag, and "latest"
26
+ - Multi-architecture build (amd64 + arm64)
27
+ - Push on merge to main (tagged as latest + SHA)
28
+ - Push on release (tagged with version)
29
+
30
+ Package 3 — Python package (myorg-sdk):
31
+ - Build wheel and sdist
32
+ - Publish to GitHub Packages (not PyPI)
33
+ - Include in the same workflow as tests
34
+
35
+ Access control requirements:
36
+ - Internal packages: readable by all org members
37
+ - Docker images: public (for open-source project)
38
+ - npm packages: scoped to org, installable with GITHUB_TOKEN
39
+
40
+ Task: Write the publishing workflows for all 3 package types.
41
+ Include: the workflow YAML, the package.json / Dockerfile / setup.py
42
+ configuration needed for GitHub Packages, the authentication setup
43
+ (GITHUB_TOKEN permissions, .npmrc configuration), and the versioning
44
+ strategy for each package type. Explain the difference between GitHub
45
+ Packages and external registries.
46
+
47
+ assertions:
48
+ - type: llm_judge
49
+ criteria: "npm publishing is correctly configured — uses .npmrc with GitHub Packages registry URL, GITHUB_TOKEN authentication, publishConfig in package.json, provenance attestation with --provenance flag, and the workflow triggers on release published"
50
+ weight: 0.35
51
+ description: "Correct npm publishing"
52
+ - type: llm_judge
53
+ criteria: "Docker publishing uses GHCR correctly — authenticates with ghcr.io, uses docker/metadata-action for smart tagging (SHA, branch, semver), multi-arch build with docker/build-push-action and QEMU, and the image is properly tagged for both main and release triggers"
54
+ weight: 0.35
55
+ description: "Correct Docker GHCR publishing"
56
+ - type: llm_judge
57
+ criteria: "Access control and versioning are properly explained — differentiates package visibility settings, explains GITHUB_TOKEN vs PAT for cross-repo access, and the versioning strategy is consistent across package types (semver from git tags or package.json)"
58
+ weight: 0.30
59
+ description: "Proper access control and versioning"
@@ -0,0 +1,68 @@
1
+ meta:
2
+ id: intermediate-cicd-shift
3
+ level: 2
4
+ course: github-actions-cicd
5
+ type: output
6
+ description: "Intermediate CI/CD shift — handle complex workflow issues, optimization requests, and deployment incidents simultaneously"
7
+ tags: [github, actions, shift-simulation, troubleshooting, optimization, intermediate]
8
+
9
+ state: {}
10
+
11
+ trigger: |
12
+ You're the CI/CD on-call engineer handling multiple requests during
13
+ a busy shift. Handle all 4 situations.
14
+
15
+ Situation 1 — Deployment rollback needed:
16
+ Production deployment just completed but monitoring shows 500 errors
17
+ spiking from 0.1% to 5%. The deployment was triggered by a merge
18
+ to main 10 minutes ago. You need to:
19
+ - Identify which commit caused the issue
20
+ - Trigger a rollback to the previous version
21
+ - The rollback workflow exists but has never been used — you need
22
+ to verify it works and execute it
23
+ - Prevent further auto-deployments until the issue is resolved
24
+
25
+ Situation 2 — Matrix build timeout:
26
+ The cross-platform test matrix has been running for 2 hours (normal
27
+ is 20 minutes). Investigation shows: macOS runner is stuck on "Set
28
+ up job" with no logs. This is blocking a critical security patch PR.
29
+ You need to:
30
+ - Unblock the security patch
31
+ - Fix the matrix build for future runs
32
+ - Decide if you should rerun the entire matrix or just the failed job
33
+
34
+ Situation 3 — Secret exposure alert:
35
+ GitHub sent a secret scanning alert: an AWS access key was found in
36
+ a workflow file committed 2 hours ago. The key was in a hardcoded
37
+ env value (not using secrets). You need to:
38
+ - Assess the exposure (was the key used in any workflow runs?)
39
+ - Remediate immediately (rotate key, remove from code)
40
+ - Prevent recurrence (how to block secret commits)
41
+
42
+ Situation 4 — Cache corruption:
43
+ Multiple teams report that their CI workflows are failing with
44
+ "Module not found" errors despite no code changes. Investigation
45
+ shows the shared cache (node_modules) was corrupted by a workflow
46
+ that ran during a failed npm publish. You need to:
47
+ - Clear the corrupted cache for affected repos
48
+ - Fix the failing workflows immediately
49
+ - Prevent cache corruption from happening again
50
+
51
+ Task: Handle all 4 situations. For each, write: the immediate action
52
+ (what to do in the next 5 minutes), the resolution steps, the root
53
+ cause analysis, and the prevention measures. Prioritize and explain
54
+ your priority order.
55
+
56
+ assertions:
57
+ - type: llm_judge
58
+ criteria: "Priority order is correct — secret exposure (Situation 3) and production errors (Situation 1) are highest priority, matrix timeout (Situation 2) is medium (blocks security patch), and cache corruption (Situation 4) is handled but less urgent. The security patch PR gets unblocked quickly"
59
+ weight: 0.35
60
+ description: "Correct priority order"
61
+ - type: llm_judge
62
+ criteria: "Resolutions are technically sound — rollback uses the existing workflow with correct version targeting, secret remediation includes key rotation AND code removal AND history rewriting if needed, cache clearing uses correct GitHub API or CLI, and matrix fix addresses the macOS runner issue"
63
+ weight: 0.35
64
+ description: "Technically sound resolutions"
65
+ - type: llm_judge
66
+ criteria: "Prevention measures are systemic — secret scanning with push protection, pre-commit hooks for secrets, cache key design that prevents corruption (immutable keys), macOS runner fallback strategy, and deployment safeguards (canary, automatic rollback on error rate)"
67
+ weight: 0.30
68
+ description: "Systemic prevention measures"