Module
To get support by the Visual Studio Code extension, create a file with the name *.module.yml or *.module.yaml.
version: "0.1"
module:
id: "my-module"
title: "Module Title"
sessions: [...]
contents: [...]
module-groups: [...]
Root Structure
The top-level YAML structure.
| Property | Type | Required | Description |
|---|---|---|---|
version | string | Yes | Fixed to "0.1". |
module | Module | Yes | The module definition. |
Module
The root configuration object for an AMSL module.
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for the module. |
title | string | Yes | Display title of the module. |
subtitle | string | No | Subtitle of the module. |
description | string | No | Long description. |
icon | string | No | Icon name/path. |
banner | string | No | Banner image path. |
category | ModuleCategory | No | Category: "onboarding", "learning" (default), "course", or "journal". |
contents | array<Content> | No | List of Content. Default: []. |
sessions | array<Session> | Yes | List of Session. Must have at least one. |
module-groups | array<string> | Yes | Module groups for frontend display. |
assessment | ModuleAssessment | No | Pre/Post assessment configuration. |
quizzable | boolean | No | Whether the module is quizzable (can be used in quiz tool). Default: false. |
hidden | boolean | No | Whether the module is hidden from frontend. Default: false. |
weight | integer (uint) | No | Ordering weight (higher = higher in list). |
self-learning | Feature | No | Self-learning feature config. Default: disabled. |
default-session | string | No | ID of the default session. |
groups-whitelist | array<string> | No | User groups required to access. Default: []. |
groups-blacklist | array<string> | No | User groups blocked from accessing. Default: []. |
theme | Theme | No | Visual theme. |
metadata | Metadata | No | Additional metadata. |
custom | object | No | Custom properties (arbitrary key-value pairs). |
Example
version: "0.1"
module:
id: "example"
title: "Example Module"
module-groups:
- "learning"
contents: [...]
sessions: [...]
Session
Defines a learning session within the module.
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for the session. |
title | string | Yes | Session title. |
subtitle | string | No | Session subtitle. |
description | string | No | Session description. |
icon | string | No | Icon name/path. |
banner | string | No | Banner image path. |
contents | array<string> | No | List of content IDs included. Default: []. |
time | integer (int32) | No | Estimated time to complete in minutes. |
hidden | boolean | No | Whether the session is hidden from frontend. Default: false. |
quizzable | boolean | No | Whether to include in quizzes. Default: true. |
provider | LlmService | No | AI provider. Default: "openai". |
bot | string | No | Deprecated: bot configuration ID. |
llm-agent | string | Yes | LLM Agent ID to use. |
next-session | string | No | ID of the next session for navigation. |
unlock | Unlock | No | Unlock conditions. |
theme | Theme | No | Session-specific theme. |
metadata | Metadata | No | Session metadata. |
custom | object | No | Custom properties (arbitrary key-value pairs). |
Example
version: "0.1"
module:
id: "example"
title: "Example Module"
module-groups:
- "learning"
contents: [...]
sessions:
- id: "session-1"
title: "Session 1"
llm-agent: "tutor"
contents: [...]
Content
Defines the content which is included in a session.
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique content ID. |
title | string | Yes | Content title. |
contents | array<string> | Yes | Paragraphs/blocks of text content. |
goal | string | No | Learning goal (what the user should achieve). |
sources | ContentSources | No | Document references from the AMSL collection. |
exams | array<ContentExam> | No | Quiz/exam questions. Default: []. |
unlock | Unlock | No | Unlock conditions. |
ContentSources
Defines references/sources to documents in the AMSL collection.
| Property | Type | Required | Description |
|---|---|---|---|
primary | array<string> | No | IDs of primary sources (main references shown to user, e.g., lecture slides). Default: []. |
secondary | array<string> | No | IDs of secondary sources (additional references, not shown to user, e.g., books). Default: []. |
ContentExam
Defines an embedded quiz/exam question (used for generating quizzes).
| Property | Type | Required | Description |
|---|---|---|---|
question | string | Yes | The question text. |
level | QuestionBloomLevel | Yes | Bloom's taxonomy level (cognitive complexity). |
options | array<ContentExamOption> | No | List of ContentExamOption. For multiple-choice only. Default: []. |
solution | string | No | Explanation or solution for the question. |
ContentExamOption
If a question has answer options, this defines one of them.
| Property | Type | Required | Description |
|---|---|---|---|
option | string | Yes | Option text. |
is_correct | boolean | Yes | Whether this option is correct. |
Example
version: "0.1"
module:
id: "example"
title: "Example Module"
module-groups:
- "learning"
contents:
- id: "content-1"
title: "Content 1"
contents:
- "This is the first content block."
- "This is the second content block."
goal: "Learn about content 1."
sources:
primary: ["doc-1"]
secondary: ["doc-2"]
exams:
- question: "What is content 1 about?"
level: "understand"
sessions: [...]
Unlock
Defines conditions under which a resource (session, content) becomes available to the user.
| Property | Type | Required | Description |
|---|---|---|---|
triggers | array<UnlockTrigger> | Yes | List of UnlockTrigger. |
trigger-mode | UnlockTriggerMode | No | How to evaluate triggers: "all" (default) or "any". |
UnlockTrigger
One of the following configurations:
Time-based:
time:{ "after": "partal-date-time or date-time" }
Completion-based:
completion:after:string(Target ID to complete)wait: UnlockTriggerWait (Optional delay)
UnlockTriggerWait
Optional delay before unlocking. One of:
{ "days": integer }{ "seconds": integer }
UnlockTriggerMode
String. "all" or "any".
Example
version: "0.1"
module:
id: "example"
title: "Example Module"
module-groups:
- "learning"
contents: [...]
sessions:
- id: "session-1"
title: "Session 1"
llm-agent: "tutor"
contents: [...]
unlock:
triggers:
- time:
after: "2025-12-13T19:24:40+01:00"
trigger-mode: "all"
Common Types
LlmService
String. One of:
"openai""gwdg""win"
Feature
Configuration for optional features (e.g., self-learning).
| Property | Type | Required | Description |
|---|---|---|---|
enabled | boolean | No | Whether the feature is enabled. Default: false. |
provider | LlmService | No | AI provider override. Default: "openai". |
llm-agent | string | No | LLM Agent ID for this feature. |
theme | Theme | No | Feature-specific theme. |
unlock | Unlock | No | Unlock conditions for the feature. |
Metadata
General purpose metadata container.
| Property | Type | Required | Description |
|---|---|---|---|
annotations | map<string, string> | No | Key-value annotations. |
Theme
Visual theme configuration.
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Theme identifier. |
ModuleAssessment
Links to pre- and post-assessments for the module.
| Property | Type | Required | Description |
|---|---|---|---|
pre | string | Yes | Assessment ID required before starting the module. |
post | string | Yes | Assessment ID required to complete the module. |
ModuleCategory
String enum. Categorizes the module type.
"onboarding": Onboarding/introduction modules."learning": Lecture or learning content (default)."course": Structured courses with dedicated order (no quizzable content & self-learning)."journal": Journal or diary modules.
QuestionBloomLevel
String enum. Bloom's taxonomy levels for cognitive complexity.
"remember": Recall facts and basic concepts."understand": Explain ideas or concepts."apply": Use information in a new situation."analyze": Draw connections among ideas."evaluate": Justify a stand or decision."create": Produce new or original work.