Skip to content
Back to skills

Learn

ASecurity

Start or resume a LessonFolk AI course — onboards new learners (level, interests, level check, personal path), finds the learner's next lesson and teaches it interactively. Use when the user says "start", "continue", "next lesson", "skip this", "reset <course>", "do <course> again", "recommend a path", "change my level", "update my interests", or wants to learn.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
ai-agentsgo

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add CGSeb/lessonfolk --skill learn --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Learn?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Learn
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cgseb-learn/badge)](https://www.skillsdirectory.com/skills/cgseb-learn)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: learn
description: Start or resume a LessonFolk AI course — onboards new learners (level, interests, level check, personal path), finds the learner's next lesson and teaches it interactively. Use when the user says "start", "continue", "next lesson", "skip this", "reset <course>", "do <course> again", "recommend a path", "change my level", "update my interests", or wants to learn.
---

Follow the LessonFolk `learn` procedure below with the LessonFolk tools (`get_progress`,
`get_next_lesson`, `get_lesson`…), together with the LessonFolk server's instructions.

The LessonFolk MCP server keeps the courses and the learner's progress. If its tools are not
available, do not teach from memory or from files, and keep no progress yourself. Tell the
learner that the LessonFolk server is not connected and how to fix it: run `/mcp`, pick the
LessonFolk server and sign in. With the LessonFolk plugin that server is https://lessonfolk.com;
for another LessonFolk instance, the steps are on its dashboard's **Connect** page. Then start
again.

If the `mcp__lessonfolk-tutor__key_idea` tool is available (the Course companion pane), call it
while you teach: as you start each key idea (`status: "active"`) and once the learner has it
(`status: "done"`), with the lesson id and the key idea's number in `## Key ideas` (from 1).
After asking a question with a fixed set of answers (onboarding questions, accepting the path,
"continue now or stop here?"), call `mcp__lessonfolk-tutor__choices` with those answers so the
learner can reply with a button (`multiSelect` when they may pick several, as for themes). Never
for "Check your understanding", review or level check questions.

<!-- The procedure below is copied by `npm run plugin:sync`: do not edit it here. -->

# LessonFolk: learn

Pick the procedure from what the learner asks; by default, Start or resume.

## Start or resume
1. `get_progress()`. Empty profile: Onboarding first. A profile without a level: ask the experience question of Onboarding once (mention their saved experience, if any), `set_profile(level)`, then offer the Level check (if it applies) and Recommend a path.
2. `get_next_lesson()`:
   - `resume`: recap briefly where you left off (the lesson notes in `get_progress()`), then Teach a lesson.
   - `next`: `start_lesson(lessonId)`, then Teach a lesson.
   - `unknownPathIds`: tell the learner those path courses no longer exist.
   - `all_done`: congratulate them and suggest what to explore next. `blocked`: say no lesson is open yet and why (`list_courses()`).

## Onboarding
Ask one question at a time, and keep it light:
1. What should I call you?
2. What is your experience with AI? (none / used ChatGPT-like tools / some technical / developer / ML practitioner)
3. Why do you want to learn AI? (curiosity, work, building things, career change…)
4. What would you like to explore? List the theme titles of `list_themes()`, one line each, "coming soon" for `comingSoon` themes; they may pick any, or say "not sure".
5. Preferred language for our sessions.

Then `set_profile(name, experience, goal, language, level, interests)`. level: none / used ChatGPT-like tools → `beginner`; some technical / developer → `intermediate`; ML practitioner → `advanced`. interests: the chosen theme ids (leave out for "not sure"). Then the Level check (intermediate and advanced only) and Recommend a path.

## Level check
Only for intermediate and advanced learners. Offer it as optional (a few quick questions so they don't redo what they know); if they decline, go straight to the path. Call it a "level check", never "placement".
1. From `list_courses()`, take the courses whose level is below the learner's, in order, except those with status `done` or `skipped_after_level_check`.
2. Ask at most 6 questions in total, one at a time, from the "Check your understanding" sections of those courses (`get_lesson(lessonId)`, favour their later lessons): one per course, a second only if the first answer is unclear. More courses than questions: check the courses closest to the learner's level first. Judge against the "Good answer" hints without teaching. The learner may stop at any time: unchecked courses stay as they are.
3. Course clearly passed: `level_check_skip_course(courseId)` right away (its unfinished lessons become skipped after the level check, notes "placement"; never write that note yourself). Failed: change nothing; it stays in the path.
4. If the answers clearly don't match the level (e.g. an intermediate learner fails the beginner courses), tell the learner and `set_profile(level)`.
5. Sum up in one sentence what was skipped and what stays.

## Recommend a path
1. From `list_courses()`, keep the unfinished courses (status not `done` or `skipped_after_level_check`) whose level is at or below the learner's. If the profile has interests, keep only those themes; if that leaves nothing, say so and use all themes. Still nothing: the unfinished courses one level up; none either: tell them they have covered the catalog for now and save nothing.
2. Add every unfinished course in their `prerequisites` (recursively), whatever its theme. Keep the `list_courses()` order.
3. Show the path (course titles with their theme title) and why, in 2–3 sentences tied to their level, goal and interests. Ask whether it suits them; they may remove, add or reorder courses, but each course stays after its prerequisites and no prerequisite is dropped (explain why).
4. Only once they agree: `set_path(path, reason)`, the reason being your explanation. If they decline, save nothing: courses follow the catalog order.
5. Coming from Start or resume: continue it. Otherwise offer to start.

## Change my level / update my interests
- Level: ask the experience question again (or take the level they name), `set_profile(level)`. If it went up, offer the Level check.
- Interests: ask the interests question again, `set_profile(interests)`.

Then Recommend a path.

## Teach a lesson
`get_lesson(lessonId, lang)` and read it in full before starting. Then:
- Never paste the lesson. Teach it in small chunks (a few short paragraphs at most), in your own words, adapted to the profile.
- Follow the order of `## Key ideas`. Use the `## Teaching notes` (analogies, misconceptions, pacing hints): they are for you, not the learner.
- When the lesson refers to another course, check that course's lesson statuses (`list_courses()`). Only say "as you saw" if the learner did them (`done`). If they were skipped (including `skipped_after_level_check`) or not started, never imply they saw it: give the idea in a sentence or two and name the course as the place to go deeper.
- After each key idea, ask a short question or invite questions. Wait for the reply before moving on.
- Run the `## Check your understanding` questions. Judge against the "Good answer" hints; be encouraging, correct gently, re-explain differently if needed.
- Offer the `## Exercise` if there is one (optional unless the lesson says otherwise).
- When the `## Completion criteria` are met: Complete a lesson.
- If the session ends mid-lesson: `save_lesson_notes(lessonId, notes)` on where you stopped.

## Complete a lesson
`complete_lesson(lessonId, score, notes)`: score from 0 to 1, your honest estimate from the checks; notes, one or two sentences on what the learner found easy or hard (used for later review). Tell the learner what they achieved, then `get_next_lesson()`: give the next lesson's title (if it starts a new course, name that course and its theme title) and ask whether to continue now or stop here.

## Reset a course ("reset <course>", "do <course> again", "start <course> over")
1. Match the course with `list_courses()`; if unclear, list the course titles and ask which one. No lesson started, done or skipped in it: say there is nothing to reset.
2. Show what will be reset: its lessons finished (done or skipped, say which were skipped after the level check) and their scores. Say that the scores and notes are removed, that other courses and the path stay as they are, and that the course restarts from its first lesson once its prerequisites are met.
3. Ask for confirmation and wait for a clear yes. Without it, change nothing.
4. `reset_course(courseId)`, then offer to start its first lesson (Start or resume).

## Skip ("skip this", "I already know this")
Ask 1–2 questions from the lesson's checks. Answered well: `skip_lesson(lessonId, reason)` with a short reason. Otherwise suggest a quick version of the lesson instead.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.