
Memory Extractor
- 53 installs
- 231 repo stars
- Updated July 10, 2026
- learnprompt/cc-harness-skills
Helps with ai & agent building tasks.
About
memory-extractor is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- memory-extractor
- AI & Agent Building
- AI-coding skill
Memory Extractor by the numbers
- 53 all-time installs (skills.sh)
- +2 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #6,979 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/learnprompt/cc-harness-skills --skill memory-extractorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 53 |
|---|---|
| repo stars | ★ 231 |
| Last updated | July 10, 2026 |
| Repository | learnprompt/cc-harness-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
Memory Extractor
Use this skill when you want to persist durable collaboration context from the latest conversation turns.
Use It For
- capturing user preferences
- saving feedback about how to work
- recording non-code project constraints or deadlines
- storing pointers to external systems
Avoid It For
- storing code structure or file locations
- saving short-lived task state that belongs in a plan
- duplicating an existing memory topic without checking first
Quick Start
Build a manifest of existing memories:
python3 {baseDir}/scripts/memory_manifest.py --memory-root /path/to/memoryThen use the portable prompt in references/prompt-template.md.
Four Types
userfeedbackprojectreference
Rules
- save only durable signals
- avoid code-state facts that can drift
- prefer updating an existing topic file
- organize by topic, not chronology
Supporting Files
- Prompt template: references/prompt-template.md
- Source notes: references/source-notes.md
- Helper script:
python3 {baseDir}/scripts/memory_manifest.py ...
CC Memory Extractor
memory-extractor is a portable skill for extracting durable collaboration memory from recent turns.
It stores four stable classes of memory: user, feedback, project, and reference. The key design rule is simple: remember durable preferences and constraints, but do not store drifting code facts that should be re-read from source.
Best For
- capturing user preferences
- saving working-style feedback
- recording non-code project constraints
- storing stable external references
Included Files
SKILL.mdreferences/prompt-template.mdreferences/source-notes.mdscripts/memory_manifest.py
Quick Start
python3 ./scripts/memory_manifest.py --memory-root /path/to/memoryThen use the extraction flow in SKILL.md.
Host Fit
- Claude Code: strong fit
- Codex: strong fit
- OpenClaw: strong fit
Portable Prompt Template
You are a memory-extraction subagent.
Goal:
- inspect only the recent conversation turns
- decide what should become durable memory
- classify each saved memory as user, feedback, project, or reference
Inputs:
- recent conversation slice: <recent_messages>
- existing memory manifest: <memory_manifest>
Rules:
- save only durable information
- do not save code-state facts that should be re-read from source
- update an existing topic file before creating a new one
- organize memory by topic rather than chronology
Type guidance:
- user: role, preferences, collaboration style, knowledge
- feedback: corrections or validated working preferences
- project: deadlines, motivations, constraints, coordination facts not derivable from code
- reference: where to look in external systems
Return:
1. candidate memories
2. chosen type for each saved item
3. updates made
4. skipped items and whySource Notes
This skill was derived from these Claude Code areas:
src/services/extractMemories/extractMemories.tssrc/services/extractMemories/prompts.tssrc/memdir/memoryTypes.ts
Portable extraction decisions:
- keep the four-type taxonomy
- keep the "do not remember code-state facts" rule
- replace host-specific hook timing with a manual or scheduler-invoked workflow
#!/usr/bin/env python3
"""Scan a memory directory and print a lightweight manifest for prompt context."""
from __future__ import annotations
import argparse
import json
import re
from pathlib import Path
from typing import Any
FRONTMATTER_RE = re.compile(r"\A---\n(.*?)\n---\n", re.DOTALL)
def parse_frontmatter(text: str) -> dict[str, str]:
match = FRONTMATTER_RE.match(text)
if not match:
return {}
data: dict[str, str] = {}
for line in match.group(1).splitlines():
if ":" not in line:
continue
key, value = line.split(":", 1)
data[key.strip()] = value.strip().strip('"')
return data
def build_manifest(memory_root: Path) -> list[dict[str, Any]]:
items: list[dict[str, Any]] = []
for path in sorted(memory_root.glob("*.md")):
if path.name == "MEMORY.md":
continue
text = path.read_text(encoding="utf-8")
frontmatter = parse_frontmatter(text)
items.append(
{
"file": path.name,
"type": frontmatter.get("type"),
"title": frontmatter.get("title"),
"description": frontmatter.get("description"),
}
)
return items
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--memory-root", required=True)
parser.add_argument("--json", action="store_true")
args = parser.parse_args()
manifest = build_manifest(Path(args.memory_root).expanduser())
if args.json:
print(json.dumps(manifest, indent=2, ensure_ascii=False))
return 0
for item in manifest:
print(
f"- {item['file']}"
f" | type={item['type'] or 'unknown'}"
f" | title={item['title'] or '-'}"
f" | description={item['description'] or '-'}"
)
return 0
if __name__ == "__main__":
raise SystemExit(main())