From f86a8560ebaf7b1eecf61e60207bb5d96b8efe33 Mon Sep 17 00:00:00 2001 From: gnekt Date: Mon, 23 Mar 2026 22:39:33 +0100 Subject: [PATCH] Add core-manifest for references to protect user-created reference docs Same pattern as agents: launchme/updateme write a .core-manifest in .claude/references/ listing installed core files. The deprecation loop only touches files in the manifest, leaving user-created references untouched. --- scripts/launchme.sh | 6 +++++- scripts/updateme.sh | 33 +++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/scripts/launchme.sh b/scripts/launchme.sh index d7d7e1a..b977da7 100755 --- a/scripts/launchme.sh +++ b/scripts/launchme.sh @@ -120,7 +120,11 @@ success "Copied $AGENT_COUNT agents" # ── Copy references ───────────────────────────────────────────────────────── info "Creating .claude/references/ in vault..." mkdir -p "$VAULT_DIR/.claude/references" -cp "$REPO_DIR/references/"*.md "$VAULT_DIR/.claude/references/" +: > "$VAULT_DIR/.claude/references/.core-manifest" +for ref in "$REPO_DIR/references/"*.md; do + cp "$ref" "$VAULT_DIR/.claude/references/" + basename "$ref" >> "$VAULT_DIR/.claude/references/.core-manifest" +done success "Copied references" # ── Generate and copy skills (for Cowork/Desktop) ─────────────────────────── diff --git a/scripts/updateme.sh b/scripts/updateme.sh index bf56d67..87f4f0b 100755 --- a/scripts/updateme.sh +++ b/scripts/updateme.sh @@ -113,25 +113,20 @@ for agent in "$REPO_DIR/agents/"*.md; do fi done -# ── Update references ─────────────────────────────────────────────────────── -REF_COUNT=0 -mkdir -p "$VAULT_DIR/.claude/references" -for ref in "$REPO_DIR/references/"*.md; do - name="$(basename "$ref")" - if ! diff -q "$ref" "$VAULT_DIR/.claude/references/$name" >/dev/null 2>&1; then - cp "$ref" "$VAULT_DIR/.claude/references/" - info "Updated reference: $name" - REF_COUNT=$((REF_COUNT + 1)) - fi -done - # ── Deprecate removed references ────────────────────────────────────────── +# Read the old manifest before rewriting, same logic as agents. +REF_MANIFEST="$VAULT_DIR/.claude/references/.core-manifest" for vault_ref in "$VAULT_DIR/.claude/references/"*.md; do [[ -f "$vault_ref" ]] || continue name="$(basename "$vault_ref")" [[ -f "$REPO_DIR/references/$name" ]] && continue [[ "$name" == *"-DEPRECATED"* ]] && continue + # Skip user-created references: only deprecate if listed in the manifest + if [[ -f "$REF_MANIFEST" ]] && ! grep -qxF "$name" "$REF_MANIFEST"; then + continue + fi deprecated_name="${name%.md}-DEPRECATED.md" + [[ -f "$VAULT_DIR/.claude/references/$deprecated_name" ]] && continue mv "$vault_ref" "$VAULT_DIR/.claude/references/$deprecated_name" { echo "########"; echo "DEPRECATED DO NOT USE"; echo "########"; echo ""; cat "$VAULT_DIR/.claude/references/$deprecated_name"; } > "$VAULT_DIR/.claude/references/$deprecated_name.tmp" mv "$VAULT_DIR/.claude/references/$deprecated_name.tmp" "$VAULT_DIR/.claude/references/$deprecated_name" @@ -139,6 +134,20 @@ for vault_ref in "$VAULT_DIR/.claude/references/"*.md; do DEPRECATED_COUNT=$((DEPRECATED_COUNT + 1)) done +# ── Update references and rewrite manifest ──────────────────────────────── +REF_COUNT=0 +mkdir -p "$VAULT_DIR/.claude/references" +: > "$VAULT_DIR/.claude/references/.core-manifest" +for ref in "$REPO_DIR/references/"*.md; do + name="$(basename "$ref")" + basename "$ref" >> "$VAULT_DIR/.claude/references/.core-manifest" + if ! diff -q "$ref" "$VAULT_DIR/.claude/references/$name" >/dev/null 2>&1; then + cp "$ref" "$VAULT_DIR/.claude/references/" + info "Updated reference: $name" + REF_COUNT=$((REF_COUNT + 1)) + fi +done + # ── Regenerate and update skills ─────────────────────────────────────────── SKILL_COUNT=0 if command -v python3 >/dev/null 2>&1 && [[ -f "$REPO_DIR/scripts/generate-skills.py" ]]; then