All notable changes to Fluent will be documented in this file.
- Milestones support in the
update-db.pysession payload. The newmilestones[]field accepts either a bare string or an object{ "milestone": <required non-empty string>, "date": <optional YYYY-MM-DD, defaults to the session date> }. Each milestone is recorded in bothsession-log.milestones[]andlearner-profile.achievements[]. Validation rejects malformed entries (exit1, no files written); an unparseabledatefalls back to the session date.
- Hooks no longer fail on Windows with
No such file or directory(#5). Plugin hook commands inhooks.jsonused the bash default-value syntax${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}, which Claude Code's own variable substitution does not understand on Windows — it replaced the variable names but left the:-separators literal, producing a single garbage path. Hook commands now use plain${CLAUDE_PLUGIN_ROOT}(always set for plugin hooks) and invoke scripts via an explicitpython3/bashinterpreter so they don't depend on shebang handling under Git Bash.
All 12 skills renamed with a fluent- prefix to prevent collisions with other
plugins and Claude Code built-ins. Update any muscle memory or external
references.
| Old | New |
|---|---|
/setup |
/fluent-setup |
/learn |
/fluent-learn |
/review |
/fluent-review |
/vocab |
/fluent-vocab |
/writing |
/fluent-writing |
/speaking |
/fluent-speaking |
/reading |
/fluent-reading |
/progress |
/fluent-progress |
sm2-calculator |
fluent-sm2-calculator |
db-updater |
fluent-db-updater |
feedback-formatter |
fluent-feedback-formatter |
session-analyzer |
fluent-session-analyzer |
New session result files use /results/fluent-{skill}-session-{NNN}.md.
Existing files using the older {skill}-session-{NNN}.md naming are still
read by fluent-session-analyzer — no migration required.
- Plugin install no longer fails on first DB read. Skills now invoke helper
scripts via
${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/...so the path resolves regardless of CWD. - Added missing
.claude/hooks/ensure_data_dir.pyreferenced byfluent-setup.
claude plugin update fluent@m98Then use the new slash commands. Your data (~/.claude/fluent-data/ or
./data/) is unchanged.
Initial release.