Obsidian Canvas Boards
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
Automatic memory extraction and management for hypatia knowledge graph
$ npx skills add MarchLiu/hypatia --skill hypatia-memory -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install MarchLiu/hypatia hypatia-memory --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/MarchLiu/hypatia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/hypatia-memory .claude/skills/hypatia-memory && rm -rf skills-srcUse ~/.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/
Install the "hypatia-memory" agent skill from https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memory into .claude/skills/hypatia-memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hypatia-memory", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memoryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add MarchLiu/hypatia --skill hypatia-memory -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install MarchLiu/hypatia hypatia-memory --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MarchLiu/hypatia.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/hypatia-memory .agents/skills/hypatia-memory && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hypatia-memory" agent skill from https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memory into .agents/skills/hypatia-memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hypatia-memory", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MarchLiu/hypatia --skill hypatia-memory -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install MarchLiu/hypatia hypatia-memory --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MarchLiu/hypatia.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/hypatia-memory .cursor/skills/hypatia-memory && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hypatia-memory" agent skill from https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memory into .cursor/skills/hypatia-memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hypatia-memory", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/MarchLiu/hypatia.git --path skills/hypatia-memory--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add MarchLiu/hypatia --skill hypatia-memory -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install MarchLiu/hypatia hypatia-memory --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MarchLiu/hypatia.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/hypatia-memory .gemini/skills/hypatia-memory && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hypatia-memory" agent skill from https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memory into .gemini/skills/hypatia-memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hypatia-memory", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install MarchLiu/hypatia hypatia-memoryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add MarchLiu/hypatia --skill hypatia-memory -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/MarchLiu/hypatia.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/hypatia-memory .github/skills/hypatia-memory && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hypatia-memory" agent skill from https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memory into .github/skills/hypatia-memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hypatia-memory", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MarchLiu/hypatia --skill hypatia-memory -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install MarchLiu/hypatia hypatia-memory --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MarchLiu/hypatia.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/hypatia-memory .opencode/skills/hypatia-memory && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hypatia-memory" agent skill from https://github.com/MarchLiu/hypatia/tree/main/skills/hypatia-memory into .opencode/skills/hypatia-memory/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hypatia-memory", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hypatia-memoryAutomatic memory extraction and management for hypatia knowledge graph
Hypatia Memory is an agent skill from MarchLiu/hypatia. Automatic memory extraction and management for hypatia knowledge graph
Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Knowledge Management, covering Knowledge graphs. The repository describes itself as: "We can wander through the stacks of the Library of Alexandria, imagining the scrolls and the knowledge they contain. Its destruction is a warning: all we have is…. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d32f94e. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepGlobFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and toml).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hypatia Memory loads about 5.5k tokens when it runs. Until then it costs about 21 tokens; SKILL.md has 2,415 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Grep, GlobAutomated 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.
The full file from MarchLiu/hypatia at commit d32f94e, republished under its MIT licence (© MarchLiu). 2,415 words, ~5,533 tokens.
.claude/skills/hypatia-memory/SKILL.md (or your agent's skills folder).You are an automatic memory management system built on hypatia. Your job is to:
All layers run in the same hook invocations; conversation logging always runs first.
This skill is activated via hooks in ~/.claude/settings.json (or Cursor equivalent):
| Hook Event | When | Output Signal | AI Response |
|---|---|---|---|
UserPromptSubmit | Every user message | TRIGGER:log | Record user message + check summary cascade + optional semantic extract |
UserPromptSubmit | Every user message (if remember/forget) | TRIGGER:immediate | Explicit remember/forget (semantic layer) |
UserPromptSubmit | Every 5 turns | TRIGGER:extract | Scan for completed work units (semantic layer) |
Stop / assistant turn hook | Session end or each assistant reply | TRIGGER:log | Record assistant message + check summary cascade |
Stop | Session ending | TRIGGER:session-end | Record session summary if available + final semantic extract pass |
On every TRIGGER:log: always execute Conversation Logging Protocol first.
If the hook outputs nothing (no trigger), no action is needed.
The same protocol runs natively in Codex via ~/.codex/hooks.json (see
codex-integration/ in the Hypatia repo). The bundled scripts translate
Codex lifecycle events into the exact trigger signals above:
| Codex event | Hook script | What it does |
|---|---|---|
SessionStart | hypatia_session_start.sh | Loads project/global rules + taboos and injects them as additionalContext |
UserPromptSubmit | hypatia_user_prompt_submit.sh | Logs the user message, recalls relevant memories, emits TRIGGER:log + optional TRIGGER:immediate / TRIGGER:extract (every 5 turns) / TRIGGER:summary (≥16 unsummarized) |
Stop | hypatia_stop.sh | Logs the assistant message (side-effect only; Codex Stop hooks cannot inject context) |
Installation: ./codex-integration/install.sh, restart Codex, then review and
trust the hooks (CLI: /hooks; desktop app: Settings → Hooks).
OpenCode runs the same policy natively via the plugin in
opencode-integration/ of the Hypatia repo (installed at
~/.opencode/hypatia-memory-plugin/, registered in opencode.json).
It logs user messages in full, accumulates assistant text/tool parts
itself, applies the content policy above (intent shaping, tool-call
ledger, stack stripping, secret redaction, date absolutization) in the
hook process with zero model calls, and writes msg-<session>-<turn>
entries directly. When following this skill in an OpenCode session, do
not duplicate those writes — only perform the summary cascade and
semantic extraction on top of them.
The hook scripts are thin, deterministic shells: they write message entries
(msg-<session_id>-<turn_id>, tag message, kept out of the vector index) and
retrieval context, and emit trigger signals. The AI-heavy steps in this document (summary synthesis,
work-unit extraction) are still performed by the agent following this skill —
the hooks never make model calls.
When a new session begins, load relevant rules and taboos:
basename of the git root or CWD)# Load project-specific and global rules
hypatia query '["$knowledge", ["$contains", "tags", "rule"], ["$or", ["$contains", "scopes", "<PROJECT>"], ["$contains", "scopes", ""]]]'
# Load project-specific and global taboos
hypatia query '["$knowledge", ["$contains", "tags", "taboo"], ["$or", ["$contains", "scopes", "<PROJECT>"], ["$contains", "scopes", ""]]]'hypatia scope exists "<PROJECT>" || hypatia scope list --count exists exits 0 when the scope is in use and 1 when it is not. On 1, list
shows what is there: if the shelf already holds my-app and the working
directory is my_app, write my-app. A scope nobody else uses is a new
island — every later lookup by the spelling the rest of the shelf uses will
miss everything written under it. The same holds for tags: check
hypatia tag list before introducing a label outside the vocabulary below.
list prints the global scope as (global), which is a label and not the
value; use hypatia scope list --json when you are going to write a value
back verbatim.
This protocol runs on every user and assistant message (TRIGGER:log). It is independent of semantic work-unit extraction.
Resolve from hook context when available; otherwise derive:
| Field | Source |
|---|---|
<PROJECT> | basename of git root or CWD |
<SESSION_ID> | Hook session_id, Cursor conversation_id, or stable hash of transcript path |
<TURN> | Monotonic turn counter within session (increment per logged message) |
<ROLE> | user or assistant |
Every conversational turn becomes one knowledge entry.
hypatia knowledge-create "msg-<SESSION_ID>-<TURN>" \
-d "## Role
<ROLE>
## Timestamp
<ISO-8601>
## Content
<full message text>" \
--tags "message" \
--scopes "<PROJECT>" \
--no-embedRules:
One message → one knowledge entry. Never batch multiple turns.
Tag is message (no role tag; use content to determine role).
Name is auto-generated: msg-<SESSION_ID>-<TURN>.
Do not skip trivial messages (greetings, "ok", etc.) — the log layer is complete.
Never store secrets (passwords, API keys, tokens) — redact before writing.
--no-embed keeps the raw turn out of the vector index. The log layer is not on
the retrieval hot path — precise recall goes through the summaries and drills down —
so embedding it costs a forward pass on every turn and lets raw wording outrank the
knowledge distilled from it. The entry is still stored and still found by search
and query. A shelf can set the same rule once instead, in shelf.toml:
[embedding]
skip_tags = ["message", "session"]With that in place the flag is redundant for knowledge entries. A change to skip_tags
applies to entries written after it; run hypatia backfill once to settle the ones
already stored.
Shape what you save by what the user asked for, not by what the assistant produced:
| User intent (from the triggering question) | Save as |
|---|---|
| Data-analysis / report request (报告/分析/统计/summary…) | Report summary: heading structure + opening + conclusion paragraphs (≈500 chars each) — not the full report |
| Operation task (运行/修复/部署/安装/create/fix…, or tools were invoked) | Operation ledger: 用时 (wall time) / 手段 (tools used × count) / 结果 (final outcome statement, ≤600 chars) |
| Discussion (default) | Markdown context: the full reply body |
For tool calls, bash, MCP and other external invocations, record what was called, how long, and whether it succeeded — never raw outputs:
## Tool Calls
1. `bash` — ❌ 2.0s — Error: Cannot find module '/srv/app/config'
- 调用: `{"command":"node deploy.js"}`
2. `mcp:fs.read` ×2 (总用时 100ms) — 2✅at ... frames, Traceback (most recent call last):, stack backtrace:, note: lines); keep the final exception line.module!symbol frames) reduce to a one-line brief such as 原生崩溃: 内存访问违例 (access violation)(无有效错误消息,地址与堆栈细节已省略).sk-…, Bearer …, apiKey=…, password=/token=/secret=…, AWS AKIA…, GitHub ghp_…, GitLab glpat-…, Slack xox…, PEM private-key blocks.今天/昨天/明天/上周/本周/下周/刚才/现在/N 天(小时/分钟)前/today/yesterday/N days ago against the actual write time (e.g. 昨天 → 2026-09-07).If the hook or environment provides a session-level summary (e.g. compaction summary, session title, or end-of-session digest):
hypatia knowledge-create "session-<SESSION_ID>" \
-d "<session summary text>" \
--tags "session" \
--scopes "<PROJECT>" \
--no-embedsession-<SESSION_ID> the first time a summary arrives; knowledge-create fails on an existing name. When newer summary text arrives, replace it with hypatia knowledge-update "session-<SESSION_ID>" -d "<session summary text>". Its tags, scopes and created_at are kept, and the belongTo links are untouched.When both msg-<SESSION_ID>-<TURN> and session-<SESSION_ID> exist:
hypatia statement-create "msg-<SESSION_ID>-<TURN>" "belongTo" "session-<SESSION_ID>" \
--scopes "<PROJECT>" \
--no-embedPredicate is exactly belongTo (message → session).
--no-embed is needed here even on a shelf that sets embedding.skip_tags: statements
carry no tags, so skip_tags cannot reach them and this per-turn link would otherwise be
the one embedding the log layer still pays on every turn. The link is for graph traversal,
not semantic search — nothing looks for "belongTo" by meaning. Unlike a knowledge entry,
a statement has no update command, so this choice is made once at creation.
After writing each new message, run the cascade from level 1 upward.
Constants: BATCH_SIZE = 16 (for L2+)
Predicate: All summary triples use predicate summary.
| Triple | Meaning |
|---|---|
<summary-name> summary <item-name> | Summary condenses the item |
| Level | Tag | Triggers when | Summarizes |
|---|---|---|---|
| 1 | ["summary", "summary 1"] | Token count ≥ max_tokens × 0.9 | message entries |
| 2 | ["summary", "summary 2"] | Count ≥ 16 unlinked L1 | summary 1 entries |
| N | ["summary", "summary N"] | Count ≥ 16 unlinked L(N-1) | summary (N-1) entries |
Token-based L1 threshold:
max_tokens depends on the model in use (e.g. GLM-5.1: 200k, DeepSeek V4 Pro: 1M).Context compression trigger:
settings.max_token × 0.9, also trigger summary generation and start a new session. This is independent of the L1 count/trigger — it's an emergency compression.Use $not-summaried (native JSE operator with LEFT JOIN):
hypatia query '["$not-summaried", "<TAG>", ["$contains", "scopes", "<PROJECT>"]]'Or use the shorthand:
hypatia session-current --scope <PROJECT>| Level | <TAG> |
|---|---|
| 1 | message |
| 2 | summary 1 |
| N | summary (N-1) |
Results are sorted oldest first (ASC). For L1: count tokens (estimate chars/4). For L2+: take first 16 if count ≥ 16.
When a batch is ready at level L:
hypatia knowledge-create "<extracted-summary-name>" \
-d "<synthesized summary markdown>" \
--tags "summary,summary <L>" \
--scopes "<PROJECT>"summary,summary <L> where L is the level number.hypatia statement-create "<summary-name>" "summary" "<item-name>" \
--scopes "<PROJECT>" \
--no-embedRun one statement-create per item in the batch.
After creating a level-L summary, re-run step 4a for level L+1 (the new summary may complete another batch at the next tier).
Stop when a level has fewer than the required threshold — do not partially summarize.
When submitting a conversation to the AI API, construct the messages list as:
[system_prompt, uncompressed_messages..., reference_info, latest_user_input]System prompt: Constructed using the existing logic (rules, taboos, project context).
Uncompressed messages: The current set of messages that have not been summarized. Query with:
hypatia query '["$not-summaried", "message", ["$contains", "scopes", "<PROJECT>"]]'Reference info: Analyze the user's latest input — do NOT use it verbatim as a search query. Instead:
["$not-summaried", "message", ["$contains", "scopes", "<PROJECT>"]] + filter in reasoning["$knowledge", ["$search", "<derived keywords>"]]["$knowledge", ["$similar", "<conceptual query>"]]message, summary, session) crowding it out: hypatia similar "<conceptual query>" -t knowledge --exclude-tags message,summary,session --limit 5["$statement", ["$triple", "<entity>", "$*", "$*"]]## Reference Information
The following relevant context was retrieved from the knowledge base:
1. <entry-name>: <summary or key content>
2. <entry-name>: <summary or key content>
...Latest user input: Always the most recent user message, placed last.
After receiving the response: Save the assistant's response as a new message in the conversation history.
This layer extracts insights (rules, taboos, work units). It does not replace conversation logging.
When receiving TRIGGER:extract:
[hypatia-memory] Work unit still in progress, nothing extracted. and stop (logging still completed in Step 1)For TRIGGER:session-end:
When a completed work unit is detected:
Skip short or insubstantial segments (greetings, single-line acknowledgments like "thanks" or "ok").
| Pattern | Signature | Extraction Strategy |
|---|---|---|
| One-shot correct | Question → correct answer, no back-and-forth | Extract Q+A directly |
| Correction chain | Question → answer → user correction → fix → ... | Synthesize: initial Q + each correction + final answer |
| Exploration | Open-ended discussion without single "correct" answer | Extract key findings, decisions, rationale |
| Bug fix | Bug report → investigation → root cause → fix | Extract: symptoms, root cause, fix approach |
| Design decision | Tradeoff discussion → decision → rationale | Extract: options considered, decision, why |
| Trivial | Greeting, chitchat, simple factual lookup | Skip — not worth remembering |
For one-shot correct:
Title: <topic-slug>
Content:
## Context
<1 line summary>
## Solution
<the answer or approach>
## Key Detail
<non-obvious detail>For correction chains:
Title: <topic-slug>
Content:
## Context
## Initial Attempt
## Why It Was Wrong
## Correct Approach
## LessonSynthesis rules:
Arc<Mutex<T>>" is good. "Use proper synchronization" is useless.What to include: technical decisions, non-obvious solutions, error patterns, design patterns, user preferences, project conventions.
What to discard: full debug logs, temporary paths, verbose tool outputs, repetitive retries, "thank you"/"ok" exchanges.
hypatia knowledge-create "wu-<date>-<slug>" \
-d "<synthesized content>" \
--tags "memory,work-unit,<topic-tags>" \
--scopes "<PROJECT>"
hypatia statement-create "wu-<date>-<slug>" "is_a" "work-unit" \
--scopes "<PROJECT>"Optionally link to conversation graph:
hypatia statement-create "wu-<date>-<slug>" "derivedFrom" "msg-<SESSION_ID>-<TURN>"Before storing, check for similar knowledge:
hypatia search "<keywords>" --limit 5 -c knowledgesupersedes statementextends statementWhen the user explicitly asks to remember or forget:
rule, taboo, or general memory"<PROJECT>" for this project only, or "<PROJECT>," with a trailing comma to also make it global. If hypatia scope exists "<PROJECT>" exits 1, run hypatia scope list and reuse the spelling already there rather than adding a second onehypatia knowledge-create "<name>" \
-d "<content>" \
--tags "memory,<type>" \
--scopes "<SCOPES>"is_a statement and relationship statementshypatia search "<topic>" --limit 10message / summary entries if full erasure)For conversation logging:
[hypatia-memory] Logged msg-abc-042. Cascade: +1 summary 1 (token threshold).For work unit extraction:
[hypatia-memory] Extracted 2 work units (1 one-shot, 1 correction-chain), skipped 1 trivial.
wu-2026-05-10-sort-function → memory,work-unit,rustFor immediate operations:
[hypatia-memory] Stored: "rule:prefer-immutable-patterns" (rule, scoped to my-project).For forget operations:
[hypatia-memory] Removed 1 entry and 2 relationships.When nothing to extract (semantic only):
[hypatia-memory] Work unit still in progress, nothing extracted.message, session, summary <N>, memory, work-unit, rule, taboo--scopes "<PROJECT>"; global rules add a trailing comma ("<PROJECT>,", or "," for global only), because --scopes "" stores no scope. Read the shelf's vocabulary with hypatia scope list / hypatia tag list before introducing a value: a new spelling is stored without complaint and is then invisible to every lookup that uses the old onesession-<SESSION_ID> (tags: session)
↑ belongTo
msg-<SESSION_ID>-<TURN> (tags: message)
<summary-name> (tags: summary, summary 1)
↓ summary (×batch)
msg-...
<summary-name> (tags: summary, summary 2)
↓ summary (×16)
<summary-name>... (tags: summary, summary 1)
wu-<date>-<slug> (tags: memory, work-unit) ← semantic layer, optional derivedFrom → msg-*© MarchLiu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/hypatia-memory of MarchLiu/hypatia.
Open the folder on GitHubat commit d32f94e
Hypatia 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hypatia Memory this skillMarchLiu/hypatia | 239 | — | ~5.5k | Automated safety check: Notes | MIT | |
| Obsidian Canvas BoardsAgriciDaniel/claude-obsidian | 15k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Ontology1mancompany/OneManCompany | 441 | 2 repos | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Knowledge Graphgnomeria/usbtree | 691 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Graphagenticnotetaking/arscontexta | 3.5k | — | ~4.9k | Automated safety check: Notes | MIT | |
| LLM Wiki Knowledge GraphEgonex-AI/Understand-Anything | 86k | — | ~1.5k | Automated safety check: Pass | MIT |
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
1mancompany/OneManCompany
Typed knowledge graph for structured agent memory and composable skills.
gnomeria/usbtree
Set up and maintain a lightweight, file-based knowledge graph of the repo — entities, typed relations, decisions, gotchas — so agents load context fast instead of re-exploring the codebase every…
agenticnotetaking/arscontexta
Interactive knowledge graph analysis. An agent skill from agenticnotetaking/arscontexta.
Egonex-AI/Understand-Anything
Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.
aws-samples/sample-kolya-br-proxy
A skill your agent uses when the user asks about GitNexus itself — available tools, how to query the knowledge graph, MCP resources, graph schema, or workflow reference.
MarchLiu/hypatia
Run an incremental Hypatia graph-consolidation pass at a work-period boundary, like sleep-time knowledge organization.
MarchLiu/hypatia
Interact with the Hypatia AI memory system using natural language.
Categories
Automatic memory extraction and management for hypatia knowledge graph. Hypatia Memory is an agent skill from MarchLiu/hypatia.
Hypatia Memory fits situations like: tasks that involve Knowledge graphs.
Run `npx skills add MarchLiu/hypatia --skill hypatia-memory -a claude-code`. Or copy the skill folder (skills/hypatia-memory in MarchLiu/hypatia) into .claude/skills/hypatia-memory in your project. Claude Code loads it when a task matches its description.
Run `npx skills add MarchLiu/hypatia --skill hypatia-memory -a codex`. Or copy the skill folder (skills/hypatia-memory in MarchLiu/hypatia) into .agents/skills/hypatia-memory in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MarchLiu/hypatia --skill hypatia-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/hypatia-memory, .gemini/skills/hypatia-memory, .github/skills/hypatia-memory and .opencode/skills/hypatia-memory in your project.
SKILL.md names no scripts, command-line tools or credentials: Hypatia Memory is instructions for the agent only. Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob.
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.
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.
Hypatia Memory is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Hypatia Memory: Obsidian Canvas Boards (AgriciDaniel/claude-obsidian, 15k stars), Ontology (1mancompany/OneManCompany, 441 stars), Knowledge Graph (gnomeria/usbtree, 691 stars) and Graph (agenticnotetaking/arscontexta, 3.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
MarchLiu (a GitHub user) maintains it in MarchLiu/hypatia, which has 239 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 29, 2026.
Source: MarchLiu/hypatia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.