一键导入
doenetml-authoring
Write and revise DoenetML activities using docs-nextra patterns, with explicit guardrails for how DoenetML differs from PreTeXt.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write and revise DoenetML activities using docs-nextra patterns, with explicit guardrails for how DoenetML differs from PreTeXt.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Rules for creating and editing changeset files in .changeset/ — which @doenet/* packages to list, packages that must never appear, one-directional propagation, the private-flag trap, and changeset file format. Use whenever adding or editing a .changeset/*.md file.
Get the DoenetML source behind a beta.doenet.org / doenet.org activityViewer link. The pages are a client-rendered SPA, so fetching the URL (WebFetch/curl) returns an empty shell — call the content JSON API instead. Use when asked to read, extract, or reference the DoenetML of a Doenet activity link.
Author DoenetML documentation under packages/docs-nextra/ within the Diátaxis framework (Tutorials, Guides/how-to, Reference, Concepts/explanation) — which section a page belongs in, the concept↔guide split pattern, MDX structure, example fences, the AttrPropDisplay machinery, prose vs example math, and the schema/index files that reference pages must keep in sync.
Write and revise PreTeXt documents using the official guide, with explicit guardrails for how PreTeXt differs from DoenetML.
| name | doenetml-authoring |
| description | Write and revise DoenetML activities using docs-nextra patterns, with explicit guardrails for how DoenetML differs from PreTeXt. |
Use this skill when creating or editing DoenetML content for interactive browser-based activities.
docs/doenetml-authoring-summary.mddocs/tag-reference.mddocs/doenetml-vs-pretext-differences.mddocs/doenetml-do-dont-checklist.mddocs/sources.mdname="...") whenever values are reused.$name (and properties like $point1.x) for reactivity. (The $foo mechanism is called a reference. Do not call it a "macro" — that older term has been retired.)<answer> patterns appropriate to validation goals (symbolic, numeric, logic-based awards).<math> for stored/computed expressions and <m>/<md> for rendered math display.xml:id, <xref ref="..."/>) into DoenetML logic. Use DoenetML naming and referencing patterns instead.<m>/<md> as computation containers. Use <math> for computation/state and <m>/<md> for presentation.<answer> logic and any needed nested awards/conditions.name attributes are a common source of broken $name references.$x.foo is a list (e.g. $solve.solutions, $collect.results), use the matching list component: <mathList extend="$solve.solutions"/>, not <math extend="$solve.solutions"/>. Same for <textList>, <numberList>, <vectorList>, <booleanList>, <pointList>, etc. The rule is match the extend tag to the type of the state variable.$user.value.latex does not work — .value resolves to a fresh <math> component, but the resolver does not then dereference that math's .latex. If you need a cross-boundary chain, name the intermediate (<math name="userMath" extend="$user.value"/>, then $userMath.latex). Chains within a single array state variable's indexAliases do work and are the right way to access coordinates — e.g. $myLine.points[1].x, $myVector.head.x, $myCircle.center.y.Use this as a minimal DoenetML starting point for a single auto-checked prompt.
<p><m>7x + 3x = </m><answer>10x</answer></p>
When asked to author DoenetML, provide:
$name references resolve, tags are properly closed, and graded prompts include explicit validation logic.$name reference points to an existing named component.<math> for computation, <m>/<md> for rendering.