fluent-db-updater

Atomically update six Fluent learner JSON databases from a single session payload.

Updated Apr 13, 2026
One-click install
npx skills add https://github.com/xiaoshan1234/ai-skill --skill fluent-db-updater-xiaoshan1234
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: fluent-db-updater
Source: https://github.com/xiaoshan1234/ai-skill/tree/main/origin/fluent-db-updater
Command: npx skills add https://github.com/xiaoshan1234/ai-skill --skill fluent-db-updater-xiaoshan1234

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Hand-editing six interdependent learner JSON databases (learner-profile, progress, mistakes, mastery, spaced-repetition, session-log) at the end of every practice session is error-prone and causes silent desync between streaks, session logs, mastery, and accuracy records. ## Core Features & Use Cases - Atomic multi-database writes: Pipe one JSON payload to update-db.py, which validates the payload, creates pre-write backups, and applies all changes via .tmp + fsync + rename. - Spaced-repetition queue rebuild: Runs SM-2 on review_results and regenerates the review queue from scratch on every run. - Use Case: After a /fluent-review session with 5 vocabulary and grammar items, send one payload containing review_results, errors, and skill_scores to persist everything, bump streaks, and record milestones in a single call. ## Quick Start At the end of a practice session, run update-db.py with a JSON payload containing the session_id, date, and any errors, new vocabulary, or review results to persist.

Frequently Asked Questions about fluent-db-updater

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I update learner progress databases after a practice session?▼

Run update-db.py once at session end with a single JSON payload containing session_id, date, and optional blocks like errors, new_vocabulary, review_results, and skill_scores. The script validates the payload, backs up existing files, and applies all changes atomically.

How do I add new vocabulary to a spaced-repetition queue?▼

Include a new_vocabulary array in the update-db.py payload with fully filled fields such as item_id, content, answer, difficulty, and initial_quality. The script creates the spaced-repetition records and rebuilds the review queue automatically.

What do update-db.py exit codes 1 and 2 mean?▼

Exit code 1 means payload validation failed and no files were touched; fix the payload and retry. Exit code 2 means an I/O failure such as disk or permission problems, also with no files written.

Can I hand-edit the spaced-repetition review queue?▼

No. The review_queue is regenerated from scratch on every update-db.py run, so manual edits are overwritten. Always make changes through the payload's review_results and new_vocabulary blocks instead.

What happens if I send the same session_id twice?▼

Sending the same session_id replaces the earlier session's data, which is useful for corrections but dangerous if unintentional. Always use the next_session_id value returned by read-db.py to avoid collisions.