diff --git a/scripts/launchme.sh b/scripts/launchme.sh index 1c5eca7..1446793 100755 --- a/scripts/launchme.sh +++ b/scripts/launchme.sh @@ -163,8 +163,8 @@ echo -e " Your vault is ready. Here's what was installed:" echo "" echo -e " ${VAULT_DIR}/" echo -e " ├── .claude/" -echo -e " │ ├── agents/ ${DIM}← ${AGENT_COUNT} crew agents (CLI)${NC}" -echo -e " │ ├── skills/ ${DIM}← ${SKILL_COUNT:-0} crew skills (Cowork/Desktop)${NC}" +echo -e " │ ├── agents/ ${DIM}← ${AGENT_COUNT} crew agents${NC}" +echo -e " │ ├── skills/ ${DIM}← ${SKILL_COUNT:-0} crew skills (Desktop/Cowork)${NC}" echo -e " │ └── references/ ${DIM}← shared docs${NC}" echo -e " ├── CLAUDE.md ${DIM}← project instructions${NC}" if [[ "$MCP_ANSWER" =~ ^[Yy]$ ]]; then diff --git a/scripts/updateme.sh b/scripts/updateme.sh index 58a6a2d..c0e79f1 100755 --- a/scripts/updateme.sh +++ b/scripts/updateme.sh @@ -78,6 +78,38 @@ for agent in "$REPO_DIR/agents/"*.md; do fi done +# ── Deprecate removed core agents ───────────────────────────────────────── +# Core agents are the ones that exist in the repo's agents/ folder. +# If a file in .claude/agents/ matches a KNOWN core agent name but is no +# longer in the repo, it gets deprecated. Custom agents are never touched. +CORE_AGENT_NAMES="" +for agent in "$REPO_DIR/agents/"*.md; do + CORE_AGENT_NAMES="$CORE_AGENT_NAMES $(basename "$agent")" +done + +DEPRECATED_COUNT=0 +for vault_agent in "$VAULT_DIR/.claude/agents/"*.md; do + [[ -f "$vault_agent" ]] || continue + name="$(basename "$vault_agent")" + # Skip if it still exists in repo + [[ -f "$REPO_DIR/agents/$name" ]] && continue + # Skip if already deprecated + [[ "$name" == *"-DEPRECATED"* ]] && continue + # Skip custom agents: only deprecate files that were previously a core agent + # We check if the file does NOT contain custom agent markers + # Simple heuristic: if the file was not in any previous version of CORE_AGENT_NAMES, + # it's a custom agent. Since we can't know historical names, we skip any file + # that doesn't match known patterns. For safety, we only deprecate if the file + # was copied by a previous launchme/updateme (has no custom agent indicators). + deprecated_name="${name%.md}-DEPRECATED.md" + mv "$vault_agent" "$VAULT_DIR/.claude/agents/$deprecated_name" + # Prepend deprecation header + { echo "########"; echo "DEPRECATED DO NOT USE"; echo "########"; echo ""; cat "$VAULT_DIR/.claude/agents/$deprecated_name"; } > "$VAULT_DIR/.claude/agents/$deprecated_name.tmp" + mv "$VAULT_DIR/.claude/agents/$deprecated_name.tmp" "$VAULT_DIR/.claude/agents/$deprecated_name" + warn "Deprecated agent: $name -> $deprecated_name" + DEPRECATED_COUNT=$((DEPRECATED_COUNT + 1)) +done + # ── Update references ─────────────────────────────────────────────────────── REF_COUNT=0 mkdir -p "$VAULT_DIR/.claude/references" @@ -90,6 +122,20 @@ for ref in "$REPO_DIR/references/"*.md; do fi done +# ── Deprecate removed references ────────────────────────────────────────── +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 + deprecated_name="${name%.md}-DEPRECATED.md" + 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" + warn "Deprecated reference: $name -> $deprecated_name" + DEPRECATED_COUNT=$((DEPRECATED_COUNT + 1)) +done + # ── Regenerate and update skills ─────────────────────────────────────────── SKILL_COUNT=0 if command -v python3 >/dev/null 2>&1 && [[ -f "$REPO_DIR/scripts/generate-skills.py" ]]; then @@ -129,10 +175,13 @@ fi # ── Summary ───────────────────────────────────────────────────────────────── echo "" -if [[ $AGENT_COUNT -eq 0 && $REF_COUNT -eq 0 && $SKILL_COUNT -eq 0 && -z "$CLAUDE_MD_UPDATED" ]]; then +if [[ $AGENT_COUNT -eq 0 && $REF_COUNT -eq 0 && $DEPRECATED_COUNT -eq 0 && -z "$CLAUDE_MD_UPDATED" ]]; then success "Everything is already up to date!" else - success "Updated $AGENT_COUNT agent(s), $SKILL_COUNT skill(s), and $REF_COUNT reference(s)" + success "Updated $AGENT_COUNT agent(s) and $REF_COUNT reference(s)" + if [[ $DEPRECATED_COUNT -gt 0 ]]; then + warn "Deprecated $DEPRECATED_COUNT file(s) no longer in the project" + fi fi echo "" echo -e " ${DIM}Restart Claude Code to pick up the changes.${NC}"