hermes-agent/optional-skills
briandevans 8a9ab8b56b fix(cli): stop shredding an existing MEMORY.md on hermes import-agent
memories/MEMORY.md is the "§"-delimited store written by MemoryStore, not a
markdown document. parse_existing_memory_entries() fell back to
extract_markdown_entries() -- the *source* parser for CLAUDE.md / AGENTS.md --
whenever the destination held no delimiter, which is exactly the case for a
single-entry store or one that was hand-edited or shell-appended. That
extractor skips fenced code blocks, skips table rows, splits a block into one
entry per bullet and reflows paragraphs. The shredded result was then written
straight back over the user's store and reported as "Imported", with no backup
to recover from.

Parse the destination the way MemoryStore._parse_entries does: split on
ENTRY_DELIMITER only, so a store with no delimiter is one intact entry.
extract_markdown_entries() is unchanged and still used on the sources, where
it is correct.

Also restore the safety net the port dropped. The openclaw migration script
this module was ported from calls maybe_backup(destination) before rewriting a
memory store; the port did not. Snapshot the store to <name>.bak.<unix_ts>
(same naming as MemoryStore._backup_drifted_file), refuse to rewrite when the
snapshot fails, and write via temp file + atomic rename so an interrupted
import cannot leave a truncated store and a symlinked MEMORY.md stays a
symlink.

The identical fallback lives in openclaw_to_hermes.py, where it is reached
from migrate_memory() (memories/MEMORY.md and memories/USER.md) and
migrate_daily_memory(); fixed there too.
2026-07-29 16:49:07 +05:30
..
autonomous-ai-agents fix(skills): sync coding-agent CLI skills to current flags/packages 2026-07-24 08:18:10 -07:00
blockchain docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
communication fix(skills): move platforms key out of folded description: > scalars 2026-05-08 14:27:40 -07:00
creative fix(windows): sweep remaining bare read_text/write_text sites + linter rule 2026-07-24 17:10:39 -07:00
data-science docs(jupyter-live-kernel): document zmq transport fallback and disable_check_xsrf pitfalls 2026-07-23 20:01:28 -07:00
devops docs(skills): fix remaining 13 broken related_skills refs repo-wide 2026-07-24 07:54:05 -07:00
dogfood docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
email/agentmail docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
finance docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
gaming refactor(skills): clean up bundled skill set + add environments: relevance gate (#39028) 2026-06-04 06:11:22 -07:00
health fix: remove dead f-string prefixes via ruff F541 (216 sites) (#52336) 2026-07-05 13:42:46 -07:00
mcp docs(skills): fix remaining 13 broken related_skills refs repo-wide 2026-07-24 07:54:05 -07:00
migration fix(cli): stop shredding an existing MEMORY.md on hermes import-agent 2026-07-29 16:49:07 +05:30
mlops fix(skills): sync mlops training/model-infra skills to current APIs 2026-07-24 08:18:05 -07:00
payments Update Stripe Projects skill docs (#48673) 2026-06-19 04:43:15 +00:00
productivity docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
research fix(windows): sweep remaining bare read_text/write_text sites + linter rule 2026-07-24 17:10:39 -07:00
security docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
software-development fix(skills): widen HERMES_HOME-aware .env resolution to all sibling skills 2026-06-10 15:10:11 -07:00
web-development docs(skills): bring 69 skill descriptions under the 60-char authoring budget 2026-07-23 21:07:16 -07:00
yuanbao refactor(skills): move yuanbao to optional-skills 2026-07-23 19:47:46 -07:00
DESCRIPTION.md fix: review fixes — path traversal guard, trust_style consistency, edge cases 2026-03-06 01:40:01 -08:00