Repository navigation
Kai v2.3.0
Tyre ledger helpers, and a documentation restructure. Additive: no commands, paths or credentials change from v2.2.1.
Added: tyre ledger helpers (#16)
skills/gear-maintenance/scripts/tyres.py edits the tyre ledger, so data/tyres.json no longer needs hand-editing:
python3 skills/gear-maintenance/scripts/tyres.py list
python3 skills/gear-maintenance/scripts/tyres.py add-wheelset road_wheels --name "Road wheels" --gear-id b1234567
python3 skills/gear-maintenance/scripts/tyres.py add-set road_wheels --model "GP5000 28mm" --replace-at 4000
python3 skills/gear-maintenance/scripts/tyres.py add-set road_wheels --model "GP5000 28mm" --replace # retires the old set, fits the new one, in one write
python3 skills/gear-maintenance/scripts/tyres.py retire road_wheels-gp5000-28mm-2026-01-01- A wheelset wears one active tyre set at a time;
add-set --replaceretires the old one (recording when) and fits the new one atomically. fitted_bike_odometer_kmis informational only: from--odometer, or from Strava only when the wheelset has exactly one bike and the set is fitted today. Strava being unreachable never blocks a change.- Notes, custom fields and key order in your existing ledger are preserved. A ledger left in the old
skills/strava/data/location is edited in place, with a notice; a new file is never created alongside it. - The mileage report is unchanged (
tyre-mileage.sh).
Documentation restructure
The README was 381 lines covering three audiences at once. It's now 123 lines: the pitch, the capability table, how it works, a five-step quick start, and a documentation index. Everything else moved out, and each command now lives in exactly one place instead of being repeated across files:
- docs/installation.md — requirements, Python packages (venv and
uv), connecting each data source, gear maintenance setup. - docs/openclaw.md, docs/claude-code-codex.md, docs/hermes.md — one page per agent.
- docs/features.md — every capability in detail: what you get, how it works, what it needs, known limits, and example prompts.
- docs/architecture.md — how it works, repository layout, customizing, privacy detail.
- docs/upgrading.md — v1.x → v2, gear maintenance moved.
- CONTRIBUTING.md — set-up, tests, branch and PR naming, the personal-data rule, how to add a skill, releases.
- CHANGELOG.md — one entry per release from here on.
.github/— a pull request template and bug/feature issue templates, each with a reminder to keep personal data out of anything public.
Old links keep working: the README still has a short "Upgrading from v1.x" section at the anchor the v2.0.0 release notes point to.
Tests (83, was 79)
New: every relative link and heading anchor across the tracked docs resolves; the anchor published releases link to still exists; the README stays under 160 lines; every docs/ page is linked from it; 23 new tests for tyres.py (refusal without --replace, atomic replace, id collisions, ledger-location fallback, a round trip through the real mileage report).
Known issues
- FIT downloads from the Garmin skill are saved as a ZIP, so
analyze/parseon them fails (#15). tyre-mileage.shtreats a tyre's fitted date as midnight UTC, so a fit-day ride outside UTC can be missed or miscounted (#22).SECURITY.mdholds Kai's own agent rules, but GitHub treats that filename as the repo's vulnerability-reporting policy (#24).- The Hermes Agent and Codex setups are still untested against live installs.
Full changelog: v2.2.1...v2.3.0