cc-os/openspec/changes/archive/2026-06-09-memsearch-episod.../specs/memsearch-episodic/spec.md

3.3 KiB

ADDED Requirements

Requirement: Plugin installed globally

The system SHALL install memsearch as a Claude Code plugin via the marketplace so that episodic memory is available in all sessions.

Scenario: Successful marketplace install

  • WHEN the user runs /plugin marketplace add zilliztech/memsearch followed by /plugin install memsearch
  • THEN the memsearch plugin is active, its Stop hook is registered, and memsearch tool definitions are available in the session

Requirement: Global memory directory

The system SHALL store all episodic memory files at a global path (~/.memsearch/memory/) so that memories from all projects accumulate in one place and are queryable cross-project.

Scenario: memory_dir is already global after install

  • WHEN the user runs memsearch config list after install
  • THEN memory_dir resolves to ~/.memsearch/memory/ (or equivalent global home-relative path)

Scenario: memory_dir requires explicit configuration

  • WHEN memsearch config list shows a project-local memory_dir
  • THEN the user sets memory_dir = "~/.memsearch/memory/" in ~/.memsearch/config.toml and re-verifies with memsearch config list

Requirement: Stop hook produces daily memory files

The system SHALL produce a daily memory file at ~/.memsearch/memory/YYYY-MM-DD.md after each session turn so that episodic history accumulates automatically without manual action.

Scenario: Memory file created after first session turn

  • WHEN a session turn completes (user message + Claude response) with memsearch installed and configured
  • THEN a file exists at ~/.memsearch/memory/<today-date>.md containing a summary of that turn

Scenario: Stop hook fires on every turn

  • WHEN multiple turns occur in a session
  • THEN the daily memory file grows with entries for each turn (SHA-256 dedup prevents duplicate entries)

Requirement: Built-in guidance audited before customization

The system SHALL audit memsearch's built-in Claude plugin instructions after install before adding any custom skill or configuration, so that custom code is only added when a concrete gap is identified.

Scenario: No routing conflict found

  • WHEN the user reviews memsearch's built-in guidance and runs a test session
  • THEN episodic recall queries are handled by memsearch's built-in tools without conflicting with memory-vault or memory-project routing
  • THEN no custom memory-search skill is created

Scenario: Routing conflict or gap identified

  • WHEN memsearch's built-in guidance fails to distinguish episodic from semantic queries, or does not handle cross-project recall correctly
  • THEN a minimal memory-search skill is authored that supplements (not replaces) the built-in guidance

Requirement: Cross-project episodic recall available

The system SHALL enable the user to query episodic memory across all projects via memsearch search "<query>" so that questions like "what were we working on last Tuesday?" are answerable.

Scenario: Successful cross-project query

  • WHEN the user runs memsearch search "what was I working on last week?" after at least one session has produced memory files
  • THEN memsearch returns relevant summaries from ~/.memsearch/memory/ ranked by semantic similarity