用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Tzeusy/butlers --skill teaching-session命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Guide for discovering, analyzing, and pruning the Butlers test suite. Use when working on test condensation beads (Phase 1 epic bu-rhztl and Phase 2 epic bu-hg8rl both CLOSED; Phase 3 maintenance cycle underway 2026-06-21), assessing test bloat, identifying pruning targets, or rewriting tests to be contract-driven. Triggers on test reduction, test pruning, test consolidation, or condensation tasks for this project. Also use when a fresh session needs to assess test health, create new condensation beads, or resume in-progress condensation work.
Generate a weekly home energy digest with trends, top consumers, and recommendations.
Orchestrate a UX redesign of a Butlers dashboard page (or sub-page set) using /project-direction as the spec+beads engine, with redesign-specific upfront phases for vision capture, asset ingestion, impact analysis, backend-contract derivation, LLM-cost feasibility, manifesto/identity preservation, and a th-design design-bar audit. The binding design language is the Dispatch spec (openspec/specs/dashboard-design-language/spec.md); bundles live under pr/overview/ and resolve via references/bundle-registry.md. Use when asked to redesign a dashboard page, with or without a Claude Design bundle. Triggers on "redesign the X page", "plan the Y redesign", "integrate the redesign bundle", "what would it take to ship the SLUG redesign", "design language integration for AREA".
基于 SOC 职业分类
正在显示 SKILL.md
| name | teaching-session |
| description | Teach one concept at a time using Socratic scaffolding and mastery updates. |
| version | 1.0.0 |
Single-concept teaching loop. Walk the mind map's frontier — pick the next concept whose prerequisites are all mastered, teach it with Socratic scaffolding, quiz comprehension, record mastery, and schedule a spaced repetition review. One session, one concept.
Use this skill when:
TEACHING or QUIZZINGTEACHING status~2,000 output tokens per teaching session. Be concise and targeted. Do not over-explain. One concept per session — do not chain into the next concept even if it seems natural.
Never ask multiple questions in the same message. Ask one question, wait for the answer, then continue. This is especially critical in the diagnostic probe and quiz phases.
When a user asks "what is X?", do not immediately explain X. Ask what they already know about X, what context they are coming from, or why they are curious. Use their answer to calibrate:
Socratic questioning reveals understanding in ways that passive reception does not. Understanding demonstrated through dialogue sticks longer than explanation received.
Call teaching_flow_get(mind_map_id) to read the current flow state. Note:
status: Should be TEACHING or QUIZZINGcurrent_node_id: The node being taught (non-null when status is TEACHING)current_phase: explaining, questioning, or evaluatingIf resuming a partially-complete session (e.g., current_phase = "questioning"), skip to the
appropriate step below.
If current_node_id is set in the flow state, use that node. Otherwise:
Call curriculum_next_node(mind_map_id) to get the highest-priority frontier node.
If no frontier nodes exist (all prerequisites unmastered or all concepts mastered): notify the user of the current state and exit. Do not skip prerequisites.
Call memory_recall(topic=<concept_label>) and memory_search(query=<concept_label>) to check
for any existing knowledge or prior struggle areas related to this concept. This informs how
deep to start the explanation.
Note: the node dict returned by curriculum_next_node() and mind_map_node_get() includes an
entity_id field — save it alongside node_id for use in memory_store_fact() calls below.
Ask one opening question via notify():
"Before I explain [concept], what do you already know about it?"
Wait for the answer. Use it to calibrate explanation depth:
Deliver the opening via:
notify(
channel="telegram",
message="Before I explain [concept], what do you already know about it?",
intent="send",
request_context=<session_request_context>
)
After receiving the Socratic probe answer, explain the concept clearly:
notify(channel="telegram", intent="reply", ...)Ask 1–3 quiz questions. One per message. Wait for each answer.
Question types to use:
Quality scoring rubric for each answer:
| Score | Meaning |
|---|---|
| 5 | Correct, confident, demonstrates understanding |
| 4 | Correct with minor gaps or slight hesitation |
| 3 | Essentially correct — core right, minor detail missing |
| 2 | Partially correct — missing a key insight |
| 1 | Largely incorrect but clearly attempted |
| 0 | No meaningful answer or complete misunderstanding |
For each answer, call:
mastery_record_response(
node_id=<current_node_id>,
mind_map_id=<mind_map_id>,
question_text=<the question asked>,
user_answer=<user's answer>,
quality=<0-5 score>,
response_type="teach"
)
Feedback protocol:
notify(intent="react", emoji="✅", ...) then notify(intent="reply", ...))After all comprehension questions are answered, call:
spaced_repetition_record_response(
node_id=<current_node_id>,
mind_map_id=<mind_map_id>,
quality=<average_quality_across_questions>
)
This runs the SM-2 algorithm and schedules the first review interval. The returned
interval_days tells you when the next review is due.
Call memory_store_fact() to record what the user demonstrated:
memory_store_fact(
subject=<concept_label>,
predicate="learning_outcome",
content=<brief summary of what the user understood or got right>,
permanence=<"stable" for transferable skills, "standard" for topic-specific knowledge>,
importance=<7.0 for solid mastery, 5.0 for partial understanding>,
tags=[<topic_tag>, <"mastered" or "learning">],
entity_id=<node_entity_id>
)
If any question had quality <= 2, also record the struggle:
memory_store_fact(
subject=<concept_label>,
predicate="struggle_area",
content=<what specifically confused the user>,
permanence="volatile",
importance=6.0,
tags=[<topic_tag>, "struggle"],
entity_id=<node_entity_id>
)
Call teaching_flow_advance(mind_map_id) to transition to QUIZZING (if additional quiz
questions remain) or REVIEWING (based on frontier state and SM-2 schedule).
Notify the user of the next review timing and exit:
# Format interval as hours (<1d) or days (≥1d)
if interval_days < 1:
interval_text = f"{int(interval_days * 24)} hours"
else:
interval_text = f"{interval_days:.0f} day{'s' if interval_days != 1 else ''}"
notify(
channel="telegram",
message=f"[concept] covered. Well done! I'll check back with you in {interval_text} "
f"to make sure it sticks.",
intent="reply",
request_context=<session_request_context>
)
Do not start the next concept. The next session handles the next frontier node.
mastery_record_response(response_type="teach")spaced_repetition_record_response()memory_store_fact()teaching_flow_advance()notify()