# Kapi Works courses and policies

> Make Kapi Works courses and policies with your own AI or by hand: the course format, the seven course types, Kapi's checks and an example course for each type, and the policy format with six example policies.

- All of it in one file: https://docs.kapiworks.com/build/llms-full.txt
- Format: kapi.works.package/2, checked by checker 2.2.0, which reports kapi.works.check/2.
- An example course for each type: https://docs.kapiworks.com/build/examples/training-course.json, https://docs.kapiworks.com/build/examples/scenario-course.json, https://docs.kapiworks.com/build/examples/quick-refresher.json, https://docs.kapiworks.com/build/examples/certificate-course.json, https://docs.kapiworks.com/build/examples/walkthrough.json, https://docs.kapiworks.com/build/examples/what-changed.json, https://docs.kapiworks.com/build/examples/video.json
- JSON Schemas of the data files: https://docs.kapiworks.com/schemas/package-2.json, https://docs.kapiworks.com/schemas/content-2.json, https://docs.kapiworks.com/schemas/questions-2.json, https://docs.kapiworks.com/schemas/words-1.json, https://docs.kapiworks.com/schemas/support-1.json, https://docs.kapiworks.com/schemas/theme-1.json, https://docs.kapiworks.com/schemas/bundle-1.json
- TypeScript types of the data files: https://docs.kapiworks.com/schemas/kapi-works-package.d.ts
- Check a bundle in the browser: https://docs.kapiworks.com/build/check
- Policies: the whole policy format, its prompt and Kapi's example policies in one file: https://docs.kapiworks.com/build/policies/llms.txt
- Every page below is also Markdown: add .md to its address, or send Accept: text/markdown.
- Docs MCP server (streamable HTTP, read-only): https://docs.kapiworks.com/api/mcp, with get_course_type, get_schema and get_check.

## Build

- [Build courses](https://docs.kapiworks.com/build): Make Kapi Works courses with Kapi or with your own AI, check them against Kapi's rules, and bring them into Works Studio.
- [Course quickstart](https://docs.kapiworks.com/build/quickstart): Make a course that passes Kapi's checks with your own AI, in about ten minutes.
- [What makes a great course](https://docs.kapiworks.com/build/guides/great-courses): The rules behind a good Kapi Works course. Each one says whether Kapi checks it or it is guidance for you and your AI.
- [Check a course](https://docs.kapiworks.com/build/check): Paste the bundle your AI made and see every finding from Kapi's checker, worst first.
- [For AI agents](https://docs.kapiworks.com/build/ai): The prompt and example course for each type, the policy prompt and example policies, the Build section as plain text, the JSON Schemas and the docs MCP server.

## Course types

- [Training course](https://docs.kapiworks.com/build/course-types/training-course): Teach a topic in short lessons, with practice questions and a test.
- [Scenario practice](https://docs.kapiworks.com/build/course-types/scenario-course): Practise real situations: people choose what to do, then see why.
- [Quick refresher](https://docs.kapiworks.com/build/course-types/quick-refresher): A short yearly refresh: questions first, so people who know move on.
- [Certificate course](https://docs.kapiworks.com/build/course-types/certificate-course): Lessons, then a test drawn from a larger pool, for a certificate.
- [Step-by-step walkthrough](https://docs.kapiworks.com/build/course-types/walkthrough): Show how to use a tool or follow a process, step by step.
- [What changed](https://docs.kapiworks.com/build/course-types/what-changed): A rule changed: show the new rule, the old one once, and why.
- [Video](https://docs.kapiworks.com/build/course-types/video): A short film with questions that pause it, for one clear message.

## Format reference

- [Files](https://docs.kapiworks.com/build/reference/files): The data files of a Kapi Works course, and every key each one takes, from the published JSON Schemas.
- [Blocks](https://docs.kapiworks.com/build/reference/blocks): The 15 blocks a course page is made of, and the keys each one takes.
- [Questions](https://docs.kapiworks.com/build/reference/questions): Question kinds, answer keys, feedback and explanations, and the held questions Kapi's test draws from.
- [Placeholders](https://docs.kapiworks.com/build/reference/placeholders): The words Kapi fills in when a person opens a course: the company's name, its contacts and the learner's first name.
- [Limits](https://docs.kapiworks.com/build/reference/limits): Every limit Kapi's reader and checker hold a course to.

## Checks

- [Checks](https://docs.kapiworks.com/build/reference/checks): Every check Kapi runs on a course, with its severity, the course types it runs for and what it says.
- [file_not_allowed](https://docs.kapiworks.com/build/reference/checks/file-not-allowed): This file isn't a file a package holds. Remove it, or move it where the docs say it goes.
- [unsafe_path](https://docs.kapiworks.com/build/reference/checks/unsafe-path): This path isn't safe. Use lower-case relative paths with no "..", backslashes or hidden parts.
- [file_type](https://docs.kapiworks.com/build/reference/checks/file-type): This file isn't the kind of file its place says. Kapi reads a file's first bytes, not its name.
- [not_utf8](https://docs.kapiworks.com/build/reference/checks/not-utf8): This file isn't saved as UTF-8 text. Save it again as UTF-8.
- [json_invalid](https://docs.kapiworks.com/build/reference/checks/json-invalid): This file isn't valid JSON.
- [schema_invalid](https://docs.kapiworks.com/build/reference/checks/schema-invalid): This value should be as the format says.
- [unknown_key](https://docs.kapiworks.com/build/reference/checks/unknown-key): "…" isn't part of the format. Remove it, or check its spelling.
- [file_missing](https://docs.kapiworks.com/build/reference/checks/file-missing): The package needs this file.
- [over_limit](https://docs.kapiworks.com/build/reference/checks/over-limit): This is over the limit of ….
- [family_not_available](https://docs.kapiworks.com/build/reference/checks/family-not-available): Kapi doesn't have a … player yet. Courses play today.
- [sdk_too_new](https://docs.kapiworks.com/build/reference/checks/sdk-too-new): The package needs a newer SDK than Kapi serves. Kapi serves SDK ….
- [player_line_unknown](https://docs.kapiworks.com/build/reference/checks/player-line-unknown): There's no such player line. Use ….
- [id_duplicate](https://docs.kapiworks.com/build/reference/checks/id-duplicate): The … ID is used twice. Every ID must be unique.
- [reference_unknown](https://docs.kapiworks.com/build/reference/checks/reference-unknown): This names …, which the package doesn't declare.
- [role_default_missing](https://docs.kapiworks.com/build/reference/checks/role-default-missing): Mark exactly one role as the default, for people whose job role isn't mapped.
- [word_missing](https://docs.kapiworks.com/build/reference/checks/word-missing): The words file has no text for ….
- [word_owner](https://docs.kapiworks.com/build/reference/checks/word-owner): …'s first part names nothing in the package. Start a text ID with its lesson, page or question ID, or course, common, role or assessment.
- [word_unused](https://docs.kapiworks.com/build/reference/checks/word-unused): … isn't used anywhere. Remove it, or use it.
- [markup_not_allowed](https://docs.kapiworks.com/build/reference/checks/markup-not-allowed): These words use …. Words take only **strong**, _emphasis_, [label](https://host/path) links and line breaks.
- [link_not_https](https://docs.kapiworks.com/build/reference/checks/link-not-https): The link to … must start with https://.
- [link_host_undeclared](https://docs.kapiworks.com/build/reference/checks/link-host-undeclared): These words link to …, which kapi-works.json doesn't list in links. Add the host if people may open it.
- [placeholder_unknown](https://docs.kapiworks.com/build/reference/checks/placeholder-unknown): … isn't a placeholder Kapi fills. Use {company.name}, {contacts.<key>.name}, .email, .phone, .url or {learner.firstName}.
- [placeholder_undeclared](https://docs.kapiworks.com/build/reference/checks/placeholder-undeclared): These words use a placeholder, but kapi-works.json doesn't declare … in context.
- [placeholder_in_link](https://docs.kapiworks.com/build/reference/checks/placeholder-in-link): A link address can't hold a placeholder. Kapi checks every address before a learner opens it.
- [first_name_twin_missing](https://docs.kapiworks.com/build/reference/checks/first-name-twin-missing): These words use {learner.firstName}, so they need a twin, …, for people whose first name isn't given.
- [contact_missing_word](https://docs.kapiworks.com/build/reference/checks/contact-missing-word): This contact is optional, so write … for companies that haven't filled it in.
- [claim_word](https://docs.kapiworks.com/build/reference/checks/claim-word): "…" is a claim Kapi can't stand behind. Say what the course does instead.
- [closing_names_ending](https://docs.kapiworks.com/build/reference/checks/closing-names-ending): The closing words name "…". Endings are the company's rules, so the closing should only say the learning is finished.
- [answer_key_invalid](https://docs.kapiworks.com/build/reference/checks/answer-key-invalid): The answer key ….
- [explanation_missing](https://docs.kapiworks.com/build/reference/checks/explanation-missing): This question has no explanation of why the answer is right.
- [feedback_missing](https://docs.kapiworks.com/build/reference/checks/feedback-missing): Choice … has no feedback. Every choice says why it's right or wrong.
- [held_question_on_page](https://docs.kapiworks.com/build/reference/checks/held-question-on-page): This question is in …'s pool, so it can't also sit on a page. Kapi's test would show it again.
- [held_kind_not_allowed](https://docs.kapiworks.com/build/reference/checks/held-kind-not-allowed): Kapi's test takes choice and multi questions only.
- [pool_too_small](https://docs.kapiworks.com/build/reference/checks/pool-too-small): The pool holds fewer questions than the test draws (…).
- [pool_small](https://docs.kapiworks.com/build/reference/checks/pool-small): The pool holds less than one and a half times the draw (…), so retakes repeat questions.
- [question_unused](https://docs.kapiworks.com/build/reference/checks/question-unused): No page or pool uses this question.
- [media_file_missing](https://docs.kapiworks.com/build/reference/checks/media-file-missing): The package has no file ….
- [media_sha256_mismatch](https://docs.kapiworks.com/build/reference/checks/media-sha256-mismatch): This file's SHA-256 doesn't match the one kapi-works.json lists for it. Use the file it lists, or list this file's SHA-256.
- [media_not_listed](https://docs.kapiworks.com/build/reference/checks/media-not-listed): This media file isn't listed in kapi-works.json.
- [alt_missing](https://docs.kapiworks.com/build/reference/checks/alt-missing): This picture needs alt text, or mark it decorative.
- [captions_missing](https://docs.kapiworks.com/build/reference/checks/captions-missing): Sound or video with speech needs captions.
- [media_too_large](https://docs.kapiworks.com/build/reference/checks/media-too-large): This file is over 25 MB, the most a page can carry. Make it smaller.
- [context_not_allowed](https://docs.kapiworks.com/build/reference/checks/context-not-allowed): … can't be required for customers. Kapi never gives it in a customer door.
- [starter_words_left](https://docs.kapiworks.com/build/reference/checks/starter-words-left): The starter's sample words are still here (…). Replace them with your own.
- [starter_media_left](https://docs.kapiworks.com/build/reference/checks/starter-media-left): This is still the starter's sample file. Replace it with your own.
- [support_missing](https://docs.kapiworks.com/build/reference/checks/support-missing): This answer key has no quote from a source in support.json.
- [support_target_unknown](https://docs.kapiworks.com/build/reference/checks/support-target-unknown): support.json names …, which is neither a question nor a text in the package.
- [source_not_linked](https://docs.kapiworks.com/build/reference/checks/source-not-linked): Kapi can't check this quote until its source is linked to the draft.
- [quote_not_found](https://docs.kapiworks.com/build/reference/checks/quote-not-found): This quote isn't in its source, word for word.
- [fact_not_in_source](https://docs.kapiworks.com/build/reference/checks/fact-not-in-source): … isn't in any source this cites. Check it against the source.
- [lesson_long](https://docs.kapiworks.com/build/reference/checks/lesson-long): This lesson runs about … minutes. People keep more from lessons of 4 to 7.
- [sentence_long](https://docs.kapiworks.com/build/reference/checks/sentence-long): … Shorter sentences are easier to read, especially in a second language.
- [few_situations](https://docs.kapiworks.com/build/reference/checks/few-situations): … Questions set in a situation check that people can use what they learned.
- [film_sdk](https://docs.kapiworks.com/build/reference/checks/film-sdk): This package has a film, so kapi-works.json needs "sdk": "2.1".
- [narration_placeholder](https://docs.kapiworks.com/build/reference/checks/narration-placeholder): Narration can't hold a placeholder. Kapi records it once for every company, so say "your company" or "your IT team" instead.
- [pause_question_kind](https://docs.kapiworks.com/build/reference/checks/pause-question-kind): A film can stop only for a choice or multi question.
- [pause_question_elsewhere](https://docs.kapiworks.com/build/reference/checks/pause-question-elsewhere): This question also …. A question a film stops for belongs to that film only.
- [drawing_target_unknown](https://docs.kapiworks.com/build/reference/checks/drawing-target-unknown): This drawing's target … names no choice of the question the scene stops for.
- [drawing_target_missing](https://docs.kapiworks.com/build/reference/checks/drawing-target-missing): The choice … of the question this scene stops for has no target in the drawing, so nobody could tap it.
- [lesson_without_question](https://docs.kapiworks.com/build/reference/checks/lesson-without-question): … has no practice question. A question in each lesson helps people keep what they read.
- [scenario_opening_missing](https://docs.kapiworks.com/build/reference/checks/scenario-opening-missing): … doesn't open with a situation to choose from. In scenario practice, each lesson starts with a situation and a choice.
- [refresher_question_first](https://docs.kapiworks.com/build/reference/checks/refresher-question-first): This page doesn't start with its question. In a quick refresher, every page asks first and the feedback teaches.
- [refresher_too_long](https://docs.kapiworks.com/build/reference/checks/refresher-too-long): This refresher takes about … minutes. A quick refresher takes 8 to 12.
- [certificate_pool_small](https://docs.kapiworks.com/build/reference/checks/certificate-pool-small): A certificate test needs a pool at least twice the size of its draw (…), so each retake asks different questions.
- [certificate_pass_mark_missing](https://docs.kapiworks.com/build/reference/checks/certificate-pass-mark-missing): The test suggests no pass mark. The company can change it, but a certificate course should suggest one.
- [walkthrough_steps_missing](https://docs.kapiworks.com/build/reference/checks/walkthrough-steps-missing): … has no numbered steps. A walkthrough shows each step in order.
- [walkthrough_picture_missing](https://docs.kapiworks.com/build/reference/checks/walkthrough-picture-missing): These steps have no picture. A screenshot of each step helps people follow along.
- [change_before_missing](https://docs.kapiworks.com/build/reference/checks/change-before-missing): … doesn't show the old rule. Show it once, starting "Before" and the date it changed.
- [change_question_missing](https://docs.kapiworks.com/build/reference/checks/change-question-missing): … has no situation question about the change.
- [video_opening_missing](https://docs.kapiworks.com/build/reference/checks/video-opening-missing): … doesn't open with a film. In a video, each lesson starts with its film.

## Policies

- [Policies](https://docs.kapiworks.com/build/policies): Make Kapi Works policies that people acknowledge or sign. Write one with Kapi or with your own AI, start from an example, or upload HTML, Word or PDF.
- [Policy format](https://docs.kapiworks.com/build/policies/format): What Kapi reads in a policy file. The elements it keeps, the place to sign, the two tags, what it leaves out, the limits and the canonical file.
