Agent skill

Auto Memory

by mikeyobrien in mikeyobrien/rho

Extract durable learnings and preferences from conversations for automatic memory capture.

MITAuto-check passed

Install Auto Memory

skills CLI
$ npx skills add mikeyobrien/rho --skill auto-memory -a claude-code

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

GitHub CLI
$ gh skill install mikeyobrien/rho auto-memory --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/mikeyobrien/rho.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/auto-memory .claude/skills/auto-memory && 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
auto-memory
GitHub stars
372
Token cost
~2k tokens
SKILL.md length
969 words
Files
1
Skills in repo
35
Repo updated
First seen
Licence
MIT

At a glance

Extract durable learnings and preferences from conversations for automatic memory capture.

  • Works in 4 steps: Classify Conversation Content → Check Against Existing Memories → Draft Extractions → …
  • SKILL.md covers Overview, Parameters, Steps and Output Format, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Auto Memory is an agent skill from mikeyobrien/rho. Extract durable learnings and preferences from conversations for automatic memory capture.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: An AI agent that stays running, remembers across sessions, and checks in on its own. macOS, Linux, Android. Built on Pi. The licence is MIT.

Example prompts

  • “/auto-memory”

Workflow steps

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

  1. Classify Conversation Content
  2. Check Against Existing Memories
  3. Draft Extractions
  4. Categorize

What it can do on your machine

Read from SKILL.md and the folder at commit 073a3ee. 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 json).

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Auto Memory loads about 2k tokens when it runs. Until then it costs about 26 tokens; SKILL.md has 969 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~26
When it runs · the whole SKILL.md, loaded when a task matches
~2k

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 mikeyobrien/rho at commit 073a3ee, republished under its MIT licence (© mikeyobrien). 969 words, ~2,033 tokens.

Download SKILL.mdSave it as .claude/skills/auto-memory/SKILL.md (or your agent's skills folder).
name
auto-memory
description
Extract durable learnings and preferences from conversations for automatic memory capture.
kind
sop

Auto-Memory Extraction

Overview

Extract durable learnings and user preferences from a conversation that will remain useful across future sessions. This runs automatically after each agent turn, using a small/cheap model. Quality over quantity: one precise memory is worth more than five vague ones.

Parameters

  • conversation (required): The serialized conversation text to extract from
  • existing_memories (optional): Already-stored memories to avoid duplicating

Steps

1. Classify Conversation Content

Scan the conversation and classify each substantive exchange into one of these categories:

Extractable:

  • Final decisions (user confirmed or explicitly chose something)
  • Corrections (user said "no, do X instead" or "that's wrong")
  • Stated preferences ("I prefer X", "always do Y", "don't use Z")
  • Discovered facts about the environment, tools, or APIs that were verified
  • Patterns that were tested and confirmed working
  • Bug fixes with root causes identified

Not extractable:

  • Intermediate discussion before a decision was reached
  • Options that were considered but rejected
  • Transient states ("GitHub is down right now")
  • Obvious facts any model would know
  • One-off task details ("fix the bug on line 42")
  • Anything the user explored but didn't commit to
  • Version numbers or update confirmations ("updated X to v1.2.3")
  • Heartbeat or check-in status reports ("Heartbeat Feb 19: all clear")
  • Benchmark scores or run results ("scored 42/89 = 47.2%")
  • Bug sweep summaries without a generalizable root cause ("reviewed X, no bugs found")
  • UI/feature implementation details ("button text changed to X", "layout uses 3 columns")
  • Task completion status ("task X is complete", "run Y failed")
  • Project-specific state that won't inform future decisions

Constraints:

  • You MUST only extract from the "extractable" category
  • You MUST apply the 30-day test: "Would this change a decision I make 30 days from now?" If no, do not extract it. Most conversations produce zero durable knowledge — that's fine.
  • You MUST NOT extract intermediate discussion states as settled facts because conversations explore options before deciding, and capturing exploration as truth produces wrong memories
  • You MUST NOT extract transient information (outages, temporary workarounds, "currently broken") because these become stale and misleading
  • You MUST prefer the final state of a decision over earlier states because users change their mind during conversations
2. Check Against Existing Memories

Compare each candidate extraction against the existing memories list.

Constraints:

  • You MUST NOT extract anything that restates, overlaps with, or is a subset of an existing memory
  • You MUST NOT extract a weaker version of something already stored (e.g., don't store "use ripgrep" if "Always use ripgrep instead of grep for searching" already exists)
  • You SHOULD flag when a new extraction contradicts an existing memory — extract the new one with updated information, as it represents a more recent decision
  • You MUST NOT extract more than 1 item total per conversation — force yourself to pick only the single most valuable extraction, or nothing. Most conversations should produce nothing.
3. Draft Extractions

For each valid candidate, draft a concise memory entry.

Constraints:

  • You MUST write each entry as a specific, actionable statement — not a summary of what happened
  • You MUST keep entries under 300 characters unless additional context is essential for future usefulness
  • You MUST use the final decided form, not the discussion form
    • Bad: "User discussed whether to use the rho tmux config or keep the current one"
    • Good: "Rho tmux config swapped in as ~/.tmux.conf, replacing the nix-configs-based one"
  • You MUST NOT use vague language like "the user prefers better approaches" because it provides no actionable guidance
  • You SHOULD include the "why" when it's not obvious from the "what"
    • Good: "Use printf '%s' instead of echo for piping to jq — echo adds trailing newline"
    • Bad: "Use printf instead of echo"
Show full SKILL.md (378 more words)Show less
4. Categorize

Assign each extraction a type and category.

Learning types:

  • Corrections, discovered patterns, environment facts, bug root causes, tool behaviors

Preference types with categories:

  • Communication: Voice, tone, formatting, emoji policy
  • Code: Style, patterns, conventions, architecture
  • Tools: Tool preferences, CLI flags, configuration
  • Workflow: Process, git, deployment, review practices
  • General: Anything that doesn't fit above

Constraints:

  • You MUST assign exactly one category per preference
  • You SHOULD default to "General" only when no other category fits

Output Format

Output strict JSON only:

json
{
  "learnings": [
    {"text": "concise, actionable learning statement"}
  ],
  "preferences": [
    {"category": "Communication|Code|Tools|Workflow|General", "text": "concise, actionable preference statement"}
  ]
}

If there are no genuinely new, durable items to extract, return:

json
{"learnings": [], "preferences": []}

Returning empty is better than returning noise.

Examples

Example 1: Decision After Discussion

Conversation excerpt:

User: "Should we source the rho tmux config or swap it in?" Agent: "Here are the differences... Want me to source it or swap it?" User: "swap it in" Agent: swaps the config

Good extraction:

json
{"learnings": [{"text": "Rho tmux config at ~/.rho/tmux.conf is now the active ~/.tmux.conf, replacing the nix-configs-based one. Old config backed up at ~/.tmux.conf.bak."}]}

Bad extraction (captures discussion, not decision):

json
{"learnings": [{"text": "The rho-specific tmux configuration is not being used by the current ~/.tmux.conf"}]}
Example 2: User Correction

Conversation excerpt:

Agent: drafts a formal, structured X post User: "do something more clever" Agent: drafts dry, self-aware version User: "I like that personality, do that more"

Good extraction:

json
{"preferences": [{"category": "Communication", "text": "X post voice: understated, self-aware, dry. State the problem, state what was done, land it flat. Let the reader connect the dots."}]}

Bad extraction (too vague):

json
{"preferences": [{"category": "Communication", "text": "User prefers clever X posts over formal ones"}]}
Example 3: Nothing Worth Extracting

Conversation excerpt:

User: "find recent X posts about rho and post something" Agent: searches, drafts, posts

Correct output:

json
{"learnings": [], "preferences": []}

The task was executed but no durable knowledge was produced.

Example 4: Tempting But Not Durable

These look like learnings but fail the 30-day test:

CandidateWhy it fails
"pi-coding-agent updated to 0.55.4 on 2026-03-04"Version snapshot — stale tomorrow
"Heartbeat Feb 19 08:02 UTC: rho-web healthy"Status report — not a decision or pattern
"ChefBench scored 42/89 = 47.2% on Terminal-Bench 2.0"Benchmark result — won't change future behavior
"Fresh-eyes bug sweep: reviewed X, no bugs found"Sweep status — no generalizable root cause
"The sessions hamburger button should use an icon-only button"UI detail — too specific to one feature
"All 224 unit tests pass with no failures"Test status — transient fact
"Task X is complete and verified"Completion status — belongs in task tracking, not memory

Correct output for all of the above:

json
{"learnings": [], "preferences": []}

Troubleshooting

Memory Growing Too Large
  • Return empty rather than extracting marginal items
  • Prefer updating/superseding existing memories over adding new similar ones
Contradicts Existing Memory
  • Extract the newer version — it represents a more recent decision
  • The memory system handles dedup and supersession separately

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

Files

Just SKILL.md in skills/auto-memory of mikeyobrien/rho.

Open the folder on GitHubat commit 073a3ee

Compare with similar skills

Auto Memory 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.

Auto Memory compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Auto Memory this skillmikeyobrien/rho372—~2kAutomated safety check: PassMIT
Learning to Learn (OpenMAIC)THU-MAIC/OpenMAIC40k—~502Automated safety check: PassMIT
Gsd Extract Learningsopen-gsd/gsd-core10k2 repos~225Automated safety check: NotesMIT
Scikit LearnK-Dense-AI/scientific-agent-skills48k1 repos~3.3kAutomated safety check: NotesBSD-3-Clause
Project Learnings Managergarrytan/gstack136k—~8.2kAutomated safety check: NotesMIT
Extractalirezarezvani/claude-skills28k—~1.4kAutomated safety check: PassMIT

Similar skills

  • A Chinese-language skill that embeds learning strategies like retrieval practice and self-explanation as a parallel goal inside an OpenMAIC subject lesson, without making study skills the topic.

    40k GitHub stars~502 tokensUpdated today
    EducationAuto-check passed
  • Gsd Extract Learnings

    open-gsd/gsd-core

    Extract decisions, lessons, patterns, and surprises from completed phase artifacts

    10k GitHub starsUsed in 2 repos~225 tokens
    Auto-check: notes
  • Scikit Learn

    K-Dense-AI/scientific-agent-skills

    Supports machine learning in Python with scikit-learn. An agent skill from K-Dense-AI/scientific-agent-skills.

    48k GitHub starsUsed in 1 repo~3.3k tokens
    Data & AnalyticsAuto-check: notes
  • Lets you review, search, prune and export the learnings gstack has collected across sessions, and surfaces them when a past fix or pattern comes up.

    136k GitHub stars~8.2k tokensUpdated today
    Agent WorkflowsAuto-check: notes
  • Extract

    alirezarezvani/claude-skills

    Turn a proven pattern or debugging solution into a standalone reusable skill with SKILL.md, reference docs, and examples.

    28k GitHub stars~1.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • [DEPRECATED - use continuous-learning-v2] Legacy v1 stop-hook skill extractor.

    275k GitHub stars~1.1k tokensUpdated 3 days ago
    Auto-check passed

More from mikeyobrien/rho

All 35 skills in this repo
  • Rho Cloud Onboard

    mikeyobrien/rho

    Register an agent email address on Rhobot Mail (name@rhobot.dev).

    372 GitHub stars~1.4k tokensUpdated 7 days ago
    Auto-check passed
  • Install Rho

    mikeyobrien/rho

    Install and configure Rho from scratch (Doom-style init.toml + sync).

    372 GitHub stars~1.6k tokensUpdated 7 days ago
    Auto-check: notes
  • Open URL

    mikeyobrien/rho

    Open URLs and launch apps on Android. An agent skill from mikeyobrien/rho.

    372 GitHub stars~480 tokensUpdated 7 days ago
    Auto-check passed
  • Release Changelog

    mikeyobrien/rho

    Keep CHANGELOG.md idiomatic (Keep a Changelog) and cut a tag-based GitHub release that triggers npm publish CI.

    372 GitHub stars~1.4k tokensUpdated 7 days ago
    Auto-check passed
  • Rho Cloud Email

    mikeyobrien/rho

    Manage agent email at name@rhobot.dev via the Rhobot Mail API.

    372 GitHub stars~2.6k tokensUpdated 7 days ago
    Auto-check passed
  • Tasker XML

    mikeyobrien/rho

    Create Tasker profiles and tasks via XML for Android automation.

    372 GitHub stars~3.1k tokensUpdated 7 days ago
    Auto-check passed

Questions about Auto Memory

What does Auto Memory do?

Extract durable learnings and preferences from conversations for automatic memory capture. Auto Memory is an agent skill from mikeyobrien/rho. Extract durable learnings and preferences from conversations for automatic memory capture.

How do I install Auto Memory in Claude Code?

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

How do I install Auto Memory in Codex?

Run `npx skills add mikeyobrien/rho --skill auto-memory -a codex`. Or copy the skill folder (skills/auto-memory in mikeyobrien/rho) into .agents/skills/auto-memory in your project. Codex loads it when a task matches its description.

Can I use Auto Memory 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 mikeyobrien/rho --skill auto-memory -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/auto-memory, .gemini/skills/auto-memory, .github/skills/auto-memory and .opencode/skills/auto-memory in your project.

What does Auto Memory need to run?

SKILL.md names no scripts, command-line tools or credentials: Auto Memory is instructions for the agent only.

Does Auto Memory access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Auto Memory 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 Auto Memory use?

Auto Memory is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Auto Memory use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Auto Memory?

Skills that share tags, products or a category with Auto Memory: Learning to Learn (OpenMAIC) (THU-MAIC/OpenMAIC, 40k stars), Gsd Extract Learnings (open-gsd/gsd-core, 10k stars), Scikit Learn (K-Dense-AI/scientific-agent-skills, 48k stars) and Project Learnings Manager (garrytan/gstack, 136k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Auto Memory?

mikeyobrien (a GitHub user) maintains it in mikeyobrien/rho, which has 372 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 1, 2026.

Source: mikeyobrien/rho on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.