Add eidetic remember/recall memory skills#1
Conversation
- **Vendored the `remember` + `recall` memory skills from eidetic-cli** (cite-don't-import) — the write/read halves of eidetic's shared `~/.eidetic/memory` surface, so this agent (Claude and its colleague backend) can persist facts across sessions and recall them later, sharing one store. `remember` drives `eidetic remember` (idempotent upsert of one JSON record or an NDJSON batch on stdin, dedup by id + content hash); `recall` drives `eidetic recall` with four search modes — exact / approximate / keyword / hybrid — each hit carrying text, full provenance metadata, a relevance score, and a freshness signal. The `.sh` wrappers are byte-verbatim from eidetic-cli (their first-party origin); each `SKILL.md` is localized only in the illustrative `--scope <nick>` examples (Provenance keeps "First-party to eidetic-cli"). Both default to this agent's PRIVATE scope, reading the suffix from `culture.yaml`. Runtime dep: the `eidetic` CLI on PATH (else a local eidetic-cli checkout with `uv`). Propagated by rollout-cli's `eidetic-memory` recipe.
CI Feedback 🧐A test triggered by this PR failed. Here is an AI-generated analysis of the failure:
|
|
PR Summary by QodoVendor eidetic-cli remember/recall skills for persistent shared memory Description
Diagram
High-Level Assessment
Files changed (6)
|
Code Review by Qodo
Context used✅ Compliance rules (platform):
17 rules✅ Skills:
doc-test-alignment, version-bump, cicd 1. .claude/skills/ directly modified
|
| #!/usr/bin/env bash | ||
| # recall.sh — search the shared eidetic memory store (the /recall skill). | ||
| # | ||
| # Thin, portable wrapper around `eidetic recall`. It resolves the CLI, points | ||
| # the embedding modes at the local model-gear embed gear (overridable), and | ||
| # forwards every flag verbatim — so `recall.sh "<query>" --mode hybrid --json` | ||
| # is exactly `eidetic recall "<query>" --mode hybrid --json`. |
There was a problem hiding this comment.
1. .claude/skills/ directly modified 📘 Rule violation ⚙ Maintainability
This PR adds new vendored skill files under .claude/skills/, which the compliance rule disallows editing directly (including additions). This should be done via the approved guildmaster re-sync process instead of changing the vendored skill contents in-repo.
Agent Prompt
## Issue description
Files under `.claude/skills/` were directly added/modified in this PR, which violates the vendored-skill policy; changes must come from the upstream guildmaster sync process instead.
## Issue Context
This PR introduces new skill files (e.g., `recall.sh`, `remember.sh`, and the associated `SKILL.md`) under `.claude/skills/`.
## Fix Focus Areas
- .claude/skills/recall/scripts/recall.sh[1-7]
- .claude/skills/remember/scripts/remember.sh[1-10]
- .claude/skills/recall/SKILL.md[1-23]
- .claude/skills/remember/SKILL.md[1-21]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| --- | ||
| name: recall | ||
| type: command | ||
| description: > | ||
| Search the shared eidetic memory store and get back ranked, provenanced |
There was a problem hiding this comment.
2. No alignment-delta check noted 📜 Skill insight ≡ Correctness
This PR touches .claude/skills/ but the provided PR description does not mention running an alignment-delta check (workflow.sh delta or devex pr delta) or any required sibling follow-ups. This violates the alignment-delta requirement for changes in .claude/skills/.
Agent Prompt
## Issue description
The PR modifies `.claude/skills/` but does not document that an alignment-delta check was run, nor any sibling repos needing follow-up PRs.
## Issue Context
Compliance requires documenting the delta check whenever `CLAUDE.md`, `culture.yaml`, or `.claude/skills/` are touched.
## Fix Focus Areas
- .claude/skills/recall/SKILL.md[1-5]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| resolve_eidetic() { | ||
| if command -v eidetic >/dev/null 2>&1; then | ||
| EIDETIC=(eidetic) # installed console script — the normal case | ||
| return 0 | ||
| fi | ||
| # Dev fallback: inside the eidetic-cli checkout, run via uv. | ||
| local dir | ||
| dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | ||
| while [ -n "$dir" ] && [ "$dir" != "/" ]; do | ||
| if [ -f "$dir/pyproject.toml" ] \ | ||
| && grep -q '^name = "eidetic-cli"' "$dir/pyproject.toml" 2>/dev/null; then | ||
| if command -v uv >/dev/null 2>&1; then | ||
| EIDETIC=(uv run --project "$dir" eidetic) | ||
| return 0 | ||
| fi | ||
| break | ||
| fi | ||
| dir=$(dirname "$dir") | ||
| done |
There was a problem hiding this comment.
4. Unreachable uv fallback 🐞 Bug ☼ Reliability
resolve_eidetic() only falls back to uv run --project ... eidetic when an ancestor directory’s pyproject.toml has name = "eidetic-cli", which is not true for this repo. As a result, if eidetic isn’t on PATH, these skills will always fail even if uv is installed and an eidetic-cli checkout exists elsewhere.
Agent Prompt
### Issue description
`resolve_eidetic()` can only use the `uv run` fallback when the wrapper is physically inside an `eidetic-cli` checkout (ancestor `pyproject.toml` name match). In this repo, that condition never holds, so the fallback path is effectively dead.
### Issue Context
The PR’s documentation and comments imply the wrapper can resolve either an installed `eidetic` or a local checkout with `uv`, but the current implementation cannot locate a checkout unless it’s an ancestor directory of the script.
### Fix Focus Areas
- .claude/skills/recall/scripts/recall.sh[16-36]
- .claude/skills/remember/scripts/remember.sh[23-42]
### Suggested fix
Add an explicit configuration path for the checkout (e.g., `EIDETIC_CLI_PROJECT_DIR` / `EIDETIC_PROJECT_DIR`) and, when set, prefer `uv run --project "$EIDETIC_CLI_PROJECT_DIR" eidetic` before erroring. Keep the current PATH-first behavior.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Vendors eidetic-cli's first-party
remember+recallmemory skills into this repo's.claude/skills/kit (cite-don't-import), giving this agent a shared, persistent memory surface (~/.eidetic/memory) that Claude and the colleague backend both read and write.remember→eidetic remember: idempotent upsert of one JSON record or an NDJSON batch on stdin (dedup by id + content hash).recall→eidetic recall: four search modes (exact / approximate / keyword / hybrid), each hit carrying text, full provenance metadata, a relevance score, and a freshness signal.The
.shwrappers are byte-verbatim from eidetic-cli (their first-party origin); this repo'sSKILL.mdscope examples are localized to its own nick. Version bumped + CHANGELOG updated per the AgentCulture rule. Runtime dep: theeideticCLI on PATH (else a local eidetic-cli checkout +uv).Propagated by rollout-cli's
eidetic-memoryrecipe (origin: agentculture/eidetic-cli). Squash-merge at your discretion.🤖 Generated with Claude Code