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.
This commit is contained in:
gnekt
2026-03-23 22:39:33 +01:00
parent 4dfa03b9e2
commit f86a8560eb
2 changed files with 26 additions and 13 deletions

View File

@@ -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) ───────────────────────────

View File

@@ -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