@pcircle/memesh 4.5.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +6 -4
  3. package/.mcp.json +1 -1
  4. package/AGENTS.md +95 -0
  5. package/README.de.md +130 -39
  6. package/README.md +188 -43
  7. package/README.zh-TW.md +133 -41
  8. package/dashboard/dist/index.html +9 -9
  9. package/dist/cli/view-live.js +3 -3
  10. package/dist/core/analytics.d.ts +3 -3
  11. package/dist/core/analytics.d.ts.map +1 -1
  12. package/dist/core/analytics.js.map +1 -1
  13. package/dist/core/auto-tagger.d.ts.map +1 -1
  14. package/dist/core/auto-tagger.js +4 -9
  15. package/dist/core/auto-tagger.js.map +1 -1
  16. package/dist/core/briefing.d.ts +8 -0
  17. package/dist/core/briefing.d.ts.map +1 -0
  18. package/dist/core/briefing.js +91 -0
  19. package/dist/core/briefing.js.map +1 -0
  20. package/dist/core/capture-flag.d.ts +5 -0
  21. package/dist/core/capture-flag.d.ts.map +1 -0
  22. package/dist/core/capture-flag.js +10 -0
  23. package/dist/core/capture-flag.js.map +1 -0
  24. package/dist/core/config.d.ts +0 -1
  25. package/dist/core/config.d.ts.map +1 -1
  26. package/dist/core/config.js +2 -1
  27. package/dist/core/config.js.map +1 -1
  28. package/dist/core/conflict-candidates.d.ts +20 -0
  29. package/dist/core/conflict-candidates.d.ts.map +1 -0
  30. package/dist/core/conflict-candidates.js +79 -0
  31. package/dist/core/conflict-candidates.js.map +1 -0
  32. package/dist/core/conflict-judge.d.ts +47 -0
  33. package/dist/core/conflict-judge.d.ts.map +1 -0
  34. package/dist/core/conflict-judge.js +189 -0
  35. package/dist/core/conflict-judge.js.map +1 -0
  36. package/dist/core/demo.d.ts +2 -2
  37. package/dist/core/demo.d.ts.map +1 -1
  38. package/dist/core/demo.js.map +1 -1
  39. package/dist/core/digest-validator.d.ts.map +1 -1
  40. package/dist/core/digest-validator.js +3 -5
  41. package/dist/core/digest-validator.js.map +1 -1
  42. package/dist/core/doctor.d.ts +3 -0
  43. package/dist/core/doctor.d.ts.map +1 -1
  44. package/dist/core/doctor.js +207 -85
  45. package/dist/core/doctor.js.map +1 -1
  46. package/dist/core/dreamer.d.ts +20 -9
  47. package/dist/core/dreamer.d.ts.map +1 -1
  48. package/dist/core/dreamer.js +416 -58
  49. package/dist/core/dreamer.js.map +1 -1
  50. package/dist/core/embedder.d.ts +7 -5
  51. package/dist/core/embedder.d.ts.map +1 -1
  52. package/dist/core/embedder.js +38 -9
  53. package/dist/core/embedder.js.map +1 -1
  54. package/dist/core/extractor.d.ts.map +1 -1
  55. package/dist/core/extractor.js +2 -1
  56. package/dist/core/extractor.js.map +1 -1
  57. package/dist/core/failure-analyzer.d.ts.map +1 -1
  58. package/dist/core/failure-analyzer.js +7 -12
  59. package/dist/core/failure-analyzer.js.map +1 -1
  60. package/dist/core/graph.d.ts +4 -4
  61. package/dist/core/graph.d.ts.map +1 -1
  62. package/dist/core/graph.js.map +1 -1
  63. package/dist/core/install-channel.d.ts +1 -1
  64. package/dist/core/install-channel.d.ts.map +1 -1
  65. package/dist/core/install-channel.js +16 -5
  66. package/dist/core/install-channel.js.map +1 -1
  67. package/dist/core/install-hooks.d.ts +6 -0
  68. package/dist/core/install-hooks.d.ts.map +1 -1
  69. package/dist/core/install-hooks.js +0 -0
  70. package/dist/core/install-hooks.js.map +1 -1
  71. package/dist/core/json-utils.d.ts +1 -0
  72. package/dist/core/json-utils.d.ts.map +1 -1
  73. package/dist/core/json-utils.js +19 -10
  74. package/dist/core/json-utils.js.map +1 -1
  75. package/dist/core/kg-backfill.d.ts +3 -4
  76. package/dist/core/kg-backfill.d.ts.map +1 -1
  77. package/dist/core/kg-backfill.js +1 -4
  78. package/dist/core/kg-backfill.js.map +1 -1
  79. package/dist/core/lesson-engine.d.ts +1 -0
  80. package/dist/core/lesson-engine.d.ts.map +1 -1
  81. package/dist/core/lesson-engine.js +1 -0
  82. package/dist/core/lesson-engine.js.map +1 -1
  83. package/dist/core/lifecycle.d.ts +4 -4
  84. package/dist/core/lifecycle.d.ts.map +1 -1
  85. package/dist/core/lifecycle.js +15 -22
  86. package/dist/core/lifecycle.js.map +1 -1
  87. package/dist/core/llm-client.d.ts.map +1 -1
  88. package/dist/core/llm-client.js +3 -6
  89. package/dist/core/llm-client.js.map +1 -1
  90. package/dist/core/llm-telemetry.d.ts +4 -4
  91. package/dist/core/llm-telemetry.d.ts.map +1 -1
  92. package/dist/core/llm-telemetry.js +1 -1
  93. package/dist/core/llm-telemetry.js.map +1 -1
  94. package/dist/core/memory-tool.d.ts.map +1 -1
  95. package/dist/core/memory-tool.js +8 -4
  96. package/dist/core/memory-tool.js.map +1 -1
  97. package/dist/core/operations.d.ts.map +1 -1
  98. package/dist/core/operations.js +41 -17
  99. package/dist/core/operations.js.map +1 -1
  100. package/dist/core/paths.d.ts +3 -0
  101. package/dist/core/paths.d.ts.map +1 -1
  102. package/dist/core/paths.js +67 -1
  103. package/dist/core/paths.js.map +1 -1
  104. package/dist/core/patterns.d.ts +2 -2
  105. package/dist/core/patterns.d.ts.map +1 -1
  106. package/dist/core/patterns.js.map +1 -1
  107. package/dist/core/project-tags.d.ts +3 -3
  108. package/dist/core/project-tags.d.ts.map +1 -1
  109. package/dist/core/project-tags.js.map +1 -1
  110. package/dist/core/projects.d.ts +2 -2
  111. package/dist/core/projects.d.ts.map +1 -1
  112. package/dist/core/projects.js.map +1 -1
  113. package/dist/core/prompt-safety.d.ts +1 -0
  114. package/dist/core/prompt-safety.d.ts.map +1 -1
  115. package/dist/core/prompt-safety.js +7 -0
  116. package/dist/core/prompt-safety.js.map +1 -1
  117. package/dist/core/schema-export.d.ts.map +1 -1
  118. package/dist/core/schema-export.js +27 -30
  119. package/dist/core/schema-export.js.map +1 -1
  120. package/dist/core/serializer.d.ts.map +1 -1
  121. package/dist/core/serializer.js +45 -4
  122. package/dist/core/serializer.js.map +1 -1
  123. package/dist/core/setup.d.ts +29 -0
  124. package/dist/core/setup.d.ts.map +1 -0
  125. package/dist/core/setup.js +127 -0
  126. package/dist/core/setup.js.map +1 -0
  127. package/dist/core/stats.d.ts +2 -2
  128. package/dist/core/stats.d.ts.map +1 -1
  129. package/dist/core/stats.js.map +1 -1
  130. package/dist/core/task-state-store.d.ts +17 -0
  131. package/dist/core/task-state-store.d.ts.map +1 -0
  132. package/dist/core/task-state-store.js +45 -0
  133. package/dist/core/task-state-store.js.map +1 -0
  134. package/dist/core/task-state.d.ts +19 -0
  135. package/dist/core/task-state.d.ts.map +1 -0
  136. package/dist/core/task-state.js +91 -0
  137. package/dist/core/task-state.js.map +1 -0
  138. package/dist/core/time-utils.d.ts +2 -0
  139. package/dist/core/time-utils.d.ts.map +1 -0
  140. package/dist/core/time-utils.js +14 -0
  141. package/dist/core/time-utils.js.map +1 -0
  142. package/dist/core/title.d.ts +5 -0
  143. package/dist/core/title.d.ts.map +1 -0
  144. package/dist/core/title.js +14 -0
  145. package/dist/core/title.js.map +1 -0
  146. package/dist/core/transcript-extractor.d.ts +5 -6
  147. package/dist/core/transcript-extractor.d.ts.map +1 -1
  148. package/dist/core/transcript-extractor.js +4 -24
  149. package/dist/core/transcript-extractor.js.map +1 -1
  150. package/dist/core/transcript-source.d.ts.map +1 -1
  151. package/dist/core/transcript-source.js +2 -3
  152. package/dist/core/transcript-source.js.map +1 -1
  153. package/dist/core/types.d.ts +21 -7
  154. package/dist/core/types.d.ts.map +1 -1
  155. package/dist/core/types.js +2 -0
  156. package/dist/core/types.js.map +1 -1
  157. package/dist/core/work-topology.d.ts +33 -0
  158. package/dist/core/work-topology.d.ts.map +1 -0
  159. package/dist/core/work-topology.js +183 -0
  160. package/dist/core/work-topology.js.map +1 -0
  161. package/dist/db.d.ts +5 -10
  162. package/dist/db.d.ts.map +1 -1
  163. package/dist/db.js +194 -196
  164. package/dist/db.js.map +1 -1
  165. package/dist/knowledge-graph.d.ts +4 -2
  166. package/dist/knowledge-graph.d.ts.map +1 -1
  167. package/dist/knowledge-graph.js +68 -49
  168. package/dist/knowledge-graph.js.map +1 -1
  169. package/dist/mcp/server.js +2 -1
  170. package/dist/mcp/server.js.map +1 -1
  171. package/dist/skills-manifest.json +61 -36
  172. package/dist/storage/conflicts.d.ts +3 -3
  173. package/dist/storage/conflicts.d.ts.map +1 -1
  174. package/dist/storage/conflicts.js +2 -7
  175. package/dist/storage/conflicts.js.map +1 -1
  176. package/dist/storage/fts-index.d.ts +6 -4
  177. package/dist/storage/fts-index.d.ts.map +1 -1
  178. package/dist/storage/fts-index.js +16 -4
  179. package/dist/storage/fts-index.js.map +1 -1
  180. package/dist/storage/schema.d.ts +20 -0
  181. package/dist/storage/schema.d.ts.map +1 -0
  182. package/dist/storage/schema.js +274 -0
  183. package/dist/storage/schema.js.map +1 -0
  184. package/dist/storage/sqlite.d.ts +20 -0
  185. package/dist/storage/sqlite.d.ts.map +1 -0
  186. package/dist/storage/sqlite.js +64 -0
  187. package/dist/storage/sqlite.js.map +1 -0
  188. package/dist/storage/vector-index.d.ts +3 -0
  189. package/dist/storage/vector-index.d.ts.map +1 -0
  190. package/dist/storage/vector-index.js +7 -0
  191. package/dist/storage/vector-index.js.map +1 -0
  192. package/dist/transports/cli/cli.d.ts +1 -4
  193. package/dist/transports/cli/cli.d.ts.map +1 -1
  194. package/dist/transports/cli/cli.js +494 -76
  195. package/dist/transports/cli/cli.js.map +1 -1
  196. package/dist/transports/http/retired-routes.d.ts.map +1 -1
  197. package/dist/transports/http/retired-routes.js +1 -0
  198. package/dist/transports/http/retired-routes.js.map +1 -1
  199. package/dist/transports/http/server.d.ts.map +1 -1
  200. package/dist/transports/http/server.js +243 -323
  201. package/dist/transports/http/server.js.map +1 -1
  202. package/dist/transports/mcp/handlers.d.ts +48 -94
  203. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  204. package/dist/transports/mcp/handlers.js +77 -56
  205. package/dist/transports/mcp/handlers.js.map +1 -1
  206. package/dist/transports/schemas.d.ts +31 -40
  207. package/dist/transports/schemas.d.ts.map +1 -1
  208. package/dist/transports/schemas.js +31 -37
  209. package/dist/transports/schemas.js.map +1 -1
  210. package/hooks/hooks.json +0 -10
  211. package/llms-install.md +138 -0
  212. package/package.json +19 -18
  213. package/scripts/hooks/_generated/capture-flag.js +17 -0
  214. package/scripts/hooks/_generated/core-paths.js +67 -1
  215. package/scripts/hooks/_generated/fts-index.js +16 -4
  216. package/scripts/hooks/_generated/schema.js +281 -0
  217. package/scripts/hooks/_generated/sqlite.js +71 -0
  218. package/scripts/hooks/_generated/task-state.js +98 -0
  219. package/scripts/hooks/_generated/time-utils.js +21 -0
  220. package/scripts/hooks/_generated/title.js +21 -0
  221. package/scripts/hooks/_generated/work-topology.js +190 -0
  222. package/scripts/hooks/_shared.js +269 -534
  223. package/scripts/hooks/post-commit.js +55 -10
  224. package/scripts/hooks/pre-compact.js +22 -7
  225. package/scripts/hooks/pre-edit-recall.js +9 -11
  226. package/scripts/hooks/session-start.js +230 -106
  227. package/scripts/hooks/session-summary.js +176 -73
  228. package/scripts/hooks/user-prompt-intent.js +3 -2
  229. package/skills/memesh/SKILL.md +97 -77
  230. package/README.es.md +0 -470
  231. package/README.fr.md +0 -462
  232. package/README.ja.md +0 -470
  233. package/README.ko.md +0 -470
  234. package/README.pt.md +0 -462
  235. package/README.th.md +0 -463
  236. package/README.vi.md +0 -462
  237. package/README.zh-CN.md +0 -469
  238. package/dist/cli/view.d.ts +0 -3
  239. package/dist/cli/view.d.ts.map +0 -1
  240. package/dist/cli/view.js +0 -523
  241. package/dist/cli/view.js.map +0 -1
  242. package/dist/core/skill-usage-log.d.ts +0 -11
  243. package/dist/core/skill-usage-log.d.ts.map +0 -1
  244. package/dist/core/skill-usage-log.js +0 -125
  245. package/dist/core/skill-usage-log.js.map +0 -1
  246. package/dist/core/verifier.d.ts +0 -40
  247. package/dist/core/verifier.d.ts.map +0 -1
  248. package/dist/core/verifier.js +0 -206
  249. package/dist/core/verifier.js.map +0 -1
  250. package/dist/mcp/launcher.d.ts +0 -3
  251. package/dist/mcp/launcher.d.ts.map +0 -1
  252. package/dist/mcp/launcher.js +0 -37
  253. package/dist/mcp/launcher.js.map +0 -1
  254. package/scripts/hooks/pre-bash-orchestration-nudge.js +0 -155
  255. package/scripts/postinstall-rebuild.mjs +0 -41
  256. package/skills/agentic-orchestration/SKILL.md +0 -399
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: memesh
3
- description: Use MeMesh to remember, recall, and manage AI knowledge across sessions. Triggers when the user asks to remember something, recall past decisions, forget outdated info, learn from mistakes, or analyze work patterns. Also triggers proactively when you make important decisions, fix bugs, or learn lessons worth preserving.
3
+ description: Use MeMesh to remember, recall, and manage AI knowledge across sessions. Triggers when the user asks to remember something, recall past decisions, forget outdated info, learn from mistakes, or analyze work patterns. Also triggers when the user asks "what do you remember", "where did we leave off", or wants to catch up on a project; when a session starts and project context is needed; and proactively when you make important decisions, fix bugs, or learn lessons worth preserving.
4
4
  user-invocable: true
5
5
  ---
6
6
 
7
7
  # MeMesh — AI Memory Management
8
8
 
9
- Persistent memory layer for AI agents. Remember decisions, recall context, learn from mistakesacross sessions.
9
+ Persistent memory for AI agents. The point is continuity: the next session starts where this one stopped, instead of re-spending thousands of tokens re-discovering project state and the human never has to re-explain it.
10
10
 
11
11
  ## How to Access (auto-detect)
12
12
 
@@ -23,40 +23,74 @@ Persistent memory layer for AI agents. Remember decisions, recall context, learn
23
23
 
24
24
  All examples below use CLI. MCP tools accept the same parameters as JSON objects.
25
25
 
26
+ ## The Loop
27
+
28
+ Four moments. Everything else in this file is detail.
29
+
30
+ **SESSION START → load the briefing (once).**
31
+ Call the `briefing` MCP tool or run `memesh briefing`. It returns the assembled
32
+ work topology: where the work was left off (goal / next / blocked / done),
33
+ decisions and direction, lessons not to repeat, what is known, recent activity.
34
+ One call is cheaper than re-exploring the repo to reconstruct the same picture.
35
+ Exception: under Claude Code the session-start hook has ALREADY injected this
36
+ exact block — do not call it again (see "What's Already Automatic").
37
+
38
+ **USER STATES a goal, next step, or blocker → record it immediately.**
39
+ ```bash
40
+ memesh task --goal "Ship the work-topology injection" --next "Open the PR once CI is green"
41
+ memesh task --blocked "Waiting on the Windows runner"
42
+ memesh task --blocked "" # blocker resolved — empty string clears the field
43
+ ```
44
+ Fields: `--goal` `--next` `--blocked` `--done` (MCP tool: `task_state`).
45
+ Record ONLY what the user actually said. This state is injected at the top of
46
+ the next session and read as fact — a goal you guessed from which files were
47
+ edited reaches that session with nothing to correct it. If it was not said,
48
+ leave the field out.
49
+
50
+ **SESSION END or milestone → make the task state match reality.**
51
+ `memesh task` (no flags) shows exactly what the next session will be told.
52
+ If "next" is now done, record what is actually next; if the blocker cleared,
53
+ clear it.
54
+
55
+ **USER ASKS "what do you remember / where were we" → briefing, then relay.**
56
+ Run `memesh briefing` (or `--project <name>`) and answer from it. For specific
57
+ follow-up questions, use `recall`.
58
+
26
59
  ## What's Already Automatic (Claude Code Plugin Hooks)
27
60
 
28
61
  If MeMesh is installed as a Claude Code plugin, these happen **without any action from you**:
29
62
 
30
63
  | Hook | When | What it does |
31
64
  |------|------|-------------|
32
- | **SessionStart** | Every session begins | Auto-recalls top memories for current project + surfaces lesson warnings + (opt-in) agentic-orchestration banner |
33
- | **PreToolUse (Edit)** | Before editing files | Injects memories related to the file or project |
34
- | **PreToolUse (Bash)** | Before bash commands | (Opt-in) Nudges Claude to dispatch high-verifiability commands as background agents |
35
- | **UserPromptSubmit** | When you submit a prompt | Detects "remember this" intent (5 languages: en, es, fr, pt, zh-TW) and reminds Claude to use memesh |
36
- | **PostToolUse (Commit)** | After `git commit` | Auto-tracks commit with diff stats as a memory entity |
65
+ | **SessionStart** | Every session begins | Injects the briefing: task state lessons project memories recent activity |
66
+ | **PreToolUse (Edit/Write)** | Before editing files | Injects memories related to the file or project |
67
+ | **UserPromptSubmit** | When you submit a prompt | Detects "remember this" intent (5 languages) and reminds Claude to use memesh |
68
+ | **PostToolUse (Bash)** | After `git commit` | Auto-tracks the commit with diff stats as a memory entity |
37
69
  | **Stop** | Session ends | Auto-captures session knowledge + runs LLM failure analysis → lessons |
38
- | **PreCompact** | Before context compaction | Saves important knowledge before conversation history is compressed |
70
+ | **PreCompact** | Before context compaction | Saves important knowledge before history is compressed |
39
71
 
40
- **You do NOT need to manually:**
41
- - Recall at session start (SessionStart hook does it)
42
- - Remember commits (PostToolUse hook does it)
43
- - Summarize sessions (Stop hook does it)
44
- - Remember when you say "記下來" / "remember this" (UserPromptSubmit hook reminds Claude)
72
+ Because of the SessionStart hook: **in Claude Code, do NOT call `briefing` at
73
+ session start it is already in your context.** Call it only mid-session
74
+ (context was compacted, or the user asks what you remember) or on hosts
75
+ without these hooks (other MCP clients, shell-only agents). Double-injection
76
+ spends the very tokens this system exists to save.
45
77
 
46
- **You DO need to manually** use the commands below for intentional knowledge management.
78
+ Hooks capture what *happened*. You still act manually for what they cannot
79
+ know: what the user **meant** (task state), deliberate decisions and lessons,
80
+ and retiring outdated info.
47
81
 
48
- ## When to Use
49
-
50
- ### Proactive triggers — do these WITHOUT being asked
82
+ ## Proactive triggers — do these WITHOUT being asked
51
83
 
52
84
  | Situation | Action |
53
85
  |-----------|--------|
86
+ | User states what they're working on / what's next / what's blocking | `memesh task --goal "…"` / `--next "…"` / `--blocked "…"` |
54
87
  | Design decision made | `memesh remember --name "auth-choice" --type decision --obs "Use OAuth 2.0 with PKCE" --tags "project:myapp"` |
55
88
  | Bug fixed | `memesh learn --error "what broke" --fix "what fixed it" --root-cause "why" --severity major` |
56
- | Pattern established | `memesh remember --name "validation-pattern" --type pattern --obs "Always use Zod"` |
57
89
  | Starting work on a feature | `memesh recall "feature-name" --json` |
58
90
  | User asks "what did we decide?" | `memesh recall "topic" --tag "project:myapp"` |
59
- | Info is outdated | `memesh forget --name "old-decision"` |
91
+ | User asks "where did we leave off?" | `memesh briefing` relay it |
92
+ | Info is outdated | New memory with `--supersedes "old-name"`, or `memesh forget` |
93
+ | Context about the user's work habits needed | `user_patterns` MCP tool (MCP/HTTP only — no CLI command) |
60
94
 
61
95
  ### When NOT to remember
62
96
  - Trivial implementation details (variable names, import paths)
@@ -70,83 +104,69 @@ If MeMesh is installed as a Claude Code plugin, these happen **without any actio
70
104
  memesh learn \
71
105
  --error "SIGSEGV when running vitest with threads" \
72
106
  --fix "Use pool: 'forks' instead of 'threads' for native modules" \
73
- --root-cause "better-sqlite3 native module is not thread-safe" \
74
- --prevention "Check if test framework supports native modules before choosing pool" \
107
+ --root-cause "the native module is not thread-safe" \
108
+ --prevention "Check if the test framework supports native modules before choosing pool" \
75
109
  --severity major
76
110
  ```
77
- This creates a `lesson_learned` entity. Lessons are surfaced as **proactive warnings** at next session start.
78
-
79
- ### You need context before working
80
- ```bash
81
- memesh recall "authentication" --json
82
- memesh recall --tag "project:myapp" --limit 10
83
- memesh recall --cross-project # search across all projects
84
- ```
85
- Results are ranked by relevance, recency, frequency, confidence, and recall impact.
111
+ Creates a `lesson_learned` entity. Lessons are surfaced as **proactive warnings** at the next session start.
86
112
 
87
113
  ### A decision was just made
88
114
  ```bash
89
115
  memesh remember \
90
- --name "db-choice-2026" \
91
- --type decision \
116
+ --name "db-choice" --type decision \
117
+ --title "SQLite for local-first storage" \
92
118
  --obs "Use SQLite for local-first" "Rejected PostgreSQL due to deployment complexity" \
93
119
  --tags "project:myapp" "topic:database"
94
120
  ```
121
+ Use a **stable name** (`db-choice`, not `db-choice-2026-08-16`): reusing the
122
+ name appends to the same entity instead of scattering duplicates. `--title` is
123
+ the human-readable headline; the name stays the machine key. If this replaces
124
+ an older decision, add `--supersedes "old-db-choice"`.
95
125
  Types: `decision` `pattern` `lesson_learned` `bug_fix` `architecture` `convention` `feature` `best_practice` `concept` `tool` `note`
96
126
 
97
- ### Old info needs updating
127
+ ### You need context on a specific topic
98
128
  ```bash
99
- memesh forget --name "old-auth-approach" # archive entire entity
100
- memesh forget --name "auth-approach" --observation "Use JWT" # remove one fact only
129
+ memesh recall "authentication" --json
130
+ memesh recall --tag "project:myapp" --limit 10
131
+ memesh recall --cross-project # search across all projects
101
132
  ```
102
- Archives (soft-delete). Never permanently removes.
133
+ Query words are OR-ed and ranked by relevance — a naturally phrased question
134
+ works; extra words narrow the ranking, not the result set.
103
135
 
104
- ### Memories are getting verbose
136
+ ### Old info needs updating
105
137
  ```bash
106
- memesh dream run --project myapp # propose digests for clusters of noisy memories
107
- memesh dream run --from-transcripts # OR: mine this project's Claude Code sessions for memory
108
- memesh dream list # review what it proposed
109
- memesh dream show <id> # inspect one proposal in full before accepting
110
- memesh dream accept <id> # apply one, or: memesh dream reject <id>
138
+ memesh forget --name "auth-approach" --observation "Use JWT" # remove one fact only
139
+ memesh forget --name "old-auth-approach" # archive the whole entity
111
140
  ```
112
- Nothing changes until a proposal is accepted, and sources are archived rather
113
- than deleted. Requires Smart Mode configured. Works on episodic memories
114
- (commits, session notes) — lessons, decisions, architecture notes and pinned
115
- entities are never touched.
141
+ Both are soft (recoverable) nothing is permanently removed.
116
142
 
117
- `memesh consolidate` was retired: it rewrote a memory with an LLM summary and
118
- deleted the originals on the spot, with no review step.
143
+ ### Memories are getting verbose or stale
144
+ Use the **memesh-review** skill: it analyzes health, finds stale, conflicting
145
+ and redundant memories, and proposes cleanup (including `memesh dream`, the
146
+ reviewed digest pipeline). Do not hand-compress memories yourself.
119
147
 
120
- ### Backup or share memories
148
+ ### Backup, share, health
121
149
  ```bash
122
150
  memesh export --tag "project:myapp" > memories.json
123
- memesh import memories.json --merge skip # skip | overwrite | append
124
- ```
125
-
126
- ### Check MeMesh health
127
- ```bash
128
- memesh status # version, search level, embeddings
129
- memesh config list # current configuration
151
+ memesh import memories.json --merge skip # skip | overwrite | append
152
+ memesh status # version, search level, embeddings
153
+ memesh reindex # rebuild embeddings after provider change
130
154
  ```
131
155
 
132
- ### Regenerate embeddings after provider change
133
- ```bash
134
- memesh reindex # rebuild all embeddings
135
- memesh reindex --namespace personal # reindex only one namespace
136
- memesh reindex --json # structured progress output
137
- ```
138
- Use this when you change embedding provider (e.g., Ollama OpenAI) or dimension. The database auto-drops old embeddings on provider change, but you need to run `reindex` to regenerate them for existing memories.
139
-
140
- ## MCP-Only Features
141
-
142
- These require MCP tools or the HTTP API (`memesh serve` + REST calls):
143
-
144
- - **user_patterns** Analyzes work patterns (schedule, tool preferences, strengths) from existing memories. Categories: `workSchedule`, `toolPreferences`, `strengths`, `focusAreas`.
145
-
146
- ## Best Practices
147
-
148
- 1. **Be specific** — "Use OAuth 2.0 with PKCE" not "auth stuff decided"
149
- 2. **Tag by project** — Always include `project:<name>` tag
150
- 3. **Use `--json`** — When you need to parse output programmatically
151
- 4. **Learn from every bug** — Every fix is a future warning. Use `learn`, not just `remember`.
152
- 5. **Don't over-remember** — Decisions that took > 5 minutes. Patterns worth preserving. Not trivia.
156
+ ## Memory hygiene
157
+
158
+ 1. **Stable names append.** Remembering under an existing name adds
159
+ observations and dedupes tags it never replaces the entity. Reuse the
160
+ name to grow one memory; do not mint `-v2` / dated variants of it.
161
+ 2. **`supersedes` retires the loser.** When a new memory replaces an old one,
162
+ record it with `--supersedes <old-name>` (MCP: a relation of type
163
+ `supersedes`). The old entity is archived — recoverable, out of recall.
164
+ 3. **`contradicts` flags real conflicts.** When two memories cannot both be
165
+ true and neither is clearly wrong yet, link them with `--contradicts`
166
+ (MCP: relation type `contradicts`). Both surface as a conflict on every
167
+ recall until someone resolves it.
168
+ 4. **Prefer observation-level forgetting.** `forget --observation "…"` removes
169
+ one wrong fact and keeps the entity. Plain `forget` archives the whole
170
+ entity out of visibility — use it only when everything in it is dead.
171
+ 5. **Tag by project** (`project:<name>`) and **be specific** — "Use OAuth 2.0
172
+ with PKCE", not "auth stuff decided".