Automated summary
Generates a self-contained interactive HTML course that explains a codebase in plain language for non-technical learners.
Strengths
- Produces a self-contained HTML directory that opens in the browser with no setup (only external dependency: Google Fonts CDN).
- Combines scroll-based modules, animated visualizations, embedded quizzes, and plain-English code translations.
- Accepts a local folder, a GitHub link (cloned automatically), or the current working directory.
- Targets the "vibe coder" learner with zero assumed CS background and practical goals like steering AI tools and spotting bad patterns.
Limitations
- Output requires a browser and Google Fonts CDN access; it is not fully offline.
- Quality depends on the skill's code analysis, which may miss nuance in very large or unusual codebases.
- Designed for non-technical learners, so it does not produce reference documentation for experienced engineers.
Use it when you want to understand an unfamiliar or AI-built codebase through an accessible, interactive tutorial.
Avoid it if you need exhaustive technical documentation or material aimed at experienced developers.
Security analysis
SafeThe skill is essentially a content-generation workflow: it reads a codebase, clones a repo when a GitHub link is given, and writes static HTML/CSS/JS modules. There are no destructive commands, no secrets or tokens sent anywhere, no curl|sh or base64 payloads, and no instructions to disable safety mechanisms. The only external interactions (git clone to /tmp, Google Fonts CDN) are legitimate and benign; cloning downloads but does not execute third-party code.
- •Clones arbitrary GitHub repositories into /tmp via git clone (network fetch of third-party code, though not executed)
- •References an external Google Fonts CDN dependency in the generated output
- •Reads project files to analyze the codebase (normal, non-destructive)
Examples
Turn ./my-project into an interactive course.Make a course from https://github.com/user/repoI built this project without looking at the code — turn this codebase into a course so I can understand it.name: codebase-to-course description: "Turn any codebase into a beautiful, interactive single-page HTML course that teaches how the code works to non-technical people. Use this skill whenever someone wants to create an interactive course, tutorial, or educational walkthrough from a codebase or project. Also trigger when users mention 'turn this into a course,' 'explain this codebase interactively,' 'teach this code,' 'interactive tutorial from code,' 'codebase walkthrough,' 'learn from this codebase,' or 'make a course from this project.' This skill produces a stunning, self-contained HTML file with scroll-based navigation, animated visualizations, embedded quizzes, and code-with-plain-English side-by-side translations."
Codebase-to-Course
Transform any codebase into a stunning, interactive course. The output is a directory containing a pre-built styles.css, main.js, per-module HTML files, and an assembled index.html — open it directly in the browser with no setup required (only external dependency: Google Fonts CDN). The course teaches how the code works through scroll-based modules, animated visualizations, embedded quizzes, and plain-English translations of code.
First-Run Welcome
When the skill is first triggered and the user hasn't specified a codebase yet, introduce yourself and explain what you do:
I can turn any codebase into an interactive course that teaches how it works — no coding knowledge required.
Just point me at a project:
- A local folder — e.g., "turn ./my-project into a course"
- A GitHub link — e.g., "make a course from https://github.com/user/repo"
- The current project — if you're already in a codebase, just say "turn this into a course"
I'll read through the code, figure out how everything fits together, and generate a beautiful single-page HTML course with animated diagrams, plain-English code explanations, and interactive quizzes. The whole thing runs in your browser — no setup needed.
If the user provides a GitHub link, clone the repo first (git clone <url> /tmp/<repo-name>) before starting the analysis. If they say "this codebase" or similar, use the current working directory.
Who This Is For
The target learner is a "vibe coder" — someone who builds software by instructing AI coding tools in natural language, without a traditional CS education. They may have built this project themselves (without looking at the code), or they may have found an interesting open-source project on GitHub and want to understand how it's built. Either way, they don't yet understand what's happening under the hood.
Assume zero technical background. Every CS concept — from variables to APIs to databases — needs to be explained in plain language as if the learner has never encountered it. No jargon without definition. No "as you probably know." The tone should be like a smart friend explaining things, not a professor lecturing.
Their goals are practical, not academic:
- Have enough technical knowledge to effectively steer AI coding tools — make better architectural and tech stack decisions
- Detect when AI is wrong — spot hallucinations, catch bad patterns, know when something smells off
- Intervene when AI gets stuck — break out of bug loops, debug issues, unblock themselves
- Build more advanced software with production-level quality and reliability
- Be technically fluent enough to discuss decisions with engineers confidently
- Acquire the vocabulary of software — learn the precise technical terms so they can describe requirements clearly and unambiguously to AI coding agents (e.g., knowing to say "namespace package" instead of "shared folder thing")
They are NOT trying to become software engineers. They want coding as a superpower that amplifies what they're already good at. They don't need to write code from scratch — they need to read it, understand it, and direct it.
Why This Approach Works
This skill inverts traditional CS education. The old model is: memorize concepts for years → eventually build something → finally see the point (most people quit before step 3). This model is: build something first → experience it working → now understand how it works.
The learner already has context that traditional students don't — they've used the app, they know what it does, they may have even described its features in natural language. The course meets them where they are: "You know that button you click? Here's what happens under the hood when you click it."
Every module answers "why should I care?" before "how does it work?" The answer to "why should I care?" is always practical: because this knowledge helps you steer AI better, debug faster, or make smarter architectural decisions.
The directory-based output is intentional: separating CSS/JS from content means AI never regenerates boilerplate, each module is written independently (keeping output size small and quality high), and the assembled index.html works offline with zero setup.
The Process
Phase 1: Codebase Analysis
Before writing course HTML, deeply understand the codebase. Read all the key files, trace the data flows, identify the "cast of characters" (main components/modules), and map how they communicate. Thoroughness here pays off — the more you understand, the better the course.
What to extract:
- The main "actors" (components, services, modules) and their responsibilities
- The primary user journey (what happens when someone uses the app end-to-end)
- Key APIs, data flows, and communication patterns
- Clever engineering patterns (caching, lazy loading, error handling, etc.)
- Real bugs or gotchas (if visible in git history or comments)
- The tech stack and why each piece was chosen
Figure out what the app does yourself by reading the README, the main entry points, and the UI code. Don't ask the user to explain the product — they may not be familiar with it either. The course should open by explaining what the app does in plain language (a brief "here's what this thing does and why it's interesting") before diving into how it works. The first module should start with a concrete user action — "imagine you paste a YouTube URL and click Analyze — here's what happens under the hood."
Phase 2: Curriculum Design
Structure the course as 4-6 modules. Most courses need 4-6. Only go to 7-8 if the codebase genuinely has that many distinct concepts worth teaching. Fewer, better modules beat more, thinner ones.
The arc always starts from what the learner already knows (the user-facing behavior) and moves toward what they don't (the code underneath). Think of it as zooming in: start wide with the experience, then progressively peel back layers.
| Module Position | Purpose | Why it matters for a vibe coder | |---|---|---| | 1 | "Here's what this app does — and what happens when you use it" | Start with the product (what it does, why it's interesting), then trace a core user action into the code. Grounds everything in something concrete. | | 2 | Meet the actors | Know which components exist so you can tell AI "put this logic in X, not Y" | | 3 | How the pieces talk | Understand data flow so you can debug "it's not showing up" problems | | 4 | The outside world (APIs, databases) | Know what's external so you can evaluate costs, rate limits, and failure modes | | 5 | The clever tricks | Learn patterns (caching, chunking, error handling) so you can request them from AI | | 6 | When things break | Build debugging intuition so you can escape AI bug loops | | 7 | The big picture | See the full architecture so you can make better decisions about what to build next |
This is a menu, not a checklist. Pick the modules that serve the codebase — a simple CLI tool needs 4, not 7. Adapt the arc to the codebase's complexity.
The key principle: Every module should connect back to a practical skill — steering AI, debugging, making decisions. If a module doesn't help the learner DO something better, cut it or reframe it until it does.
Each module should contain:
- 3-6 screens (sub-sections that flow within the module)
- At least one code-with-English translation
- At least one interactive element (quiz, visualization, or animation)
- One or two "aha!" callout boxes with universal CS insights
- A metaphor that grounds the technical concept in everyday life — but NEVER reuse the same metaphor across modules, and NEVER default to the "restaurant" metaphor (it's overused). Pick metaphors that organically fit the specific concept. The best metaphors feel inevitable for the concept, not forced.
Mandatory interactive elements (every course must include ALL of these):
- Group Chat Animation — at least one across the course. These are the iMessage/WeChat-style conversations between components. They're one of the most engaging elements and must always appear, even if you have to creatively frame a module's concept as a conversation between actors.
- Message Flow / Data Flow Animation — at least one across the course. The step-by-step packet animation between actors. If the codebase has any kind of request/response, data pipeline, or multi-step process, animate it. Every codebase has data flowing somewhere — find it.
- Code ↔ English Translation Blocks — at least one per module (already required above, but reiterating: this is non-negotiable).
- Quizzes — at least one per module (multiple-choice, scenario, drag-and-drop, or spot-the-bug — any quiz type counts).
- Glossary Tooltips — on every technical term, first use per module.
These five element types are the backbone of every course. Other interactive elements (architecture diagrams, layer toggles, pattern cards, etc.) are optional and should be added when they fit. But the five above must ALWAYS be present — no exceptions.
Do NOT present the curriculum for approval — just build it. The user wants a course, not a planning document. Design the curriculum internally, then go straight to building. If they want changes, they'll tell you after seeing the result.
After designing the curriculum, decide which build path to use:
- Simple codebase (single-purpose CLI, small web app, library, one clear entry point, 5 or fewer modules) → go directly to Phase 3 Sequential.
- Complex codebase (full-stack app, multiple services, content-heavy site, monorepo, or 6+ modules) → go to Phase 2.5 first, then Phase 3 Parallel.
Phase 2.5: Module Briefs (complex codebases only)
For complex codebases, write a brief for each module before writing any HTML. This is the critical step that enables parallel writing — each brief gives an agent everything it needs without re-reading the codebase.
Read references/module-brief-template.md for the template structure. Read references/content-philosophy.md for the content rules that should guide brief writing.
For each module, write a brief to course-name/briefs/0N-slug.md containing:
- Teaching arc (metaphor, opening hook, key insight)
- Pre-extracted code snippets (copy-pasted from the codebase with file paths and line numbers)
- Interactive elements checklist with enough detail to build them
- Which sections of which reference files the writing agent needs
- What the previous and next modules cover (for transitions)
The code snippets are the critical token-saving step. By pre-extracting them into the brief, writing agents never need to read the codebase at all.
Phase 3: Build the Course
The course output is a directory, not a single file. All CSS and JS are pre-built reference files — never regenerate them. Your job is to write only the HTML content.
Output structure:
course-name/
styles.css ← copied verbatim from references/styles.css
main.js ← copied verbatim from references/main.js
_base.html ← customized shell (title, accent color, nav dots)
_footer.html ← copied verbatim from references/_footer.html
build.sh ← copied verbatim from references/build.sh
briefs/ ← module briefs (complex codebases only, can delete after build)
modules/
01-intro.html
02-actors.html
...
index.html ← assembled by build.sh (do not write manually)
Step 1 (both paths): Setup — Create the course directory. Copy these four files verbatim using Read + Write (do not regenerate their contents):
references/styles.css→course-name/styles.cssreferences/main.js→course-name/main.jsreferences/_footer.html→course-name/_footer.htmlreferences/build.sh→course-name/build.sh
Step 2 (both paths): Customize _base.html — Read references/_base.html, then write it to course-name/_base.html with exactly three substitutions:
- Both instances of
COURSE_TITLE→ the actual course title - The four
ACCENT_*placeholders → the chosen accent color values (pick one palette from the comments in_base.html) NAV_DOTS→ one<button class="nav-dot" ...>per module
Step 3: Write modules — This is where the paths diverge.
Sequential path (simple codebases)
Read references/content-philosophy.md and references/gotchas.md. Then write modules one at a time. For each module, write course-name/modules/0N-slug.html containing only the <section class="module" id="module-N"> block and its contents. Do not include <html>, <head>, <body>, <style>, or <script> tags.
Read references/interactive-elements.md for HTML patterns for each interactive element type. Read references/design-system.md for visual conventions.
Parallel path (complex codebases)
Dispatch modules to subagents in batches of up to 3. Each agent receives:
- Its module brief (from
course-name/briefs/) references/content-philosophy.mdandreferences/gotchas.md- Only the sections of
references/interactive-elements.mdandreferences/design-system.mdlisted in the brief
Each agent writes its module file(s) to course-name/modules/. Short modules (3 screens, one quiz) can be paired — two briefs given to one agent.
What agents do NOT receive: the full codebase (snippets are in the brief), SKILL.md, other modules' briefs, or unneeded reference file sections.
After all agents finish, do a quick consistency check in the main context: nav dots match modules, transitions between modules are coherent, no obvious tone shifts.
Step 4 (both paths): Assemble — Run build.sh from the course directory:
cd course-name && bash build.sh
This produces index.html. Open it in the browser.
Critical rules:
- Never regenerate
styles.cssormain.js— always copy from references - Module files contain only
<section>content — no boilerplate - Use CSS
scroll-snap-type: y proximity(NOTmandatory) - Use
min-height: 100dvhwith100vhfallback on.module - Interactive element JS is in
main.js; wire up viadata-*attributes and CSS class names as shown inreferences/interactive-elements.md - Chat containers need
idattributes; flow animations needdata-steps='[...]'JSON on.flow-animation
Phase 4: Review and Open
After running build.sh, open index.html in the browser. Walk the user through what was built and ask for feedback on content, design, and interactivity.
Design Identity
The visual design should feel like a beautiful developer notebook — warm, inviting, and distinctive. Read references/design-system.md for the full token system, but here are the non-negotiable principles:
- Warm palette: Off-white backgrounds (like aged paper), warm grays, NO cold whites or blues
- Bold accent: One confident accent color (vermillion, coral, teal — NOT purple gradients)
- Distinctive typography: Display font with personality for headings (Bricolage Grotesque, or similar bold geometric face — NEVER Inter, Roboto, Arial, or Space Grotesk). Clean sans-serif for body (DM Sans or similar). JetBrains Mono for code.
- Generous whitespace: Modules breathe. Max 3-4 short paragraphs per screen.
- Alternating backgrounds: Even/odd modules alternate between two warm background tones for visual rhythm
- Dark code blocks: IDE-style with Catppuccin-inspired syntax highlighting on deep indigo-charcoal (#1E1E2E)
- Depth without harshness: Subtle warm shadows, never black drop shadows
Reference Files
The references/ directory contains detailed specs. Read them only when you reach the relevant phase — not upfront. This keeps context lean.
references/content-philosophy.md— Visual density rules, metaphor guidelines, quiz design, tooltip rules, code translation guidance. Read during Phase 2.5 (briefs) and Phase 3 (writing modules).references/gotchas.md— Common failure points checklist. Read during Phase 3 and Phase 4 (review).references/module-brief-template.md— Template for Phase 2.5 module briefs. Read only for complex codebases using the parallel path.references/design-system.md— Complete CSS custom properties, color palette, typography scale, spacing system, shadows, animations, scrollbar styling. Read during Phase 3 when writing module HTML.references/interactive-elements.md— Implementation patterns for every interactive element: drag-and-drop quizzes, multiple-choice quizzes, code↔English translations, group chat animations, message flow visualizations, architecture diagrams, pattern cards, callout boxes. Read the relevant sections during Phase 3.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/codebase-to-interactive-course-mtzb839j' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/codebase-to-interactive-course-mtzb839j/download' --output '.skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md.part' && mv '.skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md.part' '.skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md' && test -s '.skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/codebase-to-course' && cp -R '.skill-downloads/codebase-to-interactive-course-mtzb839j' '.claude/skills/codebase-to-course'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/codebase-to-interactive-course-mtzb839j'openskills read 'codebase-to-interactive-course-mtzb839j'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/codebase-to-interactive-course-mtzb839j/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Supabase Docs Authoring
Documentation
Write, edit, and review Supabase documentation content including guides, tutorials, reference docs, and partials. Follow style guides and MDX/TOML validation rules.
Create Architecture Decision Record
Documentation
Create a new Architecture Decision Record with sequential numbering, register it in the AgentDB graph, and link related ADRs.
Plan update with deep research
Documentation
Updates a plan document by launching parallel subagents to analyze a topic across all compiler passes, then consolidates findings into the plan doc.