Documentation Index

Fetch the complete documentation index at: https://docs.skillable.com/llms.txt

Use this file to discover all available pages before exploring further.

Dynamic Teaching

Prev Next

Building a lab means writing every instruction by hand, which is slow work and produces the same fixed content for every learner regardless of what they already know. Dynamic Teaching generates instructional content from a prompt when the lab launches, so a lab can be built from a description of what it should teach rather than from written-out steps. This article covers how to configure Dynamic Teaching, how to write a prompt that produces usable instructions, and where generated content is and isn't a safe substitute for authored content.

Best Practices for Dynamic Teaching

The single most important thing to understand is that generation happens at launch, once per lab instance. Two learners launching the same lab get different instructions, and neither set exists until they launch. Everything below follows from that.

  • Describe the environment in the prompt — the model can't see it. It doesn't know which VMs the lab has, what's installed, or what credentials exist. If you don't tell it, it will invent steps the learner can't follow. State the operating system, the software and its state, and any sign-in details the learner will need.
  • Say what has already been done. "Setup is complete but nothing else has been configured" prevents the model from generating installation steps the learner doesn't need and can't perform.
  • Use @lab tokens instead of hard-coding instance details. Tokens resolve before the prompt is sent, so you can pass through per-instance values — a generated username, a resource group name, a machine name — rather than writing a fixed value that will be wrong for every learner but the first.
  • Don't put scored activities behind generated content. An activity script checks for a specific end state. If the generated instructions took the learner somewhere else, the check fails through no fault of the learner. Keep scored work in authored instructions.
  • Use it where variation is a feature, not a risk. Sandbox and playground labs benefit from fresh content each instance. A certification lab that must be identical for every candidate does not.
  • Mix it with authored content rather than replacing it. A common pattern is authored instructions for the tasks that matter, with generated supporting material — a quiz, a set of resources, background reading — around them.
  • Budget tokens for every launch, not every reader. Unlike Menu Assistant, where a learner has to click before anything is generated, Dynamic Teaching generates whether or not the learner reads it. Every launch consumes tokens against the Max AI Tokens allowance on the Lab Profile.
  • Launch the lab several times before publishing. One good result proves nothing, because the next learner gets different content. Launch repeatedly and look for the worst output, not the best.
  • Escape backslashes and quotes in the prompt. The prompt is a quoted string, so a Windows path or a domain login needs its backslash doubled — admin\\admin, not admin\admin. An unescaped quote inside the prompt will break the element.

If you want learners to request content rather than receive it automatically, use Menu Assistant — it's cheaper, and the learner chooses. Use Dynamic Teaching when the content should be there when the lab opens.

Who Uses Dynamic Teaching, and When

Lab Developers configure Dynamic Teaching in Skillable Studio while authoring a lab. The generated content is produced at launch and read by learners inside the lab client.

It fits best where the value is in the environment rather than in a precise script:

  • Sandbox and playground labs. A lab whose purpose is "here is a working environment, go and explore" can be built from a prompt rather than a written walkthrough, and the content stays fresh across instances.
  • Rapid prototyping. A lab can be stood up from a description in minutes to test whether an environment and a topic work together, before committing to writing the instructions properly.
  • Supporting material around authored tasks. Generated quizzes, resource lists or background sections that would otherwise be written by hand for each new lab.
  • Breadth over precision. Topics where several routes to the outcome are equally valid, and the learner benefits from being shown one rather than the one.

Avoid it for validation and certification labs, anything a customer must review or audit before delivery, and any lab where activities score the learner against specific steps. Generated content varies between instances by design, which is exactly what those cases can't tolerate.

How Dynamic Teaching Works in Skillable Studio

Dynamic Teaching is one of the tools in the Skillable AI suite. You insert it as an element at the point in your instructions where the generated content should appear. Nothing is generated while you author — when a learner launches the lab, the platform sends your prompt to the selected model and renders the response in place of the element.

Each element produces one kind of content, set by Prompt Type. To give learners both a teaching section and a quiz, insert two elements.

Insert Dynamic Teaching from the Instructions Editor

  1. From Skillable Studio, open your lab's Instructions Editor.
  2. Place your cursor where the generated content should appear.
  3. On the ribbon bar, select AI > Dynamic Teaching. The Insert Dynamic Teaching dialog opens.
  4. Complete the configuration fields:
Setting Description
Topic The subject of the generated content. Required.
Model The model that generates the content. This field only appears if your organization has more than one model available; organizations using the default Skillable model have nothing to select.
System Prompt What you want built, and the context needed to build it. This is where the work happens — describe the environment, its current state and the outcome you want the learner to reach.
Prompt Type The kind of content generated: Teach, Show, Quiz or Resources. One per element.
# Quiz questions How many questions to generate. Appears only when Prompt Type is set to Quiz.
Response Phrasing How simply or technically the content is phrased: Simple, Default or Complex.
  1. Select Insert. The element is added to your instructions.

Image

Prompt types

Prompt Type Generates
Teach Instructional content explaining the topic.
Show Step-by-step instructions for performing the topic.
Quiz Multiple-choice questions on the topic.
Resources A list of links to web resources about the topic.

Underlying syntax

The dialog writes an IDLX element into the instruction markdown, and you can write or edit it by hand in code mode. The element name reflects the Prompt Type — ai-teach for Teach — and the topic sits in brackets, with parameters as quoted key-value pairs:

ai-teach[Getting started with Dataiku]{"model_id":16,"prompt":"Build a lab to teach the lab user how to use dataiku. They have a Windows computer with a local copy of dataiku installed (login admin\\admin), but other than setup has been completed nothing else has been done."}

Note the doubled backslash in admin\\admin. Because the prompt is a quoted string, a single backslash is consumed as an escape character and the credential reaches the model wrong.

The model_id records the model selected in the dialog. It's specific to your organization's configuration, so a snippet copied into another organization will point at the wrong model or none at all.

The element name always matches the Prompt Type:

Prompt Type Element
Teach ai-teach[topic]
Show ai-show[topic]
Quiz ai-quiz[topic]
Resources ai-resources[topic]

How generated content behaves at runtime

  • Generation happens at launch. The learner sees generated instructions in place of the element when the lab opens.
  • Content is preserved across save and resume. Generation runs once per lab instance. A learner who saves and comes back, or closes and relaunches the same instance, sees the same content they had before — it isn't regenerated underneath them.
  • Content differs between instances. The same lab, launched twice as two instances, produces two different sets of instructions.
  • Usage counts towards Max AI Tokens per Lab Instance. When the ceiling is reached, AI features stop responding and the message configured on the Lab Profile is displayed instead.

Worked example

You have a Windows VM with Dataiku installed and you want a lab that teaches learners their way around it. Writing that walkthrough by hand is a day's work, and for a sandbox lab it isn't work worth doing — what matters is that the learner has a working Dataiku instance and somewhere to start.

Enter the topic and the prompt:

  • Topic: Getting started with Dataiku
  • Prompt Type: Teach
  • System Prompt: Build a lab to teach the lab user how to use Dataiku. They have a Windows computer with a local copy of Dataiku installed (login admin\\admin), but other than setup has been completed nothing else has been done.

The prompt is doing three things worth copying: it states the goal, it describes the environment the model can't see, and it says what state that environment is already in. Drop any one of them and the generated instructions start telling the learner to install software that's already installed, or to sign in with credentials they don't have.

The resulting markdown is:

ai-teach[Getting started with Dataiku]{"model_id":16,"prompt":"Build a lab to teach the lab user how to use dataiku. They have a Windows computer with a local copy of dataiku installed (login admin\\admin), but other than setup has been completed nothing else has been done."}

Image

The credentials are hard-coded here because they're the same in every instance of this lab. Where a value differs per instance, use a @lab token instead — tokens resolve before the prompt reaches the model, so the generated instructions describe the environment the learner actually has:

ai-teach[Getting started with Dataiku]{"model_id":16,"prompt":"Build a lab to teach the lab user how to use dataiku. They have a Windows computer with Dataiku installed and should sign in as @lab.Variable(dataikuUser). Setup is complete; nothing else has been configured."}

To turn this into a fuller lab, add a second element with Prompt Type set to Quiz and a prompt scoped to what the teaching section covered, so learners can check themselves before exploring on their own.

Image

Next Steps

Before publishing a lab that uses Dynamic Teaching, set the AI token ceiling and the message learners see when it's reached, both on the lab's Lab Profile under Max AI Tokens per Lab Instance. This matters more here than for the other tools: generation happens at every launch whether the learner reads the content or not, so the allowance is consumed before the learner does anything.

Related Topics

  • Menu Assistant — learner-triggered content from a menu, for when generation should wait until someone asks.
  • Chat Assistant — open conversation scoped to a topic, for when learners need to ask their own questions.
  • Practice Assistant — learner-generated hands-on scenarios inside a running lab.
  • Skillable AI — how Dynamic Teaching fits alongside the rest of the suite, and the difference between Skillable pre-integrated and BYO models.
  • Effective AI Prompting — principles for writing prompts that produce consistent output.
  • Instructions Editor — the full authoring surface, including code mode for editing Dynamic Teaching parameters directly.