Agent skill

Beacon Memory Distill

by Asymptote-Labs in Asymptote-Labs/agent-beacon

Turn recorded agent sessions (Beacon traces from Claude Code, Cursor, Codex, OpenCode, and other harnesses) into reviewed, reusable project memory.

MITAuto-check passedDevelopment

Install Beacon Memory Distill

skills CLI
$ npx skills add Asymptote-Labs/agent-beacon --skill beacon-memory-distill -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Asymptote-Labs/agent-beacon beacon-memory-distill --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Asymptote-Labs/agent-beacon.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent-skills/skills/beacon-memory-distill .claude/skills/beacon-memory-distill && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
beacon-memory-distill
GitHub stars
1.8k
Token cost
~3k tokens
SKILL.md length
1,433 words
Files
2 (incl. references)
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Turn recorded agent sessions (Beacon traces from Claude Code, Cursor, Codex, OpenCode, and other harnesses) into reviewed, reusable project memory.

  • Works in 7 steps: preflight → pick traces → dry run, then ask → …
  • The user asks to learn from
  • SKILL.md covers Step 1: preflight, Step 2: pick traces, Step 3: dry run, then ask and Step 4: score, plus 5 more sections
  • Needs TYPESAFE_API_KEY and BEACON_JEV_API_KEY

What it does

Beacon Memory Distill is an agent skill from Asymptote-Labs/agent-beacon. Turn recorded agent sessions (Beacon traces from Claude Code, Cursor, Codex, OpenCode, and other harnesses) into reviewed, reusable project memory. Scores selected traces, reads the source trace behind each high-signal candidate, drafts a grounded lesson, and approves it only after the user confirms. Use when the user asks to "learn from", "remember", "save the lesson from", or "turn into memory" a recent session, fix, or debugging effort, or asks to review Beacon memory candidates.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/lesson-quality.md`). Compatibility notes: Requires the Beacon CLI (beacon) on PATH with endpoint capture installed. Scoring calls the configured Jev evaluator over the network (hosted TypeSafe by…

It sits in Development, covering Agent memory. The repository describes itself as: The cross-harness, self-improving memory layer for AI agents. Join our community: https://discord.com/invite/zdNChS2fBu. The licence is MIT.

When your agent uses it

  • The user asks to learn from
  • Save the lesson from
  • Turn into memory a recent session
  • Debugging effort

Example prompts

  • “learn from”
  • “remember”
  • “save the lesson from”
  • “/beacon-memory-distill”

Requirements

  • A credential in TYPESAFE_API_KEY
  • A credential in BEACON_JEV_API_KEY
  • Compatibility (from SKILL.md): Requires the Beacon CLI (beacon) on PATH with endpoint capture installed. Scoring calls the configured Jev evaluator over the network (hosted TypeSafe by default) and needs TYPESAFE_API_KEY or BEACON_JEV_API_KEY; every other step is local.

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. preflight
  2. pick traces
  3. dry run, then ask
  4. score
  5. draft a lesson for each candidate
  6. review with the user
  7. record the decisions

What it can do on your machine

Read from SKILL.md and the folder at commit 2462839. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.beacon.sh

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TYPESAFE_API_KEY
    • BEACON_JEV_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires the Beacon CLI (beacon) on PATH with endpoint capture installed. Scoring calls the configured Jev evaluator over the network (hosted TypeSafe by default) and needs TYPESAFE_API_KEY or BEACON_JEV_API_KEY; every other step is local.

    From compatibility in the SKILL.md frontmatter.

Context cost

Beacon Memory Distill loads about 3k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 127 tokens; SKILL.md has 1,433 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~127
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Asymptote-Labs/agent-beacon at commit 2462839, republished under its MIT licence (© Asymptote-Labs). 1,433 words, ~2,977 tokens.

Download SKILL.mdSave it as .claude/skills/beacon-memory-distill/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
beacon-memory-distill
description
Turn recorded agent sessions (Beacon traces from Claude Code, Cursor, Codex, OpenCode, and other harnesses) into reviewed, reusable project memory. Scores selected traces, reads the source trace behind each high-signal candidate, drafts a grounded lesson, and approves it only after the user confirms. Use when the user asks to "learn from", "remember", "save the lesson from", or "turn into memory" a recent session, fix, or debugging effort, or asks to review Beacon memory candidates.
compatibility
Requires the Beacon CLI (beacon) on PATH with endpoint capture installed. Scoring calls the configured Jev evaluator over the network (hosted TypeSafe by default) and needs TYPESAFE_API_KEY or BEACON_JEV_API_KEY; every other step is local.
license
MIT
metadata.author
asymptote-labs
metadata.homepage
https://docs.beacon.sh/concepts/cross-harness-memory
metadata.version
0.1.0

Beacon memory distill: traces to memory

Beacon captures what agents do in every supported harness. This skill runs the review loop that turns a few of those sessions into approved project memory that any later agent can recall, whichever harness it runs in:

  1. Pick traces.
  2. Score them with the evaluator (the one networked step, and only with consent), or, where evaluation is not allowed, skip scoring and read the traces yourself.
  3. For each candidate, read the source trace and draft the lesson.
  4. The user confirms, edits, or rejects each draft.
  5. Approve with the reviewed text.

The evaluator returns probabilities only. It says a trace looks reusable; it does not say what the lesson is. You write the lesson, from the trace, and the user approves it. Never approve a candidate with its placeholder body ("no lesson text was extracted").

Commands that start from a trace (evaluations run, candidates create) file the memory under the repository the trace recorded, wherever you run them. Run every other command from inside the repository the memory is for, or pass --project <path>.

Step 1: preflight

bash
beacon version
beacon endpoint traces status --json
  • If beacon is missing, stop and point the user to https://docs.beacon.sh/get-started/overview. Do not install it yourself.
  • If status reports "enabled": false, there is no local history, and only the last day or two of sessions are still in the runtime log. Suggest creating the history, which keeps sessions for 90 days and stays on this machine, and run it only if the user agrees: beacon endpoint traces reindex.

Step 2: pick traces

Use what the user named: a session, a date, a harness, or a topic. Otherwise list recent traces and propose a short set (up to 10) that look like finished work with a correction, a fix, or a non-obvious procedure.

bash
beacon endpoint traces list --json --limit 20
beacon endpoint traces list --json --limit 20 -q "<topic terms>"
beacon endpoint traces search "<error text or file>" --json --limit 10

Prefer traces from this repository. Skip trivial sessions (a single question, an abandoned attempt) since they cost evaluator calls and yield nothing.

Reading the list:

  • Only session: IDs are sessions. IDs starting event: are single events with no session, almost always OTLP metric samples such as claude_code.active_time.total. They arrive every few seconds and sort to the top, so a short list can be all noise; raise --limit or use --page until you have sessions, and never select them. evaluations run skips them on its own when it selects by --limit, but never pass one to --trace.
  • A session whose updated_at is within the last few minutes is still being written. Leave it for next time: a lesson drafted from half a session is usually wrong about how it ended.
  • A session's repository is where its memory will be filed. It is null for many sessions, because not every event carries one, and then Beacon falls back to the current directory. Evaluate or create a candidate for such a session only with an explicit --project <path> you can justify from the paths in its commands.

Step 3: dry run, then ask

The dry run is local. It shows the traces selected and the estimated cost:

bash
beacon memory evaluations run --dry-run --trace <trace-id>
beacon memory evaluations run --dry-run --limit 10 --harness <name> --since <rfc3339>

Before the real run, tell the user plainly and wait for an explicit yes:

  • Each selected trace is sent, as a bounded and redacted projection, to the evaluator at BEACON_JEV_ENDPOINT if that is set, otherwise to the hosted TypeSafe endpoint.
  • It costs about the estimate the dry run printed.
  • Nothing is approved or written into memory by this step.

Check for a key without printing it:

bash
test -n "${TYPESAFE_API_KEY:-}${BEACON_JEV_API_KEY:-}" && echo "evaluator key present" || echo "no evaluator key"

With no key, stop and tell the user to export TYPESAFE_API_KEY (or point BEACON_JEV_ENDPOINT at their organization's compatible evaluator). Never ask them to paste a key into the chat, and never pass --jev-api-key on the command line. If the user or their organization does not allow external evaluation, or has no key and does not want one, skip Steps 3 and 4 and go to Without an evaluator.

Step 4: score

Repeat the exact selection the user approved, without --dry-run:

bash
beacon memory evaluations run --trace <trace-id> --json
beacon memory evaluations run --limit 10 --harness <name> --since <rfc3339> --json

A trace becomes a candidate only when task_success is at least 0.50 and the mean score is at least 0.60. Report how many were scored and how many became candidates. The text output names why each trace was not promoted; do not try to overturn that.

Show full SKILL.md (739 more words)Show less

Step 5: draft a lesson for each candidate

bash
beacon memory candidates list --state candidate --json
beacon memory candidates show <candidate-id> --json

For each candidate, read its evidence trace. Filter to the event types that carry substance and write the JSON to a file before reading it:

bash
beacon endpoint traces show <trace-id> --json --event-type user_message,tool_call,command,tool_result,approval,error --limit 150 > trace-1.json
beacon endpoint traces show <trace-id> --json --event-type user_message,tool_call,command,tool_result,approval,error --offset 151 --limit 150 > trace-2.json
beacon endpoint traces show <trace-id> --json --around-event <n> --before 5 --after 5

How to read what comes back:

  • --event-type filters the coarse type field (user_message, tool_call, command, tool_result, approval, error, session, token_usage, metric). Action names such as prompt.submitted match nothing.
  • Filter every read. Hooks and OTLP both record, so an unfiltered session is mostly token_usage and session events, and an unfiltered traces show on a large log can take minutes and exceed a tool timeout. Filtered reads return in seconds. range.total_events counts the filtered events, so it tells you how much is left.
  • The log usually holds no assistant text and no tool output. For Claude Code, a session's substance is its user_message events (the only ones with a content object), its tool_call and command events (tool name and command line), and whether a tool_result was a failure. The strongest evidence for a lesson is a failed command followed by a different command that succeeded.
  • A user_message with content.included false, or only a hash, means Beacon kept metadata only. You cannot draft from a hash; say the trace was unreadable.
  • --around-event centres on the unfiltered event number. Combined with --event-type it can return no events at all, so read a small unfiltered window around the number and skip the token_usage and session rows yourself.

Work out, from the events themselves:

  • What the task was (the first prompt).
  • What went wrong or was non-obvious: a failed command, a correction from the user, a retry, a wrong assumption that got reversed.
  • What finally worked, with the specific command, file, flag, or order of steps.
  • How the agent confirmed it worked (a passing test, a clean build).

Then check whether it is already known:

bash
beacon memory list --json -q "<two or three distinctive terms>"

Draft each lesson in the shape given in references/lesson-quality.md: title, kind, applicability, body, tags, and the event numbers it rests on. Read that file before writing your first draft.

Recommend reject when the trace has no transferable lesson (it was routine, too specific to one moment, or the fix was later reverted), and supersede when an existing memory already says the same thing.

Step 6: review with the user

Show every draft at once, each with its recommendation (approve, reject, or supersede), the candidate ID, and the trace events that support it. Ask the user to confirm or edit each one. Do not approve, reject, or supersede anything they have not confirmed. Silence is not approval.

Step 7: record the decisions

Approve with the reviewed text. Pass the body on stdin so quoting stays safe:

bash
beacon memory candidates approve <candidate-id> \
  --title "<title>" \
  --kind <workflow|correction|debugging_pattern|gotcha|convention> \
  --applicability "<when this applies>" \
  --tag <tag> --tag <tag> \
  --reason "Reviewed with the user; lesson drafted from trace events <n>-<m>" \
  --body-file - --json <<'LESSON'
<body>
LESSON
bash
beacon memory candidates reject <candidate-id> --reason "<why it is not reusable>"
beacon memory candidates supersede <candidate-id> --replacement <memory-id> --reason "<which memory already covers it>"

Confirm what was stored with beacon memory show <memory-id>, then summarize: approved, rejected, superseded, and the new memory IDs. Mention that any agent in any harness can now recall these with the beacon-memory-recall skill or the Beacon MCP tools, and that a memory worth loading automatically can be installed as a skill with beacon-memory-promote.

Without an evaluator

When scoring is not allowed, there is no evaluator to prefilter, so pick fewer traces (three at most) and only ones the user named or that clearly hold finished work. For each one, read it and draft the lesson exactly as in Step 5, then review the drafts with the user as in Step 6. Only after the user confirms a draft, write it as a candidate:

bash
beacon memory candidates create --trace <trace-id> \
  --title "<title>" \
  --kind <workflow|correction|debugging_pattern|gotcha|convention> \
  --applicability "<when this applies>" \
  --tag <tag> --tag <tag> \
  --body-file - --json <<'LESSON'
<body>
LESSON

The trace's events become the candidate's evidence, and it has no source_evaluation_id. It still waits for approval, so approve it with its candidate ID and a --reason as in Step 7; the text it was created with carries through, so the title, kind, and body flags can be left off. A trace the evaluator scored and did not promote is not a reason to write one by hand: that path is for when there is no evaluator, not for overturning it.

Boundaries

  • The evaluation run is the only networked step. Run it only after the dry run and the user's explicit yes, and only on the selection they approved. candidates create is local.
  • Memory is shared with every future agent in this project. Never put secrets, tokens, credentials, internal hostnames, customer data, or personal information into a title, body, tag, or reason, even when the trace contains them. Describe them instead ("the staging API key from 1Password").
  • Quote trace content sparingly and only to support a draft.
  • Never edit memory.db or the runtime log directly. Use the CLI.

© Asymptote-Labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in agent-skills/skills/beacon-memory-distill of Asymptote-Labs/agent-beacon.

  • SKILL.md
  • references/lesson-quality.md

Open the folder on GitHubat commit 2462839

Compare with similar skills

Beacon Memory Distill next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Beacon Memory Distill compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Beacon Memory Distill this skillAsymptote-Labs/agent-beacon1.8k—~3kAutomated safety check: PassMIT
Commit Context Lookuprohitg00/agentmemory29k—~522Automated safety check: PassApache-2.0
Shellm Architecture Referencelaude-institute/headlong1.2k—~2kAutomated safety check: NotesApache-2.0
Mem0 Status Checkmem0ai/mem067k—~1.5kAutomated safety check: PassApache-2.0
Agent Memory Discipline Looprohitg00/agentmemory29k—~831Automated safety check: PassApache-2.0
Rememberantonio-orionus/Arroxy397—~571Automated safety check: PassMIT

Similar skills

  • Commit Context Lookup

    rohitg00/agentmemory

    Traces a file, function or line back to the agent session behind its current commit, using git blame and a memory lookup, and reports only what the records show.

    29k GitHub stars~522 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Shellm Architecture Reference

    laude-institute/headlong

    Explains how shellm's bash-based recursive LLM shell fits together - its core engine, identity system, memory, skills and trajectory log.

    1.2k GitHub stars~2k tokensUpdated 2 days ago
    DevelopmentAuto-check: notes
  • Runs a four-part diagnostic on the mem0 plugin, checking the API key, identity resolution, memory search and memory write, then reports one pass-or-fail summary.

    67k GitHub stars~1.5k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Agent Memory Discipline Loop

    rohitg00/agentmemory

    Makes persistent agent memory pay off by searching before work starts and saving each decision the moment it settles, rather than batching a summary at the end.

    29k GitHub stars~831 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Remember

    antonio-orionus/Arroxy

    Persists a durable Arroxy lesson — a gotcha, user preference, workflow rule, or design decision — to the right tracked file (project memory, AGENTS.md, CONTEXT.md, dev-docs, or an ADR) so any coding…

    397 GitHub stars~571 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Fireworks Tech Graph

    ninehills/skills

    A skill your agent uses when the user wants to create any technical diagram - architecture, data flow, flowchart, sequence, agent/memory, or concept map - and export as SVG+PNG.

    280 GitHub starsUsed in 2 repos~8k tokens
    DevelopmentAuto-check passed

More from Asymptote-Labs/agent-beacon

  • Beacon Lens Create

    Asymptote-Labs/agent-beacon

    Create, revise, debug or validate a Beacon lens, a single HTML file that renders one agent trace as a purpose-built view (a per-file review, a cost breakdown, a timeline of risky commands, a map of…

    1.8k GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Beacon Memory Promote

    Asymptote-Labs/agent-beacon

    Install approved Beacon project memory as an Agent Skill in the repository (.agents/skills/<slug/SKILL.md), so every skill-capable harness loads the lesson automatically without a memory lookup.

    1.8k GitHub stars~927 tokensUpdated today
    Auto-check passed
  • Beacon Memory Recall

    Asymptote-Labs/agent-beacon

    Retrieve reviewed project memory that Beacon distilled from earlier agent sessions in any harness (Claude Code, Cursor, Codex, OpenCode, and others) before starting work.

    1.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Self Verify Beacon In Sandbox

    Asymptote-Labs/agent-beacon

    Verify a Beacon change end to end by running a real Claude Code session inside a disposable Linux cloud sandbox and checking that Beacon captured what the agent actually did.

    1.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed

Questions about Beacon Memory Distill

What does Beacon Memory Distill do?

Turn recorded agent sessions (Beacon traces from Claude Code, Cursor, Codex, OpenCode, and other harnesses) into reviewed, reusable project memory. Beacon Memory Distill is an agent skill from Asymptote-Labs/agent-beacon. Turn recorded agent sessions (Beacon traces from Claude Code, Cursor, Codex, OpenCode, and other harnesses) into reviewed, reusable project memory.

When should I use Beacon Memory Distill?

Beacon Memory Distill fits situations like: the user asks to learn from; save the lesson from; turn into memory a recent session; debugging effort.

How do I install Beacon Memory Distill in Claude Code?

Run `npx skills add Asymptote-Labs/agent-beacon --skill beacon-memory-distill -a claude-code`. Or copy the skill folder (agent-skills/skills/beacon-memory-distill in Asymptote-Labs/agent-beacon) into .claude/skills/beacon-memory-distill in your project. Claude Code loads it when a task matches its description.

How do I install Beacon Memory Distill in Codex?

Run `npx skills add Asymptote-Labs/agent-beacon --skill beacon-memory-distill -a codex`. Or copy the skill folder (agent-skills/skills/beacon-memory-distill in Asymptote-Labs/agent-beacon) into .agents/skills/beacon-memory-distill in your project. Codex loads it when a task matches its description.

Can I use Beacon Memory Distill in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Asymptote-Labs/agent-beacon --skill beacon-memory-distill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beacon-memory-distill, .gemini/skills/beacon-memory-distill, .github/skills/beacon-memory-distill and .opencode/skills/beacon-memory-distill in your project.

What does Beacon Memory Distill need to run?

Going by SKILL.md and its folder, Beacon Memory Distill needs credentials named TYPESAFE_API_KEY and BEACON_JEV_API_KEY. Our summary lists: A credential in TYPESAFE_API_KEY; A credential in BEACON_JEV_API_KEY. Compatibility (from SKILL.md): Requires the Beacon CLI (beacon) on PATH with endpoint capture installed. Scoring calls the configured Jev evaluator over the network (hosted TypeSafe by default) and needs TYPESAFE_API_KEY or BEACON_JEV_API_KEY; every other step is local..

Does Beacon Memory Distill access the network?

SKILL.md names 1 domain. As links in the text: docs.beacon.sh. This is read from the text; nothing was executed.

Is Beacon Memory Distill safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Beacon Memory Distill use?

Beacon Memory Distill is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Beacon Memory Distill use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 714 tokens, read only when the agent opens those files.

What are the alternatives to Beacon Memory Distill?

Skills that share tags, products or a category with Beacon Memory Distill: Commit Context Lookup (rohitg00/agentmemory, 29k stars), Shellm Architecture Reference (laude-institute/headlong, 1.2k stars), Mem0 Status Check (mem0ai/mem0, 67k stars) and Agent Memory Discipline Loop (rohitg00/agentmemory, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Beacon Memory Distill?

Asymptote-Labs (a GitHub organization) maintains it in Asymptote-Labs/agent-beacon, which has 1,810 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 11, 2026.

Source: Asymptote-Labs/agent-beacon on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.