# Les 2 — OpenCode Pro: Rules, Worktrees & Scroll Animations ## Slide Overzicht (Klas B — 2 uur, online) **Bronnen-overzicht onderaan dit document.** **Lesflow:** Theorie eerst in blokken, dan dedicated **Live Demo** momenten. Geen heen-en-weer geswitch. --- ## Slide 1: Title ### Les 2 — OpenCode Pro **Visual:** - Background: CREAM - "Les 2" in BLUE - "OpenCode Pro" in BLACK - Subtitle: "Rules · Worktrees · Een scroll-animatie site bouwen" **Bronnen:** [1] --- ## Slide 2: Terugblik ### Waar staan we? **Content:** - Les 1: kennismaking + leerlijn-opzet - Iedereen kent ChatGPT en/of Claude (als chat) - Eindopdracht: AI-app met Next.js + Supabase + Vercel AI SDK **Vandaag:** "Van AI als chat naar AI als coding-IDE. Met regels, config en parallel worktrees." **Visual:** Chat-bubble → IDE icoon --- ## Slide 3: Planning ### Vandaag — 120 minuten | Onderwerp | Duur | |-----------|------| | Welkom + Terugblik | 10 min | | **Theorie 1** — Waarom OpenCode + kern features | 20 min | | **Live Demo 1** — Desktop tour | 10 min | | **Theorie 2** — AGENTS.md + opencode.json + plugin + stack | 15 min | | **Live Demo 2** — Setup + worktree + bouw SmoothScroll | 15 min | | **Pauze** | 15 min | | Lesopdracht: bouw scroll-sectie | 35 min | | Huiswerk + Afsluiting | (eind) | **Visual:** Timeline met YELLOW pauze-rij + PINK demo-rijen --- ## Slide 4: Waarom OpenCode (en niet Cursor)? ### Alternatieven kennen is professioneel **Iedereen kent Cursor. Wij beginnen bewust met OpenCode. Waarom?** | | Cursor | OpenCode | |---|--------|----------| | Licentie | Commercieel ($20/mnd) | Open source (gratis) | | Models | Eigen routing | Direct: OpenAI, Anthropic, Google, Groq, Ollama | | Lock-in | Hoog | Geen | | Scriptable | Beperkt | Volledig (CLI + plugins) | | Lokale AI | ❌ | ✅ (via Ollama) | **Belangrijke punten:** - **Provider-keuze** — jij beslist welk model, niet de tool - **Geen vendor lock-in** — past in een pro-toolchain - **Concept is hetzelfde** — leer OpenCode goed, dan begrijp je Cursor + Claude Code ook - **Onderdeel van leerlijn** — later kijken we naar Cursor; nu de open variant **Belangrijk:** dit is **geen Cursor-bashing**. Cursor is uitstekend. We kiezen voor breedte: meerdere tools kennen > vasthangen aan één. **Bronnen:** [1] [4] --- ## Slide 5: Wat is OpenCode? ### Een AI coding-IDE in twee smaken **Content:** - Open source · 60.000+ GitHub stars · door SST - Werkt met elke provider: OpenAI, Anthropic, Google, Groq, Ollama - Lokaal — code blijft op jouw machine **Twee smaken:** | Desktop (vandaag) | TUI (terminal) | |-------------------|----------------| | Visuele diff-viewer | Snel met keyboard | | File tree + Sessions sidebar | Werkt over SSH | | Multi-session parallel | Goed voor scripts / CI/CD | | Sneller leren als je begint | Worktree plugin spawnt auto terminal | **Vandaag:** Desktop. We tonen TUI **1 minuut** in Live Demo zodat je weet dat 't bestaat. **Voor jouw eindopdracht: Desktop.** **Bronnen:** [1] [2] [3] [5] --- ## Slide 6: Plan/Build/@explore + /init ### De vier dingen die je echt moet kennen **Twee modes** (Tab om te wisselen): - **plan** — read-only, denkt mee, wijzigt niks - **build** — default, schrijft code, voert commands uit **Sub-agents:** - `@explore` — read-only verkenning (spaart tokens) - `@general` — brede taak - `@scout` — gerichte zoekopdracht **`/init` commando** — eerste actie in elk nieuw project: - Scant je repo - Stelt vragen - Schrijft/update je `AGENTS.md` **Best practice:** > Plan eerst. Lees mee. Geef feedback. Tab → Build. **Bronnen:** [6] [7] [8] --- ## Slide 7: LIVE DEMO 1 — Desktop Tour ### Wat je nu gaat zien (~10 min) **Setup:** OpenCode Desktop open op een leeg Next.js project. **Wat ik laat zien:** 1. **TUI 1 minuut** — `opencode` in terminal, snelle Tab/exit. "Hetzelfde, maar terminal-only." 2. **Desktop UI tour** — file tree, chat panel, diff viewer, Sessions sidebar 3. **Plan mode** — vraag `analyseer dit project`, zie dat niks wijzigt 4. **Tab → Build mode** — vraag iets simpels, zie diff 5. **`@explore`** — `@explore wat zit er in deze repo?` — aparte context 6. **`/init`** — laat AGENTS.md genereren **Visual:** Mockup van Desktop layout met annotaties. PINK badge "LIVE DEMO". --- ## Slide 8: AGENTS.md — Projectregels ### De officiële OpenCode standaard **Wat is AGENTS.md?** Markdown in project-root dat OpenCode automatisch in elke context laadt. Officieel format — alternatief voor Cursor's `.cursorrules`. **Twee locaties:** - `./AGENTS.md` — per project (in repo) - `~/.config/opencode/AGENTS.md` — globaal voor alle projecten **Externe regels referencen:** ``` @rules/styling.md @rules/security.md ``` **Hoe te maken:** - Handmatig schrijven, OF - `/init` in OpenCode — scant repo, stelt vragen, genereert **Tip:** schrijf concrete regels die je AI kan controleren. "Gebruik clean code" werkt niet. "useGSAP alleen, geen useEffect" wel. **Bronnen:** [9] --- ## Slide 9: opencode.json — Config ### Model · Permissies · Plugins **Locaties:** - `./opencode.json` — per project - `~/.config/opencode/opencode.json` — globaal **Basis:** ```json { "$schema": "https://opencode.ai/config.json", "model": "openai/gpt-4o-mini" } ``` **Permissies (uit officiele docs):** ```json { "permission": { "bash": { "*": "ask", "git *": "allow", "rm *": "deny" }, "edit": { "*": "deny", "app/**/*.tsx": "allow" } } } ``` Drie levels: `allow` · `ask` · `deny`. Glob patterns voor bash én files. **Bronnen:** [10] [11] --- ## Slide 10: opencode-worktree Plugin ### Auto-magisch worktrees aanmaken **Wat doet het?** Plugin van **kdcokenny**. Geeft de agent twee tools: - `worktree_create` — branch + worktree - `worktree_delete` — commit + cleanup **Installatie via `ocx`:** ```bash curl -fsSL https://kdco.dev/ocx/install.sh | sh ocx add kdco/worktree --from https://registry.kdco.dev ``` **Desktop workflow:** 1. In main session: "Maak worktree feature-hero" 2. Plugin maakt worktree-folder 3. Klik **+ New Session** → **Open Folder** → kies worktree 4. Parallel agents in sidebar **Bronnen:** [12] [13] --- ## Slide 11: Demo Stack — Next.js 16 + GSAP + Lenis ### De stack voor high-end scroll storytelling **Stack:** - **Next.js 16** App Router + TypeScript (Turbopack default) - **TailwindCSS** - **GSAP 3.15** + `@gsap/react` — sinds 2025 100% gratis (ScrollTrigger, SplitText) - **Lenis 1.3** (`lenis/react`) — door Darkroom Engineering **Waarom deze combinatie?** Dit is dé stack waarmee award-winning scroll-storytelling sites gebouwd worden. Niet "een" optie — **de** standaard op pro-niveau. **Wie gebruikt dit?** - Apple product pages (GSAP scroll animaties) - Stripe, OpenAI marketing — beide GSAP-based - Awwwards / FWA winnaars — bijna altijd GSAP - Studios: **Active Theory**, **Locomotive**, **Resn**, **Darkroom Engineering** (makers van Lenis zelf) **Waarom niet Framer Motion?** - Framer Motion is uitstekend voor **app UI** (modals, transities, micro-interacties) - GSAP heeft betere timing-precisie en GPU-optimalisaties voor **scroll storytelling** - Voor jouw eindopdracht (een site die "wow" doet bij scrollen): GSAP **Next.js 16 detail:** - `cookies()`, `headers()`, `params`, `searchParams` zijn **async** — altijd `await` **Bronnen:** [14] [15] [16] [17] [18] [19] --- ## Slide 12: Onze AGENTS.md ### Regels voor het scroll-animatie project ```markdown # Project Rules ## Why this stack High-end scroll storytelling site (Awwwards/FWA niveau). GSAP + Lenis = pro standaard — Apple, Stripe, OpenAI, Active Theory, Locomotive, Darkroom Engineering. Framer Motion is voor app UI, niet voor scroll storytelling. Kies GSAP voor timing-precisie + GPU-perf. ## Stack - Next.js 16 (App Router, TypeScript, Turbopack) - TailwindCSS · GSAP 3.15+ (incl. ScrollTrigger, SplitText) - Lenis 1.3+ (`lenis/react`) - @gsap/react voor de useGSAP hook ## Hard rules - Geen Framer Motion, react-spring, AOS - Animaties altijd in Client Components (`"use client"`) - useGSAP(() => {}, { scope: ref }) — nooit useEffect voor GSAP - Lenis sync: gsap.ticker.add met autoRaf: false - Next 16: await params, await cookies(), await headers() ## Patterns - Eén wrapper in app/layout.tsx - Tailwind voor layout; GSAP voor transform/opacity ## Done = - Geen hydration warnings - ScrollTrigger.refresh() na dynamische content ``` **De `## Why this stack` sectie** geeft de agent context. Hij snapt nu *waarom* deze keuzes — en stelt voor dezelfde redenen geen Framer Motion voor. **Bronnen:** [14] [15] [19] --- ## Slide 13: LIVE DEMO 2 — Setup + Worktree + SmoothScroll ### Wat je nu gaat zien (~15 min) **Wat ik laat zien:** 1. **AGENTS.md** invullen met onze projectregels 2. **opencode.json** maken met permissions 3. Tonen dat `rm -rf` geblokkeerd wordt 4. **`ocx` + worktree plugin** installeren (was al klaar — kort tonen) 5. Via prompt: **worktree feature-hero** aanmaken 6. **+ New Session** → openen op worktree-folder 7. In feature-hero: **SmoothScroll wrapper** laten bouwen 8. Bewijs dat **AGENTS.md regels gevolgd worden** (useGSAP, geen Framer Motion, etc.) **Visual:** Mockup Sessions sidebar + diff-viewer. PINK badge "LIVE DEMO". --- ## Slide 14: Pauze ### Pauze! **Visual:** "Pauze" groot, "15 minuten" --- ## Slide 15: Lesopdracht ### Bouw een scroll-sectie — 35 minuten **Setup (al klaar in starter):** - Next.js 16 starter - AGENTS.md, opencode.json, plugin - GSAP + Lenis geïnstalleerd - SmoothScroll wrapper bestaat al **Jouw taak:** 1. `/init` runnen — check AGENTS.md 2. Vraag agent: maak worktree voor jouw feature 3. Open de worktree in nieuwe Sessions tab 4. Plan-mode → review → Tab → Build 5. Test op `npm run dev` 6. Commit + push **Sectie keuze:** hero (SplitText) · features-grid (stagger) · testimonials (horizontaal) · gallery (parallax) --- ## Slide 16: Huiswerk ### Bouw je eigen scroll-animatie site **Voor volgende week:** Bouw een **kleine landing page** met 3-4 scroll secties. **Eisen:** - [ ] Eigen `AGENTS.md` (onze mag als basis) - [ ] `opencode.json` met permissions - [ ] **2+ worktrees** gebruikt (Sessions sidebar) - [ ] **3 verschillende scroll-animaties** - [ ] Lenis smooth scroll - [ ] Deploy op Vercel - [ ] `WORKFLOW.md` reflectie (max 400 woorden) **Lever in:** GitHub URL + Vercel URL + screenshot van `git worktree list` **Bonus:** Eigen sub-agent · MCP server (context7) · Lighthouse 90+ --- ## Slide 17: Afsluiting ### Volgende les — Introductie Cursor **Vandaag gedaan:** - Waarom OpenCode (vs Cursor) - Plan/Build/@explore/`/init` - AGENTS.md + opencode.json - opencode-worktree plugin via ocx - Live: Next.js 16 + GSAP + Lenis scroll-site - Parallel agents via Sessions sidebar **Volgende keer — Cursor:** - De commerciele tegenhanger van OpenCode - Cursor rules vs AGENTS.md - Composer, Tab-completion, @-references - Wanneer kies je welke tool? **Vragen? Feedback?** --- ## Slide Summary | # | Title | Type | Bronnen | |---|-------|------|---------| | 1 | Title | Opening | [1] | | 2 | Terugblik | Intro | — | | 3 | Plan | Intro | — | | 4 | Waarom OpenCode | Theorie | [1] [4] | | 5 | Wat is OpenCode | Theorie | [1] [2] [3] [5] | | 6 | Plan/Build/@explore | Theorie | [6] [7] [8] | | 7 | **LIVE DEMO 1** | Demo | — | | 8 | AGENTS.md | Theorie | [9] | | 9 | opencode.json | Theorie | [10] [11] | | 10 | Worktree plugin | Theorie | [12] [13] | | 11 | Demo stack | Theorie | [14]–[18] | | 12 | Onze AGENTS.md | Theorie | [14] [15] [19] | | 13 | **LIVE DEMO 2** | Demo | — | | 14 | Pauze | Break | — | | 15 | Lesopdracht | Praktijk | alle | | 16 | Huiswerk | Praktijk | alle | | 17 | Afsluiting | Closing | — | --- ## Bronnen **OpenCode (officieel):** - [1] OpenCode hoofdsite — https://opencode.ai - [2] OpenCode Download (Desktop) — https://opencode.ai/download - [3] OpenCode docs — https://opencode.ai/docs/ - [4] OpenCode GitHub (sst) — https://github.com/sst/opencode - [5] DeepWiki: Desktop Applications — https://deepwiki.com/sst/opencode/6.7-desktop-applications - [6] Modes (plan/build) — https://opencode.ai/docs/modes/ - [7] Agents (sub-agents) — https://opencode.ai/docs/agents/ - [8] Commands (slash) — https://opencode.ai/docs/commands/ - [9] Rules (AGENTS.md) — https://opencode.ai/docs/rules/ - [10] Config — https://opencode.ai/docs/config/ - [11] Permissions — https://opencode.ai/docs/permissions/ **Worktree plugin:** - [12] opencode-worktree — https://github.com/kdcokenny/opencode-worktree - [13] ocx (extension manager) — https://github.com/kdcokenny/ocx **Next.js 16:** - [14] Next.js 16 blog — https://nextjs.org/blog/next-16 - [15] Upgrading to v16 — https://nextjs.org/docs/app/guides/upgrading/version-16 **GSAP:** - [16] GSAP docs v3 — https://gsap.com/docs/v3/ - [17] GSAP React (useGSAP) — https://gsap.com/resources/React/ - [18] GSAP License (gratis sinds 2025) — https://gsap.com/standard-license **Lenis:** - [19] Lenis GitHub — https://github.com/darkroomengineering/lenis