Repository navigation
feat(cli): installer options, help, and error-message fixes - #74
Merged
Merged
Conversation
vchamarthi
requested review from
benjaminum,
napetrov and
xaleryb
as code owners
October 23, 2026 03:07
…rget with --dir show now refuses unknown options and extra skill names, and prints name, description, source and files as JSON with --json. verify --all-problems lists every drifted file instead of the first four. install and verify check --target even when --dir overrides the location.
Four new test files called node unconditionally, so without node the suite raised 18 FileNotFoundError errors instead of skipping, contrary to the workflow comment. They now carry the same skipIf as the others. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
The only dry-run check used one name, so dropping dryRun from the multi-name loop survived every test and step while writing the whole catalog. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
uninstall was the one command without rejectUnknownOptions and read only its first name, so 'uninstall X --dry-run' deleted X and 'uninstall a b' removed a alone, both with exit 0. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
uninstall checked only for <root>/<name>/SKILL.md, so a user's own skill or another hub's (my-notes) was deleted with exit 0, despite the JSDoc's promise. It now resolves the name through skillDir first. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
verify read only its first name, so 'verify linux-perf xpu-discover' checked one skill and exited 0 even if the other had drifted, and a name next to --all was dropped without a word. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
The catalog check now refuses the old not-a-skill case first, so no CI case reached the SKILL.md guard: deleting it left the step green. A catalog name with no SKILL.md under it covers that branch again. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
Contributor
|
Ran on the head: the unit tests with and without node on PATH, every
Your call: with the catalog check, a skill later dropped from the catalog can no longer be removed with |
uninstall takes catalog names only, so a skill dropped from the catalog after it was installed could not be removed. --force skips only that check; the SKILL.md guard, the name check and the root check still apply. Without it the error names --force. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
Contributor
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Small fixes and additions to
bin/intel-skills.mjs, the installer. All local, no new dependencies, no network.New
list --json(whole catalog, descriptions not cut at 100 chars),list --imported/--owninstall --dry-run,install <a> <b> ...(several names; each attempted, failures listed, exit 1 if any failed)uninstall <skill> --target|--dir(removes only<root>/<name>, and only if it holds aSKILL.md)show <skill> --files(exactly whatinstallwould write),show <skill> --json(name, description, source, files)verify <skill> --target|--dir(resolves the directoryinstallwrote),verify --all,verify --all-problems(every drifted file, not the first four)--version/-vFixed
install/verifyaccept flags before the skill name--forseused to be dropped silently;install <skill> --allused to install the whole catalog)showwith no name prints usage instead ofinvalid skill name: undefined--targetis an error even when--diris given (it used to be ignored)showrejects unknown options and extra skill names--help/-hafter any subcommand prints usage and exits 0verify --path <file>saysnot a directoryinstead of rawENOTDIRlistno longer shows YAML quotes around four descriptionsChecklist
descriptioncheck: N/A, no skill text changed.python3 tools/validate_skills.pypasses locally.Evidence
5fdf63epython3 -m unittest discover -s tools/tests -p 'test_cli_*.py': 47 tests, OK on Python 3.11 and 3.15. They skip themselves without node.verify linux-perf --target claude-code,install --dry-run,uninstall,show --files,list --json,--version,install --helpall print usage or ignore the flag.install --all --dir D && verify --all --path Dprints33/33 verified. A bad name ininstall no-such-skill linux-perfstill installslinux-perf, reports the failure, exits 1.validate.ymlgets steps for list--json/filters,show --files,uninstall, several names, and the unittest suite (test_cli_*.py).Blast radius
bin/intel-skills.mjs,README.md(usage lines),validate.yml, newtools/tests/test_cli_*.py. Existing invocations (install <skill> --target T,verify <skill> --path P, plainlist/show) are unchanged.