15 KiB
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 + config + plugin + stack + Vercel | 17 min |
| Live Demo 2 — Setup + worktree + bouw + Vercel preview | 20 min |
| Pauze | 15 min |
| Lesopdracht: bouw scroll-sectie + preview | 28 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:
- TUI 1 minuut —
opencodein terminal, snelle Tab/exit. "Hetzelfde, maar terminal-only." - Desktop UI tour — file tree, chat panel, diff viewer, Sessions sidebar
- Plan mode — vraag
analyseer dit project, zie dat niks wijzigt - Tab → Build mode — vraag iets simpels, zie diff
@explore—@explore wat zit er in deze repo?— aparte context/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
/initin 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:
{
"$schema": "https://opencode.ai/config.json",
"model": "openai/gpt-4o-mini"
}
Permissies (uit officiele docs):
{
"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 + worktreeworktree_delete— commit + cleanup
Installatie via ocx:
curl -fsSL https://kdco.dev/ocx/install.sh | sh
ocx add kdco/worktree --from https://registry.kdco.dev
Desktop workflow:
- In main session: "Maak worktree feature-hero"
- Plugin maakt worktree-folder
- Klik + New Session → Open Folder → kies worktree
- 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,searchParamszijn async — altijdawait
Bronnen: [14] [15] [16] [17] [18] [19]
Slide 12: Onze AGENTS.md
Regels voor het scroll-animatie project
# 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 <SmoothScroll> 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: Vercel + Preview Deployments
Feature branches = automatische preview URLs
Het idee: Elke push naar GitHub → Vercel maakt automatisch een unieke preview URL voor die branch. Geen handmatige deploys, geen "stuur me een screenshot".
Setup (eenmalig per project):
npx vercel link— koppelt repo aan Vercel project (of via dashboard)- Git remote staat → Vercel installeert eigen GitHub App
- Klaar — elke
git pushtriggert deploy
Hoe het werkt:
| Branch | Wat krijgt Vercel? | URL |
|---|---|---|
main |
Production deploy | jouw-app.vercel.app |
feature-hero |
Preview deploy | jouw-app-git-feature-hero-jij.vercel.app |
feature-gallery |
Preview deploy | jouw-app-git-feature-gallery-jij.vercel.app |
Waarom dit goud is voor scroll-storytelling:
- Stuur preview URL naar designers/stakeholders per feature
- Vergelijk verschillende secties side-by-side
- Geen "het werkt op mijn machine"
- Comment in PR direct met working URL
Combinatie met onze worktrees:
- 1 worktree = 1 branch = 1 Vercel preview
- 3 features parallel = 3 live previews
Bronnen: [20] [21]
Slide 14: LIVE DEMO 2 — Setup + Worktree + Vercel preview
Wat je nu gaat zien (~20 min)
Wat ik laat zien:
- AGENTS.md invullen met onze projectregels
- opencode.json maken met permissions
- Tonen dat
rm -rfgeblokkeerd wordt ocx+ worktree plugin verifiëren (was al klaar)- Via prompt: worktree feature-hero aanmaken
- + New Session → openen op worktree-folder
- SmoothScroll wrapper laten bouwen — agent volgt AGENTS.md
git push origin feature-herovanuit worktree- Open Vercel dashboard → toon preview URL verschijnt automatisch
- Open preview URL → scroll-animatie werkt live
Visual: Mockup Sessions sidebar + Vercel preview URL. PINK badge "LIVE DEMO".
Slide 15: Pauze
Pauze!
Visual: "Pauze" groot, "15 minuten"
Slide 16: Lesopdracht
Bouw een scroll-sectie + preview — 28 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:
0. Fork starter naar jouw GitHub + vercel link
/initrunnen — check AGENTS.md- Vraag agent: maak worktree voor jouw feature
- Open de worktree in nieuwe Sessions tab
- Plan-mode → review → Tab → Build
- Test lokaal op
npm run dev git push origin <jouw-branch>— Vercel deployt automatisch- Open preview URL → animatie werkt live → plak in chat
Niet klaar in de les? Geen probleem — je werkt thuis in dezelfde fork verder. Het huiswerk bouwt voort op dit punt.
Sectie keuze: hero (SplitText) · features-grid (stagger) · testimonials (horizontaal) · gallery (parallax)
Slide 17: Huiswerk
Bouw verder in je les-repo
Voor volgende week: Doorbouwen in dezelfde fork als in de les — eerst sectie 1 afmaken (indien nog niet), dan 2-3 extra secties tot een kleine landing page met 3-4 scroll secties.
Eisen:
- Eigen
AGENTS.md(onze mag als basis) opencode.jsonmet permissions- 2+ worktrees gebruikt (Sessions sidebar)
- 3 verschillende scroll-animaties
- Lenis smooth scroll
- Vercel gekoppeld — main = productie, branches = previews
WORKFLOW.mdreflectie (max 400 woorden) met screenshots van preview URLs per feature
Lever in: GitHub URL + Production URL + minstens 2 preview URLs (per worktree-branch) + screenshot git worktree list
Bonus: Eigen sub-agent · MCP server (context7) · Lighthouse 90+
Slide 18: 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
- Vercel preview deployments per branch
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 | Vercel preview deployments | Theorie | [20] [21] |
| 14 | LIVE DEMO 2 | Demo | — |
| 15 | Pauze | Break | — |
| 16 | Lesopdracht | Praktijk | alle |
| 17 | Huiswerk | Praktijk | alle |
| 18 | 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
Vercel:
- [20] Vercel Preview Deployments — https://vercel.com/docs/deployments/preview-deployments
- [21] Vercel + Git Integration — https://vercel.com/docs/git