From 7e181cafc6529f2c03683502aeb029e372b99131 Mon Sep 17 00:00:00 2001 From: jason Date: Sun, 7 Jun 2026 00:13:03 -0500 Subject: [PATCH] ver0.4.1 --- echo-memory.plugin | Bin 19700 -> 19882 bytes .../.claude-plugin/plugin.json | 2 +- .../skills/echo-memory/SKILL.md | 10 ++++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/echo-memory.plugin b/echo-memory.plugin index 0f9bf93aa1996f62889b665e6607efc96b594a5e..baa57970e1845ca0eda19a0e85c474c2e2bffcf5 100644 GIT binary patch literal 19882 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::Agent Log` (the H1 of a daily note is the date, so that's the full target path). ```bash @@ -286,9 +286,11 @@ if [ "$HTTP" = "404" ]; then | curl -s -X PUT -H "$AUTH" -H "Content-Type: text/markdown" --data-binary @- "$DAILY" fi -# 3: ensure the `## Agent Log` heading exists -MAP=$(curl -s -H "$AUTH" -H "Accept: application/vnd.olrapi.document-map+json" "$DAILY") -if ! printf '%s' "$MAP" | grep -q '"Agent Log"'; then +# 3: ensure the `## Agent Log` heading exists. +# Grep the RAW markdown for an anchored heading line. Do NOT grep the document-map +# JSON: its headings are full "::"-delimited paths (e.g. "2026-06-07::Agent Log"), so a +# bare '"Agent Log"' match never matches and a DUPLICATE heading gets appended each time. +if ! curl -s -H "$AUTH" "$DAILY" | grep -q '^## Agent Log'; then printf '\n\n## Agent Log\n' | curl -s -X POST -H "$AUTH" -H "Content-Type: text/markdown" --data-binary @- "$DAILY" fi