Two quick questions โ the whole page adjusts to your answers.
How to Vibe Code
Build small interactive apps by describing them in plain language to an AI chatbot โ no coding experience required. We'll go from a one-off activity to apps that generate activities on demand, and cover practical ways to put what you make in front of studentsget what you make in front of people.
What Is Vibe Coding?
In February 2025, Andrej Karpathy โ a founding member of OpenAI โ posted about a new way of working where you "fully give in to the vibes" and stop paying attention to the code itself. See it, say it, run it, paste the error back when it breaks.
The post got over four million views, and Collins Dictionary named "vibe coding" its Word of the Year for 2025. Karpathy has since moved on to "agentic engineering" for professional software โ but for what we're doing here, the original meaning still fits perfectly.
Vibe coding is describing what you want in plain language, looking at what comes back, and saying "no, more like this" until it's right.
We're not shipping banking software. We're building a drag-and-drop sorting activity for Module 4, or a self-check quiz that gives real feedback instead of "Correct!"a calculator your team keeps asking for, or a decision tool that replaces a confusing spreadsheet The stakes are low and the payoff is high. You don't need to understand the code โ you need to judge whether it works for your studentsthe people using it. That's a skill you already have.
Working in Claude
Everything on this page works in any capable AI chatbot. The examples are written for the one you picked above.
Picking a model
You're not talking to "the AI." You're choosing which AI, and they're genuinely different.
- Bigger, slower models โ better at building from scratch. Start here and be patient. With Claude: Opus for building from scratch, Sonnet for everyday work, Haiku for quick edits.
- Faster models โ better for quick edits. "Make the buttons bigger." Don't burn a heavyweight model on a one-line fix.
- If one gives you something broken twice in a row, switch models before you switch strategies. That's a real technique.
See it while you build it
Claude renders what you build in a live preview pane called Artifacts, right next to the chat. That matters more than it sounds โ you can click the thing you just described without saving a file or opening a browser.
Beyond the chat: use Projects
Projects let you keep files, instructions, and context in one place so you're not re-explaining yourself in every new conversation.
When something doesn't work, don't diagnose it. Copy the error โ or just describe what you saw ("the buttons don't do anything when I click them") โ and paste it back. The model is better at debugging its own work than you are.
Creating & Testing Small Apps
Start simple, then ask for more. Your first prompt doesn't have to be perfect โ it has to be specific enough to give you something to react to.
Try one of these
Create a single file HTML app that will do ______this______. Make it fully accessible with WCAG 2.1 AA color contrasts. Make it in the style of __________. Make sure it has ______, ______, and ______. Draw from this content below or attached or at this website: __________ Add in one more feature to surprise me.
Why each line matters
- "Single file HTML" โ say it every time. Three separate files are much harder to place anywhere.
- Accessibility up front โ dramatically easier to ask for at the start than to retrofit later.
- Describe behavior, not code โ "correct items turn green and stay put." You don't need to know how.
- Say what happens when someone gets it wrong โ this is what makes it a learning object instead of a toy.this is what separates a useful tool from a demo.
- "Surprise me" โ rolling the dice. You never know.
See it. Say it. Run it. When it's off, describe what's wrong in plain language and send it back. That's the whole thing.
Canvas HTML Rules
Canvas strips out anything it considers unsafe. Paste these rules into your prompt alongside the request and the model will build something that survives the copy-paste into a Canvas page.
- No
<script>tags or JavaScript event attributes (onclick,onchange) - No
<style>blocks โ all CSS must be inline viastyle="" - Use
<details>/<summary>for all interactivity (expand/collapse) - System fonts only โ no Google Fonts or external CSS frameworks
- All links must use
https:// - No
<iframe>unless pointing to an external HTTPS URL - Make all font colors WCAG 2.1 AA contrast compliant
Use these Canvas LMS HTML rules for copy-paste interactive content: - No <script> tags or JavaScript event attributes (onclick, onchange, etc.) - No <style> blocks - all CSS must be inline via style="" - Use <details> / <summary> for all interactivity (expand/collapse) - System fonts only - no Google Fonts or external CSS frameworks - All links must use https:// - No <iframe> unless pointing to an external HTTPS URL - Make all font colors WCAG 2.1 AA contrast compliant
If your app worked fine in the browser but looks broken after pasting into Canvas, this list is almost always the reason. Put these rules in the prompt up front rather than debugging afterward โ or host it externally and embed it instead (see Getting Into Canvas).
Embed-Safe HTML Rules
Most content systems โ intranets, CMS pages, wikis, knowledge bases โ strip out anything they consider unsafe. If your app has to live inside somebody else's page rather than on its own URL, paste these rules into your prompt up front.
- No
<script>tags or JavaScript event attributes (onclick,onchange) - No
<style>blocks โ all CSS must be inline viastyle="" - Use
<details>/<summary>for all interactivity (expand/collapse) - System fonts only โ no Google Fonts or external CSS frameworks
- All links must use
https:// - No external requests โ no CDN scripts, remote images, or web fonts
- Make all font colors WCAG 2.1 AA contrast compliant
Use these HTML rules so this can be pasted into a CMS or intranet page: - No <script> tags or JavaScript event attributes (onclick, onchange, etc.) - No <style> blocks - all CSS must be inline via style="" - Use <details> / <summary> for all interactivity (expand/collapse) - System fonts only - no Google Fonts or external CSS frameworks - All links must use https:// - No external requests - no CDN scripts, remote images, or web fonts - Make all font colors WCAG 2.1 AA contrast compliant
If the app gets its own URL โ hosted on GitHub Pages, Netlify, or your own server โ none of these restrictions apply. You can use scripts, style blocks, and anything else. Only paste-in content needs the rules above. See Getting It Online.
First Real Questions
Before you build anything, three questions worth sitting with.
Three Levels of Creation
Each level is a bigger lever. Everybody starts at one โ and plenty of great work lives there.
Level 1 Create one thing โพ
Level 2 Create something that uses a system โพ
Drop either of these into a Project so everything you build comes out consistent. The starter file is written for Claude but works anywhere โ rename it for your tool.
Level 3 Create something that builds the thing for you โพ
Level 3 sometimes means the app talks to an AI service directly โ which means API keys, hosting, and cost. Real considerations, not scary ones. If your app needs to store anything about the people using it, that's the point to slow down and ask someone.
Before You Ship It
"It works on my laptop" is not the same as "it's ready for 200 studentsthe whole department." A short list that catches almost everything.
1. Anything that collects personal information changes the conversation. Find out who owns that decision where you work before you build it.
2. Test it on your phone before you test it on a studenta colleague. It takes ninety seconds and it's almost always where things break.
Don't Start From A Blank Page
This site is a collection of small working apps โ every one with a live demo, the full source code, and the prompt used to make it. Free to copy, no attribution needed.
- Every project shows the prompt, not just the code. The Pomodoro timer is vibe coded three different ways โ comparing those prompts teaches more than any tutorial.
- The Mini Crossword is a solid Level 2 example: a real engine where you define the words, positions, and clues in one list.
- Interactive Content Delivery came from a single prompt with no follow-ups. The prompt is right there on the card.
- Starter files included โ a project instructions starter and a vibe prompt template, so you're not re-explaining your standards every time.
Find the thing closest to what you want, copy the prompt, change the parts that describe your content, run it. That's not cheating โ that's the design.
Getting Code Into Canvas โ Four Ways
You've built something. It runs. Now how does it reach students? In order of effort:
Canvas page โ rich content editor โ HTML editor view. Paste your single-file HTML. Save.
This is why you say "single-file HTML." If the model gives you three separate files, this doesn't work.
A little tricky, but it keeps everything inside Canvas โ no external host, no extra account.
- Upload the file to Files in your course โ it must have a
.htmlextension. - Click the file to preview it, then grab the File ID from the URL.
- Paste the code below into a page's HTML editor, swapping in your Course ID and File ID.
<iframe src="/courses/COURSEID/files/FILEID/download" width="100%" height="900px" style="border: 1px solid #444; border-radius: 8px;" tabindex="0"> </iframe>
Put the file on a website, server, GitHub, or a drag-and-drop host โ then embed that URL in Canvas as an iframe.
Give me the code in an embeddable iframe for Canvas LMS.
Package this as a SCORM 1.2 zip that I can upload to Canvas, including the manifest file.
Required when you need completion or scores reported back to the gradebook.
Getting It Online โ Four Ways
You've built something. It runs on your machine. Now how do other people open it? In order of effort:
A single-file HTML app opens in any browser by double-clicking it. Email it, drop it in shared storage, put it in a chat channel.
This is why you say "single-file HTML." One file with no dependencies travels anywhere.
Drag your file onto Netlify Drop and you get a live URL in about ten seconds. No account needed to start, nothing to configure.
Free hosting straight from a repository, with version history for nothing. Push a change and the live site updates itself. This site runs on exactly that.
Once it lives at a URL, you can drop it inside an intranet page, a CMS, a wiki, or a docs site with an iframe.
Give me the code as an embeddable iframe I can paste into another page.
See It In Action
Every one of these was built by describing it, not by writing it. Open one, then open its prompt.
None of these are hard. They're specific. The difference between a toy and something people use is almost always in how precisely the prompt described the behavior.
Wrap Up & What's Next
Your next steps
- Open Claude today, while it's fresh.
- Find something on this site close to what you want, and steal the prompt.
- Test it on a phone and with the keyboard before anyone else sees it.
- Build the second one. The first is the hardest, and it stops being hard quickly.
All Links & Sources
Tools & workspaces
- Claude โ claude.ai
- ChatGPT โ chatgpt.com
- Gemini โ gemini.google.com
- Netlify Drop โ app.netlify.com/drop โ drag a file, get a live URL
- GitHub โ github.com โ free hosting via GitHub Pages
Starter files
- Vibe prompt template โ the fill-in-the-blanks prompt from slide 03, plus the habits that make it work.
- Project instructions starter โ a standing set of rules to save in your assistant so you stop repeating yourself.
Origin of "vibe coding"
- Karpathy, A. (2025, February 2). Post on X introducing the term โ the original source.
- Collins Dictionary (2025). Word of the Year 2025: vibe coding. โ collinsdictionary.com/woty
- Sarkar, A., & Drosos, I. (2025). Vibe coding: Programming through conversation with artificial intelligence. arXiv:2506.23253 โ read it.
- Taft, D. K. (2026, February 10). Vibe coding is passรฉ. Karpathy has a new name for the future of software. The New Stack โ read it