From 4f495b1fb661b731973e0c3b927c7f2d7039ffb0 Mon Sep 17 00:00:00 2001 From: gnekt Date: Mon, 23 Mar 2026 22:35:40 +0100 Subject: [PATCH] Fix updateme.sh: deprecate stale agents before rewriting manifest The manifest was being truncated and rewritten before the deprecation loop ran, so removed core agents were no longer in the manifest and got skipped as "custom". Now: read old manifest -> deprecate -> copy new agents -> rewrite manifest. --- scripts/updateme.sh | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/scripts/updateme.sh b/scripts/updateme.sh index 43fefd5..2f5bb54 100755 --- a/scripts/updateme.sh +++ b/scripts/updateme.sh @@ -61,29 +61,10 @@ if [[ ! "$UPDATE_ANSWER" =~ ^[Cc]$ ]]; then fi echo "" -# ── Update agents ─────────────────────────────────────────────────────────── -AGENT_COUNT=0 -: > "$VAULT_DIR/.claude/agents/.core-manifest" -for agent in "$REPO_DIR/agents/"*.md; do - name="$(basename "$agent")" - basename "$agent" >> "$VAULT_DIR/.claude/agents/.core-manifest" - if [[ -f "$VAULT_DIR/.claude/agents/$name" ]]; then - if ! diff -q "$agent" "$VAULT_DIR/.claude/agents/$name" >/dev/null 2>&1; then - cp "$agent" "$VAULT_DIR/.claude/agents/" - info "Updated $name" - AGENT_COUNT=$((AGENT_COUNT + 1)) - fi - else - cp "$agent" "$VAULT_DIR/.claude/agents/" - info "Added $name (new agent)" - AGENT_COUNT=$((AGENT_COUNT + 1)) - fi -done - # ── Deprecate removed core agents ───────────────────────────────────────── -# Only deprecate agents that were previously installed as core agents. -# The .core-manifest file (written by launchme/updateme) records which files -# are core. Custom agents are never in the manifest, so they're never touched. +# Read the OLD manifest first (before rewriting it) so we know which files +# were previously installed as core. Agents removed from the repo will still +# be in the old manifest and can be correctly deprecated. MANIFEST="$VAULT_DIR/.claude/agents/.core-manifest" DEPRECATED_COUNT=0 for vault_agent in "$VAULT_DIR/.claude/agents/"*.md; do @@ -112,6 +93,25 @@ for vault_agent in "$VAULT_DIR/.claude/agents/"*.md; do fi done +# ── Update agents and rewrite manifest ──────────────────────────────────── +AGENT_COUNT=0 +: > "$VAULT_DIR/.claude/agents/.core-manifest" +for agent in "$REPO_DIR/agents/"*.md; do + name="$(basename "$agent")" + basename "$agent" >> "$VAULT_DIR/.claude/agents/.core-manifest" + if [[ -f "$VAULT_DIR/.claude/agents/$name" ]]; then + if ! diff -q "$agent" "$VAULT_DIR/.claude/agents/$name" >/dev/null 2>&1; then + cp "$agent" "$VAULT_DIR/.claude/agents/" + info "Updated $name" + AGENT_COUNT=$((AGENT_COUNT + 1)) + fi + else + cp "$agent" "$VAULT_DIR/.claude/agents/" + info "Added $name (new agent)" + AGENT_COUNT=$((AGENT_COUNT + 1)) + fi +done + # ── Update references ─────────────────────────────────────────────────────── REF_COUNT=0 mkdir -p "$VAULT_DIR/.claude/references"