refactor: revise OtterWorks workshop to 12 labs (4 tracks) focused on Devin platform strengths#161
Conversation
… tracks) Add three new tracks covering capabilities already present in the OtterWorks codebase but not yet surfaced in the workshop curriculum: Track D: DevOps & CI/CD - D1: Monorepo CI Pipeline Audit (CI_STRATEGY.md, paths-filter gaps) - D2: Infrastructure as Code Review (8 Terraform modules, 12 Helm charts) - D3: Event-Driven SAST Pipeline (sast-auto-remediate.yml, Trivy+SonarCloud) Track E: Application Development - E1: Cross-Service Bug Hunt (exploratory-qa-report.md bugs) - E2: API Gateway Route Completion (api-route-matrix.md gaps) - E3: Synthetic Test Data Generation (testdata/ framework) Track F: Architecture & Documentation - F1: Architecture Decision Records (reverse-engineer the why) - F2: API Flow Test Expansion (tests/api/ suite, route matrix) - F3: Technical Documentation Generation (service READMEs, onboarding) Each new lab includes: objective, what is wrong, where to look (with actual file paths verified against the otterworks repo), what done looks like (checkboxes), progressive hints, and time budgets. Also adds 9 evaluation scripts (one per new lab) and updates the evaluation README, main workshop README, and catalog/repos.md.
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
- D1: use generic 'all its services and frontends' instead of numeric breakdown - D2: remove backend/frontend breakdown from intro, fix Hint 2 '12' → '13'
…labs (4 tracks) Cut weak labs (E1-E3, F1-F3, old D1-D2, old B2-B3, old C3) that were generic developer work without Devin-specific value. New labs showcase Devin platform capabilities: - B2: Ask → Session → Playbook progression - B3: Dependency lifecycle campaign (child agents, divide-and-conquer) - C3: Scheduled security & coverage automation - D1: Event-driven SAST pipeline (promoted from old D3) - D2: Knowledge layer & Devin Review (shared context config) - D3: Full automation pipeline capstone (3-layer strategy) Every lab now demonstrates a specific Devin strength: event-driven triggers, playbooks, child agents, scheduled sessions, knowledge layer, or the Ask→Session→Playbook→Automation progression.
There was a problem hiding this comment.
🚩 Replaced labs (B2-complete-runbooks, B3-add-observability, C3-test-coverage) have no migration path for existing users
This PR replaces three labs entirely: old B2 (Complete the Runbooks) → new B2 (From Ask to Playbook), old B3 (Add Observability) → new B3 (Dependency Lifecycle Campaign), old C3 (Test Coverage Blitz) → new C3 (Scheduled Automation). The old evaluation scripts are also replaced with new ones using a different format (blocking/recommended criteria instead of PASS/FAIL with template variables). Any existing event agendas or facilitator guides referencing the old lab names (e.g., "B2 — Complete the Runbooks") will be broken. The events/ directory may contain references to old lab names.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Acknowledged. The old labs (B2, B3, C3) were added in the first commit of this same PR — they have never been shipped to any event. Checked events/ directory and found no references to the old OtterWorks lab names. No migration path needed.
- Remove 'Open a PR' from prompts in B2 and B3 (AGENTS.md rule) - Fix service count in B3: '10 backend services plus API gateway' to align with README convention - Rewrite all 6 new eval scripts to match existing format: Inputs/Instructions/Criteria/Output with PASS/FAIL structure
- Add Table of Contents with anchor links to B2, B3, C3, D1, D2, D3 - Add Quick Start section to each lab for experienced users - Fix B3 language count: 9 ecosystems (not 10) — Java is shared by auth-service and report-service
| - PostgreSQL is the primary datastore for most services. | ||
| DynamoDB is used only for file-service metadata. |
There was a problem hiding this comment.
🚩 D2 Knowledge note example claims DynamoDB for file-service; README says PostgreSQL for document-service
In D2-knowledge-and-devin-review.md:80, the example Knowledge note states: "PostgreSQL is the primary datastore for most services. DynamoDB is used only for file-service metadata. MeiliSearch is used only by search-service." Meanwhile, the README Getting Oriented section at line 116 says: "the document-service (Python/FastAPI), which writes to PostgreSQL and publishes an event to SNS." These are consistent (document-service uses PostgreSQL, file-service uses DynamoDB). However, REVIEW.md states "Repo descriptions must match reality" — if the actual otterworks repo has different storage assignments, these claims could be inaccurate. Since I cannot verify against the actual otterworks repo's implementation, this is worth a quick check.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Verified against the otterworks repo — the claims are accurate. services/file-service/ uses DynamoDB (confirmed via Cargo.toml, metadata.rs, config.rs). services/document-service/ uses PostgreSQL. services/search-service/ uses MeiliSearch. No changes needed.
Summary
Revised the OtterWorks workshop curriculum from 18 labs across 6 tracks down to 12 labs across 4 tracks, cutting generic developer work and replacing it with labs that showcase Devin's unique platform capabilities and the Ask → Session → Playbook → Automation progression.
What was cut and why:
New labs (6 total), each showcasing a distinct Devin pattern:
make security-scanChild session testing: All 6 labs tested against the otterworks repo — all file paths verified, all prompts produced excellent-quality output, all dependency hints accurate (Guava 28.0-jre, lodash 4.17.20, urllib3 1.26.5).
Quality fixes from Devin Review:
Inputs/Instructions/Criteria/Outputformat with PASS/FAILLink to Devin session: https://partner-workshops.devinenterprise.com/sessions/e1b4c54a539442d683fe3a113025468b
Requested by: @DhrovS