← 返回 Skills 市场
weishuz

Adaptive Learning

作者 Tree · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
178
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install adaptive-learning
功能描述
Create adaptive learning flashcard apps from course materials (URLs, PDFs, or folders). Uses FSRS (Free Spaced Repetition Scheduler) and Bayesian Knowledge T...
使用说明 (SKILL.md)

Adaptive Learning Skill

Create self-contained, browser-based adaptive learning apps from any course material.

Architecture

  • FSRS (ts-fsrs): Per-card spaced repetition scheduling (Stability, Difficulty, Retrievability)
  • BKT: Per-topic Bayesian Knowledge Tracing for mastery estimation
  • Two modes: Breadth-first (cover all topics, weakest first) / Depth-first (drill one topic deep)
  • Pure frontend: HTML + CSS + JS, works offline via file://, no server needed

Workflow

1. Gather Course Material

From a URL:

1. Fetch the course page, extract topic list and resource links
2. Download HW/Discussion/Lecture PDFs to ~/COURSE_NAME/

From a local folder:

1. List files, identify PDFs and documents
2. Read/parse to understand topics and content

2. Generate Question Bank

Create questions.json with this schema:

[{
  "id": "unique-id",
  "topic": "Topic Name",
  "topicIndex": 0,
  "difficulty": 1,
  "question": "Supports $LaTeX$ via KaTeX",
  "answer": "Supports $LaTeX$ and \\
 for line breaks",
  "tags": ["tag1", "tag2"]
}]

Guidelines:

  • 5-8 questions per topic minimum, across 3 difficulty levels
  • Difficulty 1 (基础): Definitions, "what is", simple complexity questions
  • Difficulty 2 (中等): Apply algorithms, analyze examples, describe procedures
  • Difficulty 3 (高级): Proofs, novel problem design, optimization, "why" questions
  • Use LaTeX ($...$ inline, $$...$$ block) for math
  • Use \\ for line breaks in question/answer text
  • topicIndex controls topic ordering (0-based)

3. Build the App

Run the bundler script:

bash SKILL_DIR/scripts/generate-course.sh \x3Ccourse-id> \x3Cquestions.json> \x3Coutput-dir>

Then register the course in engine.js COURSE_REGISTRY:

{ id: 'course-id', name: 'Course Name', desc: 'Description', school: 'School', term: 'Term' }

4. Verify

Open \x3Coutput-dir>/index.html in a browser. Verify:

  • Course appears in selector
  • Cards render with KaTeX math
  • Flip/rating/FSRS scheduling works
  • Mode toggle (breadth/depth) works

Framework Files (assets/framework/)

File Purpose
index.html Main page with course selector + learning UI
style.css Dark theme, responsive styles
engine.js FSRS + BKT engine, question selection, state management
ts-fsrs.umd.js FSRS algorithm library (UMD build of ts-fsrs)

Key Features

  • FSRS scheduling: Cards show Stability/Difficulty values; review intervals adapt to performance
  • BKT mastery: Per-topic mastery percentage in progress drawer
  • Configurable: Target retention (70-97%), daily new card limit
  • localStorage: All progress persists across sessions
  • Keyboard shortcuts: Space=flip, 1=Good, 2=Hard, 3=Again, f=follow-up, n=next-topic
  • KaTeX: Full LaTeX math rendering
  • Drag & drop: Import any questions.json directly in the UI
  • Multi-course: One framework, multiple course data packs

Adding to Existing Installation

To add a new course to an existing adaptive-learning setup at ~/adaptive-learning/:

  1. Save questions.json to ~/adaptive-learning/courses/\x3Cid>/
  2. Generate preload: bash scripts/generate-course.sh \x3Cid> questions.json ~/adaptive-learning/framework/
  3. Add to COURSE_REGISTRY in engine.js
安全使用建议
This package contains a browser-based flashcard framework and a shell script to bundle an existing questions.json into a course — that part is coherent and appears benign. However, SKILL.md also tells the agent to fetch webpages and download PDFs and to read local folders; the shipped code does not implement scraping or PDF parsing. Before installing or running anything: - Do not grant an agent automatic filesystem or network access to run those undocumented scraping/download steps. The instructions expect capabilities (web scraping, writing to ~/COURSE_NAME/) that aren't present in the code. - If you plan to run scripts locally, inspect scripts/generate-course.sh and the generated preload-<id>.js. The script inlines your questions.json into a JS file without escaping — malformed or malicious JSON could break the generated JS or lead to unexpected behavior. Only run the script with questions.json you trust, and review the resulting preload JS before opening it in a browser. - The frontend loads KaTeX from jsDelivr; if you require offline or audited dependencies, host these libraries yourself. - If you need automatic scraping/PDF extraction, request or provide explicit scraper/parsing code (or a vetted tool) rather than relying on the SKILL.md prose. The current mismatch (instructions vs. implementation) is why this skill is flagged suspicious — it may be incomplete or expect external, unstated capabilities. Additional information that would change this assessment: any included or referenced, auditable scraper/parser tools, or clear statement that the agent will not autonomously attempt filesystem/network actions beyond bundling a provided questions.json.
功能分析
Type: OpenClaw Skill Name: adaptive-learning Version: 1.0.0 The skill bundle contains a critical shell injection vulnerability in `scripts/generate-course.sh`. The script uses an unquoted heredoc (`<<PRELOAD_EOF`) to write the contents of a user-provided `questions.json` file into a JavaScript file, which allows for arbitrary command execution if the JSON content contains shell expansion sequences like `$(...)`. Additionally, the `SKILL.md` instructions direct the AI agent to download external course materials and execute this vulnerable script, creating a high-risk workflow. While the functionality aligns with the stated purpose of creating study apps, the lack of input sanitization and the broad file/network permissions requested make it a significant security risk.
能力评估
Purpose & Capability
Name/description match the included frontend framework, FSRS library, and course-bundling script. However, the SKILL.md instructs the agent to fetch course pages and download PDFs to ~/COURSE_NAME/ and to read local folders — actions for which no scraping/parsing code or CLI tools are provided. The provided artifacts only support bundling an existing questions.json into a browser app; they do not implement automated web scraping or PDF extraction.
Instruction Scope
SKILL.md tells the agent to 'Fetch the course page, extract topic list and resource links' and 'Download HW/Discussion/Lecture PDFs to ~/COURSE_NAME/'. The runtime code is a client-side app plus a packaging script that expects a questions.json; there are no instructions or tools in the package to perform web requests, parse HTML, or extract PDFs. This is scope creep: the instructions ask for filesystem/network actions beyond what the shipped files perform. If an agent attempted to follow those instructions it would need extra network and filesystem privileges not described by the skill.
Install Mechanism
No install spec (instruction-only / static files) — low friction. The frontend references KaTeX from jsDelivr (CDN). The included generate-course.sh writes a preload script by inlining the questions.json directly into a JS file (no JSON escaping), and uses sed -i which can behave differently across platforms. These are not outright malicious but are implementation details to review before running.
Credentials
Skill declares no required environment variables, no external credentials, and no config paths. That matches the included files (pure frontend + packaging script).
Persistence & Privilege
always:false and default autonomy. The skill does persist course state to localStorage within the browser (alearn_ prefix) which is expected for a client-side learning app. It does not request elevated or cross-skill privileges.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install adaptive-learning
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /adaptive-learning 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: FSRS + BKT adaptive learning framework with multi-course support
元数据
Slug adaptive-learning
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Adaptive Learning 是什么?

Create adaptive learning flashcard apps from course materials (URLs, PDFs, or folders). Uses FSRS (Free Spaced Repetition Scheduler) and Bayesian Knowledge T... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 178 次。

如何安装 Adaptive Learning?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install adaptive-learning」即可一键安装,无需额外配置。

Adaptive Learning 是免费的吗?

是的,Adaptive Learning 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Adaptive Learning 支持哪些平台?

Adaptive Learning 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Adaptive Learning?

由 Tree(@weishuz)开发并维护,当前版本 v1.0.0。

💬 留言讨论