一键导入
progress-tracking
Implement learner progress tracking with localStorage persistence, module unlocking, celebration triggers, and streak tracking.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Implement learner progress tracking with localStorage persistence, module unlocking, celebration triggers, and streak tracking.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Ingest a user-provided document (PDF, Markdown, TXT, DOCX, EPUB, HTML) and turn it into a clean, chunked source corpus that grounds the syllabus and lessons. Use when the learner wants a course built FROM their own material (a white paper, book chapter, spec, internal doc) instead of, or in addition to, web research.
Generate audio narration for tutorial lessons using Edge TTS. Covers script conversion from lesson JSON, voice selection, audio generation, manifest creation, section timestamping, and Web Speech API fallback.
Deploy generated tutorials to free hosting services. Covers Vercel, Netlify, Surge, GitHub Pages, and Cloudflare Pages with auth flows, SPA routing, troubleshooting, and QR code generation.
Ensure WCAG 2.1 AA compliance for all generated tutorials. Covers perceivable, operable, understandable, and robust criteria plus reduced motion support.
Automated quality auditing for generated tutorials. Covers accessibility checks, performance analysis, content validation, responsive testing, and auto-fix strategies.
Visual design system and component library for Syllabus tutorials. Includes 4 theme presets with glassmorphism, gradient systems, micro-interactions, component specs, spacing scale, and icon conventions.
| name | progress-tracking |
| description | Implement learner progress tracking with localStorage persistence, module unlocking, celebration triggers, and streak tracking. |
interface LearnerProgress {
completedLessons: string[];
quizScores: Record<string, {
score: number;
total: number;
attempts: number;
lastAttempt: string;
}>;
currentLesson: string | null;
bookmarks: string[];
startedAt: string;
lastActiveAt: string;
totalTimeSpent: number;
streakDays: number;
longestStreak: number;
}
// Overall completion
const overallProgress = completedLessons.length / totalLessons;
// Module completion
const moduleProgress = (moduleId) => {
const moduleLessons = syllabus.modules
.find(m => m.id === moduleId).lessons;
const completed = moduleLessons
.filter(l => completedLessons.includes(l.id));
return completed.length / moduleLessons.length;
};
// Module unlocking — a module is unlocked if the previous module is ≥80% complete
const isModuleUnlocked = (moduleIndex) => {
if (moduleIndex === 0) return true;
return moduleProgress(modules[moduleIndex - 1].id) >= 0.8;
};
Key: syllabus-progress
Debounced writes (500ms) to avoid performance impact.
Clear progress option in settings with confirmation dialog.