See the exact prompt your activity produces
Your activity file isn’t quite what the AI reads. Novedu takes the instructions you wrote, puts every shared fragment and every text file you referenced in place, and hands the finished text to the model. The Novedu CLI’s prompts command prints that finished text, so you can read exactly what the AI is told before a single student message arrives.
The validate command answers “is my file well-formed?”. The prompts command answers “what does the AI actually read?”. They’re two different questions, and you’ll want both.
Run the prompts command
Section titled “Run the prompts command”Point the command at your activity file:
npx @novedu/cli prompts ./activities/examples/sorting-algorithms/sorting-tutor.yamlYou get a short summary: what the file is, which AI model it uses, and how long each prompt turned out.
✔ Prompts — tutor — activities/examples/sorting-algorithms/sorting-tutor.yaml id: ts-sorting-algorithms provider: SCCH model: RedHatAI/gemma-4-31B-it-FP8-Dynamic prompts: 1 system: 5132 chars
Run again with --json for the full prompt text.When the file also sets a thinking-effort level, the same line names it:
provider: Azure Foundry model: gpt-5.6-terra reasoning: lowThese are the settings of the file you pointed at. A code that overrides the AI settings when you share the activity is not taken into account, because the command describes a file, not a share link.
Add --json for the prompts themselves, in full:
npx @novedu/cli prompts ./sorting-tutor.yaml --jsonA web address works in place of a file path, and reads the file as it’s published:
npx @novedu/cli prompts https://raw.githubusercontent.com/Teaching-HTL-Leonding/novedu-chat-mvp/refs/heads/main/activities/examples/sorting-algorithms/sorting-tutor.yamlIf your file lives on GitHub, commit and push before you check a web address, otherwise you’re reading an older version. Nothing is uploaded either way, and you don’t need to sign in: the command only reads your file.
Tell the CLI what kind of activity it is
Section titled “Tell the CLI what kind of activity it is”The prompts command assumes a tutor unless you say otherwise with --kind:
npx @novedu/cli prompts ./my-quiz.yaml --kind quiznpx @novedu/cli prompts ./my-writing.yaml --kind writingnpx @novedu/cli prompts ./my-coding.yaml --kind coding--kind accepts tutor (the default), quiz, writing, or coding. There’s no fragment kind, because a fragment library has no prompt of its own: its fragments appear inside whichever activity places them, already filled in.
What each kind of activity gives you
Section titled “What each kind of activity gives you”A tutor and a writing activity each produce one system prompt: your instructions with every {{fragment …}} and {{file …}} marker replaced by the text it stands for.
A quiz produces more, because a quiz asks the AI to do more. You get one complete grading prompt per question, plus the prompt behind the discussion chat:
✔ Prompts — quiz — activities/examples/sorting-algorithms/sorting-quiz.yaml id: sorting-algorithms-quiz provider: SCCH model: RedHatAI/gemma-4-31B-it-FP8-Dynamic prompts: 8 grading: bubble-idea: 3003 chars grading: selection-idea: 2838 chars grading: bubble-trace: 2948 chars grading: swap-typescript: 3264 chars grading: find-the-bug: 3665 chars grading: selection-swaps: 2835 chars grading: early-exit: 2979 chars discussion: 2033 chars
Run again with --json for the full prompt text.A quiz built from other quizzes lists every imported question too, each one carrying the instructions of the quiz it came from, exactly the way it will be graded.
A coding activity gives you your own instructions and, as upstreamSystemMessage, the system message the server passes on to the student’s coding agent, with your text appended last so you have the final word.
One thing to keep in mind: a quiz’s grading prompts contain your evaluation criteria, the notes on what counts as a correct answer. Students never see them. The output of the command is teacher material, just like the file it came from.
Find out why an activity behaves oddly
Section titled “Find out why an activity behaves oddly”When a tutor ignores a rule you wrote, or a quiz grades an answer in a way you didn’t expect, the finished prompt tells you whether your text actually arrived. Reading it usually explains the behaviour faster than changing the file and trying again.
Common things it uncovers:
- A shared fragment you meant to include, but whose marker never made it into the instructions.
- A marker still sitting in a section you thought you’d removed.
- A value that filled in differently from what you had in mind, so the finished sentence says something slightly different from your draft.
There’s a boundary worth knowing: if a fragment can’t be produced at all, the command reports an error instead of a prompt. That’s the moment to run validate, which names that kind of problem field by field.
Reuse your prompt in another AI tool
Section titled “Reuse your prompt in another AI tool”The dumped prompt is ordinary text, which makes it easy to take elsewhere. Paste it into ChatGPT or another AI tool to try your instructions outside Novedu, send it to a colleague who teaches the same subject, or keep it with your lesson material so the teaching intent stays documented next to the worksheet.
To pull out one single prompt, for example the grading prompt of one question, use the JSON output with a tool such as jq:
npx @novedu/cli prompts ./sorting-quiz.yaml --kind quiz --json \ | jq -r '.grading.questions[] | select(.id=="q3") | .system'Check an activity systematically before a class uses it
Section titled “Check an activity systematically before a class uses it”In AI work, an evaluation means checking a prompt on purpose rather than by feel. Instead of trying two or three answers by hand and hoping the rest go well, you collect a set of sample student answers, run all of them through the same prompt, and look at whether the results are what you want: does the good answer pass, does the half-correct one get the feedback you’d give, does the wrong one get corrected kindly?
Novedu does this for you. The CLI’s eval command, covered in the chapter on testing how a quiz grades, replays a file of your own sample answers through the real grader and reports where the marks differ from what you expected. The two commands are partners: prompts is how you read what the grader is told, eval is how you measure what it does. When an eval reports a surprising mark, dumping the grading prompt for that question is usually the fastest way to see why.
Ask an AI assistant instead of typing flags
Section titled “Ask an AI assistant instead of typing flags”With the Novedu skill installed in your AI coding assistant, you can ask “show me the grading prompt for question 3” or “did my safety fragment reach the tutor?”, and it runs the command, reads the output, and answers in plain language. The introduction chapter on the Novedu CLI and its AI skill shows how to install that skill.
That’s also why this lives in a command rather than as a screen in the app: it’s meant to be used by an assistant at least as much as by a person, it works without signing in, and it uploads nothing. A screen in the app can follow later if teachers ask for one.