Agent skill

Memory Keeper

by hdl-tools in hdl-tools/digital-chip-design-agents

Distil accumulated experience records (experiences.jsonl) into updated domain knowledge summaries (knowledge.md) for any chip-design domain.

MITAuto-check: notes

Install Memory Keeper

skills CLI
$ npx skills add hdl-tools/digital-chip-design-agents --skill memory-keeper -a claude-code

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

GitHub CLI
$ gh skill install hdl-tools/digital-chip-design-agents memory-keeper --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/hdl-tools/digital-chip-design-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/infrastructure/skills/memory-keeper .claude/skills/memory-keeper && 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
memory-keeper
GitHub stars
211
Token cost
~2.5k tokens
SKILL.md length
976 words
Files
3
Skills in repo
17
Repo updated
First seen
Licence
MIT

At a glance

Distil accumulated experience records (experiences.jsonl) into updated domain knowledge summaries (knowledge.md) for any chip-design domain.

  • Works in 4 steps: an explicit --memory-root PATH argument → the $CHIP_DESIGN_MEMORY_ROOT environment… → the central default… → …
  • SKILL.md covers Invocation, Memory Root Resolution, Purpose and Domains, plus 5 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Memory Keeper is an agent skill from hdl-tools/digital-chip-design-agents. Distil accumulated experience records (experiences.jsonl) into updated domain knowledge summaries (knowledge.md) for any chip-design domain. Run after every 10 orchestrator sessions, or on demand when a domain has collected new issue/fix patterns.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `distill.py` and `memory_root.py`).

The repository describes itself as: Digital HDL Design Full-stack Agents. The licence is MIT.

Example prompts

  • “/memory-keeper”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Read, Write, Bash

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. an explicit --memory-root PATH argument
  2. the $CHIP_DESIGN_MEMORY_ROOT environment variable
  3. the central default ${XDG_DATA_HOME:-$HOME/.local/share}/chip-design-agents/digital/memory
  4. the in-repo memory/ tree as a seed fallback (used only if the central root is unwritable)

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    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

Memory Keeper loads about 2.5k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 976 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash

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 hdl-tools/digital-chip-design-agents at commit 38736b1, republished under its MIT licence (© hdl-tools). 976 words, ~2,514 tokens.

Download SKILL.mdSave it as .claude/skills/memory-keeper/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
memory-keeper
description
Distil accumulated experience records (experiences.jsonl) into updated domain knowledge summaries (knowledge.md) for any chip-design domain. Run after every 10 orchestrator sessions, or on demand when a domain has collected new issue/fix patterns.
allowed-tools
Read, Write, Bash
version
1.0.0
author
chuanseng-ng
license
MIT

Skill: Memory Keeper

Invocation

text
/chip-design-infrastructure:memory-keeper [--domain <name>] [--all] [--min-records <n>] [--init]
  • --domain <name> — distil a single domain (e.g. synthesis, sta, pd)
  • --all — distil every domain that has an experiences.jsonl with enough records
  • --min-records <n> — minimum record count to proceed (default: 5); skip domains below threshold
  • --init — resolve and seed the central memory root, migrating any repo-local runtime data (runs memory_root.py --init); no distillation. Use once after install or to inspect the location.

If neither --domain nor --all nor --init is given, prompt the user to choose.


Memory Root Resolution

Memory does not live at a fixed relative memory/ path. The active root is resolved by memory_root.py (the single source of truth that distill.py and tools/qor_trends.py import), in this priority order:

  1. an explicit --memory-root PATH argument
  2. the $CHIP_DESIGN_MEMORY_ROOT environment variable
  3. the central default ${XDG_DATA_HOME:-$HOME/.local/share}/chip-design-agents/digital/memory (Windows: %LOCALAPPDATA%\chip-design-agents\digital\memory)
  4. the in-repo memory/ tree as a seed fallback (used only if the central root is unwritable)

The in-repo memory/ tree is the version-controlled seed: on first resolution each <domain>/knowledge.md is copied into the central root if absent (never overwriting accumulated data; runtime experiences.jsonl/run_state.md are never seeded). Orchestrators resolve this same root at session start and use it as <MEM> for every read/write. To print the resolved path:

bash
python3 plugins/infrastructure/skills/memory-keeper/memory_root.py        # prints the root
python3 plugins/infrastructure/skills/memory-keeper/memory_root.py --init  # seed + migrate + report

Per-project scoping (opt-out of the central store): export CHIP_DESIGN_MEMORY_ROOT="$PWD/memory" (or pass --memory-root ./memory to the scripts).


Purpose

Orchestrators write one JSON record to memory/<domain>/experiences.jsonl after every run. Over time those records accumulate issue descriptions, applied fixes, metric ranges, and tool-flag observations. This skill reads that evidence and merges the new learnings into memory/<domain>/knowledge.md — the Tier-2 summary that every orchestrator reads at session start. Without periodic distillation, knowledge.md drifts stale while the evidence log grows.


Domains

Valid domain names match the subdirectories under memory/:

DomainJSONL path
architecturememory/architecture/experiences.jsonl
compilermemory/compiler/experiences.jsonl
dftmemory/dft/experiences.jsonl
firmwarememory/firmware/experiences.jsonl
formalmemory/formal/experiences.jsonl
fpgamemory/fpga/experiences.jsonl
hlsmemory/hls/experiences.jsonl
infrastructurememory/infrastructure/experiences.jsonl (opt-in; env-keyed)
memory-ipmemory/memory-ip/experiences.jsonl
pdmemory/pd/experiences.jsonl
rtl-designmemory/rtl-design/experiences.jsonl
socmemory/soc/experiences.jsonl
stamemory/sta/experiences.jsonl
synthesismemory/synthesis/experiences.jsonl
verificationmemory/verification/experiences.jsonl

Stage: load_experiences

Domain Rules
  1. Read memory/<domain>/experiences.jsonl (one JSON object per line).
  2. Count valid records. If count < --min-records (default 5), print a skip notice and stop — not enough signal to distil.
  3. If the file does not exist or is empty, skip with the same notice.
  4. Parse every record into an in-memory list. Ignore malformed lines (log a warning).
  5. Group records along three axes for the analysis stage:
    • Issues + fixes: collect all issues_encountered and fixes_applied strings
    • Tool flags: scan notes and fixes_applied for explicit flag/command patterns (lines containing -, --, or backtick-quoted commands)
    • Metric ranges: for each numeric field in key_metrics, collect the list of values across all records; compute min, max, median, and the most recent value
QoR Metrics to Evaluate
  • records_read: total valid JSONL records parsed (target ≥ min-records threshold)
  • records_skipped: malformed lines ignored (target: 0)
  • signoff_rate: fraction of records where signoff_achieved: true (informational)
Output

Structured summary object (in-memory) passed to distil_knowledge:

json
{
  "domain": "<domain>",
  "record_count": "<n>",
  "date_range": ["<oldest ISO-8601>", "<newest ISO-8601>"],
  "signoff_rate": "<fraction>",
  "issue_fix_pairs": [{"issue": "...", "fix": "...", "count": "<n>"}],
  "tool_flag_candidates": ["<flag or command fragment>"],
  "metric_ranges": {
    "<metric_field>": {"min": "x", "max": "y", "median": "z", "latest": "w"}
  },
  "free_notes": ["<note string>"]
}

Stage: distil_knowledge

Domain Rules
  1. Read the existing memory/<domain>/knowledge.md in full.
  2. Using the structured summary from load_experiences, identify new evidence that is not already captured in the current knowledge.md:
    • New issue/fix pairs not yet present under Known Failure Patterns
    • New successful flags not yet under Successful Tool Flags
    • PDK or tool quirks mentioned in notes not yet under PDK / Tool Quirks
  3. For each new finding, draft a concise bullet following the style of existing entries:
    • Lead with the symptom or scenario in bold
    • Follow with the cause and the fix in plain prose
    • Keep each entry to 2–4 sentences maximum
  4. Merge new entries below existing entries in the relevant section — never delete or overwrite an existing entry unless it directly contradicts new evidence (note the contradiction explicitly).
  5. If the signoff rate across records is < 50%, add a note in the Notes section flagging common failure modes that did not reach signoff.
  6. Update the ## Notes section with a distillation timestamp: _Last distilled: <ISO-8601 date> from <n> experience records._ Replace any previous such line.
  7. Write the updated content back to memory/<domain>/knowledge.md.
Show full SKILL.md (354 more words)Show less
Merge Policy
ScenarioAction
New issue/fix not in knowledge.mdAdd under Known Failure Patterns
Existing entry confirmed by ≥ 3 recordsAdd (confirmed across N runs) annotation
Existing entry contradicted by ≥ 3 recordsStrike through old text, add corrected entry
New tool flag observed in ≥ 2 recordsAdd under Successful Tool Flags
Single-record observationAdd only if signoff_achieved: true and notes are detailed
QoR Metrics to Evaluate
  • new_failure_patterns: new entries added under Known Failure Patterns (target ≥ 1 if new issues exist)
  • new_tool_flags: new entries added under Successful Tool Flags (target ≥ 1 if new flags observed)
  • existing_entries_annotated: count of existing entries updated with confirmation or correction notes
  • contradictions_flagged: entries where new evidence contradicts old — must never be silently overwritten
Output Required
  • Updated memory/<domain>/knowledge.md
  • Console summary: how many new entries were added per section, and how many existing entries were annotated or corrected
Optional: claude-mem index

After writing knowledge.md, if mcp__plugin_ecc_memory__add_observations is available in this session, emit each new issue/fix pair as an observation to entity chip-design-<domain>-fixes. Skip this step silently if the tool is absent — knowledge.md and experiences.jsonl are the canonical records. Do not hard-depend on claude-mem availability.


Stage: report

Domain Rules
  1. Print a per-domain distillation report:
    text
    Domain:        <domain>
    Records read:  <n>
    Date range:    <oldest> → <newest>
    Signoff rate:  <pct>%
    New entries:   +<k> Known Failure Patterns, +<j> Successful Tool Flags, +<i> PDK Quirks
    Annotations:   <m> existing entries updated
    knowledge.md:  memory/<domain>/knowledge.md  [updated]
  2. If --all was used, print a summary table across all processed domains.
  3. If any domain was skipped (too few records), list them with their current record count.
QoR Metrics to Evaluate
  • domains_processed: count of domains where knowledge.md was updated (target ≥ 1)
  • domains_skipped: count of domains below the min-records threshold (informational)
Output Required
  • Printed per-domain distillation report
  • If --all: printed summary table across all processed and skipped domains

Sign-off Checklist

  • experiences.jsonl read; record count ≥ min-records threshold
  • Structured summary produced (issue/fix pairs, metric ranges, tool flags)
  • Existing knowledge.md read without modification during analysis
  • New entries drafted in the style of existing entries
  • Contradicted entries flagged, not silently overwritten
  • Distillation timestamp updated in Notes section
  • knowledge.md written back to disk
  • Console report printed

Example Invocations

bash
# Distil synthesis domain (must have ≥ 5 records)
/chip-design-infrastructure:memory-keeper --domain synthesis

# Distil all domains with ≥ 10 records
/chip-design-infrastructure:memory-keeper --all --min-records 10

# Force distillation even with 3 records (debugging or early feedback)
/chip-design-infrastructure:memory-keeper --domain sta --min-records 3

© hdl-tools, 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 2 other files in plugins/infrastructure/skills/memory-keeper of hdl-tools/digital-chip-design-agents.

  • SKILL.md
  • distill.py
  • memory_root.py

Open the folder on GitHubat commit 38736b1

Compare with similar skills

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

Memory Keeper compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Memory Keeper this skillhdl-tools/digital-chip-design-agents211—~2.5kAutomated safety check: NotesMIT
Recordingcodewhale-hq/Codewhale41k—~540Automated safety check: PassMIT
ExperimentsArize-ai/phoenix12k—~1.8kAutomated safety check: PassCustom licence
UI Updatesickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT
Architecture Decision Recordsaffaan-m/ECC274k4 repos~1.8kAutomated safety check: PassMIT
Architecture Decision Recordsaffaan-m/ECC274k1 repos~863Automated safety check: PassMIT

Similar skills

  • Recording

    codewhale-hq/Codewhale

    Capture screenshots on registered computers, record on macOS or HarmonyOS, and manage saved captures.

    41k GitHub stars~540 tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Experiments

    Arize-ai/phoenix

    Run, read, and compare dataset-backed experiments to find evidence that a prompt or pipeline is improving.

    12k GitHub stars~1.8k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • UI Update

    sickn33/agentic-awesome-skills

    Update StyleSeed engine in your project — analyzes what's outdated and updates safely

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed
  • Capture architectural decisions as numbered ADR markdown files in docs/adr/ with context, alternatives considered, consequences, and an index README.

    274k GitHub starsUsed in 4 repos~1.8k tokens
    DevelopmentAuto-check passed
  • 在Claude Code会话期间,将做出的架构决策捕获为结构化的架构决策记录(ADR)。自动检测决策时刻,记录上下文、考虑的替代方案和理由。维护一个ADR日志,以便未来的开发人员理解代码库为何以当前方式构建。

    274k GitHub starsUsed in 1 repo~863 tokens
    DevelopmentAuto-check passed
  • コーディングセッション中にアーキテクチャ決定を構造化ADRとして記録し、自動的に決定の瞬間を検出し、コンテキスト、検討された代替案、根拠を記録します。今後の開発者がコードベースの形成理由を理解するためのADRログを維持します。

    274k GitHub stars~1.1k tokensUpdated 2 days ago
    DevelopmentAuto-check passed

More from hdl-tools/digital-chip-design-agents

All 17 skills in this repo
  • Architecture

    hdl-tools/digital-chip-design-agents

    Microarchitecture exploration, PPA estimation, risk assessment, and architecture sign-off for digital chip design.

    211 GitHub stars~3.7k tokensUpdated 4 days ago
    Auto-check: notes
  • Compiler Toolchain

    hdl-tools/digital-chip-design-agents

    Compiler toolchain development for custom processor ISAs — LLVM/GCC backend, assembler, linker scripts, runtime libraries, and regression validation.

    211 GitHub stars~2.8k tokensUpdated 4 days ago
    Auto-check: notes
  • Dft

    hdl-tools/digital-chip-design-agents

    Design for Test — scan architecture planning, scan insertion, ATPG pattern generation, MBIST for embedded memories, and JTAG boundary scan.

    211 GitHub stars~3.3k tokensUpdated 4 days ago
    Auto-check: notes
  • Embedded Firmware

    hdl-tools/digital-chip-design-agents

    Embedded firmware and device drivers — BSP development, peripheral driver implementation (UART, SPI, I2C, GPIO, DMA, Timer), RTOS integration (FreeRTOS, Zephyr), and system validation.

    211 GitHub stars~2.6k tokensUpdated 4 days ago
    Auto-check: notes
  • Formal Verification

    hdl-tools/digital-chip-design-agents

    Formal property verification (FPV) and logical equivalence checking (LEC).

    211 GitHub stars~3.4k tokensUpdated 4 days ago
    Auto-check: notes
  • Fpga Emulation

    hdl-tools/digital-chip-design-agents

    FPGA prototyping — ASIC-to-FPGA RTL adaptation, multi-FPGA partitioning, synthesis and timing closure on FPGA, hardware bring-up, and software validation on the prototype.

    211 GitHub stars~3.4k tokensUpdated 4 days ago
    Auto-check: notes

Questions about Memory Keeper

What does Memory Keeper do?

Distil accumulated experience records (experiences.jsonl) into updated domain knowledge summaries (knowledge.md) for any chip-design domain. Memory Keeper is an agent skill from hdl-tools/digital-chip-design-agents.md) for any chip-design domain.

How do I install Memory Keeper in Claude Code?

Run `npx skills add hdl-tools/digital-chip-design-agents --skill memory-keeper -a claude-code`. Or copy the skill folder (plugins/infrastructure/skills/memory-keeper in hdl-tools/digital-chip-design-agents) into .claude/skills/memory-keeper in your project. Claude Code loads it when a task matches its description.

How do I install Memory Keeper in Codex?

Run `npx skills add hdl-tools/digital-chip-design-agents --skill memory-keeper -a codex`. Or copy the skill folder (plugins/infrastructure/skills/memory-keeper in hdl-tools/digital-chip-design-agents) into .agents/skills/memory-keeper in your project. Codex loads it when a task matches its description.

Can I use Memory Keeper 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 hdl-tools/digital-chip-design-agents --skill memory-keeper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/memory-keeper, .gemini/skills/memory-keeper, .github/skills/memory-keeper and .opencode/skills/memory-keeper in your project.

What does Memory Keeper need to run?

Going by SKILL.md and its folder, Memory Keeper needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Bash.

Does Memory Keeper 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 Memory Keeper safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Memory Keeper use?

Memory Keeper 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 Memory Keeper use?

About 2.5k tokens (SKILL.md is roughly 10k 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 Memory Keeper?

Skills that share tags, products or a category with Memory Keeper: Recording (codewhale-hq/Codewhale, 41k stars), Experiments (Arize-ai/phoenix, 12k stars), UI Update (sickn33/agentic-awesome-skills, 47k stars) and Architecture Decision Records (affaan-m/ECC, 274k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Memory Keeper?

hdl-tools (a GitHub organization) maintains it in hdl-tools/digital-chip-design-agents, which has 211 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 3, 2026.

Source: hdl-tools/digital-chip-design-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.