Epic Notes workshop — November 3, 2026

Click-by-click screenshots, steps and copyable prompts:
https://raph.fyi/writing/coding-with-agents-epic-notes/

Do the labs individually. Use VS Code + OpenCode. Raph gives each
student a separate class key. Connect it to OpenCode Console in the
VS Code terminal. Each key has a $2.50 cap and expires one day after
creation. You do not need Raph's login, an invitation, your own card
or a Go subscription. Keep the key private.
If following alone, use approved access, an available free model or
the reference patches. Free-model quotas are separate from class credits.

BEFORE CLASS
Windows: install Git for Windows (Git Bash), Node22.x >=22.18 and VSCode.
Restart VSCode after installing. Extract All into a short local folder
outside OneDrive; open the folder containing prepare.mjs. Set the VSCode
default terminal to Git Bash. Keep quoted $username paths literal.
Mac: normal VSCode terminal. WSL: all folders/tools inside Linux; do not
mix Windows and Linux node_modules. Arrange a new WSL install with IT.
PowerShell optional: npm.cmd/npx.cmd/opencode.cmd avoid blocked ps1 shims;
no execution-policy change is needed.

Each shell command goes into the bottom VS Code Terminal panel.
Each agent prompt goes into OpenCode’s message box.
Use F1 for the Command Palette. Don’t paste prompts into Copilot chat.

1. VSCode setup terminal: node --version; git --version; npm --version.
2. Run node prepare.mjs; wait for Prepared. It downloads the existing
   pinned EpicStack app, installs dependencies and seeds synthetic data.
3. If you have OpenCode v1: npm uninstall -g opencode-ai
   Install the current stable release: npm install -g @opencode/cli@latest
   Run opencode --version. This guide uses v2.2.5; do not use v1.
4. Open Epic-Notes.code-workspace. Tasks: Run Task > Workshop: app.
   Fallback from epic-stack: node workshop/dev.mjs
5. Browser: Open Integrated Browser > the Local URL printed by this
   worktree server (usually http://localhost:3000; it may choose 3001).
   Check that you are not viewing an older app on a busy port.
   Older VSCode: Simple Browser: Show. Synthetic workshop_alice and
   workshop_bob both use workshop-only as the demo password.
6. Tasks > Workshop: OpenCode; fallback from epic-stack:
   opencode --standalone
   Read JOIN-WORKSPACE.txt before the first prompt: /connect > OpenCode
   Console > service-account API-key method. Paste your assigned key
   into the credential field, not into the conversation. Then /models >
   DeepSeek V4.1 Flash (paid Console entry, without Free). Send READY.
   Check the connection and model in each new worktree window.
7. BASELINE prompt: inspect, propose, approve, run baseline and create
   clean local preparation checkpoint on lab/notes. Reference:42 tests.
8. Finish worktree setup before class where possible; it installs two
   separate dependency sets and prepares separate local databases.

THE CORE LABS
Read WORKTREES-AND-EXPERIMENTS.txt and the blog, then use PROMPTS.txt.
- MAP: understand one note in the coordinator, read-only.
- WORKTREES: inspect existing epic-filter (lab/filter), epic-title
  (lab/title) and workshop-start. Reuse complete preparation; do not
  rerun setup. If all are absent, approve the helper once. If partial,
  preserve folders and diagnose. Same checkpoint, separate working files.
- FILTER window: PLAN, BUILD and EVIDENCE. Evaluate in VSCode preview.
- TITLE window: TEST against original code; reference3 failures/5 passes.
- EXPERIMENT: freeze evaluator hashes. Up to10 minutes/two repairs; stop
  when it passes. Never weaken tests. Reference title suite:50 passes.
- COORDINATOR epic-stack/lab/notes: INTEGRATE accepted local commits.
  No push or deployment. Stop and explain merge conflicts.
- Fresh PLAN REVIEW of workshop-start...HEAD plus uncommitted/untracked
  files. Combined reference:55 tests, types pass, lint no errors.
- Evaluate filter, Clear, title normalization and owner/other-user cases.

One writing agent per folder. Independent sessions may run sequentially;
subagents stay disabled. On small laptops run one test suite and one app
server at a time. Stop the previous app before using port3000. Never
share/copy .env, databases or node_modules. Keep normal approvals on.
Use Allow once for specific understood edits/commands.

Reference solutions: apply01 only in fresh epic-filter;02 then03 only
in fresh epic-title. Never force patches over your own edits.
The 42:44 video follows setup, worktrees, both changes and evaluation.
Use JOIN-WORKSPACE.txt for the individual class-key connection.

OPTIONAL
EXTRA-EXERCISES.txt: count/sort/title-counter/delete tests, voice input,
repo diagrams, troubleshooting guide, semantic-search plan, syntheticCSV.
COMPARE-MODELS.txt and model-comparison.csv: equal-start optional trial.
SECURITY-LAB.txt: read-only map and scoped synthetic authorization check.

Existing Claude/Codex users: official VSCode extensions, local session,
read AGENTS.md, reuse outcomes/prompts. OpenCode permission config does
not configure other tools. Browser chats alone cannot execute the lab.

NO MODEL BEFORE BASELINE?
See WORKTREES-AND-EXPERIMENTS.txt for the reference-only preparation,
repair and integration route. It finishes the provided changes without
inference; agent implementation and a fresh AI review remain pending.
