fluent-db-updater

fluent-db-updater is a skill for Claude Code, Codex from m98/fluent. It costs 97 tokens per session (1,729 once invoked), scanned A, original, MIT.

A database-update procedure that saves the results of a Fluent practice session across six learner records in one operation.

In plain words
What is it for?
It is for recording session results, vocabulary, errors, review outcomes, mastery changes, study time, streaks, and the spaced-repetition review queue.
Why use it?
It avoids manually changing several files and reduces the chance that progress, mistakes, mastery, reviews, or session history become inconsistent.

Skill for Claude CodeCodex

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the fluent plugin — 12 skills, 4 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/m98/fluent/fluent-db-updater
Any agent
npx skills add m98/fluent --skill fluent-db-updater
Clone the repo
git clone --depth 1 https://github.com/m98/fluent

Made for: Claude Code, Codex.

Or install fluent, the plugin that ships this one along with the rest of its 12 skills, 4 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fluent-db-updater

README.md
[![agentmods](https://agentmods.dev/badge/skills/m98/fluent/fluent-db-updater.svg)](https://agentmods.dev/skills/m98/fluent/fluent-db-updater)
Your own site
<a href="https://agentmods.dev/skills/m98/fluent/fluent-db-updater"><img src="https://agentmods.dev/badge/skills/m98/fluent/fluent-db-updater.svg" alt="Measured on agentmods" height="20"></a>
Per session 97 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,729 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00097 $0.01729
Opus 5 $0.00048 $0.00864
Sonnet 5 $0.00019 $0.00346
Haiku 4.5 $0.00010 $0.00173

Measured 4d ago against content hash 7d5af837f1c6, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

fluent-db-updater scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/fluent-db-updater/SKILL.md · 146 lines

How it starts

The opening of the file, as written. The whole thing — 146 lines — stays where its author put it; the contents beside it link to each section on GitHub.

DB Updater

Overview

Every practice skill ends with a DB update. Instead of hand-editing 6 JSON files (error-prone, racy, easy to desync), pipe one JSON report to update-db.py. The script runs pre-write backups, validates the payload, applies all changes atomically via .tmp + fsync + rename, and rebuilds the spaced-repetition queue.

When to Use

Load this skill whenever the tutor:

  • Finishes a practice session and needs to persist results.
  • Needs to add new vocabulary to the spaced-repetition queue.
  • Needs to record new errors, review results, or mastery changes.
  • Needs to bump total_sessions, current_streak_days, or total_study_minutes.

Skip this skill for read-only operations (use the fluent-progress skill or read-db.py directly) and during session setup (use fluent-setup skill instead — update-db.py is for session deltas, not bootstrap).

Instructions

1. Call the script

Run from the repo root:

python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/update-db.py" <<'EOF'
{ ...payload... }
EOF

Exit codes: 0 success, 1 validation error, 2 I/O error.

2. Fill the payload

Required fields

  • session_id — string, convention session-NNN. Use computed.next_session_id from read-db.py.
  • date — YYYY-MM-DD.

Optional fields — omit to skip. Full canonical example (copy-paste this and fill in):

${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/references/db-updater-payload.example.json

Key blocks the example covers: skill_scores, errors[], new_vocabulary[], review_results[], topics_covered, breakthroughs, focus_next_session, session_notes, achievements_earned, milestones.

3. Field notes

  • errors[] — one entry per distinct mistake this session. Collapse duplicates (same pattern_id) before sending; frequency is bumped by the script.
  • new_vocabulary[] — items the learner met for the first time. Fill every field; incomplete entries yield incomplete spaced-repetition records.
  • review_results[] — items already in the queue that were reviewed. The script runs SM-2 on each. See the fluent-sm2-calculator skill. Mapping: quality = floor(score / 2).
  • skill_scores[].correct counts correct exercises, not a percentage. Accuracy is derived.
  • confidence in learner-profile.skills is 0–100 integer; accuracy in progress-db is 0.0–1.0 float. The script handles the conversion.
  • milestones[] — each entry is a bare string OR an object { "milestone": <required non-empty string>, "date": <optional YYYY-MM-DD, defaults to the session date> }. Don't set a nested session_id; the script stamps the authoritative top-level one. A malformed entry (neither string nor object, or an object missing/empty milestone) exits 1 with no files written. Each milestone becomes both a session-log.milestones[] record and a learner-profile.achievements[] entry.

Read the full file on GitHub · 146 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 146 lines · 97 tokens per session scan A 7d5af837f1c6

Subscribe to this mod's changes

fluent-db-updater is a skill published in the GitHub repository m98/fluent (387 stars, last pushed 2mo ago), licensed MIT. It adds 97 tokens to every session and 1,729 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

database-foundation-course-writer

Write Chinese "数据库筑基课" Markdown articles for database architects, DBAs, and application developers. Use when the user provides a database foundation article title and references such as technical docs, product manuals, open-source repositories, DeepWiki pages, papers, source code, or related blog posts, and wants a…

digoal/blog · 89 tokens

documentation-writer

Diátaxis Documentation Expert. An expert technical writer specializing in creating high-quality software documentation, guided by the principles and structure of the Diátaxis technical documentation authoring framework. Templates for tutorial / how-to / reference / explanation live under templates/.

ob-labs/agentseek · 53 tokens

lesson-close

Закрыть текущее занятие. Финализирует lesson/YYYY-MM-DD.md (frontmatter status, метаданные времени, длительность), делает commit + push в репо DS-personal-guide. Триггерит замкнутый контур доставки — после push → GitHub webhook → bot oauthserver.py:/webhook/github/workbook → synconeusertodt → ЦД обновляется в Neon.…

TserenTserenov/FMT-exocortex-template · 129 tokens

with-eval

Reviews code diffs against a structured checklist covering security (sql-injection, hardcoded-secret, unvalidated-input), reliability (missing-error-handling, resource-leak), and correctness (off-by-one, wrong-comparison). Use when reviewing PRs, audit diffs, or any code change where you want a categorised…

nicolasmelo1/logion · 104 tokens

supabase-selfhost-ops

The protocol rests on ten invariants. Every agent (CI or local harness) and every human interacting with boucle MUST honor them. The LESSONS.yml lessons are incident catalogs that instantiate these invariants; the normative statement lives here.

ankaboot-source/supabase-selfhost-ops · 0 tokens

data-analyst-agent

Création d'agents d'analyse de données qui explorent, visualisent et expliquent les données. Se déclenche avec "data analyst agent", "agent analyse données", "agent data", "agent qui analyse", "automated analysis", "data exploration agent", "agent SQL", "agent pandas". Also triggers on "agent that analyzes data"…

khalilbenaz/claude-skills-collection · 81 tokens