Skip to content

skilldrop·docs·Reference

Updates and the install ledger

What outdated, update, diff and doctor compare and decide — the ledger file, how edited files become .upstream, every update flag, and the edge cases.

This page lists the rules behind outdated, update, diff and doctor. For the task itself, see Upgrade installed skills. Loops are updated the same way as skills.

The ledger

Each install directory holds a ledger, .skilldrop.json. When you install, it records:

outdated and update compare the ledger against the catalogue. After an update, the ledger records the new version and the new hashes.

What outdated reports

outdated compares the version in your ledger with the latest in the catalogue. Changes nothing.

A catalogue can change a skill's files without bumping its version. The version check alone would never see that, so outdated compares the files too:

example-skill: 1 file(s) changed in 'https://github.com/acme/skills' without a version bump (SKILL.md)

--json prints one JSON object on stdout and nothing else, for scripts and CI.

What update does to each file

update re-copies every skill or loop whose version differs.

Your copyCatalogue copyResult
Unedited (hash matches the ledger)ChangedReplaced with the new version
EditedChangedKept; the new version is written beside it as <file>.upstream
EditedUnchangedLeft alone; no .upstream is written
UneditedRemovedDeleted
EditedRemovedKept, and named in the output

A kept edit is reported like this:

updated runbook-generator 0.1.0 -> 0.2.0 (bundled)
  kept your edits in SKILL.md — new version at SKILL.md.upstream

Merge what you want from SKILL.md.upstream into SKILL.md, then delete the .upstream file.

Hook wiring is left in place.

Edge cases

Flags

FlagApplies toWhat it does
--dry-runupdatePrints every decision update would make; writes nothing
--changedupdateAlso takes files changed upstream under the same version
--forceupdateOverwrites every file, including ones you edited
--yesupdate --forceSkips the confirmation; scripts and CI are never asked
--statdiffThe file list only, no line-level diff
--jsonoutdated, doctorOne JSON object on stdout, nothing else
--project, --ide <name>, --dest <dir>, --localall fourThe install target; pass the same one you installed with

--force at a terminal lists the edited files first and asks before overwriting them.

What diff shows

skilldrop diff <name> compares your copy of a skill or loop with the catalogue's, file by file. An installed loop is two files, SKILL.md (the catalogue's LOOP.md) and loop.json. It marks each changed file as your edit, a catalogue change, or both, then shows the line-level diff when git is on your PATH.

What doctor checks

doctor compares the install directory with its ledger and reports:

Each finding comes with the command that fixes it. doctor itself changes nothing.

Edit this page on GitHub · View source