一键导入
save-thread
Fold a side-chat conversation into a lesson as a ?>> btw block, anchored near the passage the user highlighted. Use when /api/save-thread is invoked.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Fold a side-chat conversation into a lesson as a ?>> btw block, anchored near the passage the user highlighted. Use when /api/save-thread is invoked.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Answer an inline question marker (?> or ?>>) in a lesson file. Locates the Nth marker of the given kind and writes the answer in-place. Use when /api/ask routes a user question.
Review the user's solution for one studyground exercise. Reads exercises/<name>/main.py, gives feedback, writes it to exercises/<name>/feedback.md and to a feedback block in the calling lesson.
Have a real first conversation with a new learner — open-ended, learner-led, not a survey. Let them tell you what they're after; follow up where it actually matters; when you have enough to draft something useful, offer to write the curriculum. Then on action=finalize, write tracks/<track>/curriculum.md.
Generate the next lesson in the current track. Reads progress.json, writes a new lesson file, updates progress. Use when the user is ready to advance.
Compact a lesson by folding answered ?> Q&A pairs into <details> blocks, so a re-read flows past them. Run after the user has worked through a lesson.
A persistent tutor / coordinator that the learner talks to ABOUT a course (not inside a single lesson). Knows the curriculum, what's done, what's pending, the materials, and recent btw threads. Discusses plan, pace, gaps, suggestions — does not write to lesson files itself; recommends actions the user can take with other skills.
| name | save-thread |
| description | Fold a side-chat conversation into a lesson as a ?>> btw block, anchored near the passage the user highlighted. Use when /api/save-thread is invoked. |
Fold a side-chat conversation into the lesson as a ?>> block, anchored near
the text the user originally highlighted.
lesson: slug; file at lessons/<lesson>.mdselection: the verbatim passage the user highlighted before starting the chatRead lessons/<lesson>.md.
Find the location of selection in the file (literal substring match,
preserving whitespace where possible). The insertion point is immediately
after the paragraph block that contains the selection — that is, after
the blank line that ends the paragraph.
If the selection cannot be found (e.g., a paraphrase), insert at the end of
the lesson body, just before the ## Recap section if one exists; otherwise at the very end.
Write the block in this exact shape:
?>> {short question-form title, 4–12 words, capturing the conversation}
<details>
<summary>btw — saved chat</summary>
> "{selection, single line, truncate to ~140 chars with …}"
{a synthesized 2–4 paragraph answer that reads as a unified btw — NOT a verbatim
transcript. Use math (`$...$`, `$$...$$`) and code (` ``` `) where they earn their keep.
Maintain the lesson's tone.}
</details>
Save the file. Do not touch progress.json.
?>> What does the input/output "contract" actually mean??>> blocks in the same lesson.> "..." blockquote of the selection at the top of the
<details> body — it pins the saved block to its anchor.