From ead929d7fd794fcff010c9b408c12877723ad1b0 Mon Sep 17 00:00:00 2001 From: Aleksandr Shevchuk Date: Wed, 11 Nov 2026 00:28:02 +0200 Subject: [PATCH 1/5] fix(author): every content type's file names the source's own fields, and the skill asks for the author up front A chat that read a type file copied its example, `type` and `params` alone, and left out the author, which the build refuses and only the user can give (the owner's ChatGPT run on 0.9.1). Each content type's generated Fields section now says a source names its own title, language, license and authors beside params (SOURCE_FIELDS, written by schemaMarkdown for content types, not parts), SKILL.md's step 1 asks for the author's name and the licence before the source is written, step 2 names the four, and the brief says never to make a name up. On Haiku, with no author named: 0.9.1's text asked in 2 of 3 runs and the third wrote "Quiz author"; this text asked in 3 of 3. Closes #182 --- design/author.md | 16 ++++++++++++++++ packages/author/lib/schema.mjs | 10 +++++++++- packages/author/tests/layout.test.ts | 10 +++++++++- skills/h5p-author/SKILL.md | 7 +++++++ skills/h5p-author/references/authoring.md | 3 ++- .../h5p-author/references/types/H5P.Accordion.md | 2 ++ skills/h5p-author/references/types/H5P.Audio.md | 2 ++ skills/h5p-author/references/types/H5P.Blanks.md | 2 ++ .../references/types/H5P.BranchingScenario.md | 2 ++ skills/h5p-author/references/types/H5P.Column.md | 2 ++ .../references/types/H5P.CoursePresentation.md | 2 ++ .../references/types/H5P.Dialogcards.md | 2 ++ .../h5p-author/references/types/H5P.Dictation.md | 2 ++ .../h5p-author/references/types/H5P.DragText.md | 2 ++ skills/h5p-author/references/types/H5P.Essay.md | 2 ++ .../h5p-author/references/types/H5P.GameMap.md | 2 ++ .../references/types/H5P.ImageHotspotQuestion.md | 2 ++ .../references/types/H5P.ImageHotspots.md | 2 ++ .../h5p-author/references/types/H5P.ImagePair.md | 2 ++ .../references/types/H5P.ImageSequencing.md | 2 ++ .../references/types/H5P.InteractiveBook.md | 2 ++ .../references/types/H5P.InteractiveVideo.md | 2 ++ .../references/types/H5P.MarkTheWords.md | 2 ++ .../references/types/H5P.MemoryGame.md | 2 ++ .../references/types/H5P.MultiChoice.md | 2 ++ .../references/types/H5P.MultiMediaChoice.md | 2 ++ .../references/types/H5P.QuestionSet.md | 2 ++ .../references/types/H5P.Questionnaire.md | 2 ++ .../references/types/H5P.SingleChoiceSet.md | 2 ++ .../references/types/H5P.SortParagraphs.md | 2 ++ .../h5p-author/references/types/H5P.Summary.md | 2 ++ .../h5p-author/references/types/H5P.Timeline.md | 2 ++ .../h5p-author/references/types/H5P.TrueFalse.md | 2 ++ 33 files changed, 99 insertions(+), 3 deletions(-) diff --git a/design/author.md b/design/author.md index 9150939..fa36981 100644 --- a/design/author.md +++ b/design/author.md @@ -468,6 +468,22 @@ to 3,000. Nineteen things the code does not say by itself: play, and the third reached npm and built with it. The first three had the tool swapped for a stand-in that logged its runs, and each refused to run it, as it should: a test serves the file as it is. +- **A source's own fields are written where a chat reads, and the author is asked for** + (2026-11-11, #182). The owner's run in ChatGPT on 0.9.1 wrote a quiz with no `authors`. Each + of the 28 content types the skill lists refuses a source without `title`, `language`, + `license` or `authors` (each built with `params` alone), and each type's own required fields + are marked in its file's Fields section; but every type file's example is `type` and `params`, + and since #180 a chat reads it. Of the four, only the author has nothing to fall back on: the + language comes from the request, the licence is `U`. The owner's call: the model asks for the + author's name once, up front, with the type, and writes none it made up. So step 1 of + `SKILL.md` asks before the source is written, step 2's first point says every source names the + four, and `schemaMarkdown` writes the same under each content type's Fields heading + (`SOURCE_FIELDS`; not a part's, which is sub-content), for a chat that has the type file + alone, as the build page hands it over. Measured on Haiku in the chat stand-in (a fetch tool + that opens only whole addresses, npm cut off, a user who answers when asked), a Question Set + asked for with no author named: with 0.9.1's text two of three runs asked, from the brief's + list, and the third wrote "Quiz author" and built; with this text all three asked before + fetching the build tool and built with the name they were given. All six packages play. Not built: editing an existing package, which a tool beside it does with `checkContent` as its check; layout for Drag and Drop and Crossword; and any judgement of whether content is right, which diff --git a/packages/author/lib/schema.mjs b/packages/author/lib/schema.mjs index 07a1435..014b20e 100644 --- a/packages/author/lib/schema.mjs +++ b/packages/author/lib/schema.mjs @@ -220,9 +220,16 @@ export function withSection(text, section, name) { return `${text.slice(0, start)}${section}${text.slice(end + GENERATED_END.length)}` } +/** + * What a source of any content type names beside its fields. A type file's example shows only + * `type` and `params`, and a chat that copies it left the author out, the one of them it has no + * value of its own for (#182). A part other content holds has none: it is sub-content. + */ +export const SOURCE_FIELDS = 'A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author\'s name is the user\'s to give: ask for it when they have not.' + /** * The generated section of a type file: the fields, under a heading, between markers that a - * refresh rewrites. + * refresh rewrites, and for a content type what a source names beside them. * @param {any} library its `library.json` * @param {any[]} semantics * @param {SchemaOptions} [options] @@ -234,6 +241,7 @@ export function schemaMarkdown(library, semantics, options = {}) { '', `## Fields of ${library.machineName} ${library.majorVersion}.${library.minorVersion}`, '', + ...(library.runnable ? [SOURCE_FIELDS, ''] : []), ...fields, '', interfaceTexts diff --git a/packages/author/tests/layout.test.ts b/packages/author/tests/layout.test.ts index a83a552..5d3c933 100644 --- a/packages/author/tests/layout.test.ts +++ b/packages/author/tests/layout.test.ts @@ -4,7 +4,7 @@ import { join } from 'node:path' import { afterAll, beforeAll, describe, expect, it } from 'vitest' import { buildPackage, SourceError } from '../lib/author.mjs' import { imageSize } from '../lib/media.mjs' -import { GENERATED_END, GENERATED_START, schemaLines, schemaMarkdown, withSection } from '../lib/schema.mjs' +import { GENERATED_END, GENERATED_START, schemaLines, schemaMarkdown, SOURCE_FIELDS, withSection } from '../lib/schema.mjs' import { jpeg, png } from './helpers/media' const META = { title: 'Layout', language: 'en', license: 'U', authors: [{ name: 'Ann Author', role: 'Author' }] } @@ -276,6 +276,14 @@ describe('the schema a source is written from', () => { expect(markdown.startsWith(`${GENERATED_START}\n\n## Fields of H5P.Test 1.2\n`)).toBe(true) expect(markdown.endsWith(`\`h5p-author schema H5P.Test --all\` lists them, for a source to set one.\n\n${GENERATED_END}`)).toBe(true) }) + + it('says what a content type\'s source names beside its fields, the author asked of the user, and not for a part (#182)', () => { + const type = schemaMarkdown({ machineName: 'H5P.Test', majorVersion: 1, minorVersion: 2, runnable: 1 }, semantics) + expect(type.startsWith(`${GENERATED_START}\n\n## Fields of H5P.Test 1.2\n\n${SOURCE_FIELDS}\n\n- `)).toBe(true) + for (const field of ['`title`', '`language`', '`license`', '`authors`']) expect(SOURCE_FIELDS).toContain(field) + expect(SOURCE_FIELDS).toContain('ask for it') + expect(schemaMarkdown({ machineName: 'H5P.Test', majorVersion: 1, minorVersion: 2, runnable: 0 }, semantics)).not.toContain(SOURCE_FIELDS) + }) }) describe('what a file is', () => { diff --git a/skills/h5p-author/SKILL.md b/skills/h5p-author/SKILL.md index 07866f1..bc0785c 100644 --- a/skills/h5p-author/SKILL.md +++ b/skills/h5p-author/SKILL.md @@ -22,6 +22,11 @@ file step 3 fetches, and a fetch tool may refuse an address put together from a Read [the brief](./references/authoring.md) once. If the user named no type, propose one or two that fit the material and objective, a sentence each on why, and wait for their choice. +If they gave no author's name, ask for it before you write the source, with the licence (`U` +when they do not know it): in the reply that proposes the type, or in one of its own. Every +source names its author, the build refuses one without, and the name is theirs to give, never +one you make up. Ask once, and wait. + | Type | Use it for | |---|---| | H5P.MultiChoice | one question, one or several right answers | @@ -75,6 +80,8 @@ from what you know of the type: the build says, for each place that is wrong, wh } ``` +- Every source names its own `title`, `language`, `license` and `authors` beside `type` and + `params`, as above, whatever a type file's example leaves out; the author is the user's. - `params` holds only fields that differ from their defaults. Never interface texts (Check, Retry…): they come from the libraries' translations for `language`. - Text is plain, or markup with only the tags a field marked `html` lists. diff --git a/skills/h5p-author/references/authoring.md b/skills/h5p-author/references/authoring.md index 5d44e80..ffff105 100644 --- a/skills/h5p-author/references/authoring.md +++ b/skills/h5p-author/references/authoring.md @@ -13,7 +13,8 @@ Use what the user already gave. Ask for what is missing and matters: texts too, from their own translations, which are often incomplete. - **Media**, for a type that needs them: files the user has, or web addresses they may use, with who made them and under which licence. -- **Author and licence**: the author's name, and the licence for the whole, an H5P code: `U` +- **Author and licence**: the author's name, which every source needs and only the user can + give (never make one up), and the licence for the whole, an H5P code: `U` (undisclosed, when unknown), `CC BY`, `CC BY-SA`, `CC BY-ND`, `CC BY-NC`, `CC BY-NC-SA`, `CC BY-NC-ND`, `CC0 1.0`, `CC PDM`, `GNU GPL`, `PD`, `ODC PDDL` or `C`; `licenseVersion` `4.0` for a CC BY one. Never choose a licence the user has not. diff --git a/skills/h5p-author/references/types/H5P.Accordion.md b/skills/h5p-author/references/types/H5P.Accordion.md index 638abdd..5462a06 100644 --- a/skills/h5p-author/references/types/H5P.Accordion.md +++ b/skills/h5p-author/references/types/H5P.Accordion.md @@ -22,6 +22,8 @@ Text in panels that open on a click, for reference material a learner looks up. ## Fields of H5P.Accordion 1.0 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `panels` list 1–100 of, required — Panels - `title` text, required — Title - `content` sub-content: H5P.AdvancedText, required — Content type diff --git a/skills/h5p-author/references/types/H5P.Audio.md b/skills/h5p-author/references/types/H5P.Audio.md index 78be586..1081b67 100644 --- a/skills/h5p-author/references/types/H5P.Audio.md +++ b/skills/h5p-author/references/types/H5P.Audio.md @@ -18,6 +18,8 @@ An audio player. On its own it suits a listening task beside other content; in a ## Fields of H5P.Audio 1.5 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `files` audio files, required — Source files - `playerMode` one of "minimalistic" | "full" | "transparent" = "minimalistic" — Player mode: Select the layout of the player. - `fitToWrapper` boolean = false; only when playerMode is "minimalistic" or playerMode is "full" — Fit to wrapper diff --git a/skills/h5p-author/references/types/H5P.Blanks.md b/skills/h5p-author/references/types/H5P.Blanks.md index 2689695..0f290df 100644 --- a/skills/h5p-author/references/types/H5P.Blanks.md +++ b/skills/h5p-author/references/types/H5P.Blanks.md @@ -26,6 +26,8 @@ Text with gaps the learner types the missing words into. For recall of exact wor ## Fields of H5P.Blanks 1.14 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.BranchingScenario.md b/skills/h5p-author/references/types/H5P.BranchingScenario.md index c6ab023..1196e71 100644 --- a/skills/h5p-author/references/types/H5P.BranchingScenario.md +++ b/skills/h5p-author/references/types/H5P.BranchingScenario.md @@ -38,6 +38,8 @@ A story in which the learner's choices lead to different paths and endings: deci ## Fields of H5P.BranchingScenario 1.11 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `branchingScenario` group — Branching Scenario Editor - `title` text, required — Title - `startScreen` group — Start screen diff --git a/skills/h5p-author/references/types/H5P.Column.md b/skills/h5p-author/references/types/H5P.Column.md index 6097d57..028f2cb 100644 --- a/skills/h5p-author/references/types/H5P.Column.md +++ b/skills/h5p-author/references/types/H5P.Column.md @@ -24,6 +24,8 @@ A page of content one below another: text, pictures, video and questions, in the ## Fields of H5P.Column 1.22 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `content` list 1+ of, required — List of Column Content - `content` sub-content: H5P.Accordion | H5P.Agamotto | H5P.Audio | H5P.AudioRecorder | H5P.Blanks | H5P.Chart | H5P.Collage | H5P.CoursePresentation | H5P.Dialogcards | H5P.DocumentationTool | H5P.DragQuestion | H5P.DragText | H5P.Essay | H5P.GuessTheAnswer | H5P.Table | H5P.AdvancedText | H5P.IFrameEmbed | H5P.Image | H5P.ImageHotspots | H5P.ImageHotspotQuestion | H5P.ImageSlider | H5P.InteractiveVideo | H5P.Link | H5P.MarkTheWords | H5P.MemoryGame | H5P.MultiChoice | H5P.Questionnaire | H5P.QuestionSet | H5P.Row | H5P.SingleChoiceSet | H5P.Summary | H5P.Timeline | H5P.TrueFalse | H5P.Video | H5P.MultiMediaChoice, required — Content - `useSeparator` one of "auto" | "disabled" | "enabled" = "auto" — Separate content with a horizontal ruler diff --git a/skills/h5p-author/references/types/H5P.CoursePresentation.md b/skills/h5p-author/references/types/H5P.CoursePresentation.md index 81e4274..9de2355 100644 --- a/skills/h5p-author/references/types/H5P.CoursePresentation.md +++ b/skills/h5p-author/references/types/H5P.CoursePresentation.md @@ -38,6 +38,8 @@ Slides with text, pictures, video and questions; a summary slide with the score ## Fields of H5P.CoursePresentation 1.27 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `presentation` group - `slides` list of - `elements` list of diff --git a/skills/h5p-author/references/types/H5P.Dialogcards.md b/skills/h5p-author/references/types/H5P.Dialogcards.md index 5792cf2..1d22383 100644 --- a/skills/h5p-author/references/types/H5P.Dialogcards.md +++ b/skills/h5p-author/references/types/H5P.Dialogcards.md @@ -24,6 +24,8 @@ Flash cards: a prompt on the front, the answer on the back, turned by the learne ## Fields of H5P.Dialogcards 1.9 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `title` html: strong em code — Heading - `mode` one of "normal" | "repetition" = "normal" — Mode: Mode of presenting the dialog cards - `description` html: strong em code — Task description diff --git a/skills/h5p-author/references/types/H5P.Dictation.md b/skills/h5p-author/references/types/H5P.Dictation.md index 36ed0a6..e0b319f 100644 --- a/skills/h5p-author/references/types/H5P.Dictation.md +++ b/skills/h5p-author/references/types/H5P.Dictation.md @@ -25,6 +25,8 @@ The learner hears sentences and types them; the content compares what was typed ## Fields of H5P.Dictation 1.3 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.DragText.md b/skills/h5p-author/references/types/H5P.DragText.md index 4116fc3..18ec858 100644 --- a/skills/h5p-author/references/types/H5P.DragText.md +++ b/skills/h5p-author/references/types/H5P.DragText.md @@ -23,6 +23,8 @@ Text with gaps the learner fills by dragging words from a list. Easier than typi ## Fields of H5P.DragText 1.10 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.Essay.md b/skills/h5p-author/references/types/H5P.Essay.md index f2b5747..9d897f6 100644 --- a/skills/h5p-author/references/types/H5P.Essay.md +++ b/skills/h5p-author/references/types/H5P.Essay.md @@ -27,6 +27,8 @@ The learner writes a text, scored by the keywords it contains, with feedback per ## Fields of H5P.Essay 1.5 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.GameMap.md b/skills/h5p-author/references/types/H5P.GameMap.md index 20f7e3f..dd0cdda 100644 --- a/skills/h5p-author/references/types/H5P.GameMap.md +++ b/skills/h5p-author/references/types/H5P.GameMap.md @@ -40,6 +40,8 @@ A map with stages, each holding exercises; finishing a stage opens the stages jo ## Fields of H5P.GameMap 1.5 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `showTitleScreen` boolean = false — Show title screen - `titleScreen` group — Title screen - `titleScreenIntroduction` html: sub sup strong em code u del a ul ol hr pre code = "

" — Introduction diff --git a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md index ba24422..f422582 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md @@ -31,6 +31,8 @@ A picture in which the learner clicks the right area: a part of a diagram, a pla ## Fields of H5P.ImageHotspotQuestion 1.8 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `imageHotspotQuestion` group — Image Hotspot Question Editor - `backgroundImageSettings` image file, required — Background image - `hotspotSettings` group — Hotspots diff --git a/skills/h5p-author/references/types/H5P.ImageHotspots.md b/skills/h5p-author/references/types/H5P.ImageHotspots.md index 9ea7644..45401b6 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspots.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspots.md @@ -26,6 +26,8 @@ A picture with spots that open text, a picture, audio or video when clicked: a l ## Fields of H5P.ImageHotspots 1.11 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `image` image file, required — Background image - `backgroundImageAltText` text — Alternative text for background image: If the browser can't load the image this text will be displayed instead. Also used by assistive technologies. - `globalIconType` one of "icon" | "image" | "numbers" = "icon" — Global hotspot Icon diff --git a/skills/h5p-author/references/types/H5P.ImagePair.md b/skills/h5p-author/references/types/H5P.ImagePair.md index 8397479..342feb7 100644 --- a/skills/h5p-author/references/types/H5P.ImagePair.md +++ b/skills/h5p-author/references/types/H5P.ImagePair.md @@ -24,6 +24,8 @@ Two columns of pictures; the learner drags each one on the left onto its match o ## Fields of H5P.ImagePair 1.4 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `taskDescription` text = "Drag images from the left to match them with… — Task Description: A guide telling the user how to solve this task. - `cards` list 2–100 of, required — Cards - `image` image file, required — Image diff --git a/skills/h5p-author/references/types/H5P.ImageSequencing.md b/skills/h5p-author/references/types/H5P.ImageSequencing.md index 3ae58ce..ac89756 100644 --- a/skills/h5p-author/references/types/H5P.ImageSequencing.md +++ b/skills/h5p-author/references/types/H5P.ImageSequencing.md @@ -24,6 +24,8 @@ Pictures shown shuffled, which the learner puts in order: stages of a process, a ## Fields of H5P.ImageSequencing 1.1 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `taskDescription` text = "Drag to arrange the images in the correct se… — Task Description: A guide telling the user how to solve this task. - `altTaskDescription` text = "Make the following list be ordered correctly… — Alternate Task Description: A guide intended for visually impaired users on how to solve this task. - `sequenceImages` list 3+ of, required — Images diff --git a/skills/h5p-author/references/types/H5P.InteractiveBook.md b/skills/h5p-author/references/types/H5P.InteractiveBook.md index 795c68b..7c45ca7 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveBook.md +++ b/skills/h5p-author/references/types/H5P.InteractiveBook.md @@ -32,6 +32,8 @@ A book of chapters with a table of contents, each chapter a page of text, media ## Fields of H5P.InteractiveBook 1.15 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `showCoverPage` boolean = false — Enable book cover - `bookCover` group; only when showCoverPage is true — Cover Page - `coverDescription` html: sub sup strong em code u del a ul ol h1 h2 h3 h4 h5 h6 pre hr table = "

" — Cover description: This text will be the description of your book. diff --git a/skills/h5p-author/references/types/H5P.InteractiveVideo.md b/skills/h5p-author/references/types/H5P.InteractiveVideo.md index a821a1c..88f40d2 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveVideo.md +++ b/skills/h5p-author/references/types/H5P.InteractiveVideo.md @@ -38,6 +38,8 @@ A video with questions, text and links appearing over it at set times, a bookmar ## Fields of H5P.InteractiveVideo 1.28 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `interactiveVideo` group — Interactive Video Editor - `video` group — Upload/embed video - `files` video files, required — Add a video diff --git a/skills/h5p-author/references/types/H5P.MarkTheWords.md b/skills/h5p-author/references/types/H5P.MarkTheWords.md index 475c0a3..7c96532 100644 --- a/skills/h5p-author/references/types/H5P.MarkTheWords.md +++ b/skills/h5p-author/references/types/H5P.MarkTheWords.md @@ -21,6 +21,8 @@ A text in which the learner clicks the words that fit a rule: every verb, every ## Fields of H5P.MarkTheWords 1.11 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.MemoryGame.md b/skills/h5p-author/references/types/H5P.MemoryGame.md index dacdfa7..bf60355 100644 --- a/skills/h5p-author/references/types/H5P.MemoryGame.md +++ b/skills/h5p-author/references/types/H5P.MemoryGame.md @@ -24,6 +24,8 @@ Cards face down, turned two at a time, until every pair is found. ## Fields of H5P.MemoryGame 1.3 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `cards` list 2–100 of, required — Cards - `image` image file, required — Image - `imageAlt` text, required — Alternative text for Image: Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users. diff --git a/skills/h5p-author/references/types/H5P.MultiChoice.md b/skills/h5p-author/references/types/H5P.MultiChoice.md index 38cdf9a..141504a 100644 --- a/skills/h5p-author/references/types/H5P.MultiChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiChoice.md @@ -28,6 +28,8 @@ One question, two or more answers, one or several of them correct, with feedback ## Fields of H5P.MultiChoice 1.16 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md index dc5617d..bf78ddc 100644 --- a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md @@ -24,6 +24,8 @@ A multiple-choice question whose answers are pictures. ## Fields of H5P.MultiMediaChoice 0.3 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.QuestionSet.md b/skills/h5p-author/references/types/H5P.QuestionSet.md index bddb509..54e91d5 100644 --- a/skills/h5p-author/references/types/H5P.QuestionSet.md +++ b/skills/h5p-author/references/types/H5P.QuestionSet.md @@ -47,6 +47,8 @@ A quiz: questions one after another, then a result page with the score. ## Fields of H5P.QuestionSet 1.21 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `introPage` group — Quiz introduction - `showIntroPage` boolean — Display introduction - `title` text — Title: This title will be displayed above the introduction text. diff --git a/skills/h5p-author/references/types/H5P.Questionnaire.md b/skills/h5p-author/references/types/H5P.Questionnaire.md index 0b73778..5323757 100644 --- a/skills/h5p-author/references/types/H5P.Questionnaire.md +++ b/skills/h5p-author/references/types/H5P.Questionnaire.md @@ -31,6 +31,8 @@ A survey: open questions and multiple-choice questions with no right answer, the ## Fields of H5P.Questionnaire 1.3 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `questionnaireElements` list 1+ of, required — Questionnaire elements - `library` sub-content: H5P.OpenEndedQuestion | H5P.SimpleMultiChoice, required — Library: Choose a library - `requiredField` boolean = false — Required field diff --git a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md index f5e1000..42fd5ad 100644 --- a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md +++ b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md @@ -23,6 +23,8 @@ Quick questions, one after another, each with one right answer of two to four; t ## Fields of H5P.SingleChoiceSet 1.11 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `choices` list 1+ of, required — List of questions - `question` html: strong em code, required — Question - `answers` list 2–4 of html: strong em code, required — Alternatives - first alternative is the correct one. diff --git a/skills/h5p-author/references/types/H5P.SortParagraphs.md b/skills/h5p-author/references/types/H5P.SortParagraphs.md index 8296111..f73d54c 100644 --- a/skills/h5p-author/references/types/H5P.SortParagraphs.md +++ b/skills/h5p-author/references/types/H5P.SortParagraphs.md @@ -26,6 +26,8 @@ Paragraphs shown shuffled, which the learner puts in order: steps of a process, ## Fields of H5P.SortParagraphs 0.11 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming diff --git a/skills/h5p-author/references/types/H5P.Summary.md b/skills/h5p-author/references/types/H5P.Summary.md index ac8bf70..3c78043 100644 --- a/skills/h5p-author/references/types/H5P.Summary.md +++ b/skills/h5p-author/references/types/H5P.Summary.md @@ -24,6 +24,8 @@ The learner builds a summary statement by statement, picking the true one from e ## Fields of H5P.Summary 1.10 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `intro` html: strong em u a ul ol h2 h3 hr pre code = "Choose the correct statement." — Introduction text: Will be displayed above the summary task. - `summaries` list 1–100 of, required — Summary - `summary` list 2+ of html, required — List of statements for the summary - the first statement is correct. diff --git a/skills/h5p-author/references/types/H5P.Timeline.md b/skills/h5p-author/references/types/H5P.Timeline.md index 67d25da..1c0c18d 100644 --- a/skills/h5p-author/references/types/H5P.Timeline.md +++ b/skills/h5p-author/references/types/H5P.Timeline.md @@ -29,6 +29,8 @@ Events along a time line, each with a date, a headline and a text, browsed in or ## Fields of H5P.Timeline 1.1 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `timeline` group — Timeline - `headline` text, required — Headline: Main timeline heading goes here (first page) - `text` html: strong em del a ul ol hr code — Body Text: The main timeline body goes here (first page). diff --git a/skills/h5p-author/references/types/H5P.TrueFalse.md b/skills/h5p-author/references/types/H5P.TrueFalse.md index cc4627e..746d5ac 100644 --- a/skills/h5p-author/references/types/H5P.TrueFalse.md +++ b/skills/h5p-author/references/types/H5P.TrueFalse.md @@ -26,6 +26,8 @@ One statement the learner marks true or false. ## Fields of H5P.TrueFalse 1.8 +A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. + - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. - `disableImageZooming` boolean = false; only when type is "H5P.Image 1.1" — Disable image zooming From 31d0989f4cf3035b88aeed30140285f03dbc7139 Mon Sep 17 00:00:00 2001 From: Aleksandr Shevchuk Date: Wed, 11 Nov 2026 00:35:54 +0200 Subject: [PATCH 2/5] fix(author): every source field is required, and the example is params alone cubic's review: "the build refuses one without any of them" read as refusing only a source missing all four, and the examples above the line looked like whole sources. The line now says all four are required, a source missing any of them refused, and that the example is `type` and `params` alone. The example is labelled rather than given the four: a name written in it would be copied as the author and build, where the model is to ask. --- design/author.md | 4 +++- packages/author/lib/schema.mjs | 6 ++++-- packages/author/tests/layout.test.ts | 2 ++ skills/h5p-author/references/types/H5P.Accordion.md | 2 +- skills/h5p-author/references/types/H5P.Audio.md | 2 +- skills/h5p-author/references/types/H5P.Blanks.md | 2 +- skills/h5p-author/references/types/H5P.BranchingScenario.md | 2 +- skills/h5p-author/references/types/H5P.Column.md | 2 +- .../h5p-author/references/types/H5P.CoursePresentation.md | 2 +- skills/h5p-author/references/types/H5P.Dialogcards.md | 2 +- skills/h5p-author/references/types/H5P.Dictation.md | 2 +- skills/h5p-author/references/types/H5P.DragText.md | 2 +- skills/h5p-author/references/types/H5P.Essay.md | 2 +- skills/h5p-author/references/types/H5P.GameMap.md | 2 +- .../h5p-author/references/types/H5P.ImageHotspotQuestion.md | 2 +- skills/h5p-author/references/types/H5P.ImageHotspots.md | 2 +- skills/h5p-author/references/types/H5P.ImagePair.md | 2 +- skills/h5p-author/references/types/H5P.ImageSequencing.md | 2 +- skills/h5p-author/references/types/H5P.InteractiveBook.md | 2 +- skills/h5p-author/references/types/H5P.InteractiveVideo.md | 2 +- skills/h5p-author/references/types/H5P.MarkTheWords.md | 2 +- skills/h5p-author/references/types/H5P.MemoryGame.md | 2 +- skills/h5p-author/references/types/H5P.MultiChoice.md | 2 +- skills/h5p-author/references/types/H5P.MultiMediaChoice.md | 2 +- skills/h5p-author/references/types/H5P.QuestionSet.md | 2 +- skills/h5p-author/references/types/H5P.Questionnaire.md | 2 +- skills/h5p-author/references/types/H5P.SingleChoiceSet.md | 2 +- skills/h5p-author/references/types/H5P.SortParagraphs.md | 2 +- skills/h5p-author/references/types/H5P.Summary.md | 2 +- skills/h5p-author/references/types/H5P.Timeline.md | 2 +- skills/h5p-author/references/types/H5P.TrueFalse.md | 2 +- 31 files changed, 37 insertions(+), 31 deletions(-) diff --git a/design/author.md b/design/author.md index fa36981..6387016 100644 --- a/design/author.md +++ b/design/author.md @@ -479,7 +479,9 @@ to 3,000. Nineteen things the code does not say by itself: `SKILL.md` asks before the source is written, step 2's first point says every source names the four, and `schemaMarkdown` writes the same under each content type's Fields heading (`SOURCE_FIELDS`; not a part's, which is sub-content), for a chat that has the type file - alone, as the build page hands it over. Measured on Haiku in the chat stand-in (a fetch tool + alone, as the build page hands it over. It says the example is `type` and `params` alone rather + than the example holding the four: a name written in an example would be copied as the author + and build, where the model is to ask. Measured on Haiku in the chat stand-in (a fetch tool that opens only whole addresses, npm cut off, a user who answers when asked), a Question Set asked for with no author named: with 0.9.1's text two of three runs asked, from the brief's list, and the third wrote "Quiz author" and built; with this text all three asked before diff --git a/packages/author/lib/schema.mjs b/packages/author/lib/schema.mjs index 014b20e..65b3b6c 100644 --- a/packages/author/lib/schema.mjs +++ b/packages/author/lib/schema.mjs @@ -223,9 +223,11 @@ export function withSection(text, section, name) { /** * What a source of any content type names beside its fields. A type file's example shows only * `type` and `params`, and a chat that copies it left the author out, the one of them it has no - * value of its own for (#182). A part other content holds has none: it is sub-content. + * value of its own for (#182). The example says so here rather than holding them: a name written + * in it would be copied as the author and build, where the model is to ask. A part other content + * holds has none: it is sub-content. */ -export const SOURCE_FIELDS = 'A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author\'s name is the user\'s to give: ask for it when they have not.' +export const SOURCE_FIELDS = 'The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author\'s name is the user\'s to give: ask for it when they have not.' /** * The generated section of a type file: the fields, under a heading, between markers that a diff --git a/packages/author/tests/layout.test.ts b/packages/author/tests/layout.test.ts index 5d3c933..a2fa8ab 100644 --- a/packages/author/tests/layout.test.ts +++ b/packages/author/tests/layout.test.ts @@ -281,6 +281,8 @@ describe('the schema a source is written from', () => { const type = schemaMarkdown({ machineName: 'H5P.Test', majorVersion: 1, minorVersion: 2, runnable: 1 }, semantics) expect(type.startsWith(`${GENERATED_START}\n\n## Fields of H5P.Test 1.2\n\n${SOURCE_FIELDS}\n\n- `)).toBe(true) for (const field of ['`title`', '`language`', '`license`', '`authors`']) expect(SOURCE_FIELDS).toContain(field) + expect(SOURCE_FIELDS).toContain('all four required') + expect(SOURCE_FIELDS).toContain('The example is `type` and `params` alone') expect(SOURCE_FIELDS).toContain('ask for it') expect(schemaMarkdown({ machineName: 'H5P.Test', majorVersion: 1, minorVersion: 2, runnable: 0 }, semantics)).not.toContain(SOURCE_FIELDS) }) diff --git a/skills/h5p-author/references/types/H5P.Accordion.md b/skills/h5p-author/references/types/H5P.Accordion.md index 5462a06..1a36e47 100644 --- a/skills/h5p-author/references/types/H5P.Accordion.md +++ b/skills/h5p-author/references/types/H5P.Accordion.md @@ -22,7 +22,7 @@ Text in panels that open on a click, for reference material a learner looks up. ## Fields of H5P.Accordion 1.0 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `panels` list 1–100 of, required — Panels - `title` text, required — Title diff --git a/skills/h5p-author/references/types/H5P.Audio.md b/skills/h5p-author/references/types/H5P.Audio.md index 1081b67..d1f7540 100644 --- a/skills/h5p-author/references/types/H5P.Audio.md +++ b/skills/h5p-author/references/types/H5P.Audio.md @@ -18,7 +18,7 @@ An audio player. On its own it suits a listening task beside other content; in a ## Fields of H5P.Audio 1.5 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `files` audio files, required — Source files - `playerMode` one of "minimalistic" | "full" | "transparent" = "minimalistic" — Player mode: Select the layout of the player. diff --git a/skills/h5p-author/references/types/H5P.Blanks.md b/skills/h5p-author/references/types/H5P.Blanks.md index 0f290df..dc67d00 100644 --- a/skills/h5p-author/references/types/H5P.Blanks.md +++ b/skills/h5p-author/references/types/H5P.Blanks.md @@ -26,7 +26,7 @@ Text with gaps the learner types the missing words into. For recall of exact wor ## Fields of H5P.Blanks 1.14 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.BranchingScenario.md b/skills/h5p-author/references/types/H5P.BranchingScenario.md index 1196e71..835d5cf 100644 --- a/skills/h5p-author/references/types/H5P.BranchingScenario.md +++ b/skills/h5p-author/references/types/H5P.BranchingScenario.md @@ -38,7 +38,7 @@ A story in which the learner's choices lead to different paths and endings: deci ## Fields of H5P.BranchingScenario 1.11 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `branchingScenario` group — Branching Scenario Editor - `title` text, required — Title diff --git a/skills/h5p-author/references/types/H5P.Column.md b/skills/h5p-author/references/types/H5P.Column.md index 028f2cb..5399705 100644 --- a/skills/h5p-author/references/types/H5P.Column.md +++ b/skills/h5p-author/references/types/H5P.Column.md @@ -24,7 +24,7 @@ A page of content one below another: text, pictures, video and questions, in the ## Fields of H5P.Column 1.22 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `content` list 1+ of, required — List of Column Content - `content` sub-content: H5P.Accordion | H5P.Agamotto | H5P.Audio | H5P.AudioRecorder | H5P.Blanks | H5P.Chart | H5P.Collage | H5P.CoursePresentation | H5P.Dialogcards | H5P.DocumentationTool | H5P.DragQuestion | H5P.DragText | H5P.Essay | H5P.GuessTheAnswer | H5P.Table | H5P.AdvancedText | H5P.IFrameEmbed | H5P.Image | H5P.ImageHotspots | H5P.ImageHotspotQuestion | H5P.ImageSlider | H5P.InteractiveVideo | H5P.Link | H5P.MarkTheWords | H5P.MemoryGame | H5P.MultiChoice | H5P.Questionnaire | H5P.QuestionSet | H5P.Row | H5P.SingleChoiceSet | H5P.Summary | H5P.Timeline | H5P.TrueFalse | H5P.Video | H5P.MultiMediaChoice, required — Content diff --git a/skills/h5p-author/references/types/H5P.CoursePresentation.md b/skills/h5p-author/references/types/H5P.CoursePresentation.md index 9de2355..ab24266 100644 --- a/skills/h5p-author/references/types/H5P.CoursePresentation.md +++ b/skills/h5p-author/references/types/H5P.CoursePresentation.md @@ -38,7 +38,7 @@ Slides with text, pictures, video and questions; a summary slide with the score ## Fields of H5P.CoursePresentation 1.27 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `presentation` group - `slides` list of diff --git a/skills/h5p-author/references/types/H5P.Dialogcards.md b/skills/h5p-author/references/types/H5P.Dialogcards.md index 1d22383..ee1bab0 100644 --- a/skills/h5p-author/references/types/H5P.Dialogcards.md +++ b/skills/h5p-author/references/types/H5P.Dialogcards.md @@ -24,7 +24,7 @@ Flash cards: a prompt on the front, the answer on the back, turned by the learne ## Fields of H5P.Dialogcards 1.9 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `title` html: strong em code — Heading - `mode` one of "normal" | "repetition" = "normal" — Mode: Mode of presenting the dialog cards diff --git a/skills/h5p-author/references/types/H5P.Dictation.md b/skills/h5p-author/references/types/H5P.Dictation.md index e0b319f..0003580 100644 --- a/skills/h5p-author/references/types/H5P.Dictation.md +++ b/skills/h5p-author/references/types/H5P.Dictation.md @@ -25,7 +25,7 @@ The learner hears sentences and types them; the content compares what was typed ## Fields of H5P.Dictation 1.3 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.DragText.md b/skills/h5p-author/references/types/H5P.DragText.md index 18ec858..d9b3326 100644 --- a/skills/h5p-author/references/types/H5P.DragText.md +++ b/skills/h5p-author/references/types/H5P.DragText.md @@ -23,7 +23,7 @@ Text with gaps the learner fills by dragging words from a list. Easier than typi ## Fields of H5P.DragText 1.10 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.Essay.md b/skills/h5p-author/references/types/H5P.Essay.md index 9d897f6..79d1ad7 100644 --- a/skills/h5p-author/references/types/H5P.Essay.md +++ b/skills/h5p-author/references/types/H5P.Essay.md @@ -27,7 +27,7 @@ The learner writes a text, scored by the keywords it contains, with feedback per ## Fields of H5P.Essay 1.5 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.GameMap.md b/skills/h5p-author/references/types/H5P.GameMap.md index dd0cdda..266cea9 100644 --- a/skills/h5p-author/references/types/H5P.GameMap.md +++ b/skills/h5p-author/references/types/H5P.GameMap.md @@ -40,7 +40,7 @@ A map with stages, each holding exercises; finishing a stage opens the stages jo ## Fields of H5P.GameMap 1.5 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `showTitleScreen` boolean = false — Show title screen - `titleScreen` group — Title screen diff --git a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md index f422582..4608ef8 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md @@ -31,7 +31,7 @@ A picture in which the learner clicks the right area: a part of a diagram, a pla ## Fields of H5P.ImageHotspotQuestion 1.8 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `imageHotspotQuestion` group — Image Hotspot Question Editor - `backgroundImageSettings` image file, required — Background image diff --git a/skills/h5p-author/references/types/H5P.ImageHotspots.md b/skills/h5p-author/references/types/H5P.ImageHotspots.md index 45401b6..46f1df0 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspots.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspots.md @@ -26,7 +26,7 @@ A picture with spots that open text, a picture, audio or video when clicked: a l ## Fields of H5P.ImageHotspots 1.11 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `image` image file, required — Background image - `backgroundImageAltText` text — Alternative text for background image: If the browser can't load the image this text will be displayed instead. Also used by assistive technologies. diff --git a/skills/h5p-author/references/types/H5P.ImagePair.md b/skills/h5p-author/references/types/H5P.ImagePair.md index 342feb7..1ffcb2a 100644 --- a/skills/h5p-author/references/types/H5P.ImagePair.md +++ b/skills/h5p-author/references/types/H5P.ImagePair.md @@ -24,7 +24,7 @@ Two columns of pictures; the learner drags each one on the left onto its match o ## Fields of H5P.ImagePair 1.4 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `taskDescription` text = "Drag images from the left to match them with… — Task Description: A guide telling the user how to solve this task. - `cards` list 2–100 of, required — Cards diff --git a/skills/h5p-author/references/types/H5P.ImageSequencing.md b/skills/h5p-author/references/types/H5P.ImageSequencing.md index ac89756..698a09c 100644 --- a/skills/h5p-author/references/types/H5P.ImageSequencing.md +++ b/skills/h5p-author/references/types/H5P.ImageSequencing.md @@ -24,7 +24,7 @@ Pictures shown shuffled, which the learner puts in order: stages of a process, a ## Fields of H5P.ImageSequencing 1.1 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `taskDescription` text = "Drag to arrange the images in the correct se… — Task Description: A guide telling the user how to solve this task. - `altTaskDescription` text = "Make the following list be ordered correctly… — Alternate Task Description: A guide intended for visually impaired users on how to solve this task. diff --git a/skills/h5p-author/references/types/H5P.InteractiveBook.md b/skills/h5p-author/references/types/H5P.InteractiveBook.md index 7c45ca7..21b7549 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveBook.md +++ b/skills/h5p-author/references/types/H5P.InteractiveBook.md @@ -32,7 +32,7 @@ A book of chapters with a table of contents, each chapter a page of text, media ## Fields of H5P.InteractiveBook 1.15 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `showCoverPage` boolean = false — Enable book cover - `bookCover` group; only when showCoverPage is true — Cover Page diff --git a/skills/h5p-author/references/types/H5P.InteractiveVideo.md b/skills/h5p-author/references/types/H5P.InteractiveVideo.md index 88f40d2..722dbd9 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveVideo.md +++ b/skills/h5p-author/references/types/H5P.InteractiveVideo.md @@ -38,7 +38,7 @@ A video with questions, text and links appearing over it at set times, a bookmar ## Fields of H5P.InteractiveVideo 1.28 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `interactiveVideo` group — Interactive Video Editor - `video` group — Upload/embed video diff --git a/skills/h5p-author/references/types/H5P.MarkTheWords.md b/skills/h5p-author/references/types/H5P.MarkTheWords.md index 7c96532..4a12fea 100644 --- a/skills/h5p-author/references/types/H5P.MarkTheWords.md +++ b/skills/h5p-author/references/types/H5P.MarkTheWords.md @@ -21,7 +21,7 @@ A text in which the learner clicks the words that fit a rule: every verb, every ## Fields of H5P.MarkTheWords 1.11 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.MemoryGame.md b/skills/h5p-author/references/types/H5P.MemoryGame.md index bf60355..979ffd2 100644 --- a/skills/h5p-author/references/types/H5P.MemoryGame.md +++ b/skills/h5p-author/references/types/H5P.MemoryGame.md @@ -24,7 +24,7 @@ Cards face down, turned two at a time, until every pair is found. ## Fields of H5P.MemoryGame 1.3 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `cards` list 2–100 of, required — Cards - `image` image file, required — Image diff --git a/skills/h5p-author/references/types/H5P.MultiChoice.md b/skills/h5p-author/references/types/H5P.MultiChoice.md index 141504a..dffc9ba 100644 --- a/skills/h5p-author/references/types/H5P.MultiChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiChoice.md @@ -28,7 +28,7 @@ One question, two or more answers, one or several of them correct, with feedback ## Fields of H5P.MultiChoice 1.16 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md index bf78ddc..28f02ab 100644 --- a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md @@ -24,7 +24,7 @@ A multiple-choice question whose answers are pictures. ## Fields of H5P.MultiMediaChoice 0.3 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.QuestionSet.md b/skills/h5p-author/references/types/H5P.QuestionSet.md index 54e91d5..ea8b9f2 100644 --- a/skills/h5p-author/references/types/H5P.QuestionSet.md +++ b/skills/h5p-author/references/types/H5P.QuestionSet.md @@ -47,7 +47,7 @@ A quiz: questions one after another, then a result page with the score. ## Fields of H5P.QuestionSet 1.21 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `introPage` group — Quiz introduction - `showIntroPage` boolean — Display introduction diff --git a/skills/h5p-author/references/types/H5P.Questionnaire.md b/skills/h5p-author/references/types/H5P.Questionnaire.md index 5323757..b925f43 100644 --- a/skills/h5p-author/references/types/H5P.Questionnaire.md +++ b/skills/h5p-author/references/types/H5P.Questionnaire.md @@ -31,7 +31,7 @@ A survey: open questions and multiple-choice questions with no right answer, the ## Fields of H5P.Questionnaire 1.3 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `questionnaireElements` list 1+ of, required — Questionnaire elements - `library` sub-content: H5P.OpenEndedQuestion | H5P.SimpleMultiChoice, required — Library: Choose a library diff --git a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md index 42fd5ad..2026a69 100644 --- a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md +++ b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md @@ -23,7 +23,7 @@ Quick questions, one after another, each with one right answer of two to four; t ## Fields of H5P.SingleChoiceSet 1.11 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `choices` list 1+ of, required — List of questions - `question` html: strong em code, required — Question diff --git a/skills/h5p-author/references/types/H5P.SortParagraphs.md b/skills/h5p-author/references/types/H5P.SortParagraphs.md index f73d54c..6016e3f 100644 --- a/skills/h5p-author/references/types/H5P.SortParagraphs.md +++ b/skills/h5p-author/references/types/H5P.SortParagraphs.md @@ -26,7 +26,7 @@ Paragraphs shown shuffled, which the learner puts in order: steps of a process, ## Fields of H5P.SortParagraphs 0.11 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.Summary.md b/skills/h5p-author/references/types/H5P.Summary.md index 3c78043..606d01d 100644 --- a/skills/h5p-author/references/types/H5P.Summary.md +++ b/skills/h5p-author/references/types/H5P.Summary.md @@ -24,7 +24,7 @@ The learner builds a summary statement by statement, picking the true one from e ## Fields of H5P.Summary 1.10 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `intro` html: strong em u a ul ol h2 h3 hr pre code = "Choose the correct statement." — Introduction text: Will be displayed above the summary task. - `summaries` list 1–100 of, required — Summary diff --git a/skills/h5p-author/references/types/H5P.Timeline.md b/skills/h5p-author/references/types/H5P.Timeline.md index 1c0c18d..3dc827f 100644 --- a/skills/h5p-author/references/types/H5P.Timeline.md +++ b/skills/h5p-author/references/types/H5P.Timeline.md @@ -29,7 +29,7 @@ Events along a time line, each with a date, a headline and a text, browsed in or ## Fields of H5P.Timeline 1.1 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `timeline` group — Timeline - `headline` text, required — Headline: Main timeline heading goes here (first page) diff --git a/skills/h5p-author/references/types/H5P.TrueFalse.md b/skills/h5p-author/references/types/H5P.TrueFalse.md index 746d5ac..4b841c4 100644 --- a/skills/h5p-author/references/types/H5P.TrueFalse.md +++ b/skills/h5p-author/references/types/H5P.TrueFalse.md @@ -26,7 +26,7 @@ One statement the learner marks true or false. ## Fields of H5P.TrueFalse 1.8 -A source names its own `title`, `language`, `license` and `authors` beside `type` and `params`, which holds the fields below: the build refuses one without any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. From 85ca54cde47e49f7722b77de93e1fcca58f3f1b7 Mon Sep 17 00:00:00 2001 From: Aleksandr Shevchuk Date: Wed, 11 Nov 2026 07:51:33 +0200 Subject: [PATCH 3/5] docs(author): the reworded line measured too --- design/author.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/design/author.md b/design/author.md index 6387016..65fb1e0 100644 --- a/design/author.md +++ b/design/author.md @@ -485,7 +485,8 @@ to 3,000. Nineteen things the code does not say by itself: that opens only whole addresses, npm cut off, a user who answers when asked), a Question Set asked for with no author named: with 0.9.1's text two of three runs asked, from the brief's list, and the third wrote "Quiz author" and built; with this text all three asked before - fetching the build tool and built with the name they were given. All six packages play. + fetching the build tool and built with the name they were given, and so did three more runs on + the line as the review reworded it. Every package plays. Not built: editing an existing package, which a tool beside it does with `checkContent` as its check; layout for Drag and Drop and Crossword; and any judgement of whether content is right, which From 60b73464d7a7998b119cbc12a608cd4fce73e40c Mon Sep 17 00:00:00 2001 From: Aleksandr Shevchuk Date: Wed, 11 Nov 2026 10:43:51 +0200 Subject: [PATCH 4/5] fix(author): the skill follows the owner's flow: type, then author and licence or a skip, then the source, then the best build The owner's flow (#184): the content type, chosen with the user; then the author and licence, asked once the type is chosen, which the user fills or skips, a skip taking the name the model knows them by, or "Unknown", and U; then the source; then the build the environment allows best, said to the user. SKILL.md writes the order out before step 1; step 1 proposes the type unless the user named one from the table ("a quiz" names none) and asks for the author on its own after the choice; step 3 opens with the three ways to build. The brief and every content type's file (SOURCE_FIELDS) carry the skip. On Haiku, with a quiz asked for and nothing named: until step 1 said "a quiz" names no type, 4 of 6 runs chose the type themselves; since, 4 of 4 asked the type, then the author, and wrote the given name or "Unknown" and U. Closes #184 --- design/author.md | 24 ++++++++----- packages/author/lib/schema.mjs | 7 ++-- packages/author/tests/layout.test.ts | 3 +- skills/h5p-author/SKILL.md | 34 ++++++++++++++----- skills/h5p-author/references/authoring.md | 7 ++-- .../references/types/H5P.Accordion.md | 2 +- .../h5p-author/references/types/H5P.Audio.md | 2 +- .../h5p-author/references/types/H5P.Blanks.md | 2 +- .../references/types/H5P.BranchingScenario.md | 2 +- .../h5p-author/references/types/H5P.Column.md | 2 +- .../types/H5P.CoursePresentation.md | 2 +- .../references/types/H5P.Dialogcards.md | 2 +- .../references/types/H5P.Dictation.md | 2 +- .../references/types/H5P.DragText.md | 2 +- .../h5p-author/references/types/H5P.Essay.md | 2 +- .../references/types/H5P.GameMap.md | 2 +- .../types/H5P.ImageHotspotQuestion.md | 2 +- .../references/types/H5P.ImageHotspots.md | 2 +- .../references/types/H5P.ImagePair.md | 2 +- .../references/types/H5P.ImageSequencing.md | 2 +- .../references/types/H5P.InteractiveBook.md | 2 +- .../references/types/H5P.InteractiveVideo.md | 2 +- .../references/types/H5P.MarkTheWords.md | 2 +- .../references/types/H5P.MemoryGame.md | 2 +- .../references/types/H5P.MultiChoice.md | 2 +- .../references/types/H5P.MultiMediaChoice.md | 2 +- .../references/types/H5P.QuestionSet.md | 2 +- .../references/types/H5P.Questionnaire.md | 2 +- .../references/types/H5P.SingleChoiceSet.md | 2 +- .../references/types/H5P.SortParagraphs.md | 2 +- .../references/types/H5P.Summary.md | 2 +- .../references/types/H5P.Timeline.md | 2 +- .../references/types/H5P.TrueFalse.md | 2 +- 33 files changed, 79 insertions(+), 52 deletions(-) diff --git a/design/author.md b/design/author.md index 65fb1e0..5292664 100644 --- a/design/author.md +++ b/design/author.md @@ -474,19 +474,25 @@ to 3,000. Nineteen things the code does not say by itself: `license` or `authors` (each built with `params` alone), and each type's own required fields are marked in its file's Fields section; but every type file's example is `type` and `params`, and since #180 a chat reads it. Of the four, only the author has nothing to fall back on: the - language comes from the request, the licence is `U`. The owner's call: the model asks for the - author's name once, up front, with the type, and writes none it made up. So step 1 of - `SKILL.md` asks before the source is written, step 2's first point says every source names the - four, and `schemaMarkdown` writes the same under each content type's Fields heading + language comes from the request, the licence is `U`. The owner's flow, the same day: the + content type, chosen with the user; then the author and licence, asked once the type is chosen, + which the user gives or skips, a skip taking the name the model knows them by, or "Unknown", + and `U`, never a name made up; then the source; then the build the environment allows best, + said to the user. So `SKILL.md` names that order before step 1, step 1 asks for the type and + then the author and licence, step 2's first point says every source names the four, step 3 + opens with the three ways to build and what each needs (npm here, two files here, the build + page in the user's browser, with no attempt here first where nothing runs or fetches), and `schemaMarkdown` writes the same under each content type's Fields heading (`SOURCE_FIELDS`; not a part's, which is sub-content), for a chat that has the type file alone, as the build page hands it over. It says the example is `type` and `params` alone rather than the example holding the four: a name written in an example would be copied as the author and build, where the model is to ask. Measured on Haiku in the chat stand-in (a fetch tool - that opens only whole addresses, npm cut off, a user who answers when asked), a Question Set - asked for with no author named: with 0.9.1's text two of three runs asked, from the brief's - list, and the third wrote "Quiz author" and built; with this text all three asked before - fetching the build tool and built with the name they were given, and so did three more runs on - the line as the review reworded it. Every package plays. + that opens only whole addresses, npm cut off, a scripted user who answers when asked): with + 0.9.1's text and a Question Set named, two of three runs asked for the author, from the brief's + list, and the third wrote "Quiz author" and built. With the flow, a quiz asked for and neither + type nor author named: until step 1 said that "a quiz" names no type, four of six runs chose + the Question Set themselves, three of them asking for the author in the same message; since, + all four proposed two types and waited, then asked for the author and licence on their own, + and wrote the name given or, on a skip, "Unknown" and `U`. Every package plays. Not built: editing an existing package, which a tool beside it does with `checkContent` as its check; layout for Drag and Drop and Crossword; and any judgement of whether content is right, which diff --git a/packages/author/lib/schema.mjs b/packages/author/lib/schema.mjs index 65b3b6c..b23bc61 100644 --- a/packages/author/lib/schema.mjs +++ b/packages/author/lib/schema.mjs @@ -224,10 +224,11 @@ export function withSection(text, section, name) { * What a source of any content type names beside its fields. A type file's example shows only * `type` and `params`, and a chat that copies it left the author out, the one of them it has no * value of its own for (#182). The example says so here rather than holding them: a name written - * in it would be copied as the author and build, where the model is to ask. A part other content - * holds has none: it is sub-content. + * in it would be copied as the author and build, where the model is to ask, and on a skip to + * write the name it knows the user by, or "Unknown". A part other content holds has none: it is + * sub-content. */ -export const SOURCE_FIELDS = 'The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author\'s name is the user\'s to give: ask for it when they have not.' +export const SOURCE_FIELDS = 'The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author\'s name and the licence are the user\'s: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`.' /** * The generated section of a type file: the fields, under a heading, between markers that a diff --git a/packages/author/tests/layout.test.ts b/packages/author/tests/layout.test.ts index a2fa8ab..b80d2ff 100644 --- a/packages/author/tests/layout.test.ts +++ b/packages/author/tests/layout.test.ts @@ -283,7 +283,8 @@ describe('the schema a source is written from', () => { for (const field of ['`title`', '`language`', '`license`', '`authors`']) expect(SOURCE_FIELDS).toContain(field) expect(SOURCE_FIELDS).toContain('all four required') expect(SOURCE_FIELDS).toContain('The example is `type` and `params` alone') - expect(SOURCE_FIELDS).toContain('ask for it') + expect(SOURCE_FIELDS).toContain('ask for them') + expect(SOURCE_FIELDS).toContain('or "Unknown", and `U`') expect(schemaMarkdown({ machineName: 'H5P.Test', majorVersion: 1, minorVersion: 2, runnable: 0 }, semantics)).not.toContain(SOURCE_FIELDS) }) }) diff --git a/skills/h5p-author/SKILL.md b/skills/h5p-author/SKILL.md index bc0785c..b8e1f90 100644 --- a/skills/h5p-author/SKILL.md +++ b/skills/h5p-author/SKILL.md @@ -17,15 +17,21 @@ With this text alone and none of its files beside it, open https://missing-eleme first and take every address from it: it writes out in full each file this text names and each file step 3 fetches, and a fetch tool may refuse an address put together from a name. -## 1. Choose the content type with the user +Work in this order, one question at a time: the content type, chosen with the user; then the +author and licence, which they give or skip; then the source; then the build, the best way this +environment allows. -Read [the brief](./references/authoring.md) once. If the user named no type, propose one or -two that fit the material and objective, a sentence each on why, and wait for their choice. +## 1. Choose the content type, then the author and licence, with the user -If they gave no author's name, ask for it before you write the source, with the licence (`U` -when they do not know it): in the reply that proposes the type, or in one of its own. Every -source names its author, the build refuses one without, and the name is theirs to give, never -one you make up. Ask once, and wait. +Read [the brief](./references/authoring.md) once. Unless the user named a type from the table +below, propose one or two that fit the material and objective, a sentence each on why, ask them +to choose, and wait: "a quiz" or "flash cards" says what they want, not which type. Ask nothing +else in that message. + +Once they have chosen, ask in a message of its own for the author's name and the licence, unless +they gave both, and say they may skip it; then wait. A skip takes the name you know them by, or "Unknown", and +the licence `U` (undisclosed). Every source names its author and the build refuses one without, +but never write a name made up for them. | Type | Use it for | |---|---| @@ -81,7 +87,8 @@ from what you know of the type: the build says, for each place that is wrong, wh ``` - Every source names its own `title`, `language`, `license` and `authors` beside `type` and - `params`, as above, whatever a type file's example leaves out; the author is the user's. + `params`, as above, whatever a type file's example leaves out; the author and licence are the + ones step 1 settled. - `params` holds only fields that differ from their defaults. Never interface texts (Check, Retry…): they come from the libraries' translations for `language`. - Text is plain, or markup with only the tags a field marked `html` lists. @@ -94,6 +101,17 @@ from what you know of the type: the build says, for each place that is wrong, wh ## 3. Build +Build the best way this environment allows, and tell the user which you take: + +- **Here, with npm**: a shell that reaches the npm registry (Claude Code, a terminal). The + command below. +- **Here, from two files**: Node runs and files can be fetched, but npm cannot install, as in + ChatGPT. *If it cannot install here*, below. +- **In the user's browser**: nothing here runs, or nothing fetches, as in Gemini or a chat with + no tools. *The build page*, below, with no attempt here first. + +Take the first that applies, and the next if it fails. + Build in a working folder of your own, not in the folder the user named: ```bash diff --git a/skills/h5p-author/references/authoring.md b/skills/h5p-author/references/authoring.md index ffff105..7194b79 100644 --- a/skills/h5p-author/references/authoring.md +++ b/skills/h5p-author/references/authoring.md @@ -13,11 +13,12 @@ Use what the user already gave. Ask for what is missing and matters: texts too, from their own translations, which are often incomplete. - **Media**, for a type that needs them: files the user has, or web addresses they may use, with who made them and under which licence. -- **Author and licence**: the author's name, which every source needs and only the user can - give (never make one up), and the licence for the whole, an H5P code: `U` +- **Author and licence**, asked once the type is chosen: the author's name, which every source + needs, and the licence for the whole, an H5P code: `U` (undisclosed, when unknown), `CC BY`, `CC BY-SA`, `CC BY-ND`, `CC BY-NC`, `CC BY-NC-SA`, `CC BY-NC-ND`, `CC0 1.0`, `CC PDM`, `GNU GPL`, `PD`, `ODC PDDL` or `C`; `licenseVersion` - `4.0` for a CC BY one. Never choose a licence the user has not. + `4.0` for a CC BY one. The user may skip them: then the name you know them by, or "Unknown", + and `U`. Never make up a name, or choose a licence the user has not. - **A pass mark**, for scored content an LMS records, and what a learner who passes or fails is told. - **Where it goes**: an LMS, a website, a file to hand out. diff --git a/skills/h5p-author/references/types/H5P.Accordion.md b/skills/h5p-author/references/types/H5P.Accordion.md index 1a36e47..efd1869 100644 --- a/skills/h5p-author/references/types/H5P.Accordion.md +++ b/skills/h5p-author/references/types/H5P.Accordion.md @@ -22,7 +22,7 @@ Text in panels that open on a click, for reference material a learner looks up. ## Fields of H5P.Accordion 1.0 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `panels` list 1–100 of, required — Panels - `title` text, required — Title diff --git a/skills/h5p-author/references/types/H5P.Audio.md b/skills/h5p-author/references/types/H5P.Audio.md index d1f7540..2c916bc 100644 --- a/skills/h5p-author/references/types/H5P.Audio.md +++ b/skills/h5p-author/references/types/H5P.Audio.md @@ -18,7 +18,7 @@ An audio player. On its own it suits a listening task beside other content; in a ## Fields of H5P.Audio 1.5 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `files` audio files, required — Source files - `playerMode` one of "minimalistic" | "full" | "transparent" = "minimalistic" — Player mode: Select the layout of the player. diff --git a/skills/h5p-author/references/types/H5P.Blanks.md b/skills/h5p-author/references/types/H5P.Blanks.md index dc67d00..eb03727 100644 --- a/skills/h5p-author/references/types/H5P.Blanks.md +++ b/skills/h5p-author/references/types/H5P.Blanks.md @@ -26,7 +26,7 @@ Text with gaps the learner types the missing words into. For recall of exact wor ## Fields of H5P.Blanks 1.14 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.BranchingScenario.md b/skills/h5p-author/references/types/H5P.BranchingScenario.md index 835d5cf..0a9ecaa 100644 --- a/skills/h5p-author/references/types/H5P.BranchingScenario.md +++ b/skills/h5p-author/references/types/H5P.BranchingScenario.md @@ -38,7 +38,7 @@ A story in which the learner's choices lead to different paths and endings: deci ## Fields of H5P.BranchingScenario 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `branchingScenario` group — Branching Scenario Editor - `title` text, required — Title diff --git a/skills/h5p-author/references/types/H5P.Column.md b/skills/h5p-author/references/types/H5P.Column.md index 5399705..957d57e 100644 --- a/skills/h5p-author/references/types/H5P.Column.md +++ b/skills/h5p-author/references/types/H5P.Column.md @@ -24,7 +24,7 @@ A page of content one below another: text, pictures, video and questions, in the ## Fields of H5P.Column 1.22 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `content` list 1+ of, required — List of Column Content - `content` sub-content: H5P.Accordion | H5P.Agamotto | H5P.Audio | H5P.AudioRecorder | H5P.Blanks | H5P.Chart | H5P.Collage | H5P.CoursePresentation | H5P.Dialogcards | H5P.DocumentationTool | H5P.DragQuestion | H5P.DragText | H5P.Essay | H5P.GuessTheAnswer | H5P.Table | H5P.AdvancedText | H5P.IFrameEmbed | H5P.Image | H5P.ImageHotspots | H5P.ImageHotspotQuestion | H5P.ImageSlider | H5P.InteractiveVideo | H5P.Link | H5P.MarkTheWords | H5P.MemoryGame | H5P.MultiChoice | H5P.Questionnaire | H5P.QuestionSet | H5P.Row | H5P.SingleChoiceSet | H5P.Summary | H5P.Timeline | H5P.TrueFalse | H5P.Video | H5P.MultiMediaChoice, required — Content diff --git a/skills/h5p-author/references/types/H5P.CoursePresentation.md b/skills/h5p-author/references/types/H5P.CoursePresentation.md index ab24266..9c61a0a 100644 --- a/skills/h5p-author/references/types/H5P.CoursePresentation.md +++ b/skills/h5p-author/references/types/H5P.CoursePresentation.md @@ -38,7 +38,7 @@ Slides with text, pictures, video and questions; a summary slide with the score ## Fields of H5P.CoursePresentation 1.27 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `presentation` group - `slides` list of diff --git a/skills/h5p-author/references/types/H5P.Dialogcards.md b/skills/h5p-author/references/types/H5P.Dialogcards.md index ee1bab0..6306748 100644 --- a/skills/h5p-author/references/types/H5P.Dialogcards.md +++ b/skills/h5p-author/references/types/H5P.Dialogcards.md @@ -24,7 +24,7 @@ Flash cards: a prompt on the front, the answer on the back, turned by the learne ## Fields of H5P.Dialogcards 1.9 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `title` html: strong em code — Heading - `mode` one of "normal" | "repetition" = "normal" — Mode: Mode of presenting the dialog cards diff --git a/skills/h5p-author/references/types/H5P.Dictation.md b/skills/h5p-author/references/types/H5P.Dictation.md index 0003580..20bf759 100644 --- a/skills/h5p-author/references/types/H5P.Dictation.md +++ b/skills/h5p-author/references/types/H5P.Dictation.md @@ -25,7 +25,7 @@ The learner hears sentences and types them; the content compares what was typed ## Fields of H5P.Dictation 1.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.DragText.md b/skills/h5p-author/references/types/H5P.DragText.md index d9b3326..2b9a5a1 100644 --- a/skills/h5p-author/references/types/H5P.DragText.md +++ b/skills/h5p-author/references/types/H5P.DragText.md @@ -23,7 +23,7 @@ Text with gaps the learner fills by dragging words from a list. Easier than typi ## Fields of H5P.DragText 1.10 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.Essay.md b/skills/h5p-author/references/types/H5P.Essay.md index 79d1ad7..7ac862d 100644 --- a/skills/h5p-author/references/types/H5P.Essay.md +++ b/skills/h5p-author/references/types/H5P.Essay.md @@ -27,7 +27,7 @@ The learner writes a text, scored by the keywords it contains, with feedback per ## Fields of H5P.Essay 1.5 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.GameMap.md b/skills/h5p-author/references/types/H5P.GameMap.md index 266cea9..91aa40a 100644 --- a/skills/h5p-author/references/types/H5P.GameMap.md +++ b/skills/h5p-author/references/types/H5P.GameMap.md @@ -40,7 +40,7 @@ A map with stages, each holding exercises; finishing a stage opens the stages jo ## Fields of H5P.GameMap 1.5 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `showTitleScreen` boolean = false — Show title screen - `titleScreen` group — Title screen diff --git a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md index 4608ef8..650c04f 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md @@ -31,7 +31,7 @@ A picture in which the learner clicks the right area: a part of a diagram, a pla ## Fields of H5P.ImageHotspotQuestion 1.8 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `imageHotspotQuestion` group — Image Hotspot Question Editor - `backgroundImageSettings` image file, required — Background image diff --git a/skills/h5p-author/references/types/H5P.ImageHotspots.md b/skills/h5p-author/references/types/H5P.ImageHotspots.md index 46f1df0..658c9e3 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspots.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspots.md @@ -26,7 +26,7 @@ A picture with spots that open text, a picture, audio or video when clicked: a l ## Fields of H5P.ImageHotspots 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `image` image file, required — Background image - `backgroundImageAltText` text — Alternative text for background image: If the browser can't load the image this text will be displayed instead. Also used by assistive technologies. diff --git a/skills/h5p-author/references/types/H5P.ImagePair.md b/skills/h5p-author/references/types/H5P.ImagePair.md index 1ffcb2a..8e03e6f 100644 --- a/skills/h5p-author/references/types/H5P.ImagePair.md +++ b/skills/h5p-author/references/types/H5P.ImagePair.md @@ -24,7 +24,7 @@ Two columns of pictures; the learner drags each one on the left onto its match o ## Fields of H5P.ImagePair 1.4 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `taskDescription` text = "Drag images from the left to match them with… — Task Description: A guide telling the user how to solve this task. - `cards` list 2–100 of, required — Cards diff --git a/skills/h5p-author/references/types/H5P.ImageSequencing.md b/skills/h5p-author/references/types/H5P.ImageSequencing.md index 698a09c..083487f 100644 --- a/skills/h5p-author/references/types/H5P.ImageSequencing.md +++ b/skills/h5p-author/references/types/H5P.ImageSequencing.md @@ -24,7 +24,7 @@ Pictures shown shuffled, which the learner puts in order: stages of a process, a ## Fields of H5P.ImageSequencing 1.1 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `taskDescription` text = "Drag to arrange the images in the correct se… — Task Description: A guide telling the user how to solve this task. - `altTaskDescription` text = "Make the following list be ordered correctly… — Alternate Task Description: A guide intended for visually impaired users on how to solve this task. diff --git a/skills/h5p-author/references/types/H5P.InteractiveBook.md b/skills/h5p-author/references/types/H5P.InteractiveBook.md index 21b7549..986f491 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveBook.md +++ b/skills/h5p-author/references/types/H5P.InteractiveBook.md @@ -32,7 +32,7 @@ A book of chapters with a table of contents, each chapter a page of text, media ## Fields of H5P.InteractiveBook 1.15 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `showCoverPage` boolean = false — Enable book cover - `bookCover` group; only when showCoverPage is true — Cover Page diff --git a/skills/h5p-author/references/types/H5P.InteractiveVideo.md b/skills/h5p-author/references/types/H5P.InteractiveVideo.md index 722dbd9..f5607db 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveVideo.md +++ b/skills/h5p-author/references/types/H5P.InteractiveVideo.md @@ -38,7 +38,7 @@ A video with questions, text and links appearing over it at set times, a bookmar ## Fields of H5P.InteractiveVideo 1.28 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `interactiveVideo` group — Interactive Video Editor - `video` group — Upload/embed video diff --git a/skills/h5p-author/references/types/H5P.MarkTheWords.md b/skills/h5p-author/references/types/H5P.MarkTheWords.md index 4a12fea..3ec7364 100644 --- a/skills/h5p-author/references/types/H5P.MarkTheWords.md +++ b/skills/h5p-author/references/types/H5P.MarkTheWords.md @@ -21,7 +21,7 @@ A text in which the learner clicks the words that fit a rule: every verb, every ## Fields of H5P.MarkTheWords 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.MemoryGame.md b/skills/h5p-author/references/types/H5P.MemoryGame.md index 979ffd2..ece2a51 100644 --- a/skills/h5p-author/references/types/H5P.MemoryGame.md +++ b/skills/h5p-author/references/types/H5P.MemoryGame.md @@ -24,7 +24,7 @@ Cards face down, turned two at a time, until every pair is found. ## Fields of H5P.MemoryGame 1.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `cards` list 2–100 of, required — Cards - `image` image file, required — Image diff --git a/skills/h5p-author/references/types/H5P.MultiChoice.md b/skills/h5p-author/references/types/H5P.MultiChoice.md index dffc9ba..7534e26 100644 --- a/skills/h5p-author/references/types/H5P.MultiChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiChoice.md @@ -28,7 +28,7 @@ One question, two or more answers, one or several of them correct, with feedback ## Fields of H5P.MultiChoice 1.16 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md index 28f02ab..f296432 100644 --- a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md @@ -24,7 +24,7 @@ A multiple-choice question whose answers are pictures. ## Fields of H5P.MultiMediaChoice 0.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.QuestionSet.md b/skills/h5p-author/references/types/H5P.QuestionSet.md index ea8b9f2..cd500e0 100644 --- a/skills/h5p-author/references/types/H5P.QuestionSet.md +++ b/skills/h5p-author/references/types/H5P.QuestionSet.md @@ -47,7 +47,7 @@ A quiz: questions one after another, then a result page with the score. ## Fields of H5P.QuestionSet 1.21 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `introPage` group — Quiz introduction - `showIntroPage` boolean — Display introduction diff --git a/skills/h5p-author/references/types/H5P.Questionnaire.md b/skills/h5p-author/references/types/H5P.Questionnaire.md index b925f43..89d9c62 100644 --- a/skills/h5p-author/references/types/H5P.Questionnaire.md +++ b/skills/h5p-author/references/types/H5P.Questionnaire.md @@ -31,7 +31,7 @@ A survey: open questions and multiple-choice questions with no right answer, the ## Fields of H5P.Questionnaire 1.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `questionnaireElements` list 1+ of, required — Questionnaire elements - `library` sub-content: H5P.OpenEndedQuestion | H5P.SimpleMultiChoice, required — Library: Choose a library diff --git a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md index 2026a69..13262e5 100644 --- a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md +++ b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md @@ -23,7 +23,7 @@ Quick questions, one after another, each with one right answer of two to four; t ## Fields of H5P.SingleChoiceSet 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `choices` list 1+ of, required — List of questions - `question` html: strong em code, required — Question diff --git a/skills/h5p-author/references/types/H5P.SortParagraphs.md b/skills/h5p-author/references/types/H5P.SortParagraphs.md index 6016e3f..d0f7d23 100644 --- a/skills/h5p-author/references/types/H5P.SortParagraphs.md +++ b/skills/h5p-author/references/types/H5P.SortParagraphs.md @@ -26,7 +26,7 @@ Paragraphs shown shuffled, which the learner puts in order: steps of a process, ## Fields of H5P.SortParagraphs 0.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.Summary.md b/skills/h5p-author/references/types/H5P.Summary.md index 606d01d..c82bce1 100644 --- a/skills/h5p-author/references/types/H5P.Summary.md +++ b/skills/h5p-author/references/types/H5P.Summary.md @@ -24,7 +24,7 @@ The learner builds a summary statement by statement, picking the true one from e ## Fields of H5P.Summary 1.10 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `intro` html: strong em u a ul ol h2 h3 hr pre code = "Choose the correct statement." — Introduction text: Will be displayed above the summary task. - `summaries` list 1–100 of, required — Summary diff --git a/skills/h5p-author/references/types/H5P.Timeline.md b/skills/h5p-author/references/types/H5P.Timeline.md index 3dc827f..2978872 100644 --- a/skills/h5p-author/references/types/H5P.Timeline.md +++ b/skills/h5p-author/references/types/H5P.Timeline.md @@ -29,7 +29,7 @@ Events along a time line, each with a date, a headline and a text, browsed in or ## Fields of H5P.Timeline 1.1 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `timeline` group — Timeline - `headline` text, required — Headline: Main timeline heading goes here (first page) diff --git a/skills/h5p-author/references/types/H5P.TrueFalse.md b/skills/h5p-author/references/types/H5P.TrueFalse.md index 4b841c4..24c429f 100644 --- a/skills/h5p-author/references/types/H5P.TrueFalse.md +++ b/skills/h5p-author/references/types/H5P.TrueFalse.md @@ -26,7 +26,7 @@ One statement the learner marks true or false. ## Fields of H5P.TrueFalse 1.8 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name is the user's to give: ask for it when they have not. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. From bf9d0be2f95354d378fa9e7918a0123a9d0b3614 Mon Sep 17 00:00:00 2001 From: Aleksandr Shevchuk Date: Wed, 11 Nov 2026 11:19:31 +0200 Subject: [PATCH 5/5] fix(author): a skip is each value's own: only what is missing is asked for, and what the user gave stays cubic's review of #183: the skip was written for the author and the licence at once ("a skip takes the name you know them by, or "Unknown", and the licence U"), so a user who gives a name and skips the licence could have the name replaced, and step 1 asked for both again when one was given. SKILL.md's step 1, the brief and SOURCE_FIELDS (so the 28 content types' files) now ask only for what the user has not given, say what they gave stays, and give each skipped value its own default: the name the model knows them by, or "Unknown"; the licence U. Haiku, in the chat stand-in: the old text did not go wrong in three runs (a name and no licence, a licence and no name, the author named in the request and the licence skipped). The new text, five of five (those three, both skipped, both given): what was given is written, the default for what was skipped, and with the author named in the request only the licence is asked for. All eight packages pass h5p-verify. --- design/author.md | 23 ++++++++++++++----- packages/author/lib/schema.mjs | 9 ++++---- packages/author/tests/layout.test.ts | 5 ++-- skills/h5p-author/SKILL.md | 9 ++++---- skills/h5p-author/references/authoring.md | 5 ++-- .../references/types/H5P.Accordion.md | 2 +- .../h5p-author/references/types/H5P.Audio.md | 2 +- .../h5p-author/references/types/H5P.Blanks.md | 2 +- .../references/types/H5P.BranchingScenario.md | 2 +- .../h5p-author/references/types/H5P.Column.md | 2 +- .../types/H5P.CoursePresentation.md | 2 +- .../references/types/H5P.Dialogcards.md | 2 +- .../references/types/H5P.Dictation.md | 2 +- .../references/types/H5P.DragText.md | 2 +- .../h5p-author/references/types/H5P.Essay.md | 2 +- .../references/types/H5P.GameMap.md | 2 +- .../types/H5P.ImageHotspotQuestion.md | 2 +- .../references/types/H5P.ImageHotspots.md | 2 +- .../references/types/H5P.ImagePair.md | 2 +- .../references/types/H5P.ImageSequencing.md | 2 +- .../references/types/H5P.InteractiveBook.md | 2 +- .../references/types/H5P.InteractiveVideo.md | 2 +- .../references/types/H5P.MarkTheWords.md | 2 +- .../references/types/H5P.MemoryGame.md | 2 +- .../references/types/H5P.MultiChoice.md | 2 +- .../references/types/H5P.MultiMediaChoice.md | 2 +- .../references/types/H5P.QuestionSet.md | 2 +- .../references/types/H5P.Questionnaire.md | 2 +- .../references/types/H5P.SingleChoiceSet.md | 2 +- .../references/types/H5P.SortParagraphs.md | 2 +- .../references/types/H5P.Summary.md | 2 +- .../references/types/H5P.Timeline.md | 2 +- .../references/types/H5P.TrueFalse.md | 2 +- 33 files changed, 61 insertions(+), 46 deletions(-) diff --git a/design/author.md b/design/author.md index 5292664..05ce3a6 100644 --- a/design/author.md +++ b/design/author.md @@ -476,12 +476,14 @@ to 3,000. Nineteen things the code does not say by itself: and since #180 a chat reads it. Of the four, only the author has nothing to fall back on: the language comes from the request, the licence is `U`. The owner's flow, the same day: the content type, chosen with the user; then the author and licence, asked once the type is chosen, - which the user gives or skips, a skip taking the name the model knows them by, or "Unknown", - and `U`, never a name made up; then the source; then the build the environment allows best, - said to the user. So `SKILL.md` names that order before step 1, step 1 asks for the type and - then the author and licence, step 2's first point says every source names the four, step 3 + which the user gives or skips, each on its own: a name they skip is the one the model knows + them by, or "Unknown", a licence they skip `U`, what they gave stays, and never a name made + up; then the source; then the build the environment allows best, said to the user. So + `SKILL.md` names that order before step 1, step 1 asks for the type and then the author and + licence, step 2's first point says every source names the four, step 3 opens with the three ways to build and what each needs (npm here, two files here, the build - page in the user's browser, with no attempt here first where nothing runs or fetches), and `schemaMarkdown` writes the same under each content type's Fields heading + page in the user's browser, with no attempt here first where nothing runs or fetches), and + `schemaMarkdown` writes the same under each content type's Fields heading (`SOURCE_FIELDS`; not a part's, which is sub-content), for a chat that has the type file alone, as the build page hands it over. It says the example is `type` and `params` alone rather than the example holding the four: a name written in an example would be copied as the author @@ -492,7 +494,16 @@ to 3,000. Nineteen things the code does not say by itself: type nor author named: until step 1 said that "a quiz" names no type, four of six runs chose the Question Set themselves, three of them asking for the author in the same message; since, all four proposed two types and waited, then asked for the author and licence on their own, - and wrote the name given or, on a skip, "Unknown" and `U`. Every package plays. + and wrote the name given or, on a skip, "Unknown" and `U`. Every package plays. The skip was + first written for both at once ("a skip takes the name you know them by, or "Unknown", and + the licence `U`"), which cubic's review of #183 read as replacing a name the user gave when + they skip only the licence. Haiku did not read it so: three runs on that text (a name and no + licence, a licence and no name, the author named in the request and the licence skipped) kept + what was given. It is written out all the same, each on its own and only what is missing asked + for, so that no reader has to guess: on the new text five of five runs (those three, both + skipped, both given) wrote what was given and the default for what was skipped, and the run + with the author named in the request asked for the licence alone. Those eight packages play + too. Not built: editing an existing package, which a tool beside it does with `checkContent` as its check; layout for Drag and Drop and Crossword; and any judgement of whether content is right, which diff --git a/packages/author/lib/schema.mjs b/packages/author/lib/schema.mjs index b23bc61..e50c3ea 100644 --- a/packages/author/lib/schema.mjs +++ b/packages/author/lib/schema.mjs @@ -224,11 +224,12 @@ export function withSection(text, section, name) { * What a source of any content type names beside its fields. A type file's example shows only * `type` and `params`, and a chat that copies it left the author out, the one of them it has no * value of its own for (#182). The example says so here rather than holding them: a name written - * in it would be copied as the author and build, where the model is to ask, and on a skip to - * write the name it knows the user by, or "Unknown". A part other content holds has none: it is - * sub-content. + * in it would be copied as the author and build, where the model is to ask for what the user + * has not given, and to write for a name they skip the one it knows them by, or "Unknown", and + * for a licence they skip `U`, each on its own: what they gave stays. A part other content + * holds has none: it is sub-content. */ -export const SOURCE_FIELDS = 'The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author\'s name and the licence are the user\'s: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`.' +export const SOURCE_FIELDS = 'The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author\'s name and the licence are the user\'s: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`.' /** * The generated section of a type file: the fields, under a heading, between markers that a diff --git a/packages/author/tests/layout.test.ts b/packages/author/tests/layout.test.ts index b80d2ff..7c5803f 100644 --- a/packages/author/tests/layout.test.ts +++ b/packages/author/tests/layout.test.ts @@ -283,8 +283,9 @@ describe('the schema a source is written from', () => { for (const field of ['`title`', '`language`', '`license`', '`authors`']) expect(SOURCE_FIELDS).toContain(field) expect(SOURCE_FIELDS).toContain('all four required') expect(SOURCE_FIELDS).toContain('The example is `type` and `params` alone') - expect(SOURCE_FIELDS).toContain('ask for them') - expect(SOURCE_FIELDS).toContain('or "Unknown", and `U`') + expect(SOURCE_FIELDS).toContain('ask for what they have not given') + expect(SOURCE_FIELDS).toContain('For a name they skip, write the one you know them by, or "Unknown"') + expect(SOURCE_FIELDS).toContain('for a licence they skip, `U`') expect(schemaMarkdown({ machineName: 'H5P.Test', majorVersion: 1, minorVersion: 2, runnable: 0 }, semantics)).not.toContain(SOURCE_FIELDS) }) }) diff --git a/skills/h5p-author/SKILL.md b/skills/h5p-author/SKILL.md index b8e1f90..00f13a7 100644 --- a/skills/h5p-author/SKILL.md +++ b/skills/h5p-author/SKILL.md @@ -28,10 +28,11 @@ below, propose one or two that fit the material and objective, a sentence each o to choose, and wait: "a quiz" or "flash cards" says what they want, not which type. Ask nothing else in that message. -Once they have chosen, ask in a message of its own for the author's name and the licence, unless -they gave both, and say they may skip it; then wait. A skip takes the name you know them by, or "Unknown", and -the licence `U` (undisclosed). Every source names its author and the build refuses one without, -but never write a name made up for them. +Once they have chosen, ask in a message of its own for the author's name and the licence, only +for what they have not given yet, and say they may skip; then wait. What they gave stays as they +gave it. A name they skip is the one you know them by, or "Unknown"; a licence they skip is `U` +(undisclosed). Every source names its author and the build refuses one without, but never write +a name made up for them. | Type | Use it for | |---|---| diff --git a/skills/h5p-author/references/authoring.md b/skills/h5p-author/references/authoring.md index 7194b79..3fa47c2 100644 --- a/skills/h5p-author/references/authoring.md +++ b/skills/h5p-author/references/authoring.md @@ -17,8 +17,9 @@ Use what the user already gave. Ask for what is missing and matters: needs, and the licence for the whole, an H5P code: `U` (undisclosed, when unknown), `CC BY`, `CC BY-SA`, `CC BY-ND`, `CC BY-NC`, `CC BY-NC-SA`, `CC BY-NC-ND`, `CC0 1.0`, `CC PDM`, `GNU GPL`, `PD`, `ODC PDDL` or `C`; `licenseVersion` - `4.0` for a CC BY one. The user may skip them: then the name you know them by, or "Unknown", - and `U`. Never make up a name, or choose a licence the user has not. + `4.0` for a CC BY one. The user may skip either: a name they skip is the one you know them + by, or "Unknown", and a licence they skip is `U`. What they gave stays. Never make up a name, + or choose a licence the user has not. - **A pass mark**, for scored content an LMS records, and what a learner who passes or fails is told. - **Where it goes**: an LMS, a website, a file to hand out. diff --git a/skills/h5p-author/references/types/H5P.Accordion.md b/skills/h5p-author/references/types/H5P.Accordion.md index efd1869..809a62a 100644 --- a/skills/h5p-author/references/types/H5P.Accordion.md +++ b/skills/h5p-author/references/types/H5P.Accordion.md @@ -22,7 +22,7 @@ Text in panels that open on a click, for reference material a learner looks up. ## Fields of H5P.Accordion 1.0 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `panels` list 1–100 of, required — Panels - `title` text, required — Title diff --git a/skills/h5p-author/references/types/H5P.Audio.md b/skills/h5p-author/references/types/H5P.Audio.md index 2c916bc..23baa72 100644 --- a/skills/h5p-author/references/types/H5P.Audio.md +++ b/skills/h5p-author/references/types/H5P.Audio.md @@ -18,7 +18,7 @@ An audio player. On its own it suits a listening task beside other content; in a ## Fields of H5P.Audio 1.5 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `files` audio files, required — Source files - `playerMode` one of "minimalistic" | "full" | "transparent" = "minimalistic" — Player mode: Select the layout of the player. diff --git a/skills/h5p-author/references/types/H5P.Blanks.md b/skills/h5p-author/references/types/H5P.Blanks.md index eb03727..6567efe 100644 --- a/skills/h5p-author/references/types/H5P.Blanks.md +++ b/skills/h5p-author/references/types/H5P.Blanks.md @@ -26,7 +26,7 @@ Text with gaps the learner types the missing words into. For recall of exact wor ## Fields of H5P.Blanks 1.14 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.BranchingScenario.md b/skills/h5p-author/references/types/H5P.BranchingScenario.md index 0a9ecaa..9295eb1 100644 --- a/skills/h5p-author/references/types/H5P.BranchingScenario.md +++ b/skills/h5p-author/references/types/H5P.BranchingScenario.md @@ -38,7 +38,7 @@ A story in which the learner's choices lead to different paths and endings: deci ## Fields of H5P.BranchingScenario 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `branchingScenario` group — Branching Scenario Editor - `title` text, required — Title diff --git a/skills/h5p-author/references/types/H5P.Column.md b/skills/h5p-author/references/types/H5P.Column.md index 957d57e..26bb70a 100644 --- a/skills/h5p-author/references/types/H5P.Column.md +++ b/skills/h5p-author/references/types/H5P.Column.md @@ -24,7 +24,7 @@ A page of content one below another: text, pictures, video and questions, in the ## Fields of H5P.Column 1.22 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `content` list 1+ of, required — List of Column Content - `content` sub-content: H5P.Accordion | H5P.Agamotto | H5P.Audio | H5P.AudioRecorder | H5P.Blanks | H5P.Chart | H5P.Collage | H5P.CoursePresentation | H5P.Dialogcards | H5P.DocumentationTool | H5P.DragQuestion | H5P.DragText | H5P.Essay | H5P.GuessTheAnswer | H5P.Table | H5P.AdvancedText | H5P.IFrameEmbed | H5P.Image | H5P.ImageHotspots | H5P.ImageHotspotQuestion | H5P.ImageSlider | H5P.InteractiveVideo | H5P.Link | H5P.MarkTheWords | H5P.MemoryGame | H5P.MultiChoice | H5P.Questionnaire | H5P.QuestionSet | H5P.Row | H5P.SingleChoiceSet | H5P.Summary | H5P.Timeline | H5P.TrueFalse | H5P.Video | H5P.MultiMediaChoice, required — Content diff --git a/skills/h5p-author/references/types/H5P.CoursePresentation.md b/skills/h5p-author/references/types/H5P.CoursePresentation.md index 9c61a0a..1689745 100644 --- a/skills/h5p-author/references/types/H5P.CoursePresentation.md +++ b/skills/h5p-author/references/types/H5P.CoursePresentation.md @@ -38,7 +38,7 @@ Slides with text, pictures, video and questions; a summary slide with the score ## Fields of H5P.CoursePresentation 1.27 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `presentation` group - `slides` list of diff --git a/skills/h5p-author/references/types/H5P.Dialogcards.md b/skills/h5p-author/references/types/H5P.Dialogcards.md index 6306748..6fbc514 100644 --- a/skills/h5p-author/references/types/H5P.Dialogcards.md +++ b/skills/h5p-author/references/types/H5P.Dialogcards.md @@ -24,7 +24,7 @@ Flash cards: a prompt on the front, the answer on the back, turned by the learne ## Fields of H5P.Dialogcards 1.9 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `title` html: strong em code — Heading - `mode` one of "normal" | "repetition" = "normal" — Mode: Mode of presenting the dialog cards diff --git a/skills/h5p-author/references/types/H5P.Dictation.md b/skills/h5p-author/references/types/H5P.Dictation.md index 20bf759..29f33e3 100644 --- a/skills/h5p-author/references/types/H5P.Dictation.md +++ b/skills/h5p-author/references/types/H5P.Dictation.md @@ -25,7 +25,7 @@ The learner hears sentences and types them; the content compares what was typed ## Fields of H5P.Dictation 1.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.DragText.md b/skills/h5p-author/references/types/H5P.DragText.md index 2b9a5a1..6f31520 100644 --- a/skills/h5p-author/references/types/H5P.DragText.md +++ b/skills/h5p-author/references/types/H5P.DragText.md @@ -23,7 +23,7 @@ Text with gaps the learner fills by dragging words from a list. Easier than typi ## Fields of H5P.DragText 1.10 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.Essay.md b/skills/h5p-author/references/types/H5P.Essay.md index 7ac862d..8e0611d 100644 --- a/skills/h5p-author/references/types/H5P.Essay.md +++ b/skills/h5p-author/references/types/H5P.Essay.md @@ -27,7 +27,7 @@ The learner writes a text, scored by the keywords it contains, with feedback per ## Fields of H5P.Essay 1.5 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.GameMap.md b/skills/h5p-author/references/types/H5P.GameMap.md index 91aa40a..b2dfc2e 100644 --- a/skills/h5p-author/references/types/H5P.GameMap.md +++ b/skills/h5p-author/references/types/H5P.GameMap.md @@ -40,7 +40,7 @@ A map with stages, each holding exercises; finishing a stage opens the stages jo ## Fields of H5P.GameMap 1.5 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `showTitleScreen` boolean = false — Show title screen - `titleScreen` group — Title screen diff --git a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md index 650c04f..8bf99da 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspotQuestion.md @@ -31,7 +31,7 @@ A picture in which the learner clicks the right area: a part of a diagram, a pla ## Fields of H5P.ImageHotspotQuestion 1.8 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `imageHotspotQuestion` group — Image Hotspot Question Editor - `backgroundImageSettings` image file, required — Background image diff --git a/skills/h5p-author/references/types/H5P.ImageHotspots.md b/skills/h5p-author/references/types/H5P.ImageHotspots.md index 658c9e3..d333712 100644 --- a/skills/h5p-author/references/types/H5P.ImageHotspots.md +++ b/skills/h5p-author/references/types/H5P.ImageHotspots.md @@ -26,7 +26,7 @@ A picture with spots that open text, a picture, audio or video when clicked: a l ## Fields of H5P.ImageHotspots 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `image` image file, required — Background image - `backgroundImageAltText` text — Alternative text for background image: If the browser can't load the image this text will be displayed instead. Also used by assistive technologies. diff --git a/skills/h5p-author/references/types/H5P.ImagePair.md b/skills/h5p-author/references/types/H5P.ImagePair.md index 8e03e6f..6d47139 100644 --- a/skills/h5p-author/references/types/H5P.ImagePair.md +++ b/skills/h5p-author/references/types/H5P.ImagePair.md @@ -24,7 +24,7 @@ Two columns of pictures; the learner drags each one on the left onto its match o ## Fields of H5P.ImagePair 1.4 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `taskDescription` text = "Drag images from the left to match them with… — Task Description: A guide telling the user how to solve this task. - `cards` list 2–100 of, required — Cards diff --git a/skills/h5p-author/references/types/H5P.ImageSequencing.md b/skills/h5p-author/references/types/H5P.ImageSequencing.md index 083487f..ebb9c4a 100644 --- a/skills/h5p-author/references/types/H5P.ImageSequencing.md +++ b/skills/h5p-author/references/types/H5P.ImageSequencing.md @@ -24,7 +24,7 @@ Pictures shown shuffled, which the learner puts in order: stages of a process, a ## Fields of H5P.ImageSequencing 1.1 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `taskDescription` text = "Drag to arrange the images in the correct se… — Task Description: A guide telling the user how to solve this task. - `altTaskDescription` text = "Make the following list be ordered correctly… — Alternate Task Description: A guide intended for visually impaired users on how to solve this task. diff --git a/skills/h5p-author/references/types/H5P.InteractiveBook.md b/skills/h5p-author/references/types/H5P.InteractiveBook.md index 986f491..ddbe69c 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveBook.md +++ b/skills/h5p-author/references/types/H5P.InteractiveBook.md @@ -32,7 +32,7 @@ A book of chapters with a table of contents, each chapter a page of text, media ## Fields of H5P.InteractiveBook 1.15 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `showCoverPage` boolean = false — Enable book cover - `bookCover` group; only when showCoverPage is true — Cover Page diff --git a/skills/h5p-author/references/types/H5P.InteractiveVideo.md b/skills/h5p-author/references/types/H5P.InteractiveVideo.md index f5607db..e019eb8 100644 --- a/skills/h5p-author/references/types/H5P.InteractiveVideo.md +++ b/skills/h5p-author/references/types/H5P.InteractiveVideo.md @@ -38,7 +38,7 @@ A video with questions, text and links appearing over it at set times, a bookmar ## Fields of H5P.InteractiveVideo 1.28 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `interactiveVideo` group — Interactive Video Editor - `video` group — Upload/embed video diff --git a/skills/h5p-author/references/types/H5P.MarkTheWords.md b/skills/h5p-author/references/types/H5P.MarkTheWords.md index 3ec7364..98dabcb 100644 --- a/skills/h5p-author/references/types/H5P.MarkTheWords.md +++ b/skills/h5p-author/references/types/H5P.MarkTheWords.md @@ -21,7 +21,7 @@ A text in which the learner clicks the words that fit a rule: every verb, every ## Fields of H5P.MarkTheWords 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.MemoryGame.md b/skills/h5p-author/references/types/H5P.MemoryGame.md index ece2a51..07bf673 100644 --- a/skills/h5p-author/references/types/H5P.MemoryGame.md +++ b/skills/h5p-author/references/types/H5P.MemoryGame.md @@ -24,7 +24,7 @@ Cards face down, turned two at a time, until every pair is found. ## Fields of H5P.MemoryGame 1.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `cards` list 2–100 of, required — Cards - `image` image file, required — Image diff --git a/skills/h5p-author/references/types/H5P.MultiChoice.md b/skills/h5p-author/references/types/H5P.MultiChoice.md index 7534e26..c055a62 100644 --- a/skills/h5p-author/references/types/H5P.MultiChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiChoice.md @@ -28,7 +28,7 @@ One question, two or more answers, one or several of them correct, with feedback ## Fields of H5P.MultiChoice 1.16 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md index f296432..a6b0553 100644 --- a/skills/h5p-author/references/types/H5P.MultiMediaChoice.md +++ b/skills/h5p-author/references/types/H5P.MultiMediaChoice.md @@ -24,7 +24,7 @@ A multiple-choice question whose answers are pictures. ## Fields of H5P.MultiMediaChoice 0.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.QuestionSet.md b/skills/h5p-author/references/types/H5P.QuestionSet.md index cd500e0..5d17662 100644 --- a/skills/h5p-author/references/types/H5P.QuestionSet.md +++ b/skills/h5p-author/references/types/H5P.QuestionSet.md @@ -47,7 +47,7 @@ A quiz: questions one after another, then a result page with the score. ## Fields of H5P.QuestionSet 1.21 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `introPage` group — Quiz introduction - `showIntroPage` boolean — Display introduction diff --git a/skills/h5p-author/references/types/H5P.Questionnaire.md b/skills/h5p-author/references/types/H5P.Questionnaire.md index 89d9c62..6b847cb 100644 --- a/skills/h5p-author/references/types/H5P.Questionnaire.md +++ b/skills/h5p-author/references/types/H5P.Questionnaire.md @@ -31,7 +31,7 @@ A survey: open questions and multiple-choice questions with no right answer, the ## Fields of H5P.Questionnaire 1.3 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `questionnaireElements` list 1+ of, required — Questionnaire elements - `library` sub-content: H5P.OpenEndedQuestion | H5P.SimpleMultiChoice, required — Library: Choose a library diff --git a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md index 13262e5..07adc58 100644 --- a/skills/h5p-author/references/types/H5P.SingleChoiceSet.md +++ b/skills/h5p-author/references/types/H5P.SingleChoiceSet.md @@ -23,7 +23,7 @@ Quick questions, one after another, each with one right answer of two to four; t ## Fields of H5P.SingleChoiceSet 1.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `choices` list 1+ of, required — List of questions - `question` html: strong em code, required — Question diff --git a/skills/h5p-author/references/types/H5P.SortParagraphs.md b/skills/h5p-author/references/types/H5P.SortParagraphs.md index d0f7d23..d8b8ed1 100644 --- a/skills/h5p-author/references/types/H5P.SortParagraphs.md +++ b/skills/h5p-author/references/types/H5P.SortParagraphs.md @@ -26,7 +26,7 @@ Paragraphs shown shuffled, which the learner puts in order: steps of a process, ## Fields of H5P.SortParagraphs 0.11 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question. diff --git a/skills/h5p-author/references/types/H5P.Summary.md b/skills/h5p-author/references/types/H5P.Summary.md index c82bce1..6e56947 100644 --- a/skills/h5p-author/references/types/H5P.Summary.md +++ b/skills/h5p-author/references/types/H5P.Summary.md @@ -24,7 +24,7 @@ The learner builds a summary statement by statement, picking the true one from e ## Fields of H5P.Summary 1.10 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `intro` html: strong em u a ul ol h2 h3 hr pre code = "Choose the correct statement." — Introduction text: Will be displayed above the summary task. - `summaries` list 1–100 of, required — Summary diff --git a/skills/h5p-author/references/types/H5P.Timeline.md b/skills/h5p-author/references/types/H5P.Timeline.md index 2978872..4316cdb 100644 --- a/skills/h5p-author/references/types/H5P.Timeline.md +++ b/skills/h5p-author/references/types/H5P.Timeline.md @@ -29,7 +29,7 @@ Events along a time line, each with a date, a headline and a text, browsed in or ## Fields of H5P.Timeline 1.1 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `timeline` group — Timeline - `headline` text, required — Headline: Main timeline heading goes here (first page) diff --git a/skills/h5p-author/references/types/H5P.TrueFalse.md b/skills/h5p-author/references/types/H5P.TrueFalse.md index 24c429f..59f6bb8 100644 --- a/skills/h5p-author/references/types/H5P.TrueFalse.md +++ b/skills/h5p-author/references/types/H5P.TrueFalse.md @@ -26,7 +26,7 @@ One statement the learner marks true or false. ## Fields of H5P.TrueFalse 1.8 -The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for them, and if they skip it, write the name you know them by, or "Unknown", and `U`. +The example is `type` and `params` alone, and `params` holds the fields below. A source also names its own `title`, `language`, `license` and `authors`, all four required: the build refuses a source that leaves out any of them. The author's name and the licence are the user's: ask for what they have not given. For a name they skip, write the one you know them by, or "Unknown"; for a licence they skip, `U`. - `media` group — Media - `type` sub-content: H5P.Image | H5P.Video | H5P.Audio — Type: Optional media to display above the question.