The user-side manifest at ~/.claude/.memory-files-manifest.json records every file installed from this repo. It’s the source of truth for --update, uninstall, and audit.
Schema
{
"files": {
"<slug>": {
"type": "instruction | memory-* | settings-fragment | project-claude-md | path-rule",
"installed-at": "2026-05-15T10:30:00Z",
"installed-hash": "sha256:abc123def456...",
"upstream-ref": "<commit-sha or 'main'>",
"source-path": "instructions/<name>.md",
"local-path": "/absolute/path/to/installed/file",
"forked": false,
"merged-fragment": null | { ... },
"history": [
{ "event": "install", "ref": "<sha>", "at": "<ISO>" },
{ "event": "update", "ref": "<sha>", "at": "<ISO>" }
]
}
}
}
Field-by-field
|
Mirrors the file’s frontmatter |
|
ISO 8601 UTC timestamp of the last install or update. Bumped on each |
|
SHA-256 of the file’s body (frontmatter-stripped) as of last install/update. The |
|
Git ref (SHA when |
|
Relative path in the repo (e.g. |
|
Absolute path where the file was written. For |
|
|
|
For |
|
Append-only audit trail. Every install/update appends one event. Useful for forensics ("when did this rule change?") and for the v1.1 |
Inspecting the manifest
# All entries
jq . ~/.claude/.memory-files-manifest.json
# Just installed slugs
jq -r '.files | keys[]' ~/.claude/.memory-files-manifest.json
# History for one entry
jq '.files["github-pr-title-issue-link"].history' ~/.claude/.memory-files-manifest.json
# Which files were installed before a date
jq '.files | to_entries | map(select(.value."installed-at" < "2026-05-01"))' ~/.claude/.memory-files-manifest.json
Backup files
The installer creates timestamped backups in the same directory:
-
~/.claude/settings.json.bak.<timestamp>— before each settings-fragment install or update.
These accumulate over time; clean up manually with rm ~/.claude/settings.json.bak.* when you’re confident the merges were correct.
See also
-
Updating installed files — how
--updatereads the manifest. -
Slash commands — the slash commands read the manifest to filter
--installedlistings.