Teaching Resource Research Skill
mingchen666/Reviva
Find, verify, and curate teaching resources for lesson preparation.
Makes surgical edits to a course that already exists: take stock of its pages, read each target before changing it, and touch only what was asked for.
$ npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install THU-MAIC/OpenMAIC pro-editing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/agent-runtime/pro-editing .claude/skills/pro-editing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pro-editing" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editing into .claude/skills/pro-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pro-editing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install THU-MAIC/OpenMAIC pro-editing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/agent-runtime/pro-editing .agents/skills/pro-editing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pro-editing" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editing into .agents/skills/pro-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pro-editing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install THU-MAIC/OpenMAIC pro-editing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/agent-runtime/pro-editing .cursor/skills/pro-editing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pro-editing" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editing into .cursor/skills/pro-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pro-editing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/THU-MAIC/OpenMAIC.git --path skills/agent-runtime/pro-editing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install THU-MAIC/OpenMAIC pro-editing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/agent-runtime/pro-editing .gemini/skills/pro-editing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pro-editing" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editing into .gemini/skills/pro-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pro-editing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install THU-MAIC/OpenMAIC pro-editingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/agent-runtime/pro-editing .github/skills/pro-editing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pro-editing" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editing into .github/skills/pro-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pro-editing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install THU-MAIC/OpenMAIC pro-editing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/agent-runtime/pro-editing .opencode/skills/pro-editing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pro-editing" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/pro-editing into .opencode/skills/pro-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pro-editing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pro-editingMakes surgical edits to a course that already exists: take stock of its pages, read each target before changing it, and touch only what was asked for.
This skill applies when a persisted course already has pages and the request is to revise, polish, restructure or repair them: fix a page, tune a layout, repair a quiz, reword narration, reorder the deck or raise the quality of the whole course. It starts by calling list_scenes to map every page with its order and type, and it does not plan a replacement stage. Broad requests such as make it better are turned into a concrete page-by-page plan before anything is touched.
Every change is preceded by a read of the target page, because the element, question and action IDs it returns are the only valid edit addresses and a stale ID means a failed edit. read_stage has three levels: a compact tree map, a source level with the exact persisted JSON including styles and geometry that any slide write needs, and a text level that lists every text element to prove no leftover copy remains. A course still being generated is read-only until generation finishes, so the agent tells you to wait. An outline-constraints.json file ships alongside.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 32f5923. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
OpenMAIC Course Editing loads about 2.8k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 1,508 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from THU-MAIC/OpenMAIC at commit 32f5923, republished under its MIT licence (© THU-MAIC). 1,508 words, ~2,754 tokens.
.claude/skills/pro-editing/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are editing a persisted course, not generating one. The pages already exist in storage; your work is surgical — read what is there, change exactly what was asked for, and leave everything else untouched.
This skill is active because the course already has pages (the session is attached to an existing course, or the classroom was already built). Before any edit:
list_scenes to take stock of the whole course: every persisted page,
its order, its type. This list — not your assumption — is the map you edit
by.Read the target page with read_stage path:/scenes/<order|id>
immediately before editing it. The inventory it
returns — element ids, question ids, action ids, widget config — is the only
address space you may edit against, and it tells you the page's true type. A
stale id is a failed edit; a stale assumption about what is on the page is a
wrong edit. If an edit lands on the wrong page type, that is a signal to
re-read, not to force the operation.
read_stage has three levels, and a slide edit uses the deep one. The default
tree is a compact map — enough to find an element, never enough to edit it,
because it strips the styles. Before any slide write, read the page with
detail:"source": it returns the page's exact persisted JSON (all style
fields, raw content HTML with inline marks and line breaks, exact geometry,
z-order), and it is the root your patch paths address — a field read at
/content/canvas/elements/2/left is written back through that same path. It always
returns the whole page, so indices cannot drift between the read and the write.
detail:"text" is the third level: every text-bearing element as
{ path, id, type, text } plus a page-wide combinedText, for proving a page
carries no leftover copy.
A slide edit is one of three operations, and the first one is a single JSON
Pointer write against what detail:"source" just returned.
| User intent | Tool | Operation |
|---|---|---|
| Fix or rewrite text on a slide | patch_stage | set or str_replace on that element's content path — /content/canvas/elements/N/content, …/text/content, …/data/0/0/text, …/lines/1/content, …/latex |
| Move / resize / rotate an element, fix overlap | patch_stage | set on /content/canvas/elements/N/left (or top / width / height / rotate), one number per op |
| Recolor or restyle an element | patch_stage | set on the renderer-owned style path — …/defaultColor, …/fill, …/text/defaultColor, …/color |
| Drop an optional field | patch_stage | remove on that path |
| Swap an image or media source | patch_stage | set on /content/canvas/elements/N/src |
| Restack slide elements | patch_stage | set on /content/canvas/elements — the whole array, reordered, same ids and types |
| Add or remove a slide element | patch_stage | add_element (complete JSON, no id) / delete_element |
| Fix quiz questions, options, answers, scoring | patch_stage | set / remove against /content/questions/...; additions rewrite the complete array |
| Change an interactive page | patch_stage | set / remove / str_replace against /content/widgetConfig/... or /content/html |
| Reword / insert / remove / reorder narration | patch_stage | scene-root pointers under /actions/...; rewrite a complete array for insertion/reorder |
| Edit a PBL brief, roles, milestones, microtasks | patch_stage | set / remove against /content/projectV2/... |
| Rename / insert / delete / reorder whole pages | edit_deck | retitle / insert / delete / reorder |
| Rewrite one page from scratch | generate_scene + instruction | only on explicit user intent for a full-page rewrite |
Rules of the matrix:
patch_stage op cannot change identity — not the canvas id, not the element id set,
not an element's type. Those go through add_element / delete_element, and a
type change is a delete plus an add. Content itself is unchecked — it is stored
exactly as written, so slide-dsl is the only thing standing between your markup
and a broken page.add_element takes one complete element JSON without id — the server
validates the same structure contract as a patch, assigns
the id, and inserts at afterId or index (one or the other).edit_deck insert creates an empty stub; fill it with generate_scene using
that new page's explicit type and brief, or patch an already valid scene.generate_scene with instruction discards the page and regenerates it. That is
a rewrite, not an edit: reserve it for the moment the user plainly wants a page
rebuilt, never as a shortcut around careful editing.patch_stage ops over
generate_scene whenever the
target is narrower than a whole page.slide-craft: it carries the design law the page was drawn
under — the text height table, the type scale, contrast pairs, spacing
rhythm, and which field on which element type actually reaches the screen.slide-dsl.For layout-sensitive changes (positioning, density, new elements, alignment),
verify with render_scene_preview when it is available: look at the render,
edit, look once more. Budget at most two preview rounds per page — each
render costs a tool call and the whole run has a hard call cap. Do not preview
pages you did not touch, and do not loop past the budget: if two rounds have
not converged, stop and tell the user what remains instead of burning the rest
of the run on one page.
Setting a speech action's /actions/N/text with patch_stage clears the audio
of a reworded line, and inserted
lines have none. After any speech wording change, call generate_tts on that
page before moving on — its default mode synthesizes only the lines missing
audio, which is exactly what you need. Reworded text without regenerated audio
ships a silent page.
Before telling the user the work is done:
list_scenes — confirm the page list matches what you intended: count,
order, titles.read_stage only where a result left doubt.audioId (read_stage
shows it); any page missing audio gets generate_tts.Saves are last-write-wins per page, and a human authoring in the browser at the same time can overwrite you as easily as you can overwrite them. Treat the course as shared ground:
read_stage call
immediately before an edit is
not a formality — it is how you avoid writing over a change the user made
since you last looked.There is no hard tool-call cap, but every extra call is latency the user
watches. Spend calls on edits, not ceremony: one list_scenes at entry, one read_stage per
page before its edits, the edits themselves, generate_tts
where wording changed, a preview round only where layout is genuinely at
risk. If the request is large, do the highest-value edits first and tell the
user what remains.
© THU-MAIC, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/agent-runtime/pro-editing of THU-MAIC/OpenMAIC.
Open the folder on GitHubat commit 32f5923
OpenMAIC Course Editing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| OpenMAIC Course Editing this skillTHU-MAIC/OpenMAIC | 40k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Teaching Resource Research Skillmingchen666/Reviva | 237 | — | ~1k | Automated safety check: Pass | None | |
| Codebase to Coursezarazhangrui/codebase-to-course | 5.7k | — | ~4.4k | Automated safety check: Pass | None | |
| AI Engineering Project Tutorrohitg00/ai-engineering-from-scratch | 66k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Hung-Yi Lee Teaching Stylevoidful/hung-yi-lee-skill | 1.3k | — | ~13k | Automated safety check: Pass | None | |
| Claude Code Self-Assessment Advisorlhfer/claude-howto-zh-cn | 2.3k | — | ~1.7k | Automated safety check: Pass | MIT |
mingchen666/Reviva
Find, verify, and curate teaching resources for lesson preparation.
zarazhangrui/codebase-to-course
Turns a codebase into an interactive single-page HTML course for non-technical learners, with scroll modules, animated diagrams, quizzes and plain-English code translations.
rohitg00/ai-engineering-from-scratch
Tutors a learner through one stage of a hands-on AI engineering project per session: lesson, prediction, code, grader run and reflection, with hints but never full solutions.
voidful/hung-yi-lee-skill
Explains machine learning, LLMs, AI agents and speech modeling in a Hung-Yi Lee-inspired teaching style, drawing on a knowledge base built from his lectures and research references.
lhfer/claude-howto-zh-cn
Quizzes you on Claude Code in a quick or deep mode, scores your level across 10 topics and recommends what to learn next, in Chinese.
rohitg00/ai-engineering-from-scratch
Routes a topic, question or bug to the exact lessons in the AI Engineering from Scratch curriculum and suggests the next command to run.
THU-MAIC/OpenMAIC
Guides setup, classroom generation and secondary development for OpenMAIC, the multi-agent interactive classroom, one confirmed phase at a time.
THU-MAIC/OpenMAIC
Designs a Chinese K-12 classroom for one OpenMAIC stage around the core-literacy model, using authentic tasks, performance assessment and observable evidence.
THU-MAIC/OpenMAIC
Maps the structure of an OpenMAIC stage document so an agent can find the right path, read it and patch quizzes, widgets, actions and project pages without guessing.
THU-MAIC/OpenMAIC
Designs a review-and-practice lesson around an independent first attempt, targeted feedback, supported practice, a fresh independent check and a next step.
THU-MAIC/OpenMAIC
Derives a reusable personal skill for course-making from a representative sample of the user's own past classrooms and chat history, confirmed with them before saving.
THU-MAIC/OpenMAIC
Plans a multi-classroom series such as a seven-day course, clarifies the brief in rounds, gets sign-off on the full lesson list, then builds each stage in a shared folder.
Categories
Makes surgical edits to a course that already exists: take stock of its pages, read each target before changing it, and touch only what was asked for. This skill applies when a persisted course already has pages and the request is to revise, polish, restructure or repair them: fix a page, tune a layout, repair a quiz, reword narration, reorder the deck or raise the quality of the whole course. It starts by calling list_scenes to map every page with its order and type, and it does not plan a replacement stage.
OpenMAIC Course Editing fits situations like: fixing or polishing a page in a course that already exists; repairing a quiz or rewording the narration of existing pages; reordering the deck or raising the quality of a whole course.
Run `npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a claude-code`. Or copy the skill folder (skills/agent-runtime/pro-editing in THU-MAIC/OpenMAIC) into .claude/skills/pro-editing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a codex`. Or copy the skill folder (skills/agent-runtime/pro-editing in THU-MAIC/OpenMAIC) into .agents/skills/pro-editing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add THU-MAIC/OpenMAIC --skill pro-editing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pro-editing, .gemini/skills/pro-editing, .github/skills/pro-editing and .opencode/skills/pro-editing in your project.
SKILL.md names no scripts, command-line tools or credentials: OpenMAIC Course Editing is instructions for the agent only. Our summary lists: An existing persisted course in the OpenMAIC runtime.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
OpenMAIC Course Editing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with OpenMAIC Course Editing: Teaching Resource Research Skill (mingchen666/Reviva, 237 stars), Codebase to Course (zarazhangrui/codebase-to-course, 5.7k stars), AI Engineering Project Tutor (rohitg00/ai-engineering-from-scratch, 66k stars) and Hung-Yi Lee Teaching Style (voidful/hung-yi-lee-skill, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
THU-MAIC (a GitHub organization) maintains it in THU-MAIC/OpenMAIC, which has 40,120 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 8, 2026.
Source: THU-MAIC/OpenMAIC on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.