Michael Arnaldi, creator of the Effect TypeScript library, delivers a live hands-on workshop at AI Engineer Europe 2026 demonstrating a methodology he calls 'vibe engineering' — building applications from scratch using coding agents without writing a single line of code by hand. Arnaldi has not written code manually since approximately mid-2025, including in TypeScript and Rust, and argues that the optimal way to make LLMs effective with unfamiliar libraries is to give them direct access to the library's source code — his core thesis being 'just clone the repo.'
The workshop begins with an interactive audience poll, revealing a heterogeneous group interested in making AI agents work reliably with Effect. Arnaldi opens with a fundamental explanation of why LLMs differ from human cognition: models have a fixed pre-training cutoff, no continuous learning, and a finite context window. He argues that context window size is not a pure positive — a 1 million token context window can confuse models by overwhelming them with irrelevant information, and that 'less is more' is a practical principle borne out by internal experiments. One experiment with a single 'execute' tool (arbitrary TypeScript code including Bash invocation) showed that reducing the number of available tools improved model output quality.
The core methodology involves: (1) cloning the Effect repository as a git subtree into a `.repos/effect` directory — crucially, not in `.gitignore` or `node_modules`, since coding agents are trained to deprioritize both — (2) creating an `agents.md` file that enumerates available commands and instructs the agent to consult the cloned repo for patterns, (3) running separate research sessions where the agent explores the Effect source and generates markdown pattern files (e.g., `patterns/http-api.md`, `patterns/sql.md`, `patterns/testing.md`) before implementing features, (4) using a 'spec-driven development' approach: generating a plan markdown file first, then implementing in separate sessions, sometimes driven by a Ralph Loop bash script to keep context windows clean.
The live session demonstrates building a Todo HTTP API using Effect v4 (beta), Bun, Vitest, TSGo (TypeScript Go compiler), and SQLite via Effect SQL. Arnaldi configures all TypeScript diagnostics to error-level to force the agent to produce zero-warning code, adds format-on-save, and uses strict TSGo as the type checker. The agent (GPT-5.4 / OpenAI model, not Claude — Arnaldi explains he switched away from Anthropic models due to policy restrictions on usage with OpenCoder-style tools) builds an HTTP server with OpenAPI documentation, a typed SQL client with inline migrations, and a test suite using Effect's `it.layer` pattern.
A significant portion of the talk addresses ESLint as a 'back-pressure loop': Arnaldi maintains thousands of lines of custom ESLint rules in his 'accountability' repository to prevent specific bad patterns — banning `as Type` casts, `unknown`, SQL type interfaces (in favor of `sql.schema`), and ensuring all identifiers use branded types. He observes that each rule exists because a model did that exact wrong thing, likening it to 'babysitting a junior developer with a knife in a kitchen.'
Arnaldi closes by discussing Effect Cluster and Effect Workflows as the next frontier: with AI-driven processes taking minutes rather than milliseconds, server failure probability rises substantially, making durable workflow systems (analogous to Temporal or Inngest) far more relevant. He links this to why Temporal has seen renewed interest since AI became mainstream. He also mentions ongoing work on evaluations (evals) for Effect pattern quality, with aspirations to fine-tune an open-source model on Effect idioms, and notes that prompt tuning differs across model families — uppercase text helps Claude but hurts GPT, for example. The final repository is pushed publicly for attendee access.
So, welcome everybody. Um, just setting up the context for this workshop. I had a lot of ideas to potentially prepare but at the end I thought we are vibe engineering for this to be authentic it has to be from scratch so I actually prepared absolutely nothing that means we can take any path that we want and let's hope this is real enough first of all I'd like to know from the crowd do you already effect you know zero like what's your level of familiarity with AI tooling and some kind of question...
Mario Zechner, creator of the LibGDX game framework, delivers a provocative three-act talk about building a minimal codi...