agentleFS
OpenCovenOpenCoven/coven/skills/memory-recall/SKILL.md

memory-recall

Skill75 starsChanged 4 months agoMITView on GitHub

Runtime-neutral recall from the Coven shared memory store (~/.coven/memory). Wraps the coven-memory CLI to retrieve promoted, attested facts at query time. Read-only by construction.

6 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 1 is distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Query the crate: Treat query and familiar as untrusted data.

    line 67
  2. Distinctive:

    Never silently hide a superseded claim — the store is a claims log (§11.0).

    line 82
  3. Very specific:

    No shell, runtime-specific hooks, session APIs, or bootstrap injection are required.

    line 114

“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Memory Recall

Retrieval-side contract for the Coven memory layer (Authoritative Plan v1 hole #7; issue the memory recall implementation). Any familiar, under any runtime, uses this skill to pull already-promoted facts back into working context. It does not write, promote, or mutate anything under ~/.coven/memory — that is the promotion layer's job (schema: familiar-contract/schemas/coven-memory-schema.md §11). A coven memory promote command is planned but does not exist yet; see docs/memory/attested-promotion.md.

When to use

  • The question depends on a promoted Coven fact, decision, or cross-familiar context rather than the current session or the familiar's own MEMORY.md.
  • "Did we decide X?" / "what did <familiar> attest about Y?" for anything that plausibly predates the current session or originated with another familiar.
  • As a supplement to the runtime's own memory search (which covers per-familiar MEMORY.md / daily notes / transcripts). Recall covers the layer below that: promoted, attested, cross-familiar-visible.

When NOT to use

  • Answer is in the current session → just answer.
  • Answer is in the familiar's own MEMORY.md or daily files → use the runtime's memory tools.
  • The promotion layer has not run for the relevant window → recall returns empty; say so honestly. Never fabricate a hit.

Inputs

FieldTypeRequiredDescription
querystring✅Natural-language question or keyword phrase.
familiarstring❌Store scope filter passed to the crate: coven (default; the shared store) or a familiar id for per-familiar stores. Must match ^[A-Za-z0-9_-]{1,128}$ — the same shape the crate's own validate_identifier enforces for familiar_id.
kint❌Max results. Default 5, max 20.
since / untilISO date❌Filter on manifest timestamp.
verified_onlybool❌Default true. Drop hits whose manifest sha256 no longer matches the promoted snapshot or whose attested_via file is missing.

Outputs

FieldTypeDescription
hitsarrayOrdered {ulid, title, type, memory_type, snippet, score, attested_by, attestation_type, promoted_at, superseded_by?}
countintLength of hits.
queried_atRFC3339 UTCWhen the recall ran.
manifest_hashstringSHA-256 of manifest.jsonl consulted (drift detection between calls).
droppedintHits removed by verification (verified_only=true). Surfaced, never silent.

Side effects

None. Recall is read-only by construction; an implementation that mutates ~/.coven/memory during recall is non-conformant with this skill. Recall MUST NOT log query text to any destination outside the Coven filesystem.

Steps

  1. Precondition. ~/.coven/memory/manifest.jsonl exists with ≥1 line, else return {hits: [], count: 0, note: "promotion layer has not run"} and stop.
  2. Query the crate. Treat query and familiar as untrusted data. Validate familiar against ^[A-Za-z0-9_-]{1,128}$ (default coven) — the shape the crate's validate_identifier already enforces — and reject any other value. Invoke the crate with an argv API, not a shell command string, equivalent to execve/subprocess.run(["coven-memory", "search", "--familiar", familiar, query]). If a runtime exposes only a shell, pass every dynamic argument through robust single-argument shell escaping (for example Python shlex.quote) and do not concatenate raw input. Add --index/ --db only if the store lives off the default path. The crate owns ranking (fastembed/nomic-embed-text-v1.5 + TurboVec ANN; schema §11.5 pins embeddings as crate-internal).
  3. Join against the manifest. For each hit, find its manifest line by ulid. Apply since/until on timestamp. Detect supersession: if a later operation: supersede line names this ulid as prior_ulid, annotate superseded_by and rank the superseding entry ahead of the superseded one. Never silently hide a superseded claim — the store is a claims log (§11.0).
  4. Verification (verified_only=true, default). Drop hits where (a) the manifest sha256 mismatches the promoted snapshot content, or (b) the entry's attested_via attestation file is absent. Count them in dropped. Fail-degraded, not fail-fatal: verification failure removes the hit and is reported; it never aborts the query. (No cryptographic verification in v1 — attestations are unsigned per schema §11.2.)
  5. Resolve source_context lazily. Entries carry FAMILIAR_ROOT-relative paths or portable session:// references (§11.1). Resolve against the current environment's FAMILIAR_ROOT (--familiar-root flag → COVEN_FAMILIAR_ROOT env) only when the caller asks to open a source; unresolvable → return the portable reference as-is with a note. Recall never requires FAMILIAR_ROOT to answer.
  6. Answer with provenance. Present claims with attested_by + attestation_type
    • confidence + timestamp. Conflicting claims are both returned; the querying familiar reasons over them (claims-log framing, §11.0).

Failure modes

ConditionBehavior
Store or manifest missingEmpty result + honest note. Never fabricate.
coven-memory binary absentFail with install pointer (OpenCoven/coven crates). No grep fallback that bypasses scope filtering.
Manifest line missing for a hitDrop hit, count in dropped (index-without-source is a defect, §11.0).
Unknown scope/fields in a manifest lineSkip that line, count in dropped (fail-degraded).

Runtime-Portability Audit (§11.5 — answered)

If Val runs a familiar tomorrow under a different runtime (Codex CLI, Cursor, Claude Code, CovenCave, bare SSH), does this skill work without modification?

✅ Yes. The skill's only dependencies are (a) the coven-memory CLI — a Coven-shipped binary, and (b) ~/.coven/memory/ — a Coven-owned contract path. No shell, runtime-specific hooks, session APIs, or bootstrap injection are required. FAMILIAR_ROOT resolution follows the schema's flag→env→fail-closed order and is only needed for optional source opening, never for querying. Session references use the portable session:// class form, never raw runtime session keys.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.