← ClaudeAtlas

sync-check-updateslisted

比對本機已安裝的 skills(skills-lock.json)與各自上游來源,找出有更新但尚未同步的項目。觸發時機:使用者詢問「有沒有更新」「skills 有沒有落後」「check-updates」「上游有沒有新版」等語意時使用。
lllloo/ai-config-sync · ★ 0 · Data & Documents · score 62
Install: claude install-skill lllloo/ai-config-sync
比對本機 skill 檔與上游來源,找出**已安裝但有更新**的 skills。 > agents 已不在同步範圍(`everything-claude-code` agent 庫已整批移除),本 skill 只檢查 skills。 ## 檢查範圍 | 類別 | 本機位置 | 上游 | |---|---|---| | skills | `skills-lock.json` 各項 `source` | 各自上游 repo | `claude/skills/pen-design/`、`claude/commands/*.md`、`claude/CLAUDE.md`、`claude/settings.json` 為自維護內容,**不檢查**。 ## 步驟 ### 1. skills 檢查(真比對 SKILL.md blob SHA) **前提**:精確版本比對的是 `SKILL.md` 的 blob SHA。若 skill 的 `references/`、`scripts/`、`assets/` 有更動但 SKILL.md 沒改,此檢查會漏報——實務上影響不大,因為 SKILL.md 是主要入口。 **步驟**: 1. 讀 `skills-lock.json`,產出 `<name>\t<source>` 清單: ```bash node -e "const d=JSON.parse(require('fs').readFileSync('skills-lock.json','utf8'));for(const[k,v] of Object.entries(d.skills))console.log(k+'\t'+v.source);" ``` 2. 計算本機 `~/.claude/skills/<name>/SKILL.md` 的 blob SHA(若不存在標記 `NOT_INSTALLED`): ```bash for name in <names>; do f="$HOME/.claude/skills/$name/SKILL.md" if [ -f "$f" ]; then git hash-object "$f" else echo "NOT_INSTALLED" fi done ``` `git hash-object` 算出的是 git blob SHA,與 GitHub tree API 回傳的 `sha` 同源可直接比對。 3. 對每個**獨特的** source repo(同一 repo 可能被多個 skill 共用,合併呼叫避免浪費 API quota),抓一次 recursive tree: ```bash gh api "repos/<source>/git/trees/HEAD?recursive=1" \ --jq '.tree[] | select(.type=="blob" and (.path | endswith("SKILL.md"))) | "\(.path)\t\(.sha)"' ``` **注意**:用 `HEAD` 而非 `main`,因為有些 repo 的 default branch 是 `master`。若 404,fallback 用 `main`。 4. 對每個 `<name>`,在該 repo 的 SKILL.md