Skip to content

Commit ce3832e

Browse files
committed
Merge branch 'main' into podcast
2 parents e3ef477 + ac12a5e commit ce3832e

File tree

11 files changed

+901
-739
lines changed

11 files changed

+901
-739
lines changed

scripts/generate-presentation.js

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -536,13 +536,22 @@ REMINDER: If the source contains prompt examples (text showing what to write to
536536
"speakerNotes": { ... }
537537
},
538538
539-
COMPARISON SLIDE CONVENTION (CRITICAL - HARDCODED IN UI):
539+
COMPARISON SLIDE CONVENTION (CRITICAL - STYLING RULES):
540540
541-
The comparison slide type has HARDCODED styling in the presentation component:
542-
- LEFT side → RED background, RED heading, ✗ icons (ineffective/worse/limited)
543-
- RIGHT side → GREEN background, GREEN heading, ✓ icons (effective/better/superior)
541+
The comparison slide type has TWO variants based on the "neutral" flag:
544542
545-
YOU MUST ALWAYS follow this convention:
543+
1. EVALUATIVE (default, neutral=false or omitted):
544+
- LEFT side → RED background, RED heading, ✗ icons (ineffective/worse/limited)
545+
- RIGHT side → GREEN background, GREEN heading, ✓ icons (effective/better/superior)
546+
- Use when one approach is clearly inferior to the other
547+
- Examples: "Ineffective vs Effective", "Traditional vs Modern", "Limited vs Superior"
548+
549+
2. NEUTRAL (neutral=true):
550+
- BOTH sides → PURPLE background, PURPLE heading, → arrows (both valid options)
551+
- Use for architectural trade-offs where both options are valid but have different characteristics
552+
- Examples: "Autonomous vs Structured sub-agents", "Synchronous vs Asynchronous APIs"
553+
554+
FOR EVALUATIVE COMPARISONS, YOU MUST ALWAYS follow this convention:
546555
- LEFT: The worse/ineffective/traditional/limited approach
547556
- RIGHT: The better/effective/modern/superior approach
548557
@@ -567,6 +576,20 @@ INCORRECT: Putting the better option on the left will show it with RED ✗ styli
567576
},
568577
"speakerNotes": { ... }
569578
},
579+
{
580+
"type": "comparison",
581+
"title": "Architectural Trade-offs: Option A vs Option B",
582+
"neutral": true, // OPTIONAL: Use neutral=true for valid trade-offs (PURPLE neutral styling)
583+
"left": {
584+
"label": "Option A", // Both options valid - neutral styling
585+
"content": ["Point 1", "Point 2"]
586+
},
587+
"right": {
588+
"label": "Option B", // Both options valid - neutral styling
589+
"content": ["Point 1", "Point 2"]
590+
},
591+
"speakerNotes": { ... }
592+
},
570593
{
571594
"type": "codeComparison",
572595
"title": "Prompt Example: Ineffective vs Effective",

website/docs/methodology/lesson-3-high-level-methodology.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ With research complete, you now plan the change. Planning isn't a single approac
8181

8282
<PlanningStrategyComparison />
8383

84+
<!-- presentation-only-start -->
85+
86+
**Planning strategy comparison - both approaches are valid depending on project phase and certainty level. Use neutral styling.**
87+
88+
<!-- presentation-only-end -->
89+
8490
**Exploration Planning:** Use this when the solution space is unclear or you need to discover the best approach. Rather than dictating a solution, frame the problem space and steer the agent to research your codebase patterns (via ChunkHound) and domain knowledge (via ArguSeek), explore alternatives, and iterate with you through reasoning-action cycles. You're discovering the approach together.
8591

8692
This approach has higher cost and time investment, but it discovers better solutions, catches architectural issues early, and helps you build a clearer mental model before committing to implementation.
@@ -193,6 +199,12 @@ This template provides a solid baseline for any planning task. In [Lesson 4: Pro
193199

194200
## Phase 3: Execute (Two Execution Modes)
195201

202+
<!-- presentation-only-start -->
203+
204+
**Execution modes comparison - both approaches are valid depending on context (learning stage, task criticality, grounding quality). Use neutral styling.**
205+
206+
<!-- presentation-only-end -->
207+
196208
With your plan complete, you execute—but how you interact with the agent during execution fundamentally changes your productivity. There are two modes: supervised (actively watching and steering) and autonomous (fire-and-forget). Most engineers start with supervised mode to build trust, then gradually shift to autonomous mode as they develop stronger grounding and planning skills. Here's the counterintuitive truth: the real productivity gain isn't about finishing individual tasks faster. It's about working on multiple projects simultaneously and maintaining extremely long work stretches. That's where 10x productivity actually hides.
197209

198210
### Supervised Mode ("Babysitting")

website/docs/methodology/lesson-5-grounding.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,19 @@ Example: ChunkHound uses a fixed multi-hop pipeline where the system controls tr
156156

157157
**The architectural trade-off:** Autonomous agents work well but degrade in large codebases where they make suboptimal exploration choices. Structured agents scale reliably but cost more to build and run.
158158

159+
<!-- presentation-only-start -->
160+
161+
**Sub-agent architecture comparison - both approaches are valid depending on codebase scale. Use neutral styling.**
162+
163+
| Approach A (Autonomous) | Approach B (Structured) |
164+
| ------------------------------------------ | --------------------------------------------- |
165+
| Agent decides search strategy autonomously | Deterministic control plane defines algorithm |
166+
| Simpler to build and maintain | Scales reliably to millions of LOC |
167+
| Works well for varied research tasks | LLM makes tactical decisions within structure |
168+
| Degrades on very large codebases | Higher cost and complexity to build |
169+
170+
<!-- presentation-only-end -->
171+
159172
### Sub-Agent Availability
160173

161174
**Availability depends on your agent platform:**

website/src/components/PresentationMode/RevealSlideshow.module.css

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,38 @@
243243
color: #51cf66;
244244
}
245245

246+
/* Neutral comparison variant - uses primary color for both sides */
247+
.neutralLeft,
248+
.neutralRight {
249+
composes: gpuOptimized;
250+
padding: clamp(0.7em, 1.5vw, 1em);
251+
border-radius: 8px;
252+
overflow-y: auto;
253+
background: var(--visual-bg-workflow);
254+
border: 2px solid rgba(124, 58, 237, 0.3);
255+
}
256+
257+
.reveal .neutralLeft,
258+
.reveal .neutralRight {
259+
border-color: rgba(167, 139, 250, 0.3);
260+
}
261+
262+
.neutralHeading {
263+
color: var(--brand-primary-light);
264+
font-size: clamp(0.9rem, 1.8vw, 1em);
265+
margin-bottom: 0.3em;
266+
font-weight: 600;
267+
}
268+
269+
.neutralLeft li::before,
270+
.neutralRight li::before {
271+
content: '→';
272+
position: absolute;
273+
left: 0;
274+
color: var(--brand-primary-light);
275+
font-weight: 600;
276+
}
277+
246278
/* Marketing vs Reality - Translation Pattern */
247279
.marketingReality {
248280
display: grid;

website/src/components/PresentationMode/RevealSlideshow.tsx

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ interface Slide {
5656
code?: string;
5757
caption?: string;
5858
component?: string;
59+
neutral?: boolean;
5960
left?: { label: string; content: string[] };
6061
right?: { label: string; content: string[] };
6162
leftCode?: { label: string; language: string; code: string };
@@ -257,8 +258,18 @@ export default function RevealSlideshow({
257258
<h2>{slide.title}</h2>
258259
<div className={styles.comparison}>
259260
{slide.left && (
260-
<div className={styles.comparisonLeft}>
261-
<h3 className={styles.ineffective}>{slide.left.label}</h3>
261+
<div
262+
className={
263+
slide.neutral ? styles.neutralLeft : styles.comparisonLeft
264+
}
265+
>
266+
<h3
267+
className={
268+
slide.neutral ? styles.neutralHeading : styles.ineffective
269+
}
270+
>
271+
{slide.left.label}
272+
</h3>
262273
<ul>
263274
{slide.left.content.map((item, i) => (
264275
<li key={i} className="fragment">
@@ -269,8 +280,18 @@ export default function RevealSlideshow({
269280
</div>
270281
)}
271282
{slide.right && (
272-
<div className={styles.comparisonRight}>
273-
<h3 className={styles.effective}>{slide.right.label}</h3>
283+
<div
284+
className={
285+
slide.neutral ? styles.neutralRight : styles.comparisonRight
286+
}
287+
>
288+
<h3
289+
className={
290+
slide.neutral ? styles.neutralHeading : styles.effective
291+
}
292+
>
293+
{slide.right.label}
294+
</h3>
274295
<ul>
275296
{slide.right.content.map((item, i) => (
276297
<li key={i} className="fragment">
Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,79 @@
11
{
22
"intro.md": {
33
"presentationUrl": "/presentations/intro.json",
4-
"slideCount": 11,
5-
"estimatedDuration": "35-45 minutes",
6-
"title": "Operator Training: AI Coding Assistants in Production",
7-
"generatedAt": "2025-11-09T10:34:22.957Z"
4+
"slideCount": 10,
5+
"estimatedDuration": "25-30 minutes",
6+
"title": "Introduction: AI Coding Course",
7+
"generatedAt": "2025-11-10T21:11:02.010Z"
88
},
99
"methodology/lesson-3-high-level-methodology.md": {
1010
"presentationUrl": "/presentations/methodology/lesson-3-high-level-methodology.json",
11-
"slideCount": 12,
12-
"estimatedDuration": "45-60 minutes",
13-
"title": "Lesson 3: High-Level Methodology",
14-
"generatedAt": "2025-11-10T15:59:19.399Z"
11+
"slideCount": 10,
12+
"estimatedDuration": "35-45 minutes",
13+
"title": "High-Level Methodology: Research-Plan-Execute-Validate",
14+
"generatedAt": "2025-11-10T21:13:53.809Z"
1515
},
1616
"methodology/lesson-4-prompting-101.md": {
1717
"presentationUrl": "/presentations/methodology/lesson-4-prompting-101.json",
1818
"slideCount": 11,
19-
"estimatedDuration": "40-50 minutes",
20-
"title": "Prompting 101: Pattern Completion, Not Conversation",
21-
"generatedAt": "2025-11-10T19:54:29.185Z"
19+
"estimatedDuration": "35-45 minutes",
20+
"title": "Prompting 101: Pattern Completion Engineering",
21+
"generatedAt": "2025-11-10T21:15:33.473Z"
2222
},
2323
"methodology/lesson-5-grounding.md": {
2424
"presentationUrl": "/presentations/methodology/lesson-5-grounding.json",
25-
"slideCount": 12,
26-
"estimatedDuration": "40-50 minutes",
27-
"title": "Lesson 5: Grounding - Keeping AI Agents Tethered to Reality",
28-
"generatedAt": "2025-11-09T06:35:22.963Z"
25+
"slideCount": 15,
26+
"estimatedDuration": "45-60 minutes",
27+
"title": "Grounding: Anchoring Agents in Reality",
28+
"generatedAt": "2025-11-11T04:24:31.477Z"
2929
},
3030
"practical-techniques/lesson-10-debugging.md": {
3131
"presentationUrl": "/presentations/practical-techniques/lesson-10-debugging.json",
32-
"slideCount": 11,
33-
"estimatedDuration": "35-45 minutes",
32+
"slideCount": 10,
33+
"estimatedDuration": "45-60 minutes",
3434
"title": "Debugging with AI Agents",
35-
"generatedAt": "2025-11-10T11:19:45.844Z"
35+
"generatedAt": "2025-11-10T21:39:50.140Z"
3636
},
3737
"practical-techniques/lesson-6-project-onboarding.md": {
3838
"presentationUrl": "/presentations/practical-techniques/lesson-6-project-onboarding.json",
39-
"slideCount": 11,
39+
"slideCount": 10,
4040
"estimatedDuration": "35-45 minutes",
41-
"title": "Lesson 6: Project Onboarding - Context Files & AI Memory",
42-
"generatedAt": "2025-11-09T06:37:14.278Z"
41+
"title": "Project Onboarding with Context Files",
42+
"generatedAt": "2025-11-10T20:39:53.491Z"
4343
},
4444
"practical-techniques/lesson-7-planning-execution.md": {
4545
"presentationUrl": "/presentations/practical-techniques/lesson-7-planning-execution.json",
46-
"slideCount": 15,
47-
"estimatedDuration": "45-50 minutes",
48-
"title": "Lesson 7: Planning & Execution",
49-
"generatedAt": "2025-11-10T16:44:27.800Z"
46+
"slideCount": 14,
47+
"estimatedDuration": "40-50 minutes",
48+
"title": "Planning & Execution",
49+
"generatedAt": "2025-11-10T21:21:54.387Z"
5050
},
5151
"practical-techniques/lesson-8-tests-as-guardrails.md": {
5252
"presentationUrl": "/presentations/practical-techniques/lesson-8-tests-as-guardrails.json",
5353
"slideCount": 12,
54-
"estimatedDuration": "40-50 minutes",
54+
"estimatedDuration": "45-60 minutes",
5555
"title": "Lesson 8: Tests as Guardrails",
56-
"generatedAt": "2025-11-10T20:09:05.001Z"
56+
"generatedAt": "2025-11-11T05:21:45.228Z"
5757
},
5858
"practical-techniques/lesson-9-reviewing-code.md": {
5959
"presentationUrl": "/presentations/practical-techniques/lesson-9-reviewing-code.json",
60-
"slideCount": 12,
60+
"slideCount": 10,
6161
"estimatedDuration": "35-45 minutes",
62-
"title": "Lesson 9: Reviewing Code",
63-
"generatedAt": "2025-11-10T16:45:53.163Z"
62+
"title": "Reviewing Code with AI",
63+
"generatedAt": "2025-11-10T21:25:04.301Z"
6464
},
6565
"understanding-the-tools/lesson-1-intro.md": {
6666
"presentationUrl": "/presentations/understanding-the-tools/lesson-1-intro.json",
6767
"slideCount": 11,
68-
"estimatedDuration": "40-50 minutes",
69-
"title": "Understanding the Tools: Lesson 1 - Introduction to AI Agents",
70-
"generatedAt": "2025-11-09T11:14:16.616Z"
68+
"estimatedDuration": "35-45 minutes",
69+
"title": "Understanding the Machinery: LLMs and Agents",
70+
"generatedAt": "2025-11-11T05:24:11.560Z"
7171
},
7272
"understanding-the-tools/lesson-2-understanding-agents.md": {
7373
"presentationUrl": "/presentations/understanding-the-tools/lesson-2-understanding-agents.json",
74-
"slideCount": 12,
75-
"estimatedDuration": "35-45 minutes",
74+
"slideCount": 11,
75+
"estimatedDuration": "35-50 minutes",
7676
"title": "Understanding Agents",
77-
"generatedAt": "2025-11-10T14:57:50.229Z"
77+
"generatedAt": "2025-11-10T17:58:00.131Z"
7878
}
7979
}

0 commit comments

Comments
 (0)