[Bug] Bulk `sk update` reports Updated:0 with ghost entries while individual `sk update <name>` works

Aperta
#128 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
node.js, typescript
Ambito
cli

Direzione di ricerca

Start by comparing the bulk skillkit update entry point with the individual-skill update path, then trace how each bulk skill list is assembled and inspect the lock files named in the report. Reproduce with a small set of installed skills before investigating the larger environment. Done means bulk updates match individual updates and visit only skills with existing .skillkit.json metadata, with regression tests covering both behaviors.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

skillkit update (without arguments) consistently reports Updated: 0, Skipped: N, Failed: 0 for all skills, with messages like no SKILL.md in source (for managed skills) or no metadata, reinstall needed (for skills that no longer exist on disk).

However, running skillkit update <skill-name> on the same skills works perfectly and reports no changes detected.

Environment

  • skillkit: 1.24.0
  • Node: v24.14.0
  • macOS: 26.5
  • Shell: fish

Reproduction

Setup: ~94 skills installed via skillkit install <owner/repo> --all --global --force, all with .skillkit.json metadata in ~/.claude/skills/<name>/.

# 1. Bulk update — all fail
$ skillkit update
Skipping xlsx (no SKILL.md in source)
Skipping canvas-design (no SKILL.md in source)
# ... 78 similar lines
Updated: 0, Skipped: 110, Failed: 0

# 2. Same skills, individually — all succeed
$ skillkit update xlsx
xlsx: no changes detected
Updated: 0, Skipped: 1, Failed: 0

$ skillkit update canvas-design
canvas-design: no changes detected
Updated: 0, Skipped: 1, Failed: 0

# 3. Loop confirms: 78/78 OK individually
$ for d in ~/.claude/skills/*/; do
    name=$(basename "$d")
    [ -f "$d/.skillkit.json" ] && skillkit update "$name" 2>&1 | grep "no changes"
  done
# 78 lines of "no changes detected"

Additional symptom: ghost entries

The bulk run also iterates over 110 skills when only ~94 exist on disk. The extras include names like imagegen, openai-docs, PowerPoint, Excel, plugin-creator, skill-installer — none of which exist anywhere under ~/.claude/skills/, ~/.agents/skills/, the project's .claude/skills/, the npx-skills lock (~/.agents/.skill-lock.json), or the skillkit lock (~/.skillkit/lock.json).

Things tried that did not clear the ghost list:

  • mv ~/.skillkit/marketplace/ <trash> (marketplace cache)
  • Removing ghost entries from ~/.agents/.skill-lock.json
  • Fixing wrong paths in ~/.skillkit/lock.json
  • Removing stale project-local .claude/skills/

The ghost entries appear to come from some runtime/in-memory source I couldn't trace via grep -r.

Expected behavior

skillkit update should iterate only over skills with .skillkit.json metadata on disk and produce the same per-skill outcome as skillkit update <name>.

Workaround

Manual loop with individual updates works fine:

for d in ~/.claude/skills/*/; do
  name=$(basename "$d")
  [ -f "$d/.skillkit.json" ] && skillkit update "$name"
done

Happy to provide more debug info (lock files, env, etc.) if useful.

Lingua principale
TypeScript
Stelle
1.6k
Fork
156
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di rohitg00/skillkit

Tutte le issue di rohitg00/skillkit

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.