Agent skill

Upgrade

by heyitsnoah in heyitsnoah/claudesidian

Intelligently upgrade claudesidian with new features while preserving user customizations using AI-powered semantic analysis.

MITAuto-check: notesAgent Workflows

Install Upgrade

skills CLI
$ npx skills add heyitsnoah/claudesidian --skill upgrade -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install heyitsnoah/claudesidian upgrade --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/heyitsnoah/claudesidian.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/upgrade .claude/skills/upgrade && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
upgrade
GitHub stars
2.6k
Token cost
~2.8k tokens
SKILL.md length
964 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
MIT

At a glance

Intelligently upgrade claudesidian with new features while preserving user customizations using AI-powered semantic analysis.

  • Works in 8 steps: Version check → Backup → Fetch upstream → …
  • The user wants to upgrade claudesidian
  • SKILL.md covers Layout assumptions (READ FIRST), Process, Conflict resolution philosophy and Update categories, plus 4 more sections
  • Calls curl, git and uv

What it does

Upgrade is an agent skill from heyitsnoah/claudesidian. Intelligently upgrade claudesidian with new features while preserving user customizations using AI-powered semantic analysis. Use when the user wants to upgrade claudesidian, pull in upstream changes, or update their installation.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows. It works with Model Context Protocol. The licence is MIT.

When your agent uses it

  • The user wants to upgrade claudesidian
  • Pull in upstream changes
  • Update their installation

Example prompts

  • “/upgrade”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Read, Write, Edit, MultiEdit, Bash, WebFetch, Grep, Glob

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Version check
  2. Backup
  3. Fetch upstream
  4. Build upgrade checklist
  5. File-by-file review
  6. Symlink hygiene (skills only)
  7. Verification
  8. Final steps

What it can do on your machine

Read from SKILL.md and the folder at commit 6c56f35. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • MultiEdit
    • Bash
    • WebFetch
    • Grep
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • git
    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, git and uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Upgrade loads about 2.8k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 964 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, MultiEdit, Bash, WebFetch, Grep, Glob

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from heyitsnoah/claudesidian at commit 6c56f35, republished under its MIT licence (© heyitsnoah). 964 words, ~2,834 tokens.

Download SKILL.mdSave it as .claude/skills/upgrade/SKILL.md (or your agent's skills folder).
name
upgrade
description
Intelligently upgrade claudesidian with new features while preserving user customizations using AI-powered semantic analysis. Use when the user wants to upgrade claudesidian, pull in upstream changes, or update their installation.
allowed-tools
Read, Write, Edit, MultiEdit, Bash, WebFetch, Grep, Glob

Smart Upgrade

Pulls the latest claudesidian from GitHub and merges it into the user's vault, preserving customizations.

Layout assumptions (READ FIRST)

claudesidian stores skills under .agents/skills/<name>/SKILL.md as the canonical location. Symlinks live at .claude/skills/<name> and .pi/skills/<name> pointing back to canonical. Edit canonical, all consumers follow.

If the user is on a pre-conversion claudesidian (anything before the commands→skills migration) they will have .claude/commands/*.md instead and no .agents/skills/. Do not run a normal upgrade in that case — see "Migration from legacy layout" at the bottom of this file.

If the user's local repo has .agents/skills/ populated, proceed normally.

Process

1. Version check
  • Read current version from package.json
  • Fetch upstream version:
    bash
    CURRENT=$(grep '"version"' package.json | head -1 | cut -d'"' -f4)
    LATEST=$(curl -s https://raw.githubusercontent.com/heyitsnoah/claudesidian/main/package.json | grep '"version"' | head -1 | cut -d'"' -f4)
    if [ "$CURRENT" = "$LATEST" ]; then
      echo "✅ Already on $CURRENT"
      exit 0
    fi
  • Detect layout: test -d .agents/skills && echo NEW || echo LEGACY. If LEGACY, jump to "Migration from legacy layout".
2. Backup
bash
BACKUP_DIR=".backup/upgrade-$(date +%Y-%m-%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r .agents .claude .pi .scripts package.json "$BACKUP_DIR/" 2>/dev/null
cp CHANGELOG.md README.md "$BACKUP_DIR/" 2>/dev/null || true
echo "✅ Backup created at $BACKUP_DIR"
3. Fetch upstream
bash
git clone --depth=1 --branch=main \
  https://github.com/heyitsnoah/claudesidian.git \
  .tmp/claudesidian-upgrade

The user's working repo stays disconnected from origin throughout — we only ever read from .tmp/.

4. Build upgrade checklist

System files we care about:

  • Skills: .agents/skills/<name>/SKILL.md (canonical) — also resources inside skill dirs (helper scripts, references).
  • Hooks: .claude/hooks/*.sh
  • Settings: .claude/settings.json
  • MCP servers: .claude/mcp-servers/*
  • Scripts: .scripts/*
  • Core: package.json, CHANGELOG.md, README.md

Files we never touch:

  • User content folders: 00_Inbox/, 01_Projects/, 02_Areas/, 03_Resources/, 04_Archive/, 05_Attachments/, 06_Metadata/ (except 06_Metadata/Templates/ if upstream changes them)
  • The user's CLAUDE.md
  • .obsidian/ (user's Obsidian settings)
  • vault-config.json
  • .mcp.json (contains API keys)
  • Anything in .git/

Build the checklist:

bash
# Skills that exist in both, or only upstream, or only local
diff -qr .agents/skills .tmp/claudesidian-upgrade/.agents/skills 2>/dev/null

# Hooks, settings, mcp-servers, scripts
diff -qr .claude/hooks .tmp/claudesidian-upgrade/.claude/hooks 2>/dev/null
diff -q .claude/settings.json .tmp/claudesidian-upgrade/.claude/settings.json 2>/dev/null
diff -qr .claude/mcp-servers .tmp/claudesidian-upgrade/.claude/mcp-servers 2>/dev/null
diff -qr .scripts .tmp/claudesidian-upgrade/.scripts 2>/dev/null

# Core files
diff -q package.json .tmp/claudesidian-upgrade/package.json
diff -q README.md .tmp/claudesidian-upgrade/README.md
diff -q CHANGELOG.md .tmp/claudesidian-upgrade/CHANGELOG.md

Write findings to .upgrade-checklist.md, grouped by category, with status markers [ ] pending, [x] updated, [-] skipped.

5. File-by-file review

Hard rules — do not skip:

  • Always show the diff before modifying anything.
  • Always wait for the user's choice. Never auto-pick.
  • Never use cp -f. Use cat src > dest for non-interactive overwrite.
  • Update .upgrade-checklist.md after every file.

For each file in the checklist:

  1. Show diff -u local upstream.
  2. Determine state:
    • No local edits, no upstream edits → mark [-] skipped, move on.
    • Upstream changed, no local edits → ask: apply / keep / view full diff.
    • Both changed (local customization) → ask: keep yours / take upstream / view full diff / AI-merge.
  3. Ask the user:
    File: <path> has updates.
    1. Apply update (take upstream)
    2. Keep your version
    3. View full diff
    4. AI-merge
    
    Choice (1/2/3/4):
    Wait for input. Do not auto-select.
  4. Apply the chosen action:
    bash
    # Option 1
    if [ -f ".tmp/claudesidian-upgrade/$path" ]; then
      mkdir -p "$(dirname "$path")"
      cat ".tmp/claudesidian-upgrade/$path" > "$path"
      echo "✅ Updated $path"
    fi
  5. Mark in checklist and continue.

After updating any skill in .agents/skills/<name>/, verify the symlinks in .claude/skills/<name> and .pi/skills/<name> still resolve:

bash
for name in $(ls .agents/skills); do
  for agent in claude pi; do
    link=".${agent}/skills/${name}"
    target="../../.agents/skills/${name}"
    mkdir -p ".${agent}/skills"
    if [ -L "$link" ]; then
      # Symlink exists — verify it points to the right place
      current="$(readlink "$link")"
      if [ "$current" != "$target" ]; then
        rm "$link"
        ln -s "$target" "$link"
        echo "✅ Repaired symlink $link (was → $current)"
      fi
    elif [ -e "$link" ]; then
      # Real file or directory at this path — do not trample user data
      echo "⚠️  $link exists as a real file/dir, not a symlink. Skipping."
      echo "    Manual fix: inspect, back up if needed, then rm and rerun."
    else
      # Nothing there — create
      ln -s "$target" "$link"
      echo "✅ Created symlink $link"
    fi
  done
done

The -L test is critical: a broken symlink (target missing) returns false from -e but true from -L, so checking -e alone would try to ln -s over the existing broken link and fail with "File exists". Conversely, a symlink pointing the wrong way would pass -e (because the wrong target still exists) and silently stay wrong. Always check -L first, then verify the target with readlink, then fall through to -e for real files, then create if nothing exists.

If upstream introduced a brand-new skill, this loop also creates its symlinks.

7. Verification

Re-run the diff commands from step 4. The only differences should be files the user explicitly chose to keep (marked [-] or [x] customized in the checklist). Anything still pending [ ] is a bug — report it and let the user decide whether to retry.

8. Final steps
  • Update package.json version to match upstream
  • rm -rf .tmp/claudesidian-upgrade
  • Save the final .upgrade-checklist.md to the backup dir for reference
  • Print a summary: updated count, skipped count, customized count

Conflict resolution philosophy

When a skill has both upstream and local edits, prefer AI-merge over "take upstream." The user's local edit usually represents an intentional preference (their voice, their workflow conventions). The upstream edit usually represents a new feature or bug fix. Almost always you can keep both.

Show your merge proposal as a concrete diff before applying. Don't paraphrase.

Update categories

Show full SKILL.md (458 more words)Show less
Auto-safe (low risk, default to "apply")
  • Brand-new skills upstream introduced (additive — just symlink in)
  • Hook script updates (.claude/hooks/*.sh) when local hasn't changed
  • package.json dependency bumps in dependencies / devDependencies (preserve user-added scripts in the scripts section)
  • CHANGELOG.md (always replace with upstream version)
  • New files in .scripts/
Needs review (always ask)
  • Skills the user has touched
  • .claude/settings.json (often has user-added hooks)
  • package.json scripts section
  • README.md
  • MCP server files
Never touch

See the "files we never touch" list in step 4.

Error handling

  • No internet → fail gracefully, suggest retry
  • GitHub rate limit → wait + retry once, then fail with the rate-limit reset time
  • Merge conflict during AI-merge → show both versions, ask user to pick
  • rm -rf .tmp/claudesidian-upgrade fails → leave it, warn the user

Rollback

The backup directory from step 2 is the rollback target. Manual rollback:

bash
cp -r .backup/upgrade-<timestamp>/.agents .
cp -r .backup/upgrade-<timestamp>/.claude .
cp .backup/upgrade-<timestamp>/package.json .
# etc.

Don't try to be clever with selective rollbacks — restore the whole snapshot.

Migration from legacy layout

If test -d .agents/skills returns false, the user is on a pre-conversion claudesidian. Their skills live in .claude/commands/*.md. A normal upgrade will not work — the diff will show every command as "removed locally" and every skill as "added upstream."

The migration path:

  1. Stop and explain. Tell the user their layout predates the commands→skills conversion and offer to migrate.

  2. Backup first (step 2 above, but include .claude/commands/).

  3. Move command files to skill dirs:

    bash
    mkdir -p .agents/skills
    for f in .claude/commands/*.md; do
      [ -f "$f" ] || continue
      name=$(basename "$f" .md)
      [ "$name" = "README" ] && continue
      mkdir -p ".agents/skills/$name"
      mv "$f" ".agents/skills/$name/SKILL.md"
    done
  4. Add name/description frontmatter to any file that lacks it. Use the add-frontmatter skill.

  5. Create symlinks for .claude/skills/ and .pi/skills/ (see step 6).

  6. Validate frontmatter. Use the quick_validate.py script bundled with the skill-creator skill in this repo:

    bash
    for d in .agents/skills/*/; do
      uv run --with pyyaml python \
        .agents/skills/skill-creator/scripts/quick_validate.py "$d"
    done

    This enforces the full skill schema (name, description, allowed-tools, compatibility, license, metadata) and will reject any file with extra or missing required keys.

    If uv is not installed or skill-creator is somehow missing, fall back to this minimal inline check that only verifies name and description are present:

    bash
    for f in .agents/skills/*/SKILL.md; do
      dir=$(basename "$(dirname "$f")")
      awk '
        BEGIN { in_fm=0; has_name=0; has_desc=0 }
        /^---$/ { in_fm++; next }
        in_fm==1 && /^name:/ { has_name=1 }
        in_fm==1 && /^description:/ { has_desc=1 }
        END {
          if (!has_name) print "  ✗ missing name"
          if (!has_desc) print "  ✗ missing description"
          if (has_name && has_desc) print "  ✓ ok"
        }
      ' "$f" | sed "s|^|  $dir: |"
    done
  7. Then run the normal upgrade flow to pull in any additional upstream changes.

This migration is one-time. After it runs successfully, future upgrades use the normal flow.

Selective upgrades

Common subset commands the user may ask for:

  • "Just update skills" → only diff .agents/skills/
  • "Just dependencies" → only update package.json deps
  • "Just hooks" → only diff .claude/hooks/

Treat these as filters on the checklist. Same review/confirm rules apply.

© heyitsnoah, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/upgrade of heyitsnoah/claudesidian.

Open the folder on GitHubat commit 6c56f35

Compare with similar skills

Upgrade next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Upgrade compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Upgrade this skillheyitsnoah/claudesidian2.6k—~2.8kAutomated safety check: NotesMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k5 repos~1.2kAutomated safety check: PassMIT
MCP Integration for Pluginsanthropics/claude-plugins-official38k11 repos~3.1kAutomated safety check: PassApache-2.0
MemPalace Memory SearchMemPalace/mempalace59k—~1.4kAutomated safety check: PassMIT
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 5 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    38k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • MemPalace Memory Search

    MemPalace/mempalace

    Mines project files and conversation exports into a local, searchable memory palace and recalls past work by semantic search through the mempalace CLI.

    59k GitHub stars~1.4k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Context Mode Output Sandbox

    mksglu/context-mode

    Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.

    26k GitHub stars~4.1k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from heyitsnoah/claudesidian

All 17 skills in this repo
  • JSON Canvas

    heyitsnoah/claudesidian

    Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections.

    2.6k GitHub starsUsed in 18 repos~3.5k tokens
    Auto-check passed
  • Add Frontmatter

    heyitsnoah/claudesidian

    Add or update YAML frontmatter properties to enhance Obsidian note organization.

    2.6k GitHub stars~951 tokensUpdated 6 mo ago
    Auto-check passed
  • De AI Ify

    heyitsnoah/claudesidian

    Remove AI-generated jargon and restore human voice to text. An agent skill from heyitsnoah/claudesidian.

    2.6k GitHub stars~526 tokensUpdated 6 mo ago
    Auto-check passed
  • Download Attachment

    heyitsnoah/claudesidian

    Download files from URLs to the Obsidian attachments folder and organize them with descriptive names.

    2.6k GitHub stars~836 tokensUpdated 6 mo ago
    Auto-check passed
  • Git Worktrees

    heyitsnoah/claudesidian

    Work with git worktrees for isolated parallel development. An agent skill from heyitsnoah/claudesidian.

    2.6k GitHub stars~1.1k tokensUpdated 6 mo ago
    Auto-check: notes
  • Install Claudesidian Command

    heyitsnoah/claudesidian

    Install claudesidian shell command to launch Claude Code from anywhere.

    2.6k GitHub stars~2.7k tokensUpdated 6 mo ago
    Auto-check passed

Categories

Questions about Upgrade

What does Upgrade do?

Intelligently upgrade claudesidian with new features while preserving user customizations using AI-powered semantic analysis. Upgrade is an agent skill from heyitsnoah/claudesidian. Intelligently upgrade claudesidian with new features while preserving user customizations using AI-powered semantic analysis.

When should I use Upgrade?

Upgrade fits situations like: the user wants to upgrade claudesidian; pull in upstream changes; update their installation.

How do I install Upgrade in Claude Code?

Run `npx skills add heyitsnoah/claudesidian --skill upgrade -a claude-code`. Or copy the skill folder (.agents/skills/upgrade in heyitsnoah/claudesidian) into .claude/skills/upgrade in your project. Claude Code loads it when a task matches its description.

How do I install Upgrade in Codex?

Run `npx skills add heyitsnoah/claudesidian --skill upgrade -a codex`. Or copy the skill folder (.agents/skills/upgrade in heyitsnoah/claudesidian) into .agents/skills/upgrade in your project. Codex loads it when a task matches its description.

Can I use Upgrade in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add heyitsnoah/claudesidian --skill upgrade -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upgrade, .gemini/skills/upgrade, .github/skills/upgrade and .opencode/skills/upgrade in your project.

What does Upgrade need to run?

Going by SKILL.md and its folder, Upgrade needs the command-line tools its instructions call (curl, git and uv). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, MultiEdit, Bash, WebFetch, Grep, Glob.

Does Upgrade access the network?

SKILL.md contains no URLs. Its commands use curl, git and uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Upgrade safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Upgrade use?

Upgrade is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Upgrade use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Upgrade?

Skills that share tags, products or a category with Upgrade: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and MemPalace Memory Search (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Upgrade?

heyitsnoah (a GitHub user) maintains it in heyitsnoah/claudesidian, which has 2,598 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on April 11, 2026.

Source: heyitsnoah/claudesidian on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.