Skip to content
Agentmart
Submit a tool

learner-tracking

Record what the learner does and adapt the course to it in real time.

Skill by madhvantyagi

IndexedMIT★ 342
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/madhvantyagi-learner-tracking

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Record what the learner does and adapt the course to it in real time.

Use cases: education

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/learner-tracking

What's inside

Skill name
learner-tracking
Description
Record what the learner does and adapt the course to it in real time.
License
MIT
Instructions
119 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (7)

  • SKILL.md
  • adaptive-lifecycle.md · references/
  • evidence.md · references/
  • exercise-review.md · references/
  • memory-categories.md · references/
  • learner_state.py · scripts/
  • memory_views.py · scripts/

SKILL.md (first lines)

# Understanding the learner

Record what happened precisely enough that another teacher can make the next
decision. “Bad at math” is useless. “Cancelled x across addition, corrected it
after comparing x(x+1) with x²+1” tells the next teacher what to check.

## Read and write

For someone you already know, use the script beside this skill:

```bash
python3 skills/learner-tracking/scripts/learner_state.py init alex
python3 skills/learner-tracking/scripts/learner_state.py summary alex
python3 skills/learner-tracking/scripts/learner_state.py record alex --event session.json
```

`init` creates a blank learner profile (`learners/<name>/state.json`). It
starts completely empty — do not guess or assume the user's  background,
or skill level. By default, profiles are saved in the repository's ignored
`learners/` directory. Pass `--root <directory>` to use a different folder
(e.g., in automated tests). For the full schema and update rules, see
[references/evidence.md](references/evidence.md).

When enrolling a learner, the validated course plan is copied to
`learners/<id>/courses/<course-id>/course.json`. The learner's `state.json`
only stores a relative path, revision number, and fingerprint (hash) of the
course plan rather than keeping a duplicate copy. If the course plan changes
and its hash no longer matches `state.json`, future updates are blocked until
the plan is reconciled. If you are working with an older record that has an
embedded plan, run `migrate-courses <id>` once to convert it safely.

Never render lessons, viewer pages, or progress directly from a blueprint
`course.json`. Always set up the learner first:
1. **Identify the learner:** If they provide a name, convert it to a lowercase
   folder name (e.g., `alex`). If they don't, proceed automatically as
   `learner` and say: *"I'll save your progress under 'learner' — tell me a
   name anytime to make it yours."* Never ask the user for a "learner ID".
2. **Initialize and enroll:** Run `init` followed by `enroll --course <course.json>`.
   Omitting the name defaults to `learner`.
3. **Verify:** Confirm that `learners/<name>/courses/<course-id>/course.json`
   exists before recording attempts, summarizing progress, or rendering views.

## Course and memory categories

Read [references/memory-categories.md](references/memory-categories.md) when
starting, resuming, enrolling, or finishing a course. Store a validated course
with `enroll <id> --course <course.json>`. Use `complete-course <id> --course-id
<slug>` when the learner finishes; the script produces a chapter-by-chapter
curriculum with topic names, teachers, sources, assessments, and actual evidence.

Read [references/adaptive-lifecycle.md](references/adaptive-lifecycle.md) to
adapt in real time: record what the learner does, then tell the course skill to
update the plan when a source fails or the learner is stuck.

Every recorded attempt or topic transition refreshes profile, course, topic,
teaching-observation, and next-step memories. Update at meaningful evidence
changes during the conversation, not only at the end of a course. On resumption,
use earlier taught topics as explicit bridges into the next topic. Keep one
folder per person, do not assume unrelated chats have shared memory.

Resolve every enrolled plan before changing learner state. If a referenced plan
is missing or invalid, fail before recording a new attempt or profile
change. Derived Markdown views may be rebuilt from valid state, they never
override it.

## Separate the kinds of knowledge

- **Stated preference:** “Use fewer analogies.” Store the wording and date, 
  a current request overrides it.
- **Observation:** a specific answer, error, hint used, or successful transfer.
- **Interpretation:** a tentative explanation of the observation. Say “possibly
  confuses slope with height,” not “is a visual thinker.”
- **Action:** what the next teacher should try or ask.

Mark taught-but-untested concepts as exposed. Assisted success is practice.
Independent success supports demonstrated understanding of that concept in that
task. A later independent retrieval/transfer supports retention. None is a
permanent trait or a guarantee of general mastery.

## Review saved exercises before the next lesson

On completion or resumption, follow
[exercise-review.md](references/exercise-review.md). Load the current lesson,
actual stored responses, original criteria, and assistance. Review checked
answers as well as written work; an unsent browser draft is not evidence.
Record each attempt through `manage_interaction.py review-attempt`, then record
the lesson repair and continuation decision through `review-lesson`. A wrong
answer is an observation: diagnose its cause and inspect the teaching before
choosing the repair. Preserve old attempts and unresolved gaps.

## Choose the next move

If a wrong answer could have several causes, use one contrast to distinguish
them before labeling the gap. A new representation counts as helpful only when
subsequent work improves, not because the learner says it looks nice.

Use recent evidence and task difficulty together. After a long gap, check recall
briefly before choosing the pace. If the learner is correct but slow, distinguish
fluency practice from a conceptual repair. Do not prescribe a fixed review
interval as scientifically optimal, agree a date suited to the goal.

## Keep the record small and honest

Save short evidence excerpts, not whole conversations. Do not store unrelated
personal details, secrets, diagnoses, or guesses about intelligence. Keep records
for different learners separate. Never copy example evidence into a real profile.
Only report saved progress after a successful write. If saving fails, preserve
the note in the response and say it was not saved.

Use `profile <id> --file <json>` to replace explicitly provided preferences/goals.
Use `retract <id> --event-id <id>` to remove a mistaken event, then re-record a
correction if needed. `delete <id>` is a state reset: it removes state and known
derived memory views, while course workspaces, submissions, drafts, hints,
questions, reviews, artifacts, and rendered pages remain. Do not describe that
command as complete learner-data erasure. A full erasure needs a separately
validated inventory and coordinated protection against concurrent course writes;
the current CLI does not provide it. Preserve unrelated user files.

From madhvantyagi/Gnos, MIT.

More from madhvantyagi/Gnos

Signals

Stars
342
Forks
25
Open issues
2
Last commit (this folder)
Oct 16, 2026 (11 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from madhvantyagi

Cite this page

learner-tracking skill. Agent Mart. https://agentmart.dev/skills/madhvantyagi-learner-tracking (last updated 2026-10-24)