Repository navigation
Lore 0.3.0
Sharper recall, a quieter capture nudge, near-duplicate triage, and a real test suite — all still hook-driven, staying in the lightweight recall/capture niche.
Recall
- Word-boundary scoring — an exact word hit scores 2, a prefix overlap scores 1, and an entry needs a score of 2 to surface.
authno longer matchesauthor, and one weak overlap never injects noise. - Short tags are findable — 2–3 char prompt words (
ci,api,aws) now match against exact tags, where they're curated vocabulary. Previously the 4-char minimum made them impossible to hit. - Directory & glob
files:refs — a ref may be an exact path, a directory prefix (src/auth/), or a glob (src/*.py), and all three power edit-time recall, the linter, and drift triage. Path matching is case-insensitive on Windows. - Local recall telemetry — every surfaced entry is logged to
.git/lore-recall.log(local only, never committed) so/lore:statscan show which learnings actually get used and which never surface. - New
/lore:search <query>— query the same scorer the recall hook uses, on demand.
Capture
captureNudgeconfig (always|smart|off, defaultsmart) — the smart mode skips the end-of-turn nudge on purely conversational turns (no tool use), so the LORE CHECK keeps its signal instead of becoming a mechanical reflex. Reads the transcript and fails open. Booleans work as shorthand (true→smart,false→off).- Post-compaction reminder (new
SessionStarthook) — right after context is compacted, a short lore reminder is re-injected — exactly the moment an uncaptured learning would otherwise die with the context. (PreCompactcan't inject context, so the post-compactSessionStartis the supported channel.) - Capture-time secret scan — the skill now scans the file it just wrote, so a leak is caught at write time, not just at the push boundary.
Health / freshness
/lore:lint --dupes— near-duplicate triage: entry pairs sharing title/tag vocabulary (e.g. two teammates capturing the same gotcha on parallel branches) plus category-name variants (CIvsci).- Richer
/lore:stats— now reports recall activity (most- and never-surfaced entries), the near-duplicate count, and a note when the project's.lore/hook copies fall behind the installed plugin version. - Faster drift triage —
--reportnow computes drift in a single streaminggit logpass instead of one subprocess per referenced file. .lore/VERSIONstamp —/lore:initstamps the hook copies so the linter can flag stale ones.
Robustness
_TEMPLATE.mdand_/.-prefixed files are no longer counted as entries (fixes the stats count and the generated index)..lore.jsonvalues are type-validated — a wrongly-typed key is ignored instead of crashing a hook.
Tests
- A 52-test stdlib
unittestsuite (scorer, ref matching, config, transcript-based nudge gating, secret scan, git drift) and a CI workflow running it on 3 OSes × Python 3.9/3.13.
⚠️ Behavior change
The end-of-turn capture nudge now defaults to smart (skips tool-less turns). To restore the previous every-turn behavior, set "captureNudge": "always" in a project's .lore.json.
Install / update: /plugin install lore@lore (auto-updates).