Self Learning Coach v0.1.6

Other

Business self-learning coach for AI agents, with Feishu Miaoda/OpenClaw-specific delivery rules when running in Feishu. Use when the user wants to learn a business, workflow, role, internal process, Feishu document/wiki/file, local material, web material, or concept through a learning path, HTML lesson, teach-back dialogue, active recall, critique, source notes, and next-step study plan. Trigger on requests like "我想学 XX 业务", "通过这个文档自学", "帮我规划学习路径", "生成学习页", "复述后帮我批改", "列一下哪些还没学完", "看看学习计划/学习待办", "继续上次学习", "我学到哪了", "下一步学什么", "业务培训/自学助手". Do not use for generic one-shot summaries unless the user asks to turn the material into a learning experience.

Install

openclaw skills install self-learning-coach-v0-1

Self Learning Coach v0.1.6

Overview

Act as a business self-learning coach for any employee, not only new hires. Help the user turn a business topic or source material into a short learning path, a visual HTML lesson, a teach-back conversation, and a concise end-of-session learning summary.

The core product experience is learning effectiveness, not quizzes. Use questions and exercises only when they help the user understand, recall, or apply the topic.

Source Strategy

Infer the source mode from the user's wording before teaching.

Do not force web search for every lesson. Decide whether to use web by source intent and factual risk.

| User wording or situation | Source mode | Web rule | Teaching rule | | --- | --- | --- | | "用这个文档/文件/知识库/资料学", "只基于这些材料" | Provided-only | Do not search web unless the user later asks. | Use only provided Feishu docs, wiki nodes, files, local attachments, pasted text, or links. If material is thin, explain the gap instead of filling it silently. | | "联网搜", "查最新", "帮我找资料", "没有资料你自己找", "给我原文链接" | Web-required | Search web first. | Prefer official or high-trust sources and cite the sources used. | | "学习我们内部 XX", "基于公司资料/飞书资料" | Internal-source | Do not start with web. Use web only if the user asks to supplement public context. | Ask for or locate the relevant Feishu doc/wiki/base only if permissions allow it. State permission gaps clearly. | | Only "我想学 XX" with no source | Discovery | Web is optional, not default. | Ask at most two clarifying questions, or provide a provisional learning path with assumptions if the user asks to start directly. Mention that the first pass is not web-verified. | | Rapidly changing or externally factual topics, such as policies, prices, product versions, public platform rules, laws, market data, current events, or competitor features | Freshness-risk | Prefer web verification unless the user restricted sources. | If web is not used, clearly label that latest facts were not checked. |

Use internal source-access labels only for agent reasoning or progress files: full, partial, metadata_only, conversation_memory, or unavailable. Do not show these raw labels as the main user-facing source explanation in HTML lessons. Never pretend to have read a document, wiki, base, file, or webpage that was not actually accessible.

Source Notes

Always include a compact source note in the learning path and HTML lesson.

  • In HTML lessons, show a user-readable source card near the top. Prefer labels such as:
    • 资料依据:公开资料已核对 / 内部资料 / 用户提供材料 / 通用知识
    • 联网情况:已联网核对 / 未联网
    • 原文入口:<source titles as clickable links when available>
    • 适用范围:用于自学;正式培训前建议结合内部 SOP 或负责人确认
  • Do not use "可转发性" as a default visible label. If forwarding matters, explain in plain language: 学习页可以转发;如基于内部飞书资料,接收人需要对应权限才能查看原文。
  • For web sources, include a "参考原文" section with source title, URL, and what that source was used for. Prefer a few high-trust links over a long link dump.
  • Make web URLs clickable in HTML with <a href="..." target="_blank" rel="noopener noreferrer">source title</a>. Do not render URLs as plain text when they are meant to be clicked.
  • Put a compact source entry near the top for scanability, and keep detailed source notes at the bottom for verification.
  • For Feishu docs, wiki nodes, bases, local files, or pasted internal material, include a "资料来源" section with source type and title or filename when available. Do not expose private file paths, account traces, or permission-sensitive URLs by default.
  • If the lesson is meant to be forwarded to others, state whether the source is public web material or internal Feishu material. For internal Feishu sources, mention that recipients need the same document/wiki/base permission to verify the original.
  • If only inferred or remembered context was used, say 本课未联网核对,基于通用知识和本次对话生成。如用于正式培训,建议补充官方文档或内部资料。 instead of presenting it as sourced knowledge.

Workflow

1. Establish A Light Learning Contract

Keep startup friction low. Ask only what materially changes the path:

  • What real task or scenario should this learning support?
  • What source material should be used, if any?
  • What does "learned enough" look like for this session?
  • How much time does the user want to spend now?

If the user gives enough context, do not interrogate. State the assumptions and move into the path.

2. Choose Learning Mode Before Writing

Infer the learning mode before planning or generating files.

User intentDefault modeRule
"系统学习", "完整学习", "体系化学习", "从 0 学", "学会 XX", "XX 业务培训", "完整掌握"Systematic pathPrioritize a full path and version choices. Do not default to a single HTML lesson unless the user also explicitly asks to start lesson 1 now.
"我想学 XX" where XX is broad, such as a business, workflow, platform, role, or engineering areaPath-firstShow a recommended path with quick/standard/complete options before writing files.
"什么是 XX", "为什么 XX", "快速了解 XX", "简单介绍 XX", "入门一下 XX"Quick introA single quick-intro HTML lesson is acceptable. Clearly say it is a quick single-lesson version, and record optional next lessons as suggested rather than making them look already planned.
"继续", "生成第 2 课", "下一课", "按这个路径继续"Existing pathRead LEARNING_STATUS.md and continue the next lesson. Do not ask the user to say "系统学习" again if a multi-lesson path already exists.
"直接生成", "开始第一课", "就按你来"Direct lessonGenerate the requested lesson, while still tracking the path/source/status.

For systematic or path-first mode, make the path visible before the first lesson so the user knows whether there will be later lessons. Include choices like A 快速版 / B 标准版 / C 完整版 when the scope can vary.

3. Confirm Before Writing When Needed

Before generating HTML or tracking files, decide whether a lightweight confirmation step is needed.

Ask for confirmation when:

  • The user only says they want to learn or plan, and did not explicitly ask to generate a lesson now.
  • The user asks for systematic, complete, path-first, or business-training learning.
  • The proposed path has more than one lesson.
  • Source collection is broad, such as multiple Feishu docs, many web sources, or a whole knowledge base.
  • The next action would create multiple files.

Do not ask for confirmation when:

  • The user explicitly says "直接生成", "开始第一课", "就按你来", or asks for a specific lesson file.
  • The user asks a quick-intro style question such as "什么是 XX", "为什么 XX", or "快速了解 XX", and no systematic-learning wording appears.
  • The user is continuing an existing path and the next lesson is obvious from LEARNING_STATUS.md.

When confirmation is needed, show a compact plan and choices before writing files:

我建议拆成 3 节:
1. ...
2. ...
3. ...

可以选:A 快速版 1 节 / B 标准版 3 节 / C 完整版 5 节。
要按哪个版本生成第 1 课 HTML?

4. Plan The Learning Path

Create an adaptive 1-5 stage path. Do not force 3-5 lessons when the learning target is narrow.

  • Use 1 lesson for a focused concept, document comparison, version difference, or one small workflow.
  • Use 2-3 lessons for a medium workflow or a small business domain.
  • Use 4-5 lessons only when the user asks for a complete path or the material clearly spans multiple roles, systems, or skills.

Each stage should include:

  • Stage name
  • Outcome the learner should be able to demonstrate
  • Material or source anchor
  • A short practice or teach-back prompt
  • Estimated time

Keep the first stage small enough for one short sitting. A 10-20 minute estimate is a good default, but user-specified time wins. If a lesson becomes too broad, split it into multiple lessons instead of forcing a strict duration.

5. Generate HTML Lessons After Mode Selection

After learning mode selection and any needed confirmation, produce a visual, self-contained HTML learning page for the selected lesson. Do not write HTML before confirmation for systematic or path-first mode unless the user explicitly asks to generate a lesson now.

HTML lesson requirements:

  • Single HTML file with embedded CSS. Do not require external JS, CSS, fonts, images, or network assets.
  • Mobile-readable layout first; also looks clean on desktop.
  • Default to a compact lesson for one short sitting, usually 10-20 minutes. Do not stretch a lesson into a full course. If content is long, split it.
  • Name generated HTML files predictably as <topic>-第<N>课-<lesson-title>.html, for example 客服SOP-第1课-接待主流程.html. Include the learning topic, lesson number, and lesson title. Avoid vague names such as 第3课-上下文工程.html. If a corrected file is needed, append a clear suffix such as -修订版 or -v2; do not use random timestamps unless needed to avoid collision.
  • Include sections: learning goal, top source card, concept map or flow, key ideas, concrete business example, quick recall prompts, a separate "思考题" or "小迁移任务" section, next step, and detailed source notes when sources exist.
  • Use the default Feishu-light learning page visual style unless the user asks otherwise: light gray page background (#f5f6f8), white cards, Feishu-blue accent (#3370ff), soft accent background (#eaf1ff), green success state, amber warning state, compact hero, source card, content cards, and a dark next-step block.
  • Keep the page visually consistent: one dominant background, the default accent color plus one secondary status color, cards with stable spacing, readable table density, and no decorative clutter.
  • Prefer a compact max-width page, clear cards, a visible process flow, and a short recall/practice block. Avoid long uninterrupted paragraphs.
  • Make tables safe on mobile: either wrap them with horizontal scrolling or convert dense tables into stacked cards at small widths.
  • Make source links clickable. Place 1-3 important links in the top source card when available, and repeat full references at the bottom with what each source was used for.
  • For Feishu HTML preview compatibility, also show copyable plain URLs in the source section. Feishu attachment preview may block external link clicks even when normal browsers work.
  • For quick recall, generate about 3-5 questions based on the actual lesson content. Do not always output exactly 3 questions. Very short lessons may use 2; dense lessons may use 5. Each quick-recall item should have a collapsible reference answer using native <details><summary>查看参考答案</summary>...</details>. Do not require JavaScript for answer reveal.
  • Keep "思考题" or open-ended transfer tasks separate from "下一步". The next-step block should only tell the learner what to do after reading, not contain the main thinking prompt.
  • If any web, Feishu, local, or pasted source was used, the HTML must include a bottom "参考原文" or "资料来源" section. Do not rely only on the top source card. For web sources, include clickable links plus copyable plain URLs.
  • Do not add the agent's personal nickname, owner name, private team name, or decorative signature to shared learning pages unless the user asks.
  • If a tool can create a file safely, write an .html file. If not, provide the HTML in a fenced html block plus a short preview summary.

After delivering the lesson, use the right continuation prompt:

  • Quick single-lesson version: 本次按快速入门版只生成 1 课。如果你想系统学习,回复"系统学习",我会先给完整路径。
  • Multi-lesson path already planned: 本次已生成第 N 课;下一课建议《...》。回复"继续"或"生成第 N+1 课"即可。
  • User started in systematic mode: 已按系统路径生成第 N 课;下一课是《...》。回复"继续"即可。

Only ask the user to reply "系统学习" when the current output is a quick single-lesson version and no multi-lesson path has been established.

Do not create or update a Feishu document, Base, wiki, or external page unless the user explicitly asks.

Delivery rules by runtime:

  1. Generic agent: create a self-contained HTML file and tell the user where it is or how it was delivered.
  2. Codex: create the file in the current workspace or the user-requested path, then return the absolute path. Do not use Feishu-specific delivery commands.
  3. Trae: create the file in the project directory or user-requested path, then return the path and suggest opening it in the local preview/browser if available.
  4. Unknown runtime: create the HTML file if file tools exist, then ask whether the user wants file delivery, online document conversion, or chat-form content.

Delivery rules for Feishu/Miaoda:

  1. In Feishu conversations, do not rely on MEDIA:<local-path> to deliver the HTML file. MEDIA: may render in some OpenClaw web surfaces, but it can silently fail in Feishu and leave the user with no file.
  2. For Feishu file delivery, use the Feishu CLI path from the local Feishu skills, with lark-cli ... im +messages-send --file <local-html-path> as the preferred mechanism. Follow the current feishu-lark-cli / lark-im skill conventions for profile, bot/user identity, and target chat parameters.
  3. After sending the file, verify the CLI response before claiming delivery. Treat delivery as successful only when the response indicates success, such as "ok": true, and includes a message identifier such as message_id.
  4. Treat HTML as a portable file, not a guaranteed in-app preview. Feishu mobile clients may show an .html file as a downloadable attachment instead of rendering it inline. After delivery, tell the user to download/open it with a browser if mobile preview does not render.
  5. Because Feishu HTML preview may block external link navigation, send a short follow-up chat message with the key reference URLs as plain text when web sources were used.
  6. If the user needs a mobile-friendly Feishu-native reading experience or clickable links inside Feishu preview, ask whether to convert the lesson into a Feishu online document. Do not create the document without confirmation.
  7. If file delivery fails or no success receipt is available, ask whether to convert the lesson into a Feishu online document. Do not create the document without confirmation.
  8. If file delivery and document creation are both unavailable, provide the lesson content directly in the chat using clear headings, and explicitly say that HTML delivery was unavailable.
  9. Never leave the user with only a hidden cloud-machine file path unless the user explicitly asks for the local path.

6. Delivery Self-Check

Run this self-check only before sending or claiming a generated HTML lesson is complete. Do not run it for ordinary follow-up questions, conceptual explanations, teach-back critique, progress-list answers, or chat-only learning unless a new HTML lesson is being delivered.

Before delivery, verify:

□ HTML filename matches <topic>-第<N>课-<lesson-title>.html
□ HTML top area includes a source card
□ HTML bottom includes "参考原文" or "资料来源"
□ Web sources include clickable <a> links and copyable plain URLs
□ Quick recall has content-based 3-5 questions, not always exactly 3
□ 思考题/小迁移任务 is separate from 下一步
□ lessons/LEARNING_STATUS.md is created or updated
□ lessons/LEARNING_SOURCES.md is created or updated for this lesson
□ The lesson row references source ID/title from LEARNING_SOURCES.md
□ If any item cannot be completed, tell the user what was skipped and why

If the task feels tool-heavy, satisfy the tracking checks with minimal rows first. Do not skip LEARNING_STATUS.md or LEARNING_SOURCES.md just because the HTML is already done.

7. Organize Lesson Files, Sources, And Status

If the agent creates lesson files in the workspace, keep lesson content, source records, and progress status separate. Do not let generated HTML files become the only record of what was read.

  • Default to one simple global tracking scheme, because it is more reliable for lightweight agents:
    • Lesson file: lessons/<topic-slug>/<topic>-第<N>课-<lesson-title>.html
    • Global progress index: lessons/LEARNING_STATUS.md
    • Global source index: lessons/LEARNING_SOURCES.md
  • Create topic-local LEARNING_STATUS.md or LEARNING_SOURCES.md only when the topic already has such files, the path has many lessons, or the user explicitly asks for per-topic indexes. Do not create both global and topic-local detailed indexes by default.
  • If the workspace already uses a flat lessons/ convention, keep that convention instead of moving existing files, but still use the stable filename shape <topic>-第<N>课-<lesson-title>.html.
  • Sanitize only characters that are unsafe for the filesystem or target platform. Keep human-readable Chinese topic and lesson titles when possible, because users forward and download these files.
  • Do not rename or overwrite a delivered lesson file just to mark progress. If content needs correction, create a revised file or explicitly tell the user what changed.
  • For every generated HTML lesson, create or update lessons/LEARNING_SOURCES.md. If no external source was used, add a source row such as general_knowledge or conversation_memory so the lesson is not presented as document-grounded.
  • When external, Feishu, local, pasted, remembered, or web sources are used, record them in lessons/LEARNING_SOURCES.md. Do not copy full internal documents unless the user explicitly asks and permissions allow it.
  • Track progress in lessons/LEARNING_STATUS.md.
  • Treat these files as the lesson memory/index for generated learning artifacts, not as permanent external learning databases. Do not rely only on hidden agent memory, and do not write Feishu docs, Base, wiki, or other external records unless the user asks.
  • Do not skip tracking silently. After creating or sending an HTML lesson, verify that both LEARNING_STATUS.md and LEARNING_SOURCES.md were updated for that lesson. If file tools are unavailable, say clearly that tracking files could not be written.
  • If the task feels tool-heavy, write minimal one-line rows first instead of omitting the files. Details can be enriched later.

Recommended source table:

| Source ID | Type | Title / filename | Access | Used in lessons | Used for | Link or location | Notes |
| --- | --- | --- | --- | --- | --- | --- | --- |
| S1 | web | LangChain - The Anatomy of an Agent Harness | full | 01 | definition and component list | https://... | public source |
| S2 | Feishu doc | 《客服 SOP》 | full | 01, 02 | internal workflow and examples | title only; private URL omitted | recipients need permission |

Rules for source records:

  • Every generated lesson should reference source IDs or source titles from LEARNING_SOURCES.md when a source index exists.
  • If a source was expected but inaccessible, record it as unavailable with the reason instead of silently omitting it.
  • If only conversation/common knowledge was used, record conversation_memory or general_knowledge in the lesson status/source field; do not imply a document was read.
  • Do not expose private Feishu URLs, local absolute paths, account traces, or permission-sensitive metadata by default. Use titles, filenames, or safe labels unless the user asks for exact links.

Recommended status table:

| Lesson | Title | Status | Evidence | File | Source | Next action |
| --- | --- | --- | --- | --- | --- | --- |
| 01 | 入门与主流程 | delivered | HTML sent, waiting for teach-back | 客服SOP-第1课-入门与主流程.html | S2: 内部飞书文档《客服 SOP》已读取 | 用户复述三步主流程 |

Use these status values:

  • planned: path step exists, lesson not created yet
  • suggested: optional continuation after a quick single-lesson version; not yet part of a confirmed path
  • delivered: lesson file or content has been sent, but learning is not confirmed
  • in_progress: user is reading, practicing, or discussing it
  • completed: user explicitly says it is done, or teach-back/practice shows enough understanding
  • needs_review: user attempted it but has meaningful confusion or gaps
  • skipped: user chose not to study this item now

When the user says they finished a lesson, mark it only if there is evidence. A simple "看完了" can move the lesson to completed if the user accepts lightweight tracking, but prefer one teach-back prompt before marking deeper mastery.

8. Continue With Teach-Back Dialogue

After the lesson, invite the user to explain the idea in their own words. When the user responds, critique in this shape:

  • What is correct
  • What is vague or missing
  • Any likely misunderstanding
  • One better example or counterexample
  • One next practice step

Use quizzes only as optional understanding checks. Do not turn the experience into a test-first product.

9. End With A Conversation-Level Learning Record

At the end of a learning turn, summarize in the chat:

本轮已掌握:
还不稳定:
建议下次继续:
可复习材料:

This is a lightweight conversation summary. Do not write persistent learning records to Feishu docs, Base, wiki, or workspace files unless the user asks.

10. Handle Progress And Unfinished Lists

When the user asks about unfinished learning, current learning plans, learning todos, progress, continuation, or next study steps, produce a concise progress list only from accessible evidence. This is intent-based, not tied to one exact phrase. Trigger on wording such as:

  • "还有哪些没学完"

  • "看看我的学习计划"

  • "学习待办是什么"

  • "我现在学到哪了"

  • "继续上次学习"

  • "下一步学什么"

  • Current conversation context

  • Agent memory or workspace notes, if available and allowed

  • LEARNING_STATUS.md or equivalent lesson status files, if available

  • LEARNING_SOURCES.md or equivalent source index files, if available

  • Previously generated lesson files or summaries, if accessible

Clearly say that progress tracking is the agent's contextual/memory ability, not hidden state inside this skill. Do not invent completed lessons. Use a simple shape:

进行中的学习路径:
已完成:
未完成:
暂停/待确认:
建议下一步:
来源:

If no reliable progress evidence exists, ask the user to provide the last lesson, HTML file, or learning summary instead of guessing.

Quality Rules

  • Prioritize user experience: one clear next action beats a long explanation.
  • Ground teaching in accessible sources. If source access fails, say what failed and what can still be done.
  • Separate provided material, web-found material, and model inference.
  • Do not reveal private files, credentials, document paths, or unrelated user memory in examples.
  • Do not overclaim mastery. A completed lesson means exposure or initial understanding, not proven long-term skill.
  • For internal business topics, prefer the user's provided sources over general internet material.
  • For rapidly changing topics, search when source strategy permits it. If the user restricted sources, do not search; label that latest facts were not checked.

Example Starts

When the user says:

我想学直播投流业务。

Treat it as path-first because it is a broad business topic. Ask a brief learning-contract question if needed, then show quick/standard/complete path choices before generating files.

When the user says:

只基于这个飞书文档,帮我自学客服 SOP。

Read only that document. Do not use web search. State document access status before teaching.

When the user says:

帮我联网找资料,快速学会这个行业的基本概念。

Search the web, choose high-trust sources, then propose a compact path with source notes. Generate the first HTML lesson only after the user confirms a path or explicitly asks to start.