gh-skill-diff is a GitHub CLI extension that lists source repositories and skills available from them but not installed locally from that source repository.
The installed-skill comparison uses a source repository and skill name pair. GitHub.com source URLs and repository arguments are normalized to lowercase owner/repository names. A same-named skill installed from another source is missing, while version, contents, and install-path differences for the same source and skill name are not compared. Each missing skill record includes the source repository that advertises it.
gh skill install can add a skill display label such as [plugins] followed by a space to its available-skill listing. gh-skill-diff removes the known [plugins], [root], and [hidden-dir] labels and their following spaces before it compares or writes skill names. Ignore-file entries must use the resulting exact skill name.
- GitHub CLI 2.94.0 or later
gh extension install chalkygames123/gh-skill-diffTo upgrade the extension:
gh extension upgrade skill-diffgh skill-diff [options] [owner/repository]
Options:
--dir PATH Local skills directory (default: ~/.agents/skills)
--ignore-file PATH Ignore file (default: $XDG_CONFIG_HOME/gh-skill-diff/ignore)
-h, --help Show this help
Flags must precede the optional repository argument.
Compare installed skills with one repository:
gh skill-diff owner/repositoryRepository arguments must use the owner/repository form. Names are normalized to lowercase; URLs, .git suffixes, and additional path components are not supported.
When the repository is omitted, the extension reads the source repositories recorded by installed skills and queries each unique GitHub.com repository:
gh skill-diffUse a different skills directory or ignore file:
gh skill-diff --dir /path/to/skills --ignore-file /path/to/ignore owner/repositoryThe default skills directory is the absolute path <user-home>/.agents/skills resolved through the operating system.
The default ignore file is $XDG_CONFIG_HOME/gh-skill-diff/ignore. When XDG_CONFIG_HOME is unset, it is $HOME/.config/gh-skill-diff/ignore.
Explicit --dir and --ignore-file values are used as provided. The extension does not expand ~; a shell may expand an unquoted ~ before invocation.
A missing default ignore file is treated as empty. A missing explicitly selected ignore file is an error.
Each non-comment, non-blank line contains a source repository and exact skill name separated by one tab: owner/repository<TAB>skill-name. The source repository must use the owner/repository form and is normalized to lowercase. Surrounding whitespace on the line and fields is ignored. Glob and regular expression patterns are not supported.
An entry ignores that skill only from its specified source repository; it does not suppress the same skill from another source. Duplicate entries and entries for repositories not selected in the current run are allowed. Legacy name-only entries and other malformed lines are errors that identify the line number.
# Available but intentionally not installed
owner/repository<TAB>experimental-skill
Missing skill records are written to standard output in source repository then skill name order, one headerless TSV record per line. A record uses the exact skill name and never includes a skill display label:
owner/repository<TAB>missing-skill
When a missing skill is available from multiple source repositories, each source repository produces a record. An empty difference produces no output. Results are emitted only after every source repository succeeds, so failures never produce partial output.
0: comparison succeeded, including an empty difference1: internal, filesystem, JSON, or upstream output format error2: usage error, including no explicit or discoverable repository- Any other nonzero code: preserved from a failed child
ghcommand
Diagnostics are written to standard error.
Automatic source discovery supports GitHub.com repository URLs.
Releases include all default platforms produced by gh-extension-precompile. Behavioral CI runs on Ubuntu and macOS.
MIT