dojo.md 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/courses/GENERATION_LOG.md +27 -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/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/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/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/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 +3 -1
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +44 -22
- 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,61 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: cross-team-review
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Cross-team code review — review PRs outside your domain expertise, ask effective questions, and provide value without deep context"
|
|
7
|
+
tags: [github, pr-review, cross-team, knowledge-sharing, communication, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're a frontend engineer asked to review 3 PRs from teams outside
|
|
13
|
+
your usual domain. You need to provide valuable feedback despite not
|
|
14
|
+
being a domain expert.
|
|
15
|
+
|
|
16
|
+
PR #401 — From the Data team: "Add real-time analytics pipeline"
|
|
17
|
+
You don't know Kafka or Spark, but the PR touches shared API contracts
|
|
18
|
+
your frontend consumes. Changes include:
|
|
19
|
+
- New event schema for user interactions (affects your tracking code)
|
|
20
|
+
- API response format change for the analytics dashboard endpoint
|
|
21
|
+
- New WebSocket endpoint for real-time data
|
|
22
|
+
The PR has 400 lines, good tests, but the API changes aren't
|
|
23
|
+
documented and the response format breaks backward compatibility.
|
|
24
|
+
|
|
25
|
+
PR #402 — From the Infrastructure team: "Migrate to Kubernetes"
|
|
26
|
+
You don't know K8s well, but the PR modifies environment variables and
|
|
27
|
+
deployment configuration that affect your app. Changes include:
|
|
28
|
+
- New environment variable naming convention (REACT_APP_ → NEXT_PUBLIC_)
|
|
29
|
+
- Health check endpoint added (your app needs to implement /healthz)
|
|
30
|
+
- Changed base URL configuration from hardcoded to dynamic
|
|
31
|
+
The PR is 600 lines of YAML and config, with a migration guide buried
|
|
32
|
+
in a comment.
|
|
33
|
+
|
|
34
|
+
PR #403 — From the Mobile team: "Add shared component library"
|
|
35
|
+
The mobile team is creating a shared React Native component library
|
|
36
|
+
that should share design tokens with your web components. Changes:
|
|
37
|
+
- New design token format (different from your current CSS variables)
|
|
38
|
+
- Shared TypeScript types for API responses
|
|
39
|
+
- A utility function that duplicates logic from your web codebase
|
|
40
|
+
The PR is 250 lines with no mention of the web team in the description.
|
|
41
|
+
|
|
42
|
+
Task: Review all 3 PRs. For each, write: what you can and can't
|
|
43
|
+
evaluate as a non-domain expert, the specific feedback you can provide
|
|
44
|
+
(API contracts, compatibility, shared code), the questions to ask the
|
|
45
|
+
authors (framed constructively, not "I don't understand"), and the
|
|
46
|
+
cross-team concerns to raise. Include a meta-analysis of what this
|
|
47
|
+
cross-team review experience reveals about organizational communication.
|
|
48
|
+
|
|
49
|
+
assertions:
|
|
50
|
+
- type: llm_judge
|
|
51
|
+
criteria: "Reviews add value despite limited domain knowledge — identifies API contract breaks in #401, environment variable migration risks in #402, and code duplication in #403, all from the frontend perspective without pretending to understand Kafka/K8s internals"
|
|
52
|
+
weight: 0.35
|
|
53
|
+
description: "Value-adding cross-team reviews"
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Questions are constructive and specific — asks about backward compatibility plans (not 'will this break things?'), migration timeline for env vars, and design token unification strategy, showing respect for the authors' domain expertise"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Constructive cross-team questions"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Organizational patterns are identified — notes that cross-team PRs need better API change documentation, shared code should have cross-team visibility, and suggests process improvements (RFC for cross-team changes, shared API contract tests)"
|
|
60
|
+
weight: 0.30
|
|
61
|
+
description: "Organizational pattern recognition"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: intermediate-review-shift
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Intermediate review shift — handle a complex batch of PRs requiring security, performance, and cross-team review skills"
|
|
7
|
+
tags: [github, pr-review, shift-simulation, batch-review, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're doing a review shift with 4 challenging PRs. Each requires
|
|
13
|
+
different intermediate skills.
|
|
14
|
+
|
|
15
|
+
PR #501 (critical, 2 hours old): "Hotfix: Rate limit the signup
|
|
16
|
+
endpoint"
|
|
17
|
+
Author: On-call engineer. Context: The signup endpoint is being
|
|
18
|
+
abused — 10,000 fake accounts created in the last hour. The fix adds
|
|
19
|
+
Redis-based rate limiting: 5 signups per IP per hour.
|
|
20
|
+
Code concern: The rate limit key is based only on IP address (easily
|
|
21
|
+
bypassed with proxies), the Redis connection has no error handling (if
|
|
22
|
+
Redis is down, all signups fail), and the rate limit response doesn't
|
|
23
|
+
include Retry-After header.
|
|
24
|
+
Urgency: Active abuse happening now.
|
|
25
|
+
|
|
26
|
+
PR #502 (medium, 1 day old): "Add real-time notifications via SSE"
|
|
27
|
+
Author: Mid-level engineer. 350 lines adding Server-Sent Events for
|
|
28
|
+
notification delivery. The implementation keeps all SSE connections in
|
|
29
|
+
a Map in memory, with no connection limit, no heartbeat, and no
|
|
30
|
+
cleanup of dead connections. In production with 50K concurrent users,
|
|
31
|
+
this would exhaust memory.
|
|
32
|
+
Tests: Only tests the happy path with 1 connection.
|
|
33
|
+
|
|
34
|
+
PR #503 (low urgency, 3 days old): "Migrate from Moment.js to
|
|
35
|
+
date-fns"
|
|
36
|
+
Author: Junior engineer. 800 lines of date library migration. Most
|
|
37
|
+
changes are mechanical (moment().format() → format(new Date())), but
|
|
38
|
+
3 timezone conversions are incorrect — they use local timezone instead
|
|
39
|
+
of UTC, which would break for users in non-UTC timezones.
|
|
40
|
+
CI: Green (tests don't cover timezone edge cases).
|
|
41
|
+
|
|
42
|
+
PR #504 (medium, 4 hours old): "Stacked PR 2/3: Add payment webhooks"
|
|
43
|
+
This is the second PR in a 3-PR stack. PR 1/3 (payment model) was
|
|
44
|
+
merged with a review comment about adding an index that was never
|
|
45
|
+
addressed. This PR adds webhook handling but references the unindexed
|
|
46
|
+
column in queries that will be called for every webhook event.
|
|
47
|
+
|
|
48
|
+
Task: Review all 4 PRs. For each, write: the priority order with
|
|
49
|
+
justification, a focused review addressing the key technical concern,
|
|
50
|
+
the decision (approve/request changes/comment) with rationale, and
|
|
51
|
+
specific code-level feedback. End with a shift summary noting patterns
|
|
52
|
+
and team-level observations.
|
|
53
|
+
|
|
54
|
+
assertions:
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Priority order balances urgency with risk — PR #501 is first (active abuse), but the review still catches security gaps in the rate limit implementation rather than rubber-stamping the hotfix. The stacked PR #504 gets attention for the carried-over tech debt"
|
|
57
|
+
weight: 0.35
|
|
58
|
+
description: "Urgency-balanced priority order"
|
|
59
|
+
- type: llm_judge
|
|
60
|
+
criteria: "Technical depth is appropriate per PR — #501 gets security-focused review (rate limit bypass, Redis failure mode), #502 gets scalability review (memory exhaustion, connection management), #503 catches timezone bugs, #504 addresses the unresolved index issue from the previous PR"
|
|
61
|
+
weight: 0.35
|
|
62
|
+
description: "Appropriate technical depth"
|
|
63
|
+
- type: llm_judge
|
|
64
|
+
criteria: "Shift summary identifies systemic issues — notes patterns across PRs (missing error handling, insufficient test coverage for edge cases, tech debt carried across stacked PRs) and recommends team-level improvements"
|
|
65
|
+
weight: 0.30
|
|
66
|
+
description: "Systemic issue identification"
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: performance-review-patterns
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Performance-focused code review — identify N+1 queries, memory leaks, and inefficient patterns in pull requests"
|
|
7
|
+
tags: [github, pr-review, performance, N+1, memory-leaks, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're reviewing a PR titled "Add order history page with product
|
|
13
|
+
details." The PR loads a user's order history and displays product
|
|
14
|
+
information. Review these code sections for performance issues:
|
|
15
|
+
|
|
16
|
+
Section 1 — API endpoint:
|
|
17
|
+
```javascript
|
|
18
|
+
app.get('/api/orders', async (req, res) => {
|
|
19
|
+
const orders = await Order.findAll({ where: { userId: req.user.id } });
|
|
20
|
+
const result = [];
|
|
21
|
+
for (const order of orders) {
|
|
22
|
+
const items = await OrderItem.findAll({ where: { orderId: order.id } });
|
|
23
|
+
for (const item of items) {
|
|
24
|
+
item.product = await Product.findOne({ where: { id: item.productId } });
|
|
25
|
+
item.reviews = await Review.findAll({ where: { productId: item.productId } });
|
|
26
|
+
}
|
|
27
|
+
result.push({ ...order.toJSON(), items });
|
|
28
|
+
}
|
|
29
|
+
res.json(result);
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Section 2 — React component:
|
|
34
|
+
```jsx
|
|
35
|
+
function OrderHistory() {
|
|
36
|
+
const [orders, setOrders] = useState([]);
|
|
37
|
+
const [enrichedOrders, setEnrichedOrders] = useState([]);
|
|
38
|
+
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
fetch('/api/orders').then(r => r.json()).then(setOrders);
|
|
41
|
+
}, []);
|
|
42
|
+
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
orders.forEach(async (order) => {
|
|
45
|
+
const shipping = await fetch(`/api/shipping/${order.id}`).then(r => r.json());
|
|
46
|
+
setEnrichedOrders(prev => [...prev, { ...order, shipping }]);
|
|
47
|
+
});
|
|
48
|
+
}, [orders]);
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<div>
|
|
52
|
+
{enrichedOrders.map(order => (
|
|
53
|
+
<OrderCard key={order.id} order={order} />
|
|
54
|
+
))}
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Section 3 — Utility function:
|
|
61
|
+
```javascript
|
|
62
|
+
function formatOrdersForExport(orders) {
|
|
63
|
+
const allProducts = [];
|
|
64
|
+
orders.forEach(order => {
|
|
65
|
+
order.items.forEach(item => {
|
|
66
|
+
allProducts.push(JSON.parse(JSON.stringify(item.product)));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
return allProducts.map(p => ({
|
|
70
|
+
...p,
|
|
71
|
+
formattedPrice: new Intl.NumberFormat('en-US', {
|
|
72
|
+
style: 'currency', currency: 'USD'
|
|
73
|
+
}).format(p.price)
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The user has 50 orders on average, each with 3-5 items. The page
|
|
79
|
+
currently takes 8 seconds to load.
|
|
80
|
+
|
|
81
|
+
Task: Write a performance-focused review. For each section: name the
|
|
82
|
+
performance anti-pattern, estimate the impact (number of queries,
|
|
83
|
+
memory usage, render cycles), provide the optimized solution with code,
|
|
84
|
+
and explain why the optimization works. Include a summary of expected
|
|
85
|
+
performance improvement.
|
|
86
|
+
|
|
87
|
+
assertions:
|
|
88
|
+
- type: llm_judge
|
|
89
|
+
criteria: "N+1 query problem is identified and fixed — Section 1 has nested N+1 queries (orders → items → products → reviews), and the fix uses eager loading (includes/joins) or batch queries to reduce from O(n*m) queries to O(1) or O(k)"
|
|
90
|
+
weight: 0.35
|
|
91
|
+
description: "N+1 query identification and fix"
|
|
92
|
+
- type: llm_judge
|
|
93
|
+
criteria: "Frontend performance issues are identified — Section 2 causes waterfall API calls (one per order), causes re-renders on every setState in the loop, and has a race condition with the enrichedOrders accumulation. Fix uses Promise.all or batched endpoint"
|
|
94
|
+
weight: 0.35
|
|
95
|
+
description: "Frontend performance issues"
|
|
96
|
+
- type: llm_judge
|
|
97
|
+
criteria: "Memory and computation waste identified — Section 3 deep-clones objects unnecessarily with JSON.parse/JSON.stringify, creates a new Intl.NumberFormat for each item instead of reusing it, and the fixes show proper optimization with minimal memory allocation"
|
|
98
|
+
weight: 0.30
|
|
99
|
+
description: "Memory and computation optimization"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: review-disagreement-resolution
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Resolve review disagreements — handle conflicting reviewer opinions, technical disputes, and author pushback constructively"
|
|
7
|
+
tags: [github, pr-review, conflict-resolution, disagreement, communication, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're a senior engineer mediating review disagreements on 3 PRs
|
|
13
|
+
where reviewers and authors have reached an impasse.
|
|
14
|
+
|
|
15
|
+
Dispute #1 — Architecture disagreement:
|
|
16
|
+
PR "Refactor user service to microservice" has been open for 2 weeks.
|
|
17
|
+
- Author (mid-level): Extracted the user service into a separate
|
|
18
|
+
microservice with its own database. Says it improves scalability.
|
|
19
|
+
- Reviewer A (staff engineer): "This adds unnecessary complexity.
|
|
20
|
+
We're a 10-person team. Keep it as a module in the monolith."
|
|
21
|
+
- Reviewer B (senior): "I agree with the extraction but the API
|
|
22
|
+
contract is wrong — it should use gRPC, not REST."
|
|
23
|
+
- Author: "I've already spent 3 weeks on this. I'm not rewriting it."
|
|
24
|
+
Both reviewers have valid points. The PR has 1,500 lines changed.
|
|
25
|
+
|
|
26
|
+
Dispute #2 — Style/preference war:
|
|
27
|
+
PR "Add error handling to checkout flow" has 47 review comments.
|
|
28
|
+
- Reviewer keeps requesting changes for style preferences not in the
|
|
29
|
+
style guide: single quotes vs double quotes, trailing commas,
|
|
30
|
+
function declarations vs arrow functions.
|
|
31
|
+
- Author: "These are personal preferences, not bugs. Our style guide
|
|
32
|
+
doesn't cover this. I'm not changing them."
|
|
33
|
+
- The actual error handling logic hasn't been reviewed at all.
|
|
34
|
+
|
|
35
|
+
Dispute #3 — Testing philosophy clash:
|
|
36
|
+
PR "Add payment retry logic" has 2 reviewers disagreeing:
|
|
37
|
+
- Reviewer A: "These tests mock too much. They don't test real
|
|
38
|
+
behavior. Write integration tests."
|
|
39
|
+
- Reviewer B: "Integration tests are slow and flaky. Unit tests with
|
|
40
|
+
mocks are the right approach. Ship it."
|
|
41
|
+
- Author: "I wrote what Reviewer B asked for last time. Now Reviewer A
|
|
42
|
+
wants something different. Which is it?"
|
|
43
|
+
The team has no documented testing strategy.
|
|
44
|
+
|
|
45
|
+
Task: For each dispute, write: the root cause of the disagreement
|
|
46
|
+
(technical, process, or interpersonal), the mediation approach (how
|
|
47
|
+
to move forward without picking sides), the specific resolution with
|
|
48
|
+
rationale, the process improvement to prevent recurrence, and the
|
|
49
|
+
actual review comments you would post. Include a summary of when to
|
|
50
|
+
escalate vs mediate.
|
|
51
|
+
|
|
52
|
+
assertions:
|
|
53
|
+
- type: llm_judge
|
|
54
|
+
criteria: "Root causes are correctly diagnosed — Dispute #1 is a scope/architecture issue (PR too large, decision should have been made before coding), #2 is a process issue (style guide gaps), #3 is a documentation/alignment issue (no testing strategy)"
|
|
55
|
+
weight: 0.35
|
|
56
|
+
description: "Correct root cause diagnosis"
|
|
57
|
+
- type: llm_judge
|
|
58
|
+
criteria: "Resolutions are practical and fair — doesn't just pick a side, suggests concrete paths forward (e.g., for #1: scope down to module extraction without separate service, for #2: end the style war and focus on the error handling, for #3: define testing strategy then apply)"
|
|
59
|
+
weight: 0.35
|
|
60
|
+
description: "Practical and fair resolutions"
|
|
61
|
+
- type: llm_judge
|
|
62
|
+
criteria: "Process improvements prevent recurrence — suggests architectural decision records (ADRs) for #1, style guide expansion and linter rules for #2, documented testing strategy for #3, and general guidelines for when reviewers disagree"
|
|
63
|
+
weight: 0.30
|
|
64
|
+
description: "Recurrence-preventing process improvements"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: review-metrics-analysis
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Analyze review metrics — interpret PR review data to identify bottlenecks, improve turnaround time, and balance reviewer load"
|
|
7
|
+
tags: [github, pr-review, metrics, analytics, turnaround-time, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're a team lead analyzing 3 months of PR review data for your
|
|
13
|
+
12-person engineering team. Management is concerned about shipping
|
|
14
|
+
velocity. Here's the data:
|
|
15
|
+
|
|
16
|
+
Overall metrics:
|
|
17
|
+
- Average time to first review: 18 hours
|
|
18
|
+
- Average time to merge: 4.2 days
|
|
19
|
+
- Average review rounds: 2.8
|
|
20
|
+
- PRs merged per week: 23
|
|
21
|
+
- PRs abandoned/closed without merge: 8 per week
|
|
22
|
+
|
|
23
|
+
Per-reviewer breakdown:
|
|
24
|
+
| Reviewer | Reviews/week | Avg first review (hrs) | Avg comments | Approval rate |
|
|
25
|
+
|----------|-------------|----------------------|--------------|---------------|
|
|
26
|
+
| Alice | 14 | 4 | 8.2 | 35% |
|
|
27
|
+
| Bob | 12 | 6 | 3.1 | 72% |
|
|
28
|
+
| Carol | 3 | 48 | 1.5 | 90% |
|
|
29
|
+
| David | 8 | 12 | 5.4 | 55% |
|
|
30
|
+
| Eve | 2 | 72 | 0.8 | 95% |
|
|
31
|
+
| Frank | 6 | 24 | 4.7 | 60% |
|
|
32
|
+
|
|
33
|
+
PR size distribution:
|
|
34
|
+
- Under 100 lines: 30% (avg 1.2 days to merge)
|
|
35
|
+
- 100-400 lines: 45% (avg 3.8 days to merge)
|
|
36
|
+
- 400+ lines: 25% (avg 8.5 days to merge)
|
|
37
|
+
|
|
38
|
+
Common review comment categories:
|
|
39
|
+
- Style/formatting: 35%
|
|
40
|
+
- Logic errors: 20%
|
|
41
|
+
- Missing tests: 18%
|
|
42
|
+
- Architecture concerns: 15%
|
|
43
|
+
- Documentation: 12%
|
|
44
|
+
|
|
45
|
+
Task: Analyze the data and write: the key findings (what's working,
|
|
46
|
+
what's not), the root causes behind slow merge times, specific
|
|
47
|
+
recommendations for each bottleneck (reviewer load balancing, PR size
|
|
48
|
+
policy, automation opportunities), an action plan with expected impact,
|
|
49
|
+
and the dashboard design for ongoing monitoring.
|
|
50
|
+
|
|
51
|
+
assertions:
|
|
52
|
+
- type: llm_judge
|
|
53
|
+
criteria: "Key bottlenecks are identified — Alice is a bottleneck (too many reviews, too critical), Carol and Eve are under-reviewing, 35% of comments are style issues that should be automated, large PRs take disproportionately long, and the abandonment rate is high"
|
|
54
|
+
weight: 0.35
|
|
55
|
+
description: "Bottleneck identification"
|
|
56
|
+
- type: llm_judge
|
|
57
|
+
criteria: "Recommendations are specific and actionable — includes reviewer load rebalancing (cap Alice, increase Carol/Eve), automating style checks to eliminate 35% of comments, enforcing PR size limits, and reducing review rounds through better PR descriptions"
|
|
58
|
+
weight: 0.35
|
|
59
|
+
description: "Specific recommendations"
|
|
60
|
+
- type: llm_judge
|
|
61
|
+
criteria: "Action plan includes expected impact — quantifies improvements (e.g., automating style saves X hours/week, rebalancing reduces first-review time by Y hours), prioritizes actions by impact, and the dashboard tracks leading indicators not just lagging metrics"
|
|
62
|
+
weight: 0.30
|
|
63
|
+
description: "Quantified action plan"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: review-turnaround-sla
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Design review SLAs — create turnaround time agreements that balance speed with quality and handle escalations"
|
|
7
|
+
tags: [github, pr-review, SLA, turnaround-time, process, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your engineering org (40 developers, 4 teams) has no formal review
|
|
13
|
+
SLAs. The result: some PRs get reviewed in minutes (if the author
|
|
14
|
+
pings on Slack), others sit for days (if the author is quiet). This
|
|
15
|
+
creates frustration and slows delivery unpredictably.
|
|
16
|
+
|
|
17
|
+
Current pain points:
|
|
18
|
+
- Average first-review time varies wildly: 1 hour to 5 days
|
|
19
|
+
- Hotfixes sometimes wait behind feature PRs
|
|
20
|
+
- Junior engineers' PRs wait longer than senior engineers' PRs
|
|
21
|
+
- Cross-team reviews are the slowest (2x longer than within-team)
|
|
22
|
+
- No escalation path when a review is stuck
|
|
23
|
+
- Some reviewers batch all reviews to Friday afternoon
|
|
24
|
+
- No distinction between "quick look" reviews and deep reviews
|
|
25
|
+
|
|
26
|
+
Team composition:
|
|
27
|
+
- Platform team (8 devs): infrastructure, shared libraries
|
|
28
|
+
- Product team A (12 devs): user-facing features
|
|
29
|
+
- Product team B (10 devs): merchant-facing features
|
|
30
|
+
- Data team (10 devs): pipelines, analytics, ML
|
|
31
|
+
|
|
32
|
+
Task: Design the review SLA framework. Write: the SLA tiers (by PR
|
|
33
|
+
type, size, and urgency — with specific time targets for first review
|
|
34
|
+
and final decision), the escalation process (what happens when SLA is
|
|
35
|
+
missed — auto-assign, manager notification, etc.), the cross-team
|
|
36
|
+
review protocol (how to handle reviews that need expertise from another
|
|
37
|
+
team), the GitHub automation to track and enforce SLAs (labels, bots,
|
|
38
|
+
notifications), and the fairness mechanisms (ensuring junior engineers
|
|
39
|
+
get timely reviews, preventing reviewer burnout). Include the rollout
|
|
40
|
+
communication plan.
|
|
41
|
+
|
|
42
|
+
assertions:
|
|
43
|
+
- type: llm_judge
|
|
44
|
+
criteria: "SLA tiers are well-designed — differentiates by urgency (hotfix < 2 hrs, normal < 1 business day, large/architectural < 2 days), by size (small PRs get faster targets), and includes separate targets for first review vs final decision"
|
|
45
|
+
weight: 0.35
|
|
46
|
+
description: "Well-designed SLA tiers"
|
|
47
|
+
- type: llm_judge
|
|
48
|
+
criteria: "Escalation and automation are practical — includes graduated escalation (reminder → reassign → manager), GitHub Actions or bot configuration for SLA tracking, label-based routing, and doesn't create notification fatigue"
|
|
49
|
+
weight: 0.35
|
|
50
|
+
description: "Practical escalation and automation"
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "Fairness and sustainability are addressed — prevents reviewer burnout (review load caps, rotation), ensures junior engineers' PRs don't get deprioritized, handles cross-team reviews with designated liaisons, and the communication plan gets buy-in"
|
|
53
|
+
weight: 0.30
|
|
54
|
+
description: "Fair and sustainable framework"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: stacked-pr-review
|
|
3
|
+
level: 2
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Review stacked PRs — handle dependent PR chains, manage merge order, and review incremental changes effectively"
|
|
7
|
+
tags: [github, pr-review, stacked-prs, dependencies, workflow, intermediate]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
A senior engineer has submitted a stack of 4 dependent PRs for a
|
|
13
|
+
payment processing feature. They've asked you to review the full
|
|
14
|
+
stack. The PRs must be merged in order.
|
|
15
|
+
|
|
16
|
+
PR #301 (base: main) — "Add Payment model and database migration"
|
|
17
|
+
- 120 lines: new Payment table, migration, model with validations
|
|
18
|
+
- Status: CI green, no other reviews yet
|
|
19
|
+
- The migration adds columns: amount, currency, status, stripe_id,
|
|
20
|
+
created_at, updated_at
|
|
21
|
+
- You notice: no index on stripe_id, status enum uses strings instead
|
|
22
|
+
of an integer enum, no soft delete support
|
|
23
|
+
|
|
24
|
+
PR #302 (base: PR #301) — "Add payment processing service"
|
|
25
|
+
- 200 lines: PaymentService class, Stripe integration, error handling
|
|
26
|
+
- Status: CI green (includes #301's changes)
|
|
27
|
+
- Handles: create, capture, refund, webhook processing
|
|
28
|
+
- You notice: good error handling, but the refund method doesn't
|
|
29
|
+
check if the payment was already refunded, and the webhook handler
|
|
30
|
+
doesn't validate the Stripe signature
|
|
31
|
+
|
|
32
|
+
PR #303 (base: PR #302) — "Add payment API endpoints"
|
|
33
|
+
- 150 lines: REST endpoints, request validation, authentication
|
|
34
|
+
- Status: CI green
|
|
35
|
+
- You notice: endpoints look good, but there's no rate limiting on
|
|
36
|
+
the create-payment endpoint, and error responses leak internal
|
|
37
|
+
error messages to the client
|
|
38
|
+
|
|
39
|
+
PR #304 (base: PR #303) — "Add payment UI components"
|
|
40
|
+
- 180 lines: React components, form validation, loading states
|
|
41
|
+
- Status: CI green
|
|
42
|
+
- You notice: good UX, but the payment form doesn't disable the
|
|
43
|
+
submit button after click (double-charge risk), and there's no
|
|
44
|
+
idempotency key sent with the request
|
|
45
|
+
|
|
46
|
+
Task: Review the full stack. Write: the review strategy (how to
|
|
47
|
+
approach reviewing dependent PRs — top-down vs bottom-up, what to
|
|
48
|
+
focus on at each layer), the review for each PR (noting which issues
|
|
49
|
+
block the entire stack vs just that PR), the guidance on which issues
|
|
50
|
+
to fix before merging vs address in follow-ups, and the merge plan
|
|
51
|
+
(order, timing, what to verify between merges).
|
|
52
|
+
|
|
53
|
+
assertions:
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Review strategy is sound — reviews bottom-up (data layer first), identifies which issues are stack-blocking (migration issues in #301 block everything) vs local (UI issues in #304 only affect that PR), and reviews each PR in the context of the full feature"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Sound stacked PR review strategy"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Issues are correctly categorized — missing stripe_id index and webhook signature validation are blocking issues, double-submit in UI is important but could be a follow-up, and the review recognizes that some issues span PRs (idempotency needs both API and UI changes)"
|
|
60
|
+
weight: 0.35
|
|
61
|
+
description: "Correct issue categorization"
|
|
62
|
+
- type: llm_judge
|
|
63
|
+
criteria: "Merge plan is practical — addresses the risks of merging a stack (what happens if #301 merges but #302 needs changes), suggests rebasing strategy, and handles the case where a middle PR needs significant changes"
|
|
64
|
+
weight: 0.30
|
|
65
|
+
description: "Practical merge plan"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: advanced-review-shift
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Advanced review shift — handle cross-functional reviews, compliance requirements, and process improvements simultaneously"
|
|
7
|
+
tags: [github, pr-review, shift-simulation, cross-functional, compliance, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the review lead for the week. Your shift involves complex
|
|
13
|
+
reviews that span organizational boundaries and require process-level
|
|
14
|
+
decisions.
|
|
15
|
+
|
|
16
|
+
Situation 1 — Compliance-critical PR:
|
|
17
|
+
PR #601: "Add PCI DSS logging to payment endpoints" (180 lines)
|
|
18
|
+
The PR adds audit logging but the implementation logs full credit card
|
|
19
|
+
numbers in the "debug" log level. The author says debug logs are "only
|
|
20
|
+
for development" but you know they're enabled in staging which shares
|
|
21
|
+
infrastructure with production logs. This PR is blocking a PCI audit
|
|
22
|
+
next week.
|
|
23
|
+
Two reviewers have already approved it.
|
|
24
|
+
|
|
25
|
+
Situation 2 — Cross-team architecture dispute:
|
|
26
|
+
PR #602: "Shared authentication library v2" (450 lines)
|
|
27
|
+
The platform team submitted a breaking change to the auth library.
|
|
28
|
+
Three consuming teams have pushed back in the PR comments — 87
|
|
29
|
+
comments over 5 days with no resolution. The backend team wants OAuth,
|
|
30
|
+
the mobile team wants JWT, and the frontend team wants session-based.
|
|
31
|
+
The platform team is frustrated and threatening to merge without
|
|
32
|
+
consensus.
|
|
33
|
+
|
|
34
|
+
Situation 3 — Review process failure:
|
|
35
|
+
A production incident occurred because a PR was merged with a stale
|
|
36
|
+
approval — the code changed significantly after the approval, but
|
|
37
|
+
GitHub didn't require re-review. The CTO wants a fix before end of
|
|
38
|
+
week.
|
|
39
|
+
|
|
40
|
+
Situation 4 — Culture challenge:
|
|
41
|
+
A junior engineer comes to you privately saying a senior reviewer has
|
|
42
|
+
been leaving dismissive comments like "this is obviously wrong" and
|
|
43
|
+
"any competent developer would know this." The junior wants to change
|
|
44
|
+
teams. You check the PR history and confirm the pattern — 15 PRs with
|
|
45
|
+
similar comments in the last month.
|
|
46
|
+
|
|
47
|
+
Task: Handle all 4 situations. For each, write: the immediate action
|
|
48
|
+
(what to do right now), the resolution (how to resolve the core issue),
|
|
49
|
+
the process improvement (how to prevent recurrence), and the
|
|
50
|
+
communication (what to say and to whom). Include a weekly review lead
|
|
51
|
+
summary for the engineering leadership.
|
|
52
|
+
|
|
53
|
+
assertions:
|
|
54
|
+
- type: llm_judge
|
|
55
|
+
criteria: "Compliance situation is handled correctly — the PCI logging issue is flagged as a blocker despite 2 existing approvals, the approval is dismissed/review requested, and the fix addresses the credit card logging in all environments, not just production"
|
|
56
|
+
weight: 0.35
|
|
57
|
+
description: "Correct compliance handling"
|
|
58
|
+
- type: llm_judge
|
|
59
|
+
criteria: "Architecture dispute is resolved constructively — doesn't pick a side in the PR, escalates to an architectural decision record (ADR) or RFC process, proposes an in-person/sync discussion, and addresses the platform team's frustration with a timeline commitment"
|
|
60
|
+
weight: 0.35
|
|
61
|
+
description: "Constructive dispute resolution"
|
|
62
|
+
- type: llm_judge
|
|
63
|
+
criteria: "Culture issue is addressed seriously — the senior reviewer's behavior is addressed through management (not publicly in PRs), the junior engineer is supported, and the systemic fix includes reviewer conduct expectations and a feedback mechanism"
|
|
64
|
+
weight: 0.30
|
|
65
|
+
description: "Serious culture issue handling"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: ai-powered-review
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Implement AI-powered code review — evaluate and integrate AI review tools, define human-AI review boundaries, and measure effectiveness"
|
|
7
|
+
tags: [github, pr-review, AI, automation, LLM, code-analysis, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your CTO wants to adopt AI-powered code review to reduce review
|
|
13
|
+
bottlenecks. You've been tasked with evaluating the approach and
|
|
14
|
+
designing the integration. Your team has 80 engineers across 25 repos.
|
|
15
|
+
|
|
16
|
+
Tools to evaluate:
|
|
17
|
+
1. GitHub Copilot code review (built-in, understands repo context)
|
|
18
|
+
2. CodeRabbit (AI review bot, posts inline comments)
|
|
19
|
+
3. Sourcery (automated refactoring suggestions)
|
|
20
|
+
4. Custom solution using Claude/GPT API with GitHub webhooks
|
|
21
|
+
|
|
22
|
+
Current review data:
|
|
23
|
+
- 120 PRs per week, average 4 review comments each
|
|
24
|
+
- Comment breakdown: 40% style/formatting, 25% bug/logic, 20%
|
|
25
|
+
performance, 15% architecture
|
|
26
|
+
- Average reviewer time per PR: 25 minutes
|
|
27
|
+
- 60% of first-round comments are issues AI could catch
|
|
28
|
+
|
|
29
|
+
Concerns from the team:
|
|
30
|
+
- "AI reviews will be noisy and developers will start ignoring all
|
|
31
|
+
automated feedback"
|
|
32
|
+
- "We'll lose the learning aspect of human review"
|
|
33
|
+
- "Who's responsible when AI misses a bug that a human would catch?"
|
|
34
|
+
- "AI can't understand our business domain and conventions"
|
|
35
|
+
- "Junior engineers will stop learning if AI does the reviewing"
|
|
36
|
+
|
|
37
|
+
Task: Design the AI review integration. Write: the tool evaluation
|
|
38
|
+
matrix (features, accuracy, cost, integration complexity for each),
|
|
39
|
+
the human-AI boundary definition (what AI reviews vs what humans
|
|
40
|
+
review), the integration architecture (GitHub Actions workflow, comment
|
|
41
|
+
formatting, noise reduction), the measurement framework (how to track
|
|
42
|
+
AI review accuracy, false positive rate, developer satisfaction), and
|
|
43
|
+
the change management plan (addressing team concerns, pilot program,
|
|
44
|
+
rollout). Include cost-benefit analysis.
|
|
45
|
+
|
|
46
|
+
assertions:
|
|
47
|
+
- type: llm_judge
|
|
48
|
+
criteria: "Tool evaluation is thorough — compares all 4 options on accuracy, cost, integration effort, and noise level, with a clear recommendation and reasoning. Considers the custom solution's flexibility vs maintenance burden"
|
|
49
|
+
weight: 0.35
|
|
50
|
+
description: "Thorough tool evaluation"
|
|
51
|
+
- type: llm_judge
|
|
52
|
+
criteria: "Human-AI boundaries are well-defined — AI handles style/formatting (40% of comments), flags potential bugs for human verification, and humans focus on architecture/design/domain logic. Addresses the learning concern by keeping educational review interactions human"
|
|
53
|
+
weight: 0.35
|
|
54
|
+
description: "Well-defined human-AI boundaries"
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "Change management addresses real concerns — the pilot program starts small and measures before scaling, noise reduction strategy prevents alert fatigue, the cost-benefit analysis quantifies saved reviewer hours vs tool cost, and the plan includes an exit strategy"
|
|
57
|
+
weight: 0.30
|
|
58
|
+
description: "Realistic change management"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: compliance-review-process
|
|
3
|
+
level: 3
|
|
4
|
+
course: github-pr-review
|
|
5
|
+
type: output
|
|
6
|
+
description: "Design compliance-aware review — build review processes that satisfy SOX, SOC 2, HIPAA, and PCI DSS audit requirements"
|
|
7
|
+
tags: [github, pr-review, compliance, SOX, SOC2, audit, advanced]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
Your fintech company is preparing for SOC 2 Type II and PCI DSS
|
|
13
|
+
audits. The auditors will examine your code review process as part
|
|
14
|
+
of change management controls. Currently your process has gaps that
|
|
15
|
+
would fail the audit.
|
|
16
|
+
|
|
17
|
+
Audit requirements:
|
|
18
|
+
1. SOC 2 — Change Management (CC8.1):
|
|
19
|
+
- All production changes must be reviewed by someone other than
|
|
20
|
+
the author
|
|
21
|
+
- Reviews must be documented and traceable
|
|
22
|
+
- Emergency changes must have post-deployment review within 24 hrs
|
|
23
|
+
- Separation of duties: developer cannot approve and deploy
|
|
24
|
+
|
|
25
|
+
2. PCI DSS — Requirement 6.5:
|
|
26
|
+
- Code reviews must check for OWASP Top 10 vulnerabilities
|
|
27
|
+
- Security-focused review must be documented
|
|
28
|
+
- All custom code changes in the cardholder data environment must
|
|
29
|
+
be reviewed before deployment
|
|
30
|
+
|
|
31
|
+
3. SOX (if applicable to financial reporting code):
|
|
32
|
+
- Changes to financial calculation code require dual approval
|
|
33
|
+
- Complete audit trail of who reviewed, when, and what was decided
|
|
34
|
+
|
|
35
|
+
Current gaps:
|
|
36
|
+
- 15% of PRs are merged by the author (self-merge after auto-approve
|
|
37
|
+
from CI)
|
|
38
|
+
- No documented security review checklist
|
|
39
|
+
- Emergency hotfixes bypass review entirely
|
|
40
|
+
- No separation between code approval and deployment
|
|
41
|
+
- Review comments are sometimes deleted or edited after merge
|
|
42
|
+
- No way to prove a human reviewed the code (vs rubber stamp)
|
|
43
|
+
|
|
44
|
+
Task: Design the compliance-aware review process. Write: the branch
|
|
45
|
+
protection rules that enforce separation of duties, the security
|
|
46
|
+
review checklist (OWASP-focused, documented per PR), the emergency
|
|
47
|
+
change process (fast but auditable), the audit trail requirements
|
|
48
|
+
(what to log, how to preserve, how to present to auditors), and the
|
|
49
|
+
GitHub configuration (rulesets, required reviews, CODEOWNERS for
|
|
50
|
+
sensitive code paths). Include sample audit evidence you would present.
|
|
51
|
+
|
|
52
|
+
assertions:
|
|
53
|
+
- type: llm_judge
|
|
54
|
+
criteria: "Compliance controls are complete — prevents self-merge (branch protection), requires documented security review for PCI-scoped code, enforces dual approval for SOX-scope financial code, and creates an immutable audit trail"
|
|
55
|
+
weight: 0.35
|
|
56
|
+
description: "Complete compliance controls"
|
|
57
|
+
- type: llm_judge
|
|
58
|
+
criteria: "Emergency process balances speed with compliance — allows expedited merges with reduced (but not zero) review requirements, mandates post-deployment review within 24 hours, and creates an audit trail even for emergency changes"
|
|
59
|
+
weight: 0.35
|
|
60
|
+
description: "Balanced emergency process"
|
|
61
|
+
- type: llm_judge
|
|
62
|
+
criteria: "Audit evidence is convincing — includes sample reports, GitHub configurations that create tamper-proof trails, and the process for presenting review history to auditors. Addresses the gap of edited/deleted review comments"
|
|
63
|
+
weight: 0.30
|
|
64
|
+
description: "Convincing audit evidence"
|