Memory write
Skill ztnkv/personal-operating-system/.claude/skills/memory-write
Portable personal-memory system for AI agents (Claude Code). Markdown + git. Skills for memory, lists, daily check-ins, blind-spot interviews — your agent gets a stable, evolving model of you.
npx -y skills add ztnkv/personal-operating-system --skill memory-writeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Service skill that writes and modifies files in memory/. Invoked ONLY from memory-retro after the user confirmed the proposed diff. Never runs by itself and is not invoked by the user directly. Supports four operations — add (new entry), update (edit existing), supersede (soft delete via status), delete (hard delete, only by an explicit user command). When tags need to be created or updated, cascades into tag-pick.
SKILL.md
3.9 KB, 893 tokens by cl100k_base, as published. Nobody here has run it
memory-write
Service skill — writes and modifies memory files. Invoked only from memory-retro, after the user has explicitly confirmed.
Operations
add — create a new entry
Input: title, body, type, confidence, dialog context (for tags).
Steps:
- Get the current unix timestamp.
- Generate a slug from the title: transliterate → lowercase → spaces → dashes, ASCII-only, no special characters. Example: "Relationship with my mother" →
relationship-with-my-mother. - Filename:
<unix_timestamp>-<slug>.md. - Call
tag-pickwith the title + body + context → receive an array of tags (2–5). - Create the file with frontmatter:
--- title: <title> tags: [<...>] type: <type> confidence: <high|medium|low> status: active created: <YYYY-MM-DD> updated: <YYYY-MM-DD> --- <body> ## Change log - <YYYY-MM-DD> — created during conversation about <short description of the initiative> - Append a line to
memory/index.mdin the## Entriessection:- [<title>](<filename>) — <type>, <tags comma-separated>, <one-line hook>
update — update an existing entry
Input: filename, new body (or new frontmatter fields), reason for the change.
Steps:
- Read the existing file.
- Apply the edit (body and/or frontmatter).
- Set
updated:to today's date. - If the tags changed — re-run them through
tag-pick(do not hand-edit). - Append a line to
## Change log:- <YYYY-MM-DD> — <short description of the edit>: <reason> - If the title or the hook changed — update the corresponding line in
memory/index.md.
Critical changes (change of type, confidence, resolution of a contradiction) get an explicit entry in the change log. Minor wording edits — one line.
supersede — mark as deprecated
Input: filename, reason for deprecation, optional — name of the successor file.
Steps:
- Read the file.
- Block: if
type: event— refuse, explain that events never deprecate. - Edit frontmatter:
status: deprecatedsuperseded_at: <YYYY-MM-DD>superseded_by: <filename>(if a successor exists)updated: <YYYY-MM-DD>
- Append to
## Change log:- <YYYY-MM-DD> — marked deprecated: <reason>(+ link to successor, if any). - In
memory/index.md, mark the entry as deprecated (add a[deprecated]tag to the line, or move it into a### Deprecatedsubsection).
delete — hard delete
Only on an explicit user command targeting a specific file ("delete this entry", "this should never have been saved").
Steps:
- Delete the file.
- Remove its line from
memory/index.md. - If any other entry's
superseded_bypointed at this file — drop that reference (and append to that entry's change log:successor deleted <date>).
General rules
- All dates —
YYYY-MM-DD. - Entry body is written in the user's language (the language used in the dialog).
- Frontmatter keys stay in English; their values for
typeandstatususe the controlled vocabulary in English (fact,belief,preference,event,goal,constraint;active,deprecated). - If any input is ambiguous — do not invent; return an error to
memory-retrodescribing the problem and let the orchestrator re-ask the user. - New
typevalues are not introduced without explicit user confirmation — that must have been settled inmemory-retrobeforememory-writewas called.