eidetic-memory: refresh wrappers (eidetic 0.10) + memory-discipline convention#11
Conversation
- **Memory-discipline "Conventions and workflow" section in `CLAUDE.md`** — a per-task *recall-before / remember-after* convention (scope localized to this repo's nick) so the vendored `remember` / `recall` skills are actually used, not just present: `/recall` before non-trivial work to build on prior decisions instead of re-deriving them, and `/remember` when a non-obvious decision, constraint, fix-and-why, or hard-won gotcha surfaces. The section documents this repo's memory as **in-repo and public** — records resolve to `<repo-root>/.eidetic/memory` (committed, team- and mesh-shared). Inserted idempotently (skipped if already present), slotted under an existing "Conventions and workflow" heading when one exists, else appended. ### Changed - **Refreshed the `remember` + `recall` wrappers from eidetic-cli 0.10.0** (cite-don't-import) — picks up eidetic's **project-local store default**: the files backend now resolves per record by visibility — PUBLIC records inside a git repo go to `<repo-root>/.eidetic/memory` (committed, team-shared), PRIVATE records (or any record outside a repo) go to `$HOME/.eidetic/memory` (never committed), an explicit `EIDETIC_DATA_DIR` still wins, and recall reads both stores and merges. Also carries the 0.9.3 hardening (interactive-stdin guard, `help` as a search term, SIGPIPE-safe suffix parsing). **Recipe policy override (the wrappers here are NOT byte-verbatim):** the injected default visibility is flipped from eidetic's `private` to **`public`**, so a plain `/remember` lands the note in `./.eidetic/memory` in this repo, kept as part of the repo — pass `--visibility private` to route a record to `$HOME` instead. `remember` drives `eidetic remember` (idempotent upsert of one JSON record or an NDJSON batch on stdin); `recall` drives `eidetic recall` with four search modes (exact / approximate / keyword / hybrid). Each `SKILL.md` is localized only in the illustrative `--scope <nick>` examples (Provenance keeps "First-party to eidetic-cli"). Runtime dep: the `eidetic` CLI on PATH (else a local eidetic-cli checkout with `uv`) — **`eidetic >= 0.10.0`** for the in-repo routing; on an older CLI the public records still work but are stored in `$HOME/.eidetic/memory` instead of in-repo. Propagated by rollout-cli's `eidetic-memory` recipe.
|
PR Summary by QodoRefresh eidetic remember/recall wrappers (0.10) and document memory discipline Description
Diagram
High-Level Assessment
Files changed (5)
|
Code Review by Qodo
1. remember SKILL.md out-of-date
|
| # rollout-cli eidetic-memory recipe POLICY OVERRIDE (not eidetic's | ||
| # upstream private default): default to PUBLIC so a plain remember lands | ||
| # in <repo>/.eidetic/memory — committed, team- and mesh-shared. Pass | ||
| # --visibility private to keep a record in $HOME (uncommitted). | ||
| has_flag --visibility "$@" || SCOPE_ARGS+=(--visibility public) | ||
| elif ! has_flag --visibility "$@"; then |
There was a problem hiding this comment.
1. remember skill.md out-of-date 📜 Skill insight ✧ Quality
remember.sh now injects --visibility public by default, but both its usage() output and .claude/skills/remember/SKILL.md still document an old private/personal default (including the ~/.eidetic/memory home-dir location) and even advise passing --visibility public. This mismatch can mislead users/agents into relying on incorrect behavior and unintentionally writing records to the shared public/committed store when they expected private notes.
Agent Prompt
## Issue description
The `remember` skill’s actual default visibility/store behavior has changed (the wrapper now injects `--visibility public` by default), but `.claude/skills/remember/SKILL.md` and the wrapper’s `usage()` output still describe the old behavior (private/personal by default, home-directory store, and suggesting `--visibility public` as opt-in). Update the documentation and help text so they no longer lag the implementation and so users/agents can intentionally choose public vs private storage.
## Issue Context
- `remember.sh` now injects `--visibility public` by default (policy override), especially when it resolves a `culture.yaml` suffix.
- The script’s `usage()` output and `.claude/skills/remember/SKILL.md` still claim the default is private/personal, reference `~/.eidetic/memory`, and advise passing `--visibility public`—which is now reversed.
- CLAUDE.md documents the intended new default as public.
- Expected behavior to document: default is **public** (in-repo when applicable); `--visibility private` should route to `$HOME`/personal storage.
## Fix Focus Areas
- .claude/skills/remember/SKILL.md[1-20]
- .claude/skills/remember/SKILL.md[61-100]
- .claude/skills/remember/scripts/remember.sh[51-67]
- .claude/skills/remember/scripts/remember.sh[88-104]
- .claude/skills/remember/scripts/remember.sh[139-158]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| # rollout-cli eidetic-memory recipe POLICY OVERRIDE (not eidetic's | ||
| # upstream private default): default to PUBLIC, so a plain recall queries | ||
| # the in-repo public pool (<repo>/.eidetic/memory) this repo writes to. | ||
| # Pass --visibility private to also surface this agent's private ($HOME) | ||
| # notes. The two-store read model reads both dirs regardless. | ||
| has_flag --visibility "$@" || SCOPE_ARGS+=(--visibility public) | ||
| elif ! has_flag --visibility "$@"; then |
There was a problem hiding this comment.
2. recall skill.md out-of-date 📜 Skill insight ✧ Quality
recall.sh now injects --visibility public by default, but .claude/skills/recall/SKILL.md (and the script’s own explanatory comments) still describe a personal/private default scope and home-directory store location. This mismatch can create incorrect operational expectations, confusingly missing results when private memories aren’t surfaced, and inconsistent behavior across agents.
Agent Prompt
## Issue description
The `recall` skill’s runtime behavior changed (it now injects `--visibility public` by default), but `.claude/skills/recall/SKILL.md` and `recall.sh`’s own explanatory comment block still describe the old private/personal-default behavior and legacy store expectations (e.g., `~/.eidetic/memory`). Update the documentation and script comments so they accurately reflect the current default visibility and any relevant routing/store semantics, in line with the requirement that SKILL.md must not lag behind implementation.
## Issue Context
- `recall.sh` now injects `--visibility public` by default, including when it resolves a `culture.yaml` suffix.
- The recall skill documentation (SKILL.md) still states the wrapper defaults to a personal/private scope, implies that a no-flag recall returns private records by default, and references a home-directory store location.
- The script’s comment block still describes the older private-default model, which can mislead users/agents into thinking private memories will be returned without explicitly setting visibility.
- The expected fix is to update SKILL.md (frontmatter + body) to match the new defaults and “two-store routing semantics,” update the recall.sh comment block to match the implemented default, and tighten any warning text that still references a private personal-scope default that no longer applies.
## Fix Focus Areas
- .claude/skills/recall/SKILL.md[1-22]
- .claude/skills/recall/SKILL.md[114-129]
- .claude/skills/recall/scripts/recall.sh[82-99]
- .claude/skills/recall/scripts/recall.sh[134-153]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Added
CLAUDE.md— aper-task recall-before / remember-after convention (scope localized to this
repo's nick) so the vendored
remember/recallskills are actually used,not just present:
/recallbefore non-trivial work to build on priordecisions instead of re-deriving them, and
/rememberwhen a non-obviousdecision, constraint, fix-and-why, or hard-won gotcha surfaces. The section
documents this repo's memory as in-repo and public — records resolve to
<repo-root>/.eidetic/memory(committed, team- and mesh-shared). Insertedidempotently (skipped if already present), slotted under an existing
"Conventions and workflow" heading when one exists, else appended.
Changed
remember+recallwrappers from eidetic-cli 0.10.0(cite-don't-import) — picks up eidetic's project-local store default: the
files backend now resolves per record by visibility — PUBLIC records inside a
git repo go to
<repo-root>/.eidetic/memory(committed, team-shared), PRIVATErecords (or any record outside a repo) go to
$HOME/.eidetic/memory(nevercommitted), an explicit
EIDETIC_DATA_DIRstill wins, and recall reads bothstores and merges. Also carries the 0.9.3 hardening (interactive-stdin guard,
helpas a search term, SIGPIPE-safe suffix parsing). Recipe policyoverride (the wrappers here are NOT byte-verbatim): the injected default
visibility is flipped from eidetic's
privatetopublic, so a plain/rememberlands the note in./.eidetic/memoryin this repo, kept as partof the repo — pass
--visibility privateto route a record to$HOMEinstead.
rememberdriveseidetic remember(idempotent upsert of one JSONrecord or an NDJSON batch on stdin);
recalldriveseidetic recallwithfour search modes (exact / approximate / keyword / hybrid). Each
SKILL.mdislocalized only in the illustrative
--scope <nick>examples (Provenance keeps"First-party to eidetic-cli"). Runtime dep: the
eideticCLI on PATH (else alocal eidetic-cli checkout with
uv) —eidetic >= 0.10.0for thein-repo routing; on an older CLI the public records still work but are stored
in
$HOME/.eidetic/memoryinstead of in-repo. Propagated by rollout-cli'seidetic-memoryrecipe.