Skip to content

Releases: Skyfox-io/Memex

v2.1.3 — wikilinks resolve dotted filenames

09 Jun 23:31

Choose a tag to compare

Bug fix: wikilink targets containing dots are no longer reported as broken.

Fixed

  • verify-wikilinks.py resolved link stems with os.path.splitext, which truncated dotted names ([[v1.2.3]]v1.2) and falsely flagged them as broken — in both the broken-link and closets checks. Stems now strip only a trailing .md, so filenames with internal dots resolve correctly.

v2.1.2

12 May 19:52

Choose a tag to compare

Hot patch: scripts now live in their consuming skill folders, resolved via ${CLAUDE_SKILL_DIR}/scripts/<script>.py — no plugin-root traversal.

v2.1.1

07 May 00:03

Choose a tag to compare

Two changes: drop the unpopulated facts.db sidecar, reframe the benchmark headline.

Removed

  • memory/.facts.db and /memex:facts. The temporal-facts SQLite sidecar shipped in v2.0.0 but never auto-initialized — /memex:init and /memex:upgrade never bootstrapped the DB, and nothing in the session lifecycle wrote to it. Closets already capture verbatim user-stated facts (claims:), decisions (decisions:), and dates (dates:) on every refresh. decisions.md already records dated supersession with stronger guarantees (always loaded, lint-checkable). The unique value the DB layer was supposed to add — contradiction detection — was duplicated by the keyword-explicit decision-supersession check already in /memex:lint and /memex:consolidate. Removed: memex/scripts/facts.py, memex/skills/facts/, the facts.db plumbing in sources.py, and all references across docs.
    • Migration: workspaces with no .facts.db are unaffected (most workspaces, since the bootstrap never ran). Workspaces that manually populated facts via /memex:facts add ... lose the DB but keep their memory/facts.md markdown mirror.

Changed

  • README headline reframed. Drops the leaderboard-comparable "90.1% Recall@5 on LongMemEval-S" pull-quote in favor of the actual differentiator: closets-format index in pure markdown matches full-content keyword search on retrieval recall at roughly 1/10th the size, with zero external dependencies. The 90.1% number stays in benchmarks/longmemeval/README.md with full context — what R@5 measures, what the BM25 baseline does, the size argument, and an explicit note that retrieval recall is not end-to-end QA accuracy.
  • README "How It Works" reworked to lead with closets as the centerpiece, with a sample entry, pagination notes, and an updated file-structure tree showing _CLOSETS.md and the optional prose hub index.
  • /memex:consolidate Step 2 rewritten. Now scans decisions.md for explicit override language and proposes annotating unannotated supersessions. --fix applies. Mirrors /memex:lint's detection.
  • Skill descriptions and gotchas updated to drop facts.db references (/memex:idea, /memex:unlink-workspace, /memex:cross-search, /memex:search, /memex:lint, /memex:consolidate).
  • /memex:upgrade v1→v2 playbook drops the facts.db row.

Roadmap

End-to-end QA accuracy on LongMemEval-S (retrieve → generate → GPT-4o judge) is the right next benchmark. Not in v2.x.

Note on history

This release also squashes the v2.0.x and v2.1.0 commit histories into clean release commits (one per tagged release). Tag SHAs for v2.0.0 and v2.1.0 have been updated to point at the squashed commits. Marketplace clones will see a force-update on next pull.

See CHANGELOG.md for the full list.

v2.1.0 — lighter session lifecycle

06 May 19:23

Choose a tag to compare

A lighter, more discoverable v2. Session lifecycle does less. Tier 1 gets typed retrieval. Hub indexes become optional. Cross-hub search lands as its own skill. Decisions compression and graph rebuild move out of session-end and into the bulk-write skills where they belong.

All v2.0 workspaces are forward-compatible. No breaking changes. /memex:upgrade handles the v2.0 → v2.1 increment idempotently.

Added

  • memory/_CLOSETS.md. Typed-field index over Tier 1 files (status, session-log, decisions, glossary, plus user-added Tier 1 entries). Field-level retrieval ("who is X?", "what did the user say about Y?") now hits structured fields on Tier 1 just like hub closets do for Tier 2. Init scaffolds it; /memex:reindex --hub memory backfills existing workspaces.
  • /memex:search skill. Cross-hub search within a single workspace. Greps _MANIFEST.md plus every _CLOSETS.md and _CLOSETS-archive.md plus memory/.facts.db, grouped by folder. Companion to /memex:cross-search.
  • Recently Archived section in primary _CLOSETS.md. When pagination overflows into _CLOSETS-archive.md, the primary closets file appends a list of the 5 most recently demoted file stems. Surfaces archive contents in the always-loaded layer.
  • ORPHAN FOLDERS check in /memex:lint. Flags top-level subdirectories with markdown files that aren't registered in the Hub Map. Suggests /memex:add-domain <name> per orphan.
  • Decisions compression in /memex:consolidate. Two concrete rules: drop redundant supersession pairs and collapse same-period clusters. Read-only by default; --fix applies.

Changed

  • Hub indexes are now optional. /memex:add-domain is closets-only by default. The optional [domain]-index.md exists for prose context. Existing workspaces with index files keep working unchanged.
  • Session-end is lighter. Removed: typed-edge graph rebuild, session-lock writes, in-line decisions compression. Session-end is unconditional and idempotent.
  • Wikilink suggest at session-end is scoped to session-modified files via the new --files flag on verify-wikilinks.py. Workspace-wide suggest stays available via /memex:wikilinks.
  • Session-start uses mtime for unclean-close detection. No lock file involved. The 5-minute window absorbs minor clock drift.
  • Session lock removed. memory/.session.lock is gone. Bulk-write skills keep their locks for real multi-minute write operations.
  • Typed-edge graph refresh is lazy. Rewritten by /memex:reindex and /memex:consolidate. Session-end nudges; doesn't rebuild.
  • /memex:reindex covers memory/ as a synthetic hub and rewrites memory/.graph.md after the verify pass.

Fixed

  • Decisions compression no longer happens at session-end or /memex:update. Both skills are append-only for decisions. Compression rules and --fix action live only in /memex:consolidate.
  • verify-wikilinks.py --suggest accepts --files <list>.

See CHANGELOG.md for the full list and the v2.0 → v2.1 upgrade playbook.

v2.0.0 — Memex v2: 90.1% R@5 on LongMemEval-S

06 May 06:21

Choose a tag to compare

v2.0.0: 90.1% Recall@5 on [LongMemEval-S], the standard retrieval benchmark for long-term memory in chat assistants.

What's new in v2

  • Two-tier index — per-hub _CLOSETS.md files enumerate every file's distinct subjects, named entities, decisions, dates, and status in typed fields. Sessions scan closets to decide what to open without opening anything. Pagination engages at 30 entries (overflow goes to _CLOSETS-archive.md, lazy-loaded only on a primary-closets miss).
  • Temporal facts SQLite sidecarmemory/.facts.db tracks (subject, predicate, object) triples with valid_from/valid_to dates. Stdlib sqlite3 only. Markdown mirror at memory/facts.md is the source of truth; the DB is regenerable via facts.py rebuild.
  • Typed-edge graph — optional YAML frontmatter (supersedes, blocks, people, projects) auto-extracted into memory/.graph.md at session-end. Pure regex; zero LLM calls; opt-in per file.
  • Cross-workspace federation/memex:link-workspace + ~/.memex/sources.md global registry; search across linked workspaces with /memex:cross-search. Reads manifests + closets + each source's facts.db read-only. Privacy-first: opt-in per source.
  • Standalone consolidation cycle/memex:consolidate runs dedup, contradiction sweep, and orphan check independently from session-end.
  • Idempotent session-end + crash recovery — content-hash check skips no-op writes; memory/.session.lock surfaces the previous session if it crashed without closing.

New skills

/memex:upgrade (one-command v1→v2 migration), /memex:reindex (bulk-rebuild closets), /memex:resummarize (refresh summaries to v2 format), /memex:consolidate (drift sweep), /memex:facts (temporal-facts CRUD), /memex:cross-search (federated search), /memex:link-workspace, /memex:unlink-workspace. Plus the v1 set retained: init, session-start, session-end, update, idea, add-domain, archive, wikilinks, lint. 17 skills total.

Upgrading from v1.1.1

When the marketplace update lands and you open your next session, the briefing will append a one-line prompt:

Memex upgrade available — run /memex:upgrade to migrate to v2 retrieval.

Run /memex:upgrade once. It detects state (manifest version, summary-format-version, per-hub closets coverage), builds an idempotent plan, and runs the right subset of /memex:resummarize + /memex:reindex + lint. Re-runs are no-ops.

Until you run it, your workspace works in compatible mode (no closets, no graph) — nothing breaks.

Compatibility

  • Zero new runtime dependencies. Markdown plus Python stdlib only.
  • Existing v1 workspaces upgrade silently via /memex:upgrade. v1 manifests, hub indexes, and decisions files are read directly.
  • Marketplace auto-update. v1.1.1 users will see an update prompt the next time their Cowork client refreshes the marketplace. No re-add required.

Benchmark

Full reproducer in benchmarks/longmemeval/: five extractors × eight rankers × 500 questions × six question categories, with paired-bootstrap CIs via compare.py. Headline strategy closets:emax lands at 90.1% R@5 / 94.6% R@10 / 0.880 MRR / 96.4% Hit@5.

Full changelog

See CHANGELOG.md for the full v2.0.0 entry.

v1.1.0

06 Apr 05:03

Choose a tag to compare

Restore version in plugin.json for cache path resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Memex v1.0.5

22 Mar 19:43

Choose a tag to compare

Structured memory plugin for Claude Cowork. Converts workspaces into wikilinked knowledge systems with persistent memory, tiered context loading, and Obsidian-compatible navigation.

Install

In Cowork: Customize > Browse plugins > "+" > enter Skyfox-io/Memex > Sync. Then run /memex:init.

What Memex does

  • Converts your workspace into a [[wikilinked]] knowledge base that works with Obsidian
  • Gives Claude full workspace awareness while only loading what the current task needs
  • Auto-briefs you at session start with status, blockers, and ideas
  • Auto-closes sessions cleanly: updates memory, logs decisions, verifies wikilinks
  • Content-aware init: scans files, detects domains, flags stale docs, surfaces conflicts, proposes organization

Skills

Skill What it does
/memex:init Set up, adopt, health-check, or upgrade a workspace
/memex:idea Quick-capture an idea to the inbox
/memex:update Save current status mid-session without closing
/memex:add-domain Add a new domain folder with hub index
/memex:archive Move a file from active to archived
/memex:wikilinks Check for broken links and convert plain text to wikilinks
/memex:session-start Session briefing (runs automatically)
/memex:session-end Session close (runs automatically)