Lesson Skill

The Lesson Skill tells the AI how to build a complete, interactive HTML lesson from a single prompt. It is triggered automatically whenever you ask for a lesson, a didactic activity, a learning unit, or similar educational content — in any language.

Trigger phrases

The Skill activates on requests like:

  • “Create a lesson on photosynthesis”
  • “Build a math lesson for middle school students”
  • “Didactic activity on the water cycle”
  • “Make an interactive lesson on ancient Rome”

You never need to invoke it explicitly — the AI recognises the intent and calls the Skill in the background.

What the AI does

When the Lesson Skill is active, the AI follows a fixed workflow:

  1. Calls list_components to see exactly which components are available under your license.
  2. Creates a project via create_project with the lesson title to obtain a stable bundle URL.
  3. Writes the page header — a title and 3–5 learning objectives in the first person (“I will be able to…”).
  4. Outlines content sections and selects editorial components from the catalog for each one.
  5. Decides whether exercises add value and, if so, picks the right exercise types.
  6. Calls get_component_docs for every component it plans to use to get the exact API.
  7. Calls select_components with the full component list, then produces the final HTML artifact.

The AI delivers a finished, self-contained HTML file — not a plan or an outline.

Structure principles

PrincipleDetail
One topic per lessonEach lesson covers a single concept or skill.
Content before exercisesIntroduce the concept first, then let the learner practise. Interleave for complex topics.
Exercises are optionalA purely narrative or visual lesson is valid when active recall does not add value.
Vary interaction typesMix formats to maintain engagement and test different cognitive skills.
Progressive difficultyRecognition tasks first (multiple choice, true/false), then recall (fill-in-the-blank), then production (essay, sort).
Keep exercises shortSeveral focused exercises are better than one long assignment. A single <dna-assignment> rarely exceeds 5–7 questions.

Editorial components

Editorial components are used to present content. The AI always calls get_component_docs before using any of them.

ComponentTagBest used for
Accordiondna-accordionCollapsible sections, FAQs, progressive disclosure
Tabsdna-tabsParallel content, different perspectives or steps
Slideshowdna-slideshowStep-by-step sequences, image galleries with captions
Story Scrollerdna-story-scrollerNarrative scroll with media transitions
Timelinedna-timelineChronological events, historical sequences
Flipcarddna-flipcardTerm / definition pairs, front / back reveal
Glossarydna-glossary-cardInline term definitions, vocabulary reference
Comparisondna-comparisonBefore/after image sliders, side-by-side contrast
Spotlightdna-spotlightAnnotated image with clickable hotspot callouts
Diagramdna-diagramFlow charts, concept maps, structured diagrams
Text Analysisdna-text-analysisAnnotated text with labelled highlights
Zoom Paneldna-zoom-panelHigh-resolution image with zoom interaction
Gallerydna-galleryGrid or masonry image collections
Media Playerdna-media-playerAudio and video with accessible controls

Exercise components

When the lesson includes active practice, exercises are rendered inside <dna-assignment>. Each exercise type maps to a specific learning objective.

Learning objectiveExercise types
Recognise the correct answermultiple_choice, true_false
Recall and produce languagefill_blanks, fill_blanks_options, drag_words
Understand structure / sequencesort_words, sort_list
Locate information in a textmark_words
Reflect and expressessay
Contextualise within rich mediavideo_quiz — timestamped questions inside a video
Vocabulary recallcrossword

<dna-assignment> handles all learner interaction automatically — answer confirmation, feedback, retry, and score display. No custom JavaScript is needed.

Bundle format

Components are delivered as a Modula project — a stable CDN URL that always resolves to the current component selection.

EnvironmentFormatHow to use
Static HTML, no bundlerurls.iife<script src="<url>"></script> at the end of <body>
Vite, webpack, Next.js…urls.tarDownload and extract the bundle

The script tag is placed at the end of <body>, before any other scripts that depend on the components.

Hard rules

The Lesson Skill enforces these constraints unconditionally:

  • No custom interactive elements. Every interactive or editorial element must use a dna-* component. Custom <div class="quiz"> elements, hand-crafted button handlers, or any UI that replicates catalog functionality are forbidden.
  • list_components is always called first. The AI never assumes which components are available.
  • get_component_docs is called before every component. Attributes, slot names, and model shapes are versioned — the docs are authoritative.
  • If no component fits, the AI informs you and adapts to the closest available alternative. It never falls back to custom HTML or JavaScript.
  • No CSS targeting dna-* internals. Rules that set display, position, flex, grid, gap, or that select children of a dna-* element are removed. Layout intent is moved to wrapping native elements.