memory
Skill1 starsChanged 2 months agoApache-2.0View on GitHub
Read and write Helix Memory — the shared store of distilled knowledge that sits under every session, scoped to a project, a team or the whole organisation. Use when the user says "/helix-memory", "remember this", "what do we know about X", "why did the agent think that", when a decision or lesson is worth keeping beyond this session, or when a recalled memory turns out to be wrong and needs finding and fixing. Memory is advice, never enforcement — it shapes what an agent does and blocks nothing.
99 other projects use a version of this.
Adopted by
Most recently taken up by
- jaydubya818/ClaudeClaw-Mission-Controltheir own version, first seen Nov 8, 2026
- naman10parikh/pennytheir own version, first seen Nov 8, 2026
- NaturNestAI-Labs/beings-protocoltheir own version, first seen Nov 8, 2026
- maxtechera/memorytheir own version, first seen Nov 8, 2026
- wubinKKK/private-ai-workbenchtheir own version, first seen Nov 8, 2026
- shetengteng/skillix-hubtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use ecosystem-reference, fractal-delegation and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
naman10parikhSkillecosystem-reference
Quick-access directory of Claude Code ecosystem repos, skills, plugins, MCPs, and patterns. Use when improving the harness.
Also in 5 projects that use this
naman10parikhSkillfractal-delegation
Also in 5 projects that use this
Maliot100XSkillsend-user-message
Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp). Use when the agent needs to notify, alert, or send an unsolicited message to a user — especially during heartbeat invocations, scheduled tasks, or when the agent wants to reach out without a prior user message in the current conversation. Triggers: 'send message to user', 'notify user', 'alert user', 'message the user on discord/telegram/whatsapp', or any need to proactively communicate with a paired sender.
Also in 4 projects that use this
jh941213Skilldocs-ci
문서 CI(링크·OpenAPI lint·breaking 게이트·mermaid 검증)나 문서 드리프트 감지(docs.yaml 신선도 검사)를 설치하거나 돌릴 때 사용. 문서 내용 작성은 docs-architecture·docs-interfaces·docs-manuals.
Also in 3 projects that use this
jh941213Skilldocs-interfaces
API·이벤트 인터페이스 문서(OpenAPI·swagger·AsyncAPI 명세, 엔드포인트 레퍼런스, API 구성도·시퀀스, API CHANGELOG)를 만들거나 코드와 맞출 때 사용. 시스템 구성도는 docs-architecture, API 설계 원칙은 api-design-principles.
Also in 3 projects that use this
- +6 more from naman10parikh
- +1 more from jh941213
Other versions99 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 99
- google-gemini/gemini-cli★ 109ksame name
- jlia0/tinyclaw★ 3.6ksame name
- TinyAGI/tinyagi★ 3.6ksame name
- TinyAGI/tinyclaw★ 3.6ksame name
- Chachamaru127/claude-code-harness★ 3.2ksame name
- codeaholicguy/ai-devkit★ 1.7ksame name
- Muuuun/luxas★ 1.2ksame name
- shobcoder/shob★ 575same name
- boshu2/agentops★ 453same name
- makushingu/harness-maxxing★ 161same name
89 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 5 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 82 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
If HELIX_ORCHESTRATOR_RUN_ID or HELIX_SKILL_CREDENTIAL_FILE is set, this skill runs in Helix Console.
- Very specific: line 13
Use the normal helix <surface> up, push, state, and wait commands.
- Very specific: line 14
Do not start local servers or Fleet, open a browser, curl localhost, use --local, log in, or change profiles/projects.
- Distinctive: line 36
Call the binary by its full path every time:
- Very specific: line 45
Never put it in a shell variable or function.
- Distinctive: line 64
An agent cannot enlarge what every future agent reads: Write freely; a memory earns its way into the core through being used.
- Very specific: line 78
Add --json to anything. used and confirm answer with one human line and nothing machine-readable — deliberately.
- Distinctive: line 97
One fact per memory: If the body has two unrelated claims, it is two memories.
- Distinctive: line 130
If nothing ever reports use, everything decays and the store slowly empties of the things that were working.
- Distinctive: line 135
Do not edit it quietly and move on.
“Common” is measured: kept by at least 6 in 10 of the 82 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Helix Memory
Orchestrator cloud context (check before setup)
If HELIX_ORCHESTRATOR_RUN_ID or HELIX_SKILL_CREDENTIAL_FILE is set, this skill runs in Helix Console. This section takes precedence over local setup and browser instructions below.
- First call the plugin's
bin/helix orchestrator-protocol(Windows:bin/helix.cmd orchestrator-protocol). It must print1. Otherwise stop with an actionable request to update the Helix plugin/CLI; never run an older binary's setup commands. - Use the normal
helix <surface> up, push, state, and wait commands. The CLI selects cloud transport and the assigned project automatically. Keep the same slug within this task. - Do not start local servers or Fleet, open a browser, curl localhost, use
--local, log in, or change profiles/projects. Do not read or print the credential file. Do not remove the injected environment variables. upreturns the Console session URL. Use that URL wherever the local instructions request Board/Fleet links. Events go to Console; human responses and gate approvals still come from the person through the normal wait protocol.- On cloud or compatibility errors, report the error. Never fall back to local mode. Outside this context, follow the local behavior below unchanged.
One file, one fact. Memory is not a session surface — it sits underneath Canvas, Loop and Stream, shared across sessions, projects and people. The session apps produce events; Memory is where distilled knowledge lives and gets recalled from.
The failure the whole design is built against:
A wrong memory is worse than no memory, and a wrong shared memory is worse still.
Recall is automatic and nobody asks for it, so one bad organisation-wide entry misleads every agent in the company, silently, until somebody traces a bad decision back to it. That is why provenance, conflict detection and human-gated promotion all exist — and why you have less power here than the person does.
Setup
Call the binary by its full path every time:
${CLAUDE_PLUGIN_ROOT}/bin/helix memory <verb> [flags]On Windows, ${CLAUDE_PLUGIN_ROOT}\bin\helix.cmd in place of bin/helix; the
rest of the command is the same.
Never put it in a shell variable or function. The skill pre-approves this
command, and that approval stops matching past a variable assignment — wrap it
and every call prompts instead. Prose below names commands as memory <verb>;
run them with the full path.
First run in a repo needs nothing. One store per machine, at
~/.helix/memory — the same store and the same server whichever project you
are in. The project layer is a scope inside it, named after the repo
directory, created on first write; nothing is ever written into the repo.
What you may and may not do
| You may | You may not |
| Write memories at the project layer | Write at team or organisation |
| Read everything, automatically and on demand | Put your own memory into the automatic core |
| Report that you acted on a memory | Confirm a memory is still true — that is the person's |
| Propose that a memory move up a layer | Decide that move |
An agent cannot enlarge what every future agent reads. Write freely; a memory earns its way into the core through being used.
The commands
${CLAUDE_PLUGIN_ROOT}/bin/helix memory write --name <name> --body "<the fact>" [--type --areas --paths]
${CLAUDE_PLUGIN_ROOT}/bin/helix memory search <query> [--limit 10] # keyword, widened one hop along typed edges
${CLAUDE_PLUGIN_ROOT}/bin/helix memory recall <path> # what this file brings with it
${CLAUDE_PLUGIN_ROOT}/bin/helix memory core [--explain] # what you would be given here, and why
${CLAUDE_PLUGIN_ROOT}/bin/helix memory used <id> # you acted on it — this is the control loop
${CLAUDE_PLUGIN_ROOT}/bin/helix memory get <id|name> · list · doctorAdd --json to anything. used and confirm answer with one human line and
nothing machine-readable — deliberately.
--session is not needed. The session is taken from the host, so a
memory you write carries the session it came out of, and usage is attributed
correctly when two sessions are open on one project.
Writing a memory worth keeping
${CLAUDE_PLUGIN_ROOT}/bin/helix memory write --name pnpm-not-npm --type feedback \
--paths '**/package.json' \
--body 'Always prefer pnpm to npm.
**Why:** npm rewrites the lockfile and breaks workspace resolution.
**How to apply:** use pnpm in every command, script and doc example.'- One fact per memory. If the body has two unrelated claims, it is two memories. Atomicity is what lets one be promoted, contradicted or decayed without dragging the other with it.
- The
--whymatters more than the rule. A memory that says what without why cannot be judged when it stops being true. --typeisuser·feedback·project·reference, and it is a real ranking signal —feedbackbelongs in the core,referencerarely does.- Bind it with
--pathsor--areaswhen it applies somewhere specific. Unbound means the whole layer, which is what an org-wide standard looks like. Bindings widen reach; they never narrow each other. - Link it with typed edges —
supersedes,contradicts,depends_on,evidence_for,narrows. An edge may point at an artifact (commit:afd81b3), which is recorded and never followed.
Write when a fact will still matter next month and is not derivable from the code. Not what the repo already says; not what only matters in this conversation.
How memories reach you
Three channels, one ranking, one store:
- At session start — the automatic core, under a hard token budget. You receive it; you do not ask for it.
- On what you are working on — memories bound to files in play arrive at the next prompt. Not at the moment a file opens: the hook that observes cannot add to the conversation, so observation and delivery are split.
- When you search —
memory search, widened one hop so an answer arrives with its caveats attached.
Say when you used one. memory used <id> is not bookkeeping — it is the whole
of the control loop. A memory acted on is promoted toward the core; one shown
repeatedly and ignored is demoted; one never recalled at all decays to archive.
If nothing ever reports use, everything decays and the store slowly empties of
the things that were working.
When a memory is wrong
Do not edit it quietly and move on. Either:
memory searchto find it, then tell the person what it says, where it came from and who wrote it — provenance is the point;- or record the disagreement as an edge (
contradicts) so it surfaces as a conflict rather than a silent overwrite.
memory doctor reports broken files, dead edges and conflicts in two shapes: a
declared contradiction, and the same name asserted at more than one layer.
Promotion is the person's
You may propose; you never decide. A memory reaching team or organisation needs a named human, and it happens in the browser:
${CLAUDE_PLUGIN_ROOT}/bin/helix memory serve --port 4840Point the person there when something deserves to be true for everyone.
Hooks
memory hook install prints the settings.json fragment. Three hooks: the core
at session start, path recording after a tool runs, and delivery at the next
prompt. They never fail loudly — a broken install looks like nothing happening,
never like an error on every turn.
State that survives between runs
A long job needs somewhere to put a cursor, a checkpoint, a partial result — and that is not a memory. Memory is distilled knowledge that gets handed to agents automatically; a resumption cursor handed to every future session would fill the recall budget with bookkeeping inside a week. So state is a separate collection, and nothing in it ever reaches recall.
${CLAUDE_PLUGIN_ROOT}/bin/helix memory state ns <name> --routine <r> [--visibility private|shared|scope]
${CLAUDE_PLUGIN_ROOT}/bin/helix memory state set <ns> <key> --routine <r> # value on stdin, or --value
${CLAUDE_PLUGIN_ROOT}/bin/helix memory state get <ns> <key> --routine <r>
${CLAUDE_PLUGIN_ROOT}/bin/helix memory state list [<ns>] · rm · prune
${CLAUDE_PLUGIN_ROOT}/bin/helix memory state cadence # what ran, and what stopped
${CLAUDE_PLUGIN_ROOT}/bin/helix memory state promote <ns> <key> --body "…" # turn a result into a memoryState belongs to a routine, not a session — surviving from one run to the
next is the entire point. Pass --routine <name> or set HELIX_ROUTINE.
Private by default. shared reaches a named set of routines, scope
reaches anything in the scope. Reading is shareable; writing never is —
only the owning routine may write, because shared state anyone can overwrite is
a race rather than state.
Entries expire — 30 days by default, per namespace. Bookkeeping should expire; nothing here is evidence.
When a result outlives its run, promote it: memory state promote writes a
real memory whose provenance points back at the state entry and the session
that produced it. That is the only path from state into recall, and it is
deliberately something you decide rather than something that happens.
Nothing here schedules anything. memory state cadence reports what a routine
has been doing — last ran, usually every day, overdue — because a routine
that writes state on every run reveals its own rhythm. It can tell you a
nightly job did not run last night. It cannot start one.
What Memory is not
Memory is advice. It shapes what you do and blocks nothing; breaking one produces no violation and no event. If something must actually be prevented, that is a policy, and a memory expressed as a rule is a rule that silently does not apply.
Sharp edges
- Nothing schedules the promotion pass. Usage figures are as fresh as the
last
memory sweep. Run it, or offer to. - A store has a team layer only if someone configured one. Unconfigured means project and organisation and nothing between.
- Reading records that memories were shown, which feeds demotion. Pass
--no-trackto look through the store without your looking counting. - There is no history. A hand edit replaces a memory with no trace of what it said before. Say so before editing one on someone's behalf.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

