โ† Back to Skills Marketplace
ben61405

Personal Tutor

by ็މ็ฑณๅ“ฅ ยท GitHub โ†— ยท v1.0.3 ยท MIT-0
cross-platform โš  suspicious
38
Downloads
1
Stars
0
Active Installs
3
Versions
Install in OpenClaw
/install personal-tutor
Description
๐ŸŽ“ Personal Tutor โ€” Your private AI learning coach. ไฝ ็š„็งไบบAIๅญฆไน ๅฏผๅธˆใ€‚ Formerly knowledge-digest, now rebranded and upgraded to v1.0.1. ๅŽŸๅ knowledge-digest๏ผŒ็Žฐๅทฒๅ…จ้ขๅ‡็บงไธบ...
README (SKILL.md)

Personal Tutor โ€” Full-Cycle Learning Management / ๅ…จๆต็จ‹ๅญฆไน ็ฎก็†็ณป็ปŸ

Overview / ๆฆ‚่ฟฐ

Personal Tutor turns every learning session into structured, searchable, long-term knowledge. It handles three scenarios / ไธ‰ไธชๅœบๆ™ฏ๏ผš

  1. Start a new subject / ๅผ€ๅฏๆ–ฐๅญฆ็ง‘ โ€” create syllabus, learning log, config entries
  2. Daily lesson / ๆฏๆ—ฅไธŠ่ฏพ โ€” review โ†’ teach โ†’ quiz โ†’ prompt to archive
  3. Post-lesson archive / ่ฏพๅŽๅฝ’ๆกฃ โ€” update 6 layers: log, syllabus, memory, knowledge base, index, config

First-Run Onboarding / ้ฆ–ๆฌก่ฎพ็ฝฎๅผ•ๅฏผ

Before executing any workflow, check for a config file at:

{workspace}/.personal-tutor-config.json

If it does not exist, run the onboarding flow / ๅฆ‚ไธๅญ˜ๅœจๅˆ™่ฟ่กŒๅผ•ๅฏผๆต็จ‹๏ผš

Onboarding Flow / ๅผ•ๅฏผ้—ฎ้ข˜

Ask the user these questions (one at a time, or all at once if they prefer)๏ผš

  1. Learning root directory / ๅญฆไน ่ต„ๆ–™ๆ น็›ฎๅฝ• โ€” Where should subject folders be stored?

    • Example: D:\Learning\ or ~/Documents/Learning/
    • This is where syllabus files and learning logs live.
  2. Knowledge base tool / ็Ÿฅ่ฏ†ๅบ“ๅทฅๅ…ท โ€” What do you use for long-term notes?

    • obsidian โ€” wikilinks ([[link]]), vault-based
    • plain โ€” standard Markdown, folder-based / ็บฏๆ–‡ไปถๅคน
    • notion โ€” notes only (API integration not included)
    • none โ€” skip concept archiving entirely / ่ทณ่ฟ‡ๆฆ‚ๅฟตๅฝ’ๆกฃ
  3. Knowledge base path / ็Ÿฅ่ฏ†ๅบ“่ทฏๅพ„ (if tool โ‰  none) โ€” Where is your vault/notes root?

    • Example: D:\Obsidian\MyVault\ or ~/Notes/
  4. Archive depth / ๅฝ’ๆกฃๆทฑๅบฆ โ€” How thorough should post-lesson archiving be?

    • light โ€” update log + syllabus + memory only / ไป…ๆ›ดๆ–ฐ่ฎฐๅฝ•+ๅคง็บฒ+่ฎฐๅฟ†
    • full โ€” light + extract concepts to knowledge base + refresh index / ๅฎŒๆ•ดๅฝ’ๆกฃๅซๆฆ‚ๅฟตๅ…ฅๅบ“+็ดขๅผ•ๅˆทๆ–ฐ
  5. Preferred language / ๅ†…ๅฎน่ฏญ่จ€ โ€” zh (Chinese), en (English), zh-en (bilingual / ไธญ่‹ฑๅŒ่ฏญ), or auto (follow user's language)

  6. Knowledge base schema / ็Ÿฅ่ฏ†ๅบ“่ง„ๅˆ™ๆ–‡ไปถ (if tool = obsidian or plain) โ€” Do you have a rules file that defines how concepts should be structured, named, and linked?

    • If yes, provide the path (e.g., D:\Notes\WIKI-SCHEMA.md). This file will be read before every concept extraction and its rules take priority over built-in defaults.
    • If no, the built-in Knowledge Base Rules (see section below) will be used.

Config File Schema / ้…็ฝฎๆ–‡ไปถ็ป“ๆž„

After onboarding, create:

{
  "version": "1.0",
  "learningRoot": "/path/to/learning/",
  "knowledgeBase": {
    "tool": "obsidian",
    "path": "/path/to/vault/",
    "schemaPath": "/path/to/WIKI-SCHEMA.md"
  },
  "archiveDepth": "full",
  "language": "auto",
  "subjects": {}
}

The subjects field will be populated as new subjects are added.


Scenario 1: Starting a New Subject / ๅœบๆ™ฏไธ€๏ผšๅผ€ๅฏๆ–ฐๅญฆ็ง‘

Trigger / ่งฆๅ‘ๆกไปถ

User says "start learning [subject name]" or "open a new subject: [name]"ใ€‚ ไธญๆ–‡่งฆๅ‘๏ผš"ๅผ€ๅฏ[ๅญฆ็ง‘ๅ]ๅญฆไน "ใ€"ๆ–ฐๅปบๅญฆ็ง‘[ๅญฆ็ง‘ๅ]"ใ€‚

Workflow / ๅทฅไฝœๆต

  1. Read config / ่ฏปๅ–้…็ฝฎ โ€” Load .personal-tutor-config.json to get learningRoot and preferences.

  2. Detect category structure / ๆฃ€ๆต‹ๅˆ†็ฑป็ป“ๆž„ โ€” Scan {learningRoot}/ for existing subdirectories:

    • If subdirectories exist (e.g., ๅคงๅญฆไธ“ไธš็Ÿฅ่ฏ†/, ่Œไธšๅ‘ๅฑ•/, Academic/, Professional/), they are treated as categories / ๅˆ†็ฑปใ€‚Present them to the user and ask which one the new subject belongs to. If none fit, offer to create a new category.
    • If {learningRoot}/ is flat (no subdirectories), the subject goes directly under {learningRoot}/.
    • Store the chosen category in the subject's config entry as category.
  3. Create subject directory / ๅˆ›ๅปบๅญฆ็ง‘็›ฎๅฝ• โ€” Under {learningRoot}/{category}/ (or {learningRoot}/ if no category), create a folder named after the subject.

  4. Create syllabus file / ๅˆ›ๅปบๆ•™ๅญฆๅคง็บฒ โ€” {learningRoot}/{category}/{subject}/syllabus.md

    • Content: subject overview, learning objectives, phased plan (by day/week), key topics per phase, estimated completion, expected outcomes.
    • If the user provides specific goals or a textbook, incorporate them.
    • Leave the first phase/day marked as โณ Pending / ๅพ…ๅญฆ.
  5. Create learning log file / ๅˆ›ๅปบๅญฆไน ่ฎฐๅฝ• โ€” {learningRoot}/{category}/{subject}/learning-log.md

    • Content: an empty tracking table with columns: Date | Content | Mastery | Issues | Next
    • Initial entry: today's date, "Subject initialized", N/A, "None", "Day 1 โ€” start learning"
  6. Update config / ๆ›ดๆ–ฐ้…็ฝฎ โ€” Add to subjects:

    "subject-name": {
      "currentDay": 1,
      "category": "ๅคงๅญฆไธ“ไธš็Ÿฅ่ฏ†",
      "syllabusPath": "{learningRoot}/{category}/{subject}/syllabus.md",
      "logPath": "{learningRoot}/{category}/{subject}/learning-log.md",
      "status": "active",
      "startedAt": "YYYY-MM-DD"
    }
    
  7. Update memory / ๆ›ดๆ–ฐ่ฎฐๅฟ† โ€” If the agent has a memory system (MEMORY.md or equivalent), record the new subject there.

  8. Create knowledge base folder / ๅˆ›ๅปบ็Ÿฅ่ฏ†ๅบ“ๆ–‡ไปถๅคน (if archiveDepth = full and knowledgeBase.tool โ‰  none) โ€” Create an empty subject folder under {knowledgeBase.path}/ if it doesn't exist.

  9. Report / ๆฑ‡ๆŠฅ (output in configured language๏ผŒๆŒ‰้…็ฝฎ่ฏญ่จ€่พ“ๅ‡บ):

โœ… New subject "[Subject Name]" is ready. / ๆ–ฐๅญฆ็ง‘"[ๅญฆ็ง‘ๅ]"ๅทฒๅผ€ๅฏใ€‚

Created / ๅทฒๅˆ›ๅปบ๏ผš
  ๐Ÿ“‹ Syllabus: {category}/{subject}/syllabus.md
  ๐Ÿ“ Learning log: {category}/{subject}/learning-log.md
  โš™๏ธ  Config updated / ้…็ฝฎๅทฒๆ›ดๆ–ฐ

You're all set for Day 1. Say "start learning [subject]" when ready.

Scenario 2: Daily Lesson / ๅœบๆ™ฏไบŒ๏ผšๆฏๆ—ฅไธŠ่ฏพ

Trigger / ่งฆๅ‘ๆกไปถ

User says "start learning [subject]" or "continue [subject]"ใ€‚ ไธญๆ–‡่งฆๅ‘๏ผš"ๅผ€ๅง‹[ๅญฆ็ง‘ๅ]ๅญฆไน "ใ€"็ปง็ปญ[ๅญฆ็ง‘ๅ]ๅญฆไน "ใ€‚

Workflow / ๅทฅไฝœๆต

  1. Read config / ่ฏปๅ–้…็ฝฎ โ€” Load current progress from .personal-tutor-config.json.

  2. Read syllabus and log / ่ฏปๅ–ๅคง็บฒไธŽ่ฎฐๅฝ• โ€” Load syllabus.md and learning-log.md to understand where we are.

  3. Review previous lesson / ๅ›ž้กพไธŠ่Š‚่ฏพ โ€” Briefly summarize the last session's core content (read from the learning log). Keep it under 3 bullet points.

  4. Teach new content / ่ฎฒๆŽˆๆ–ฐ็Ÿฅ โ€” Deliver the next topic(s) according to the syllabus. Follow these teaching principles:

    • Start with "why this matters" before "how it works" / ๅ…ˆ่ฎฒ"ไธบไป€ไนˆ้‡่ฆ"ๅ†่ฎฒ"ๆ€Žไนˆ่ฟไฝœ"
    • Use concrete examples before abstract definitions / ็”จๅ…ทไฝ“ไพ‹ๅญๅผ•ๅฏผๆŠฝ่ฑกๅฎšไน‰
    • Break complex topics into digestible chunks / ๆŠŠๅคๆ‚่ฏ้ข˜ๆ‹†ๆˆๅฏๆถˆๅŒ–็š„ๆจกๅ—
    • Pause for questions between major sections / ๅคงๆฎต่ฝไน‹้—ดไธปๅŠจ่ฏข้—ฎ
  5. Interactive check / ไบ’ๅŠจๆต‹้ชŒ (if applicable to the subject) โ€” Ask 2-5 questions to verify understanding. Wait for user's answers, then give feedback and corrections.

  6. Session notes / ่ฏพๅ ‚่ฎฐๅฝ• โ€” Mentally record: what was covered, what the user struggled with, what needs review.

  7. Post-Lesson Self-Verification / ่ฏพๅŽ่‡ชๆŸฅ๏ผˆๅผบๅˆถๆ‰ง่กŒ๏ผ‰ โ€” Before telling the user the lesson is complete, run the Post-Lesson Self-Verification Protocol (see dedicated section below). If any layer is missing, fix it immediately. Do NOT say "lesson complete" / "ๅญฆๅฎŒไบ†" / "done" until all layers pass.

  8. End prompt / ่ฏพๅ ‚็ป“ๆŸ่ฏญ (only after self-verification passes, output in configured language):

๐Ÿ“š Today's lesson on [Subject] (Day [N]) is complete. / ไปŠๆ—ฅ่ฏพ็จ‹ๅฎŒๆˆใ€‚

Covered / ๅ†…ๅฎน: [brief summary]
Mastery / ๆŽŒๆก: [assessment]
Issues / ้—ฎ้ข˜: [any problems noted]

โœ… Archive verified / ๅฝ’ๆกฃ่‡ชๆฃ€:
  ๐Ÿ“ Learning records: updated
  ๐Ÿง  Knowledge base: [N concepts created/updated, or "no changes"]
  โš™๏ธ  Config: updated

Ready for Day [N+1]! / ๅ‡†ๅค‡ๅฅฝไธ‹ไธ€่ฏพไบ†๏ผ

Scenario 3: Post-Lesson Archive / ๅœบๆ™ฏไธ‰๏ผš่ฏพๅŽๅฝ’ๆกฃ

Trigger / ่งฆๅ‘ๆกไปถ

User says "update learning records" or "archive today's learning"ใ€‚ ไธญๆ–‡่งฆๅ‘๏ผš"ๆ›ดๆ–ฐๅญฆไน ่ฎฐๅฝ•"ใ€"ๅฝ’ๆกฃไปŠๅคฉ็š„ๅญฆไน "ใ€‚

Workflow / ๅทฅไฝœๆต

This is the most important scenario โ€” it turns a conversation into permanent knowledge. ่ฟ™ๆ˜ฏๆœ€ๅ…ณ้”ฎ็š„ๆญฅ้ชคโ€”โ€”ๆŠŠๅฏน่ฏๅ˜ๆˆๆฐธไน…็Ÿฅ่ฏ†ใ€‚

Step 1: Update Learning Log / ๆ›ดๆ–ฐๅญฆไน ่ฎฐๅฝ•

Append to the learning log (path from config):

## Day [N] โ€” YYYY-MM-DD

**Content / ๅ†…ๅฎน:** [summary of what was covered]
**Mastery / ๆŽŒๆก็จ‹ๅบฆ:** [good / okay / needs review]
**Quiz results / ๆต‹้ชŒๆˆ็ปฉ:** [scores & wrong answers if applicable]
**Issues / ้‡ๅˆฐ้—ฎ้ข˜:** [concepts the user struggled with]
**Next / ไธ‹ไธ€ๆญฅ:** Day [N+1] โ€” [next topic from syllabus]

Step 2: Update Syllabus Progress / ๆ›ดๆ–ฐๅคง็บฒ่ฟ›ๅบฆ

In syllabus.md, mark the current phase/day as โœ… Complete / ๅฎŒๆˆ. If a milestone was reached, note it.

Step 3: Update Config / ๆ›ดๆ–ฐ้…็ฝฎ

In .personal-tutor-config.json, update:

"subject-name": {
  "currentDay": N+1,
  ...
}

Step 4: Update Memory / ๆ›ดๆ–ฐ่ฎฐๅฟ†

If the agent has a memory system, update it with the subject's new progress.

Step 5: Extract Concepts to Knowledge Base / ๆๅ–ๆฆ‚ๅฟตๅ…ฅๅบ“

Only if archiveDepth = full and knowledgeBase.tool โ‰  none.

Follow the Knowledge Base Rules section below. If a custom schemaPath is configured, read that file first โ€” its rules take priority over built-in defaults.

ไปŽๅฝ“ๆ—ฅ่ฏพ็จ‹ๆ็‚ผๆ ธๅฟƒๆฆ‚ๅฟต๏ผŒไธฅๆ ผๆŒ‰็…งไธ‹ๆ–นใ€Œ็Ÿฅ่ฏ†ๅบ“่ง„ๅˆ™ใ€็ซ ่Š‚ๆ‰ง่กŒใ€‚ๅฆ‚้…็ฝฎไบ†่‡ชๅฎšไน‰ schema ๆ–‡ไปถ๏ผŒๅ…ˆ่ฏปๅ–ๅฎƒโ€”โ€”ๅ…ถ่ง„ๅˆ™่ฆ†็›–ๅ†…็ฝฎ้ป˜่ฎคใ€‚

If no new concepts were introduced: note this in the report / ๅฆ‚ๆ— ๆ–ฐๆฆ‚ๅฟต๏ผŒๅœจๆฑ‡ๆŠฅไธญ่ฏดๆ˜Žใ€‚

Step 6: Report / ๆฑ‡ๆŠฅ (output in configured language)

โœ… Learning records updated. / ๅญฆไน ่ฎฐๅฝ•ๅทฒๆ›ดๆ–ฐใ€‚

  ๐Ÿ“š Subject: [Subject Name]
  ๐Ÿ“ Progress: Day [N] โ†’ Day [N+1]
  ๐Ÿ†• New concepts: [list, or "none"]
  ๐Ÿ“ Archived to: {path}
  ๐Ÿง  Knowledge base: [updated / no changes]
  โš™๏ธ  Config updated / ้…็ฝฎๅทฒๆ›ดๆ–ฐ

Post-Lesson Self-Verification Protocol / ่ฏพๅŽ่‡ชๆŸฅๅ่ฎฎ๏ผˆv1.0.1 ๆ–ฐๅขž๏ผ‰

๐Ÿšจ THIS IS A RED LINE. DO NOT CROSS IT. ่ฟ™ๆ˜ฏ็บข็บฟใ€‚ไธๅฏ่ถŠ็•Œใ€‚

Every agent that teaches a lesson via this skill MUST self-verify all three layers below before telling the user "lesson complete" ("ๅญฆๅฎŒไบ†"/"done"/etc). If any layer is missing, you are NOT done. There is no exception. There is no "I'll do it later." Fix the gap now.

ๆฏไธชไฝฟ็”จๆญค skill ๆ•™่ฏพ็š„ agent๏ผŒๅœจๅ‘Š่ฏ‰็”จๆˆท"ๅญฆๅฎŒไบ†"ไน‹ๅ‰๏ผŒๅฟ…้กป่‡ชๆฃ€ไปฅไธ‹ไธ‰ๅฑ‚ใ€‚ๅฐ‘ไธ€ๅฑ‚ๅฐฑไธๆ˜ฏ"ๅญฆๅฎŒไบ†"ใ€‚ๆฒกๆœ‰ไพ‹ๅค–ใ€‚ๆฒกๆœ‰"ๅพ…ไผš่กฅ"ใ€‚็Žฐๅœจไฟฎใ€‚

After every lesson (whether triggered via Scenario 2 or via the agent's own workflow), the agent MUST self-verify the following three layers before declaring the session complete:

The Three-Layer Verification / ไธ‰ๅฑ‚้ชŒ่ฏ

# Layer / ๅฑ‚ What to check / ๆฃ€ๆŸฅๅ†…ๅฎน How to verify / ้ชŒ่ฏๆ–นๅผ
1 ๐Ÿ“ Learning Records / ๅญฆไน ่ฎฐๅฝ• Learning log appended with new knowledge + quiz results; syllabus marked as complete Read the last few lines of the log file; check syllabus for โœ… mark
2 ๐Ÿง  Agent Memory / ๆ™บ่ƒฝไฝ“่ฎฐๅฟ† MEMORY.md or equivalent updated with current progress Read the subject's progress line in memory
3 ๐Ÿ“ Knowledge Base / ็Ÿฅ่ฏ†ๅบ“ Each core concept has its own .md file with proper frontmatter, bilingual content, and wikilinks List files in the subject's knowledge base folder; verify new files exist and are non-empty

Self-Check Mantra / ่‡ชๆŸฅๅฃ่ฏ€

Before saying anything that means "done", mentally run this checklist:

1๏ธโƒฃ D็›˜/Learning records โ†’ โœ… ?
2๏ธโƒฃ Agent memory โ†’ โœ… ?
3๏ธโƒฃ Knowledge base โ†’ โœ… ?
โ†’ All three checked? NOW you can say "lesson complete."

When to skip Layer 3 / ไฝ•ๆ—ถๅฏ่ทณ่ฟ‡็ฌฌไธ‰ๅฑ‚

Only skip knowledge base archiving if:

  • archiveDepth is set to light (not full), OR
  • knowledgeBase.tool is set to none, OR
  • The lesson was pure review with zero new concepts introduced

In all other cases, Layer 3 is mandatory.

Failure Recovery / ๆ•…้šœๆขๅค

If any verification fails:

  1. Do NOT tell the user the lesson is complete โ€” fix the gap first
  2. If the gap cannot be fixed (e.g., missing path), report it to the user with a clear description
  3. Record the failure in the learning log so the next session can catch up

If the user catches you skipping a layer (they will notice):

  • Stop immediately. Do not argue. Do not defend.
  • Fix the missing layer right there.
  • Record this as a lesson learned โ€” update your own rules (SOUL.md, TOOLS.md, etc.) to make it harder to skip next time.

Multi-Agent Guarantee / ๅคšๆ™บ่ƒฝไฝ“ไฟ้šœ

This protocol is designed for environments where different agents may handle different sessions. Each agent is independently responsible for completing all three layers. Do not assume a previous agent already did it โ€” verify.


Knowledge Base Rules / ็Ÿฅ่ฏ†ๅบ“่ง„ๅˆ™๏ผˆๅ†…็ฝฎ้ป˜่ฎค๏ผ‰

โš ๏ธ If a custom schemaPath is configured, read that file before every concept extraction โ€” its rules take priority over the defaults below. ๅฆ‚้…็ฝฎไบ†่‡ชๅฎšไน‰ schema ๆ–‡ไปถ๏ผŒๆฏๆฌกๆๅ–ๆฆ‚ๅฟตๅ‰ๅ…ˆ่ฏปๅ–ๅฎƒโ€”โ€”ๅ…ถ่ง„ๅˆ™ไผ˜ๅ…ˆไบŽไปฅไธ‹้ป˜่ฎคใ€‚

When extracting concepts from a lesson, follow these rules strictly: ไปŽ่ฏพ็จ‹ๆ็‚ผๆฆ‚ๅฟตๆ—ถ๏ผŒไธฅๆ ผ้ตๅพชไปฅไธ‹่ง„ๅˆ™๏ผš

1. One Concept = One File / ไธ€ไธชๆฆ‚ๅฟตไธ€ไธชๆ–‡ไปถ

  • Each core concept gets its own .md file. Never bundle multiple concepts into one file.
  • File name format: {NN}-{ConceptName}.md (e.g., 01-Derivative.md, 01-ๅฏผๆ•ฐ.md)
  • Use a numbered prefix to maintain sort order within the folder.
  • Place files in the appropriate subject folder under {knowledgeBase.path}/.

2. File Format / ๆ–‡ไปถๆ ผๅผ

Every concept file must include:

---
aliases:
  - ConceptName
  - ๅˆซๅ1
  - ๅˆซๅ2
---

# ConceptName / ๆฆ‚ๅฟตๅ

> One-line summary. ไธ€ๅฅ่ฏๆฆ‚่ฟฐใ€‚

## Core Content / ๆ ธๅฟƒๅ†…ๅฎน
...

## Related / ๅ…ณ่”
- [[path/to/related-concept|Related Concept]] โ€” relationship description
  • YAML frontmatter with aliases โ€” list synonyms and translations for searchability
  • Output language follows the user's configured language setting
  • If language = zh-en, output bilingual (Chinese + English)

3. Naming & Linking / ๅ‘ฝๅไธŽ้“พๆŽฅ

Obsidian (wikilink) mode:

  • Use [[full/path/to/file|Display Name]] format โ€” full path from vault root, pipe (|) without spaces
  • Always reference the numbered filename (e.g., [[01-Derivative]], not [[Derivative]])
  • Cross-discipline links: [[OtherFolder/SomeFile|Display]]

Plain Markdown mode:

  • Use standard relative links: [Display Name](../folder/file.md)

Bidirectional linking / ๅŒๅ‘้“พๆŽฅ:

  • If A links to B, also add a backlink from B to A (create or update B's file)
  • Tag cross-discipline links with type hints: ๐Ÿ’ก ๆ–นๆณ•ๅ€Ÿ้‰ด (method reference), ๐Ÿ’ก ๆ€็ปดๆจกๅž‹็ฑปๆฏ” (mental model analogy)

4. Duplicate Detection / ๅŽป้‡ๆฃ€ๆŸฅ

Before creating any new file, check for existing content:

  1. Search for files with the same or similar name (including aliases in frontmatter)
  2. If an exact match exists โ†’ add a wikilink to it, do NOT create a duplicate / ๅทฒๅญ˜ๅœจๅˆ™ไธๆ–ฐๅปบ๏ผŒ็›ดๆŽฅๅผ•็”จ
  3. If partial overlap โ†’ enrich the existing file with new content, do NOT create a duplicate / ้ƒจๅˆ†้‡ๅ ๅˆ™่กฅๅ……ๅทฒๆœ‰ๆ–‡ไปถ
  4. If contradictory content found โ†’ mark โš ๏ธ ๅพ…็กฎ่ฎค and flag to the user / ๅ‘็Žฐ็Ÿ›็›พๅˆ™ๆ ‡่ฎฐๅพ…็กฎ่ฎค

5. Index & Outline Updates / ็ดขๅผ•ไธŽๆ€ป็บฒๆ›ดๆ–ฐ

If the knowledge base has an index file (e.g., 00_ๆฆ‚ๅฟต็ดขๅผ•.md) or subject outlines (e.g., XX-XXXๆ€ป็บฒ.md):

  • Add new concepts to the index under the correct subject
  • Update the subject outline to include new concept entries with correct wikilink paths
  • Verify that outline links point to actual files on disk
  • If the knowledge base has a link-checking script, run it after major updates

6. Post-Archive Verification / ๅฝ’ๆกฃๅŽ้ชŒ่ฏ

After creating or modifying knowledge base files:

  1. Verify all new wikilinks resolve to existing files
  2. Check numbering consistency within the subject folder (no gaps or collisions)
  3. Report any broken links or inconsistencies to the user

Configuration Reference / ้…็ฝฎๅ‚่€ƒ

.personal-tutor-config.json

Field Type Description
version string Config schema version ("1.0")
learningRoot string Absolute path to the learning directory / ๅญฆไน ่ต„ๆ–™ๆ น็›ฎๅฝ•
knowledgeBase.tool string "obsidian" / "plain" / "notion" / "none"
knowledgeBase.path string Absolute path to vault/notes root / ็Ÿฅ่ฏ†ๅบ“่ทฏๅพ„
knowledgeBase.schemaPath string (Optional) Path to custom knowledge base rules file / ่‡ชๅฎšไน‰่ง„ๅˆ™ๆ–‡ไปถ่ทฏๅพ„
archiveDepth string "light" (log + syllabus + memory) or "full" (includes knowledge base + index)
language string "zh" / "en" / "zh-en" / "auto"
subjects object Keyed by subject name, each containing currentDay, category, syllabusPath, logPath, status, startedAt

Directory Structure / ็›ฎๅฝ•็ป“ๆž„ (after setup)

{learningRoot}/
โ”œโ”€โ”€ {Category/ๅˆ†็ฑป}/
โ”‚   โ”œโ”€โ”€ {Subject Name/ๅญฆ็ง‘ๅ}/
โ”‚   โ”‚   โ”œโ”€โ”€ syllabus.md
โ”‚   โ”‚   โ””โ”€โ”€ learning-log.md
โ”‚   โ””โ”€โ”€ {Another Subject}/
โ”‚       โ”œโ”€โ”€ syllabus.md
โ”‚       โ””โ”€โ”€ learning-log.md
โ”œโ”€โ”€ {Another Category}/
โ”‚   โ””โ”€โ”€ ...
โ””โ”€โ”€ ...

{knowledgeBase.path}/
โ”œโ”€โ”€ {Subject Name}/
โ”‚   โ”œโ”€โ”€ 01-concept.md
โ”‚   โ”œโ”€โ”€ 02-concept.md
โ”‚   โ””โ”€โ”€ ...
โ””โ”€โ”€ (existing vault structure preserved / ็Žฐๆœ‰็ป“ๆž„ไฟ็•™)

Design Principles / ่ฎพ่ฎกๅŽŸๅˆ™

  1. Progressive disclosure / ๆธ่ฟ›ๅฑ•ๅผ€ โ€” Lightweight onboarding, fully optional deep features
  2. Tool-agnostic / ๅทฅๅ…ทๆ— ๅ…ณ โ€” Works with Obsidian, plain folders, or no knowledge base at all
  3. Conversation-first / ๅฏน่ฏไผ˜ๅ…ˆ โ€” The lesson happens in chat; the skill handles the paperwork behind the scenes
  4. Incremental / ๅขž้‡ๅผ โ€” Each day builds on the last; the log and syllabus grow together
  5. Non-destructive / ้ž็ ดๅๆ€ง โ€” Never overwrite existing knowledge base content; always check for duplicates first
  6. Language-respecting / ่ฏญ่จ€่‡ช้€‚ๅบ” โ€” Follow the user's configured language for all generated content

Common Edge Cases / ๅธธ่ง่พน็ผ˜ๆƒ…ๅ†ต

Situation / ๆƒ…ๅ†ต Handling / ๅค„็†ๆ–นๅผ
User forgot which day they're on / ๅฟ˜่ฎฐๅญฆๅˆฐๅ“ชไบ† Read config โ†’ currentDay, confirm with user
User wants to skip ahead / ๆƒณ่ทณ่ฟ‡ๆŸๅคฉ Update config to the new day, note in log
User restarted a subject from scratch / ้‡ๅฏๅญฆ็ง‘ Archive old log (rename with date suffix), create fresh files
Multiple subjects in one session / ๅŒไธ€ไผš่ฏๅคšๅญฆ็ง‘ๅˆ‡ๆข Process each archive command independently
Knowledge base tool is none / ๆœช้…็ฝฎ็Ÿฅ่ฏ†ๅบ“ Silently skip Steps 5-6 in Scenario 3
Config file is corrupted/missing / ้…็ฝฎๆ–‡ไปถๆŸๅๆˆ–็ผบๅคฑ Re-run onboarding; old learning files are preserved
Subject name has special characters / ๅญฆ็ง‘ๅๅซ็‰นๆฎŠๅญ—็ฌฆ Sanitize for filesystem: replace \x3C>:"/|?* with -
Agent skipped knowledge base update / Agent ๆผไบ†็Ÿฅ่ฏ†ๅบ“ๅฝ’ๆกฃ v1.0.1 ๆ–ฐๅขžใ€‚This is the most common failure mode. Recovery: (1) Check if the subject folder exists at {knowledgeBase.path}; (2) Read the latest learning log to identify which concepts were taught; (3) Create/update .md files for each missing concept; (4) Run Post-Lesson Self-Verification Protocol; (5) This failure suggests the agent DID read the skill but skipped verification โ€” after recovery, the agent should update its local rules (SOUL.md, TOOLS.md, etc.) to prevent recurrence.
Usage Guidance
Review this skill before installing. It should be limited to user-confirmed source folders and output folders, and it should not be allowed to modify SOUL.md, TOOLS.md, or other persistent agent rule/config files. Use it only if you are comfortable with local file creation and knowledge-base updates, and prefer a dry run or explicit confirmation before any workspace scan or write.
Capability Assessment
โš  Purpose & Capability
The core purpose, converting textbooks or PDFs into notes, quizzes, slides, mind maps, audio, and optional knowledge-base content, is coherent. The concern is that scanner-supplied artifact context says the skill also directs updates to agent rule files such as SOUL.md or TOOLS.md after a verification failure, which is not necessary for learning-material generation.
โš  Instruction Scope
The documented trigger appears broad enough to activate during ordinary study-related conversation, while the skill can create configs, scan folders, and update multiple state files. That combination raises accidental-invocation risk.
โ„น Install Mechanism
No malicious install mechanism or executable payload was identified from the supplied telemetry; VirusTotal reported 65 undetected and no malicious or suspicious engines. The package is not marked as a trusted @openclaw publisher.
โš  Credentials
Reading source materials and writing generated outputs is proportionate, but the described workspace syncing, optional knowledge-base updates, logs, memory, indexes, and broad folder scanning need clearer boundaries and user consent.
โš  Persistence & Privilege
Persistent generated files are expected, but persistent modification of local agent rule or identity files would affect future agent behavior outside this skill and is overbroad for the stated tutoring workflow.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install personal-tutor
  3. After installation, invoke the skill by name or use /personal-tutor
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.3
v1.0.3: Hardened Self-Verification Protocol โ€” added red-line warning, self-check mantra (1๏ธโƒฃ2๏ธโƒฃ3๏ธโƒฃ), and explicit 'user-caught-skipping' recovery behavior.
v1.0.2
v1.0.2: Bilingual rebranding announcement in description (knowledge-digest โ†’ personal-tutor).
v1.0.1
v1.0.1 (2026-05-29): Initial release as personal-tutor (renamed from knowledge-digest). Added mandatory Post-Lesson Self-Verification Protocol. Updated Scenario 2 end prompt with self-verification step. Added 'Skipped Archiving' failure mode to Common Edge Cases.
Metadata
Slug personal-tutor
Version 1.0.3
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 3
Frequently Asked Questions

What is Personal Tutor?

๐ŸŽ“ Personal Tutor โ€” Your private AI learning coach. ไฝ ็š„็งไบบAIๅญฆไน ๅฏผๅธˆใ€‚ Formerly knowledge-digest, now rebranded and upgraded to v1.0.1. ๅŽŸๅ knowledge-digest๏ผŒ็Žฐๅทฒๅ…จ้ขๅ‡็บงไธบ... It is an AI Agent Skill for Claude Code / OpenClaw, with 38 downloads so far.

How do I install Personal Tutor?

Run "/install personal-tutor" in the OpenClaw or Claude Code chat to install it in one step โ€” no extra setup required.

Is Personal Tutor free?

Yes, Personal Tutor is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Personal Tutor support?

Personal Tutor is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Personal Tutor?

It is built and maintained by ็މ็ฑณๅ“ฅ (@ben61405); the current version is v1.0.3.

๐Ÿ’ฌ Comments