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.
- package/courses/GENERATION_LOG.md +72 -0
- package/courses/api-error-handling/course.yaml +16 -0
- package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
- package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
- package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
- package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
- package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
- package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
- package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
- package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
- package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
- package/courses/aws-lambda-debugging/course.yaml +11 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
- package/courses/docker-container-debugging/course.yaml +11 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
- package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
- package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
- package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
- package/courses/github-actions-cicd/course.yaml +10 -0
- package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
- package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
- package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
- package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
- package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
- package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
- package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
- package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
- package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
- package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
- package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
- package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
- package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
- package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
- package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
- package/courses/mysql-query-optimization/course.yaml +11 -0
- package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
- package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
- package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
- package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
- package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
- package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
- package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
- package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
- package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
- package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
- package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
- package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
- package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
- package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
- package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
- package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
- package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
- package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
- package/courses/postgresql-query-optimization/course.yaml +11 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
- package/courses/rest-api-error-handling/course.yaml +11 -0
- package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
- package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
- package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
- package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
- package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
- package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
- package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
- package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
- package/courses/terraform-infrastructure-setup/course.yaml +11 -0
- package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +6 -5
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +4 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +6 -18
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/train.d.ts.map +1 -1
- package/dist/cli/commands/train.js +18 -18
- package/dist/cli/commands/train.js.map +1 -1
- package/dist/cli/index.js +93 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-demo.js +2 -1
- package/dist/cli/run-demo.js.map +1 -1
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/engine/agent-bridge.d.ts +5 -2
- package/dist/engine/agent-bridge.d.ts.map +1 -1
- package/dist/engine/agent-bridge.js +36 -9
- package/dist/engine/agent-bridge.js.map +1 -1
- package/dist/engine/loader.d.ts +21 -0
- package/dist/engine/loader.d.ts.map +1 -1
- package/dist/engine/loader.js +54 -1
- package/dist/engine/loader.js.map +1 -1
- package/dist/engine/training-loop.d.ts.map +1 -1
- package/dist/engine/training-loop.js +1 -0
- package/dist/engine/training-loop.js.map +1 -1
- package/dist/engine/training.d.ts.map +1 -1
- package/dist/engine/training.js +1 -0
- package/dist/engine/training.js.map +1 -1
- package/dist/generator/skill-generator.d.ts +1 -1
- package/dist/generator/skill-generator.d.ts.map +1 -1
- package/dist/generator/skill-generator.js +21 -2
- package/dist/generator/skill-generator.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-manager.d.ts +9 -4
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +65 -28
- package/dist/mcp/session-manager.js.map +1 -1
- package/dist/types/schemas.d.ts +38 -13
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +9 -5
- package/dist/types/schemas.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: master-debugging-shift
|
|
3
|
+
level: 5
|
|
4
|
+
course: docker-container-debugging
|
|
5
|
+
type: output
|
|
6
|
+
description: "Combined master debugging shift — serve as fractional CTO advising on a complete container platform strategy encompassing technology, people, process, and business alignment"
|
|
7
|
+
tags: [Docker, troubleshooting, combined, shift-simulation, CTO, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're engaged as a fractional CTO for a Series B startup ($30M
|
|
13
|
+
raised, 80 engineers, growing to 200). They've been running on
|
|
14
|
+
Docker Compose across 5 servers for 2 years. Growing pains are
|
|
15
|
+
severe:
|
|
16
|
+
|
|
17
|
+
Technical challenges:
|
|
18
|
+
- 40 microservices on Docker Compose, manual deployment
|
|
19
|
+
- Last week: wrong image tag deployed, 3-hour outage ($150K impact)
|
|
20
|
+
- No security scanning — audit found 12 CRITICAL CVEs in production
|
|
21
|
+
- Database containers without proper backup — near-miss data loss
|
|
22
|
+
- Developers wait 30+ minutes for CI builds (no caching)
|
|
23
|
+
- No centralized logging — debugging requires SSH to 5 servers
|
|
24
|
+
|
|
25
|
+
People challenges:
|
|
26
|
+
- 2-person DevOps team overwhelmed (they're firefighting 80% of time)
|
|
27
|
+
- Developers have no container training, copy-paste Dockerfiles
|
|
28
|
+
- No on-call rotation — same 2 DevOps engineers handle everything
|
|
29
|
+
- Engineering velocity declining as team grows
|
|
30
|
+
|
|
31
|
+
Business context:
|
|
32
|
+
- Series C fundraising in 9 months — need to demonstrate scalability
|
|
33
|
+
- Enterprise customer prospects require SOC2 compliance
|
|
34
|
+
- Planning international expansion (EU data residency requirements)
|
|
35
|
+
- Board expects 99.95% availability SLA for enterprise tier
|
|
36
|
+
|
|
37
|
+
Budget: $500K for platform investment over next 12 months
|
|
38
|
+
Hiring: Can add 3-4 people
|
|
39
|
+
|
|
40
|
+
The CEO asks: "Give me a 12-month roadmap that gets us to Series C
|
|
41
|
+
ready. We need to stop firefighting and start scaling."
|
|
42
|
+
|
|
43
|
+
Task: Design the comprehensive 12-month roadmap. Write: the phased
|
|
44
|
+
approach (stabilize → automate → scale → optimize), technology
|
|
45
|
+
decisions (stay on Compose? Move to K8s? Use managed services?),
|
|
46
|
+
hiring plan (who to hire first and why), SOC2 compliance path,
|
|
47
|
+
cost breakdown and ROI, risk register with mitigations, and the
|
|
48
|
+
key milestones that demonstrate investor readiness.
|
|
49
|
+
|
|
50
|
+
assertions:
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "Phased roadmap is realistic — Month 1-3 (Stabilize): fix critical security CVEs, implement image scanning in CI, set up proper database backups, add health checks, configure log rotation, basic monitoring (Prometheus + Grafana). Month 4-6 (Automate): CI/CD pipeline with automated build/scan/deploy, move to managed Kubernetes (EKS/GKE), centralized logging, on-call rotation. Month 7-9 (Scale): SOC2 controls implementation, multi-region readiness, developer self-service platform. Month 10-12 (Optimize): cost optimization, performance tuning, DR testing, compliance audit. Each phase builds on the previous"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Phased roadmap"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Technology and hiring decisions are justified — recommend managed Kubernetes over Compose for 40+ services (Compose doesn't scale operationally). Managed K8s (EKS/GKE) over self-hosted (team too small to manage control plane). Hiring priority: (1) senior platform engineer (lead the migration), (2) security engineer (SOC2 + scanning), (3) SRE (on-call, monitoring, incident response), (4) DevOps engineer (CI/CD, automation). This relieves the existing 2-person team and adds specialization. Budget allocation: $200K tooling, $300K hiring (partial year)"
|
|
57
|
+
weight: 0.35
|
|
58
|
+
description: "Technology and hiring"
|
|
59
|
+
- type: llm_judge
|
|
60
|
+
criteria: "Investor readiness and compliance are addressed — SOC2 Type I achievable in 6-9 months (show controls exist), Type II requires 6+ months of evidence (start collecting immediately). Key investor metrics: 99.95% availability (track from month 3), deployment frequency (daily by month 6), MTTR < 30 minutes, security posture (0 CRITICAL CVEs). EU expansion: GDPR compliance, data residency (EU region deployment). Present to board quarterly: progress against milestones, risk reduction, cost efficiency. Risk register: migration timeline slippage (mitigate: phased approach), hiring delays (mitigate: start immediately), scope creep (mitigate: strict prioritization)"
|
|
61
|
+
weight: 0.30
|
|
62
|
+
description: "Investor readiness"
|
package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: organizational-transformation
|
|
3
|
+
level: 5
|
|
4
|
+
course: docker-container-debugging
|
|
5
|
+
type: output
|
|
6
|
+
description: "Lead organizational transformation through containerization — manage cultural change, team restructuring, and DevOps transformation alongside container adoption"
|
|
7
|
+
tags: [Docker, organizational-change, DevOps, culture, transformation, leadership, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're leading container adoption at a 5,000-person enterprise.
|
|
13
|
+
The technology is ready but the organization isn't. Three months
|
|
14
|
+
into the initiative, adoption is stalling:
|
|
15
|
+
|
|
16
|
+
Resistance patterns observed:
|
|
17
|
+
|
|
18
|
+
Operations team (50 people):
|
|
19
|
+
"Containers are a fad. We've managed VMs for 15 years. Why change?"
|
|
20
|
+
Fear: automation will eliminate their jobs.
|
|
21
|
+
Reality: need to transform from VM operators to platform engineers.
|
|
22
|
+
|
|
23
|
+
Development teams (200 people across 30 teams):
|
|
24
|
+
Only 4 teams have adopted containers. Others: "We're too busy
|
|
25
|
+
delivering features to learn new deployment tools."
|
|
26
|
+
Fear: containers add complexity to their already-complex workflow.
|
|
27
|
+
Reality: containers simplify deployment once learned.
|
|
28
|
+
|
|
29
|
+
Security team (10 people):
|
|
30
|
+
"Containers increase our attack surface. We can't audit them."
|
|
31
|
+
Fear: loss of visibility and control.
|
|
32
|
+
Reality: containers can improve security posture with proper tooling.
|
|
33
|
+
|
|
34
|
+
Management:
|
|
35
|
+
CTO sponsors the initiative but middle managers are neutral.
|
|
36
|
+
Project managers: "Container migration isn't in our roadmap."
|
|
37
|
+
No incentives aligned with container adoption.
|
|
38
|
+
|
|
39
|
+
Change management strategy needed:
|
|
40
|
+
|
|
41
|
+
1. Create urgency — show real costs of current approach
|
|
42
|
+
2. Build a coalition — identify champions in each group
|
|
43
|
+
3. Quick wins — solve real pain points first
|
|
44
|
+
4. Enablement — training, documentation, support
|
|
45
|
+
5. Incentive alignment — tie container adoption to OKRs
|
|
46
|
+
6. Celebrate success — publicize wins, recognize adopters
|
|
47
|
+
7. Sustain — embed in hiring, onboarding, promotion criteria
|
|
48
|
+
|
|
49
|
+
Task: Design the organizational transformation strategy. Write:
|
|
50
|
+
the change management framework, addressing each stakeholder
|
|
51
|
+
group's concerns, training and enablement program, metrics for
|
|
52
|
+
transformation progress, common transformation failure modes,
|
|
53
|
+
and the role of leadership in driving technology adoption.
|
|
54
|
+
|
|
55
|
+
assertions:
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Change management framework is structured — use Kotter's 8-step model or similar: create urgency (show competitor advantage, calculate cost of status quo), build coalition (executive sponsor + tech leads from willing teams + operations champion), quick wins (solve a visible pain point in 30 days), scale (expand from pilot teams to adjacent teams). Transformation timeline: 12-18 months for meaningful adoption, 3-5 years for full organizational shift. Don't announce a 'container mandate' — enable and incentivize instead"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Change framework"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Stakeholder-specific strategies are empathetic — operations: retrain as platform engineers (higher-value role, not elimination), pair with developers, give ownership of the container platform. Developers: provide golden paths (make containers easier than current approach), don't ask teams to stop feature work — integrate container adoption into existing projects. Security: give better tools (runtime monitoring, automated scanning gives more visibility than VMs), involve in platform design. Management: show metrics (deployment speed, incident reduction), align with business OKRs"
|
|
62
|
+
weight: 0.35
|
|
63
|
+
description: "Stakeholder strategies"
|
|
64
|
+
- type: llm_judge
|
|
65
|
+
criteria: "Failure modes and measurement are realistic — common failures: mandating adoption without enablement, moving too fast (teams overwhelmed), moving too slow (initiative loses momentum), not investing in platform team (adoption stalls without support), not celebrating wins (no positive reinforcement). Measure: adoption rate (% services containerized), developer satisfaction (NPS), deployment frequency per team, time to onboard new service, support ticket volume for container issues. Transformation is a people problem, not a technology problem — treat it accordingly"
|
|
66
|
+
weight: 0.30
|
|
67
|
+
description: "Failures and measurement"
|
package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: regulatory-compliance-containers
|
|
3
|
+
level: 5
|
|
4
|
+
course: docker-container-debugging
|
|
5
|
+
type: output
|
|
6
|
+
description: "Design regulatory compliance for containers — implement controls for SOC2, PCI-DSS, HIPAA, and FedRAMP in containerized environments"
|
|
7
|
+
tags: [Docker, compliance, SOC2, PCI-DSS, HIPAA, FedRAMP, regulation, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your company is pursuing SOC2 Type II certification and PCI-DSS
|
|
13
|
+
compliance. The auditor has questions about your container platform:
|
|
14
|
+
|
|
15
|
+
Auditor question 1: "How do you ensure only authorized images
|
|
16
|
+
run in production?"
|
|
17
|
+
Current answer: "We trust our developers." (Not acceptable)
|
|
18
|
+
Required: Image signing, admission control, approved registry list.
|
|
19
|
+
|
|
20
|
+
Auditor question 2: "How do you track who deployed what and when?"
|
|
21
|
+
Current answer: "We can check git history." (Insufficient)
|
|
22
|
+
Required: Immutable audit logs of all deployment actions with
|
|
23
|
+
identity, timestamp, image digest, and approval chain.
|
|
24
|
+
|
|
25
|
+
Auditor question 3: "How do you ensure containers don't contain
|
|
26
|
+
known vulnerabilities?"
|
|
27
|
+
Current answer: "We scan periodically." (When? How? What's the SLA?)
|
|
28
|
+
Required: Automated scanning in CI/CD with defined severity thresholds,
|
|
29
|
+
documented exception process, SLA for patching (CRITICAL: 24h,
|
|
30
|
+
HIGH: 7d, MEDIUM: 30d).
|
|
31
|
+
|
|
32
|
+
Auditor question 4: "How do you isolate cardholder data environments?"
|
|
33
|
+
Current answer: "Different Docker network." (Insufficient for PCI)
|
|
34
|
+
Required: Network segmentation with documented firewall rules,
|
|
35
|
+
encrypted communication (mTLS), access logging, separate
|
|
36
|
+
infrastructure for CDE.
|
|
37
|
+
|
|
38
|
+
Auditor question 5: "How do you handle secrets and encryption keys?"
|
|
39
|
+
Current answer: "Environment variables in Docker Compose."
|
|
40
|
+
Required: Dedicated secrets manager (Vault), encryption at rest,
|
|
41
|
+
rotation policy, access auditing.
|
|
42
|
+
|
|
43
|
+
Task: Design compliance controls for containerized environments.
|
|
44
|
+
Write: control mappings for SOC2 and PCI-DSS, image governance
|
|
45
|
+
(signing, scanning, admission), audit logging architecture,
|
|
46
|
+
network segmentation for compliance, secrets management, and the
|
|
47
|
+
continuous compliance monitoring approach.
|
|
48
|
+
|
|
49
|
+
assertions:
|
|
50
|
+
- type: llm_judge
|
|
51
|
+
criteria: "Control mappings are specific — SOC2: CC6.1 (logical access) → RBAC, namespace isolation, registry access control. CC7.1 (monitoring) → container runtime monitoring, audit logs. CC8.1 (change management) → GitOps, immutable images, deployment approvals. PCI-DSS: Requirement 2 (secure configuration) → hardened container images, CIS benchmarks. Requirement 6 (secure development) → image scanning in CI. Requirement 10 (logging) → centralized audit logs with tamper protection. Requirement 11 (testing) → regular vulnerability scanning"
|
|
52
|
+
weight: 0.35
|
|
53
|
+
description: "Control mappings"
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Image governance and audit are covered — image lifecycle: build → scan → sign → approve → deploy. Admission controller (OPA/Kyverno) rejects unsigned or unscanned images. Approved registry allowlist prevents pulling from public registries. Audit logging: every docker/kubectl command logged with identity (who), action (what), resource (which container/image), timestamp (when), result (success/fail). Logs must be immutable (append-only, shipped to SIEM). Retention: 1 year minimum for SOC2, as defined by PCI-DSS"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Governance and audit"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Network and secrets compliance are practical — PCI CDE isolation: separate cluster or namespace with strict network policies. mTLS between all services in CDE (service mesh). No direct internet access from CDE containers. Secrets: HashiCorp Vault or cloud KMS, automatic rotation, access auditing, encryption at rest. Never in environment variables, Docker Compose files, or image layers. Continuous compliance: automated scanning against CIS Docker Benchmark, regular penetration testing, compliance dashboards for auditors, automated evidence collection"
|
|
60
|
+
weight: 0.30
|
|
61
|
+
description: "Network and secrets"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
id: github-actions-cicd
|
|
2
|
+
name: "GitHub Actions CI/CD Setup"
|
|
3
|
+
description: >
|
|
4
|
+
Master GitHub Actions for continuous integration and continuous
|
|
5
|
+
deployment. Learn workflow syntax, triggers, runners, caching,
|
|
6
|
+
matrix builds, reusable workflows, security hardening, deployment
|
|
7
|
+
strategies, self-hosted runners, and enterprise CI/CD operations.
|
|
8
|
+
levels: 5
|
|
9
|
+
scenarios_per_level: 10
|
|
10
|
+
tags: [development, GitHub, actions, CI/CD, automation, deployment, DevOps]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: actions-and-runners
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Use actions and runners — understand GitHub-hosted runners, marketplace actions, and how to compose steps effectively"
|
|
7
|
+
tags: [github, actions, runners, marketplace, setup-actions, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're building a CI workflow for a full-stack TypeScript project
|
|
13
|
+
(React frontend + Express backend) and need to understand how to use
|
|
14
|
+
actions and runners effectively.
|
|
15
|
+
|
|
16
|
+
The project needs:
|
|
17
|
+
- Node.js 20 for the application
|
|
18
|
+
- PostgreSQL for integration tests
|
|
19
|
+
- Redis for caching tests
|
|
20
|
+
- The workflow should work on both ubuntu-latest and macos-latest
|
|
21
|
+
- Artifacts: upload test coverage reports and build output
|
|
22
|
+
|
|
23
|
+
Your teammate has questions about actions and runners:
|
|
24
|
+
|
|
25
|
+
Question 1: "What's the difference between 'uses' and 'run' in a
|
|
26
|
+
step? When should I use each?"
|
|
27
|
+
|
|
28
|
+
Question 2: "I see actions like 'actions/checkout@v4' — what does
|
|
29
|
+
the @v4 mean? Should I use @v4, @main, or a specific SHA?"
|
|
30
|
+
|
|
31
|
+
Question 3: "How do I add PostgreSQL and Redis as services in my
|
|
32
|
+
workflow? I heard you can run Docker containers alongside your job."
|
|
33
|
+
|
|
34
|
+
Question 4: "What are the resource limits of GitHub-hosted runners?
|
|
35
|
+
When would we need self-hosted runners?"
|
|
36
|
+
|
|
37
|
+
Question 5: "How do I share files between jobs? My build job
|
|
38
|
+
produces artifacts that the deploy job needs."
|
|
39
|
+
|
|
40
|
+
Task: Write a complete workflow that demonstrates: using marketplace
|
|
41
|
+
actions (checkout, setup-node, upload-artifact, download-artifact),
|
|
42
|
+
service containers (PostgreSQL and Redis), multi-OS matrix, and
|
|
43
|
+
artifact sharing between jobs. Answer all 5 questions with practical
|
|
44
|
+
examples from the workflow you wrote.
|
|
45
|
+
|
|
46
|
+
assertions:
|
|
47
|
+
- type: llm_judge
|
|
48
|
+
criteria: "Workflow correctly uses service containers — PostgreSQL and Redis are defined as services with proper image, ports, env vars, and health checks. The application connects to services using localhost or service names correctly"
|
|
49
|
+
weight: 0.35
|
|
50
|
+
description: "Correct service container configuration"
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "All 5 questions are answered accurately — uses vs run distinction, action versioning (@v4 vs SHA pinning with security trade-offs), service containers syntax, runner resource limits (7GB RAM, 14GB SSD, 2 CPU for ubuntu), and artifact upload/download for cross-job file sharing"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Accurate answers to all questions"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Workflow demonstrates practical patterns — multi-OS matrix, artifact upload in build job and download in deploy job, proper action version pinning, and the workflow would run successfully in a real repository"
|
|
57
|
+
weight: 0.30
|
|
58
|
+
description: "Practical workflow patterns"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: basic-workflow-syntax
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Write basic GitHub Actions workflows — learn YAML structure, jobs, steps, and runners to create your first CI pipeline"
|
|
7
|
+
tags: [github, actions, workflow, YAML, CI, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're setting up GitHub Actions for a new Node.js project for the
|
|
13
|
+
first time. The team needs a CI workflow that runs on every push and
|
|
14
|
+
pull request. The project uses Node.js 20, npm for package management,
|
|
15
|
+
and has lint, test, and build scripts defined in package.json.
|
|
16
|
+
|
|
17
|
+
Requirements:
|
|
18
|
+
1. File location: .github/workflows/ci.yml
|
|
19
|
+
2. Triggers: push to main branch AND all pull requests
|
|
20
|
+
3. Runner: ubuntu-latest
|
|
21
|
+
4. Steps needed:
|
|
22
|
+
- Check out the repository code
|
|
23
|
+
- Set up Node.js 20
|
|
24
|
+
- Install dependencies with npm ci
|
|
25
|
+
- Run linting (npm run lint)
|
|
26
|
+
- Run tests (npm test)
|
|
27
|
+
- Build the project (npm run build)
|
|
28
|
+
5. Include a descriptive workflow name
|
|
29
|
+
6. Set NODE_ENV=test as an environment variable for the test step
|
|
30
|
+
|
|
31
|
+
Additionally, a teammate asks these questions:
|
|
32
|
+
- "What's the difference between 'npm install' and 'npm ci' in CI?"
|
|
33
|
+
- "Why do we use 'actions/checkout@v4' instead of just cloning?"
|
|
34
|
+
- "Should lint, test, and build be separate jobs or steps in one job?"
|
|
35
|
+
|
|
36
|
+
Task: Write the complete workflow YAML file and answer all 3 questions.
|
|
37
|
+
Explain the purpose of each section of the workflow (name, on, jobs,
|
|
38
|
+
steps) and note any best practices you're following.
|
|
39
|
+
|
|
40
|
+
assertions:
|
|
41
|
+
- type: llm_judge
|
|
42
|
+
criteria: "Workflow YAML is correct and complete — proper indentation, name/on/jobs structure, correct trigger syntax for push (main) and pull_request, uses actions/checkout@v4 and actions/setup-node@v4 with node-version: 20, all 6 steps present, NODE_ENV set correctly"
|
|
43
|
+
weight: 0.35
|
|
44
|
+
description: "Correct and complete workflow YAML"
|
|
45
|
+
- type: llm_judge
|
|
46
|
+
criteria: "Questions are answered accurately — npm ci vs npm install (ci uses lockfile, faster, clean install), actions/checkout provides optimized shallow clone with auth token, and the single-job-vs-multiple-jobs trade-off is explained (single job is simpler for small projects, multiple jobs allow parallelism)"
|
|
47
|
+
weight: 0.35
|
|
48
|
+
description: "Accurate question answers"
|
|
49
|
+
- type: llm_judge
|
|
50
|
+
criteria: "Best practices are explained — why npm ci is preferred in CI, why action versions should be pinned, why ubuntu-latest is the default choice, and each workflow section is explained clearly for someone new to GitHub Actions"
|
|
51
|
+
weight: 0.30
|
|
52
|
+
description: "Best practices explanation"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: branch-protection-checks
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Set up branch protection with status checks — configure required CI checks that must pass before merging PRs"
|
|
7
|
+
tags: [github, actions, branch-protection, status-checks, merge-requirements, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the tech lead setting up branch protection for your team's
|
|
13
|
+
repository. Currently, anyone can push directly to main and merge
|
|
14
|
+
PRs without CI passing. After a broken deployment last week, the
|
|
15
|
+
team agreed to enforce CI checks.
|
|
16
|
+
|
|
17
|
+
Repository setup:
|
|
18
|
+
- Main branch: production deployments happen from here
|
|
19
|
+
- Develop branch: integration branch for features
|
|
20
|
+
- Feature branches: individual developer work
|
|
21
|
+
|
|
22
|
+
CI workflow (already exists):
|
|
23
|
+
- Job "lint": ESLint + TypeScript checks
|
|
24
|
+
- Job "test": Jest unit tests
|
|
25
|
+
- Job "e2e": Cypress E2E tests (sometimes flaky)
|
|
26
|
+
- Job "build": Production build
|
|
27
|
+
|
|
28
|
+
Requirements:
|
|
29
|
+
1. No direct pushes to main (all changes via PR)
|
|
30
|
+
2. At least 1 code review approval required
|
|
31
|
+
3. Required status checks before merging:
|
|
32
|
+
- lint must pass (always)
|
|
33
|
+
- test must pass (always)
|
|
34
|
+
- build must pass (always)
|
|
35
|
+
- e2e should be required but has a 10% flaky failure rate
|
|
36
|
+
4. Dismiss stale reviews when new commits are pushed
|
|
37
|
+
5. Require branches to be up to date with main before merging
|
|
38
|
+
6. Allow repository admins to bypass in emergencies
|
|
39
|
+
|
|
40
|
+
The team debates:
|
|
41
|
+
- "Should we make e2e tests required if they're flaky?"
|
|
42
|
+
- "What about hotfixes — do we need a fast path?"
|
|
43
|
+
- "How do we handle merge conflicts with 'require up to date'?"
|
|
44
|
+
|
|
45
|
+
Task: Write the complete branch protection configuration (as you
|
|
46
|
+
would set it in GitHub Settings or via the API), address the 3 team
|
|
47
|
+
debates with recommendations, explain how status checks interact
|
|
48
|
+
with GitHub Actions job names, and describe the developer workflow
|
|
49
|
+
under these new rules (from creating a branch to merging a PR).
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Branch protection config is complete — requires PR, required reviewers (1), dismisses stale reviews, requires status checks (lint, test, build), requires branch up-to-date, and admin bypass is configured. The config is expressed clearly (either UI steps or API payload)"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Complete branch protection config"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Team debates are resolved pragmatically — the flaky e2e question gets a nuanced answer (make required but add retry, or make non-required but track), hotfix fast-path is defined (admin bypass with post-merge review), and merge conflict mitigation is addressed (merge queue or frequent rebasing)"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Pragmatic debate resolution"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Status check naming is explained — clarifies that required checks match job names in the workflow YAML, explains what happens when a workflow is skipped (path filters), and the developer workflow is described step-by-step from branch creation to merge"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "Clear status check and workflow explanation"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: environment-variables-secrets
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Manage environment variables and secrets — configure secrets, env vars, and contexts safely in GitHub Actions workflows"
|
|
7
|
+
tags: [github, actions, secrets, environment-variables, security, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're setting up environment variables and secrets for a project
|
|
13
|
+
that deploys to AWS and uses a PostgreSQL database. The team has
|
|
14
|
+
been hardcoding values in their workflows and you need to fix this.
|
|
15
|
+
|
|
16
|
+
Current (insecure) workflow snippet:
|
|
17
|
+
```yaml
|
|
18
|
+
jobs:
|
|
19
|
+
deploy:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- run: |
|
|
23
|
+
export AWS_ACCESS_KEY_ID=AKIA1234567890
|
|
24
|
+
export AWS_SECRET_ACCESS_KEY=wJalr+secret+key
|
|
25
|
+
export DATABASE_URL=postgres://admin:password123@db.example.com/prod
|
|
26
|
+
npm run deploy
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Requirements:
|
|
30
|
+
1. Move all sensitive values to GitHub Secrets
|
|
31
|
+
2. Use repository-level secrets for AWS credentials
|
|
32
|
+
3. Use environment-level secrets for database URLs (different per
|
|
33
|
+
environment: staging vs production)
|
|
34
|
+
4. Set non-sensitive configuration as environment variables (NODE_ENV,
|
|
35
|
+
LOG_LEVEL, APP_VERSION)
|
|
36
|
+
5. Make the GitHub Actions run number available as APP_VERSION
|
|
37
|
+
6. Explain the secret masking behavior (what happens if a secret
|
|
38
|
+
is accidentally printed to logs)
|
|
39
|
+
|
|
40
|
+
Your teammate asks:
|
|
41
|
+
- "What's the difference between repository secrets, environment
|
|
42
|
+
secrets, and organization secrets?"
|
|
43
|
+
- "Can I use secrets in if: conditions or as part of action inputs?"
|
|
44
|
+
- "How do I pass secrets to a Docker container step?"
|
|
45
|
+
- "What happens if I fork a repo — can the fork access the secrets?"
|
|
46
|
+
|
|
47
|
+
Task: Rewrite the workflow to use secrets and environment variables
|
|
48
|
+
correctly. Show: the GitHub Secrets configuration needed (which
|
|
49
|
+
secrets at which level), the corrected workflow YAML, the answers
|
|
50
|
+
to all 4 teammate questions, and a security checklist for secrets
|
|
51
|
+
in GitHub Actions.
|
|
52
|
+
|
|
53
|
+
assertions:
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Secrets are correctly configured — AWS credentials use repository or organization secrets (secrets.AWS_ACCESS_KEY_ID), database URLs use environment-level secrets, the workflow references secrets with ${{ secrets.NAME }} syntax, and no hardcoded sensitive values remain"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Correct secrets configuration"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "All 4 questions are answered accurately — explains the 3 secret scopes (repo/env/org) with inheritance rules, limitations of secrets in if: conditions, env: for Docker container steps, and fork security (secrets not available to forks in PRs from forks)"
|
|
60
|
+
weight: 0.35
|
|
61
|
+
description: "Accurate question answers"
|
|
62
|
+
- type: llm_judge
|
|
63
|
+
criteria: "Security best practices are covered — secret masking behavior, the GITHUB_TOKEN automatic secret, least-privilege principle for secrets, rotation strategy, and the security checklist includes at least 5 actionable items"
|
|
64
|
+
weight: 0.30
|
|
65
|
+
description: "Security best practices"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: first-cicd-shift
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "First CI/CD shift — handle a batch of CI/CD setup tasks and troubleshooting requests as the team's GitHub Actions go-to person"
|
|
7
|
+
tags: [github, actions, shift-simulation, troubleshooting, batch, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the designated GitHub Actions person for your team this week.
|
|
13
|
+
You have 5 requests to handle.
|
|
14
|
+
|
|
15
|
+
Request 1 — New project setup (from the tech lead):
|
|
16
|
+
"We're starting a new Python project (FastAPI + PostgreSQL). Need a
|
|
17
|
+
basic CI workflow: lint with ruff, type-check with mypy, test with
|
|
18
|
+
pytest, and build a Docker image. Use Python 3.12. We also need
|
|
19
|
+
PostgreSQL as a service container for integration tests."
|
|
20
|
+
|
|
21
|
+
Request 2 — Flaky test investigation (from a frustrated developer):
|
|
22
|
+
"My E2E tests pass locally but fail randomly in CI. About 30% of
|
|
23
|
+
the time. The error is always 'connection refused' when trying to
|
|
24
|
+
reach the API server. The workflow starts the server with
|
|
25
|
+
'npm start &' and immediately runs tests. I think it's a timing
|
|
26
|
+
issue."
|
|
27
|
+
|
|
28
|
+
Request 3 — Cost optimization (from the engineering manager):
|
|
29
|
+
"Our GitHub Actions bill jumped from $200 to $800 this month. Can
|
|
30
|
+
you figure out why and fix it? I see we have 15 workflows and some
|
|
31
|
+
run on every push to every branch."
|
|
32
|
+
|
|
33
|
+
Request 4 — Secret rotation (from the security team):
|
|
34
|
+
"We're rotating all AWS credentials. Please update the GitHub Secrets
|
|
35
|
+
and make sure the deployment workflow uses the new credentials
|
|
36
|
+
without any downtime. Also, we found that the old credentials are
|
|
37
|
+
hardcoded in a workflow file. Remove them."
|
|
38
|
+
|
|
39
|
+
Request 5 — Status badge request (from the PM):
|
|
40
|
+
"Can you add a CI status badge to our README? Also, the deploys page
|
|
41
|
+
should show the current deployed version. Can GitHub Actions help
|
|
42
|
+
with that?"
|
|
43
|
+
|
|
44
|
+
Task: Handle all 5 requests. For each, write: the solution (workflow
|
|
45
|
+
YAML, configuration, or investigation steps), the explanation (so
|
|
46
|
+
the requester understands what you did), and any follow-up
|
|
47
|
+
recommendations. Prioritize the requests by urgency and explain
|
|
48
|
+
your prioritization.
|
|
49
|
+
|
|
50
|
+
assertions:
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "Priority order is sensible — secret rotation (security) and flaky test (blocking developer) are higher priority than cost optimization and badge requests. The hardcoded credentials in Request 4 are flagged as critical"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Sensible priority order"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Solutions are technically correct — Python CI workflow uses correct setup-python and service container syntax, flaky test fix uses wait-for-it or health check before running tests, cost optimization identifies unnecessary triggers and suggests path filters/concurrency"
|
|
57
|
+
weight: 0.35
|
|
58
|
+
description: "Technically correct solutions"
|
|
59
|
+
- type: llm_judge
|
|
60
|
+
criteria: "Explanations are accessible — each response is written for the specific requester's context (tech lead gets YAML, frustrated developer gets root cause, manager gets cost breakdown, security gets rotation procedure, PM gets badge markdown)"
|
|
61
|
+
weight: 0.30
|
|
62
|
+
description: "Context-appropriate explanations"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: job-dependencies-outputs
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Configure job dependencies and outputs — use needs, outputs, and conditional execution to create structured workflow graphs"
|
|
7
|
+
tags: [github, actions, jobs, needs, outputs, conditional, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're building a deployment workflow that requires careful job
|
|
13
|
+
orchestration. Different jobs need to pass data to each other and
|
|
14
|
+
execute conditionally.
|
|
15
|
+
|
|
16
|
+
Workflow requirements:
|
|
17
|
+
1. Job: "determine-changes" — Detect what changed in the PR
|
|
18
|
+
- Output: "backend_changed" (true/false)
|
|
19
|
+
- Output: "frontend_changed" (true/false)
|
|
20
|
+
- Output: "infra_changed" (true/false)
|
|
21
|
+
- Uses git diff to check which directories have changes
|
|
22
|
+
|
|
23
|
+
2. Job: "test-backend" — Only runs if backend code changed
|
|
24
|
+
- Needs: determine-changes
|
|
25
|
+
- Condition: only if backend_changed == 'true'
|
|
26
|
+
- Output: "test_status" (passed/failed)
|
|
27
|
+
|
|
28
|
+
3. Job: "test-frontend" — Only runs if frontend code changed
|
|
29
|
+
- Needs: determine-changes
|
|
30
|
+
- Condition: only if frontend_changed == 'true'
|
|
31
|
+
- Output: "test_status" (passed/failed)
|
|
32
|
+
|
|
33
|
+
4. Job: "deploy" — Runs only if relevant tests passed
|
|
34
|
+
- Needs: test-backend AND test-frontend
|
|
35
|
+
- Should run even if one of the test jobs was skipped (because
|
|
36
|
+
that directory didn't change)
|
|
37
|
+
- Should NOT run if any test job actually failed
|
|
38
|
+
|
|
39
|
+
5. Job: "notify" — Always runs, even if previous jobs fail
|
|
40
|
+
- Reports the final status to Slack
|
|
41
|
+
- Needs access to outputs from all previous jobs
|
|
42
|
+
|
|
43
|
+
Task: Write the complete workflow YAML. Explain: how to set and
|
|
44
|
+
read job outputs (the $GITHUB_OUTPUT syntax), how 'needs' creates
|
|
45
|
+
the dependency graph, how 'if' conditions work with job outputs and
|
|
46
|
+
status functions (success(), failure(), always(), cancelled()), and
|
|
47
|
+
the tricky behavior when a needed job is skipped (the deploy job
|
|
48
|
+
scenario).
|
|
49
|
+
|
|
50
|
+
assertions:
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "Job outputs are correctly configured — uses echo 'key=value' >> $GITHUB_OUTPUT syntax, outputs are declared in job-level outputs section, and downstream jobs reference them correctly with needs.<job>.outputs.<name>"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Correct job output configuration"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Conditional execution handles the tricky cases — the deploy job runs when tests pass OR are skipped (not failed), using the correct combination of if: conditions and status check functions. The notify job uses if: always() to run regardless"
|
|
57
|
+
weight: 0.35
|
|
58
|
+
description: "Correct conditional execution"
|
|
59
|
+
- type: llm_judge
|
|
60
|
+
criteria: "Explanations clarify confusing behaviors — explains that skipped jobs cause downstream 'needs' jobs to also skip by default, how to use 'if: always()' or '!cancelled()' to override, and the difference between a job being skipped vs failing"
|
|
61
|
+
weight: 0.30
|
|
62
|
+
description: "Clear behavior explanations"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: simple-ci-pipeline
|
|
3
|
+
level: 1
|
|
4
|
+
course: github-actions-cicd
|
|
5
|
+
type: output
|
|
6
|
+
description: "Build a simple CI pipeline — create a complete lint, test, and build pipeline with proper job dependencies and failure handling"
|
|
7
|
+
tags: [github, actions, CI, pipeline, lint, test, build, basics]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're creating a CI pipeline for a React + TypeScript project.
|
|
13
|
+
The pipeline should catch issues before code is merged to main.
|
|
14
|
+
|
|
15
|
+
Project setup:
|
|
16
|
+
- React 18 with TypeScript
|
|
17
|
+
- ESLint for linting
|
|
18
|
+
- Jest for unit tests
|
|
19
|
+
- Cypress for E2E tests (runs against a dev server)
|
|
20
|
+
- Vite for building
|
|
21
|
+
|
|
22
|
+
Pipeline requirements:
|
|
23
|
+
1. Lint job: Run ESLint and TypeScript type checking
|
|
24
|
+
2. Unit test job: Run Jest with coverage report
|
|
25
|
+
3. E2E test job: Start dev server, run Cypress tests, upload
|
|
26
|
+
screenshots on failure
|
|
27
|
+
4. Build job: Only run if lint and unit tests pass
|
|
28
|
+
5. The E2E tests should run in parallel with (not blocked by) the
|
|
29
|
+
build job
|
|
30
|
+
6. If any job fails, the PR should show a red status check
|
|
31
|
+
7. Cache node_modules to speed up subsequent runs
|
|
32
|
+
|
|
33
|
+
Additional context:
|
|
34
|
+
- The team currently runs everything locally before pushing, but
|
|
35
|
+
developers sometimes skip steps. The CI should be the safety net.
|
|
36
|
+
- E2E tests are flaky — about 10% failure rate. The team wants to
|
|
37
|
+
retry failed E2E tests once before marking as failed.
|
|
38
|
+
|
|
39
|
+
Task: Write the complete CI workflow. Include: the workflow YAML with
|
|
40
|
+
all 4 jobs and proper dependencies (needs), the caching configuration
|
|
41
|
+
for node_modules, the E2E test configuration with retry and failure
|
|
42
|
+
artifact upload, and an explanation of the job dependency graph
|
|
43
|
+
(which jobs run in parallel, which are sequential).
|
|
44
|
+
|
|
45
|
+
assertions:
|
|
46
|
+
- type: llm_judge
|
|
47
|
+
criteria: "Job dependencies are correct — lint and unit tests can run in parallel, build needs lint + unit tests to pass, E2E runs independently or after lint, and the dependency graph is explicitly explained with a visual or textual representation"
|
|
48
|
+
weight: 0.35
|
|
49
|
+
description: "Correct job dependencies"
|
|
50
|
+
- type: llm_judge
|
|
51
|
+
criteria: "Caching and retry are properly configured — uses actions/cache or setup-node cache for node_modules with correct cache key (hash of package-lock.json), E2E test step has retry logic (either via Cypress retry or step-level continue-on-error with re-run), and failure artifacts are uploaded"
|
|
52
|
+
weight: 0.35
|
|
53
|
+
description: "Proper caching and retry configuration"
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Pipeline is practical and complete — all 4 jobs have correct steps, the E2E test starts a dev server before running Cypress, coverage reports are generated, and the workflow would work in a real React + TypeScript project without modification"
|
|
56
|
+
weight: 0.30
|
|
57
|
+
description: "Practical complete pipeline"
|