Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
eaa7dac
feat(catalog): check bundle links, descriptions and mirror drift
napetrov Oct 31, 2026
fffcdcf
fix(catalog): a link target the OS refuses is a missing link, not a c…
napetrov Oct 31, 2026
1e58aa7
Address review: bundle links skip URIs and read reference and angle-b…
napetrov Oct 31, 2026
cae82c0
Address review: parse reference definitions and <...> targets as Comm…
napetrov Oct 31, 2026
8c07f95
test(reference): pin the shared regex limit with a fake clock, not wa…
napetrov Nov 1, 2026
ae8cad9
test(reference): keep the shared-limit comment to two lines
napetrov Nov 1, 2026
3f40580
Compare only skills that share a word in the near-duplicate pass
antonwolfy Nov 1, 2026
e1afc3c
Pin the near-duplicate skips and the 0.5 overlap threshold in tests
antonwolfy Nov 1, 2026
9a119f0
Merge remote-tracking branch 'intel/main' into fix/skill-gap-W9
napetrov Nov 1, 2026
e4dc404
docs(changelog): qualify the exit-code note for spec and load errors
napetrov Nov 1, 2026
3b270ea
fix(catalog): read dotted URI schemes, template variables, root skill…
napetrov Nov 1, 2026
e759742
style(catalog): fit the URI scheme comment in two lines
napetrov Nov 1, 2026
99bbe67
fix(catalog): read a line or symbol suffix as part of the file name
napetrov Nov 1, 2026
782412c
test(catalog): pin range and multi-colon suffixes of missing file links
antonwolfy Nov 1, 2026
f5253d4
test(catalog): cover root skills of two checkouts in drift checks
antonwolfy Nov 1, 2026
2a6a8ca
fix(catalog): read link targets, definitions and fences as CommonMark…
napetrov Nov 1, 2026
e6a18b3
Make the separator in REF_DEF_RE unambiguous
antonwolfy Nov 1, 2026
48c8307
Cap the indent of a code fence at three spaces
antonwolfy Nov 1, 2026
21c4767
Test link titles, padded targets and fence lookalikes
antonwolfy Nov 1, 2026
625632b
fix(catalog): trigger phrases and link queries match whole words and …
napetrov Nov 2, 2026
219e4cf
fix(catalog): name the other checkout in mirror-drift and near-duplic…
napetrov Nov 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
### Added

- **`catalog scan` checks each skill's bundle and description, and detects drifted mirrors** —
a relative Markdown link in `SKILL.md` to a file that does not exist is a `warn`
(`link-missing`), and says so when the file exists from the catalog root instead (a wrong
base). A link or `../` code span that reaches a file outside the skill directory is a `warn`
(`link-escapes-skill`, `path-escapes-skill`): it breaks when the skill is installed alone.
A description with no "when" clause is a `warn` (`description-no-when`), as is one
whose words overlap another skill's by at least half (`description-near-duplicate`). Two
skills in different paths with the same directory name and different `SKILL.md` text are
a `warn` on both (`mirror-drift`), naming the other copies. Links inside code fences, URLs,
anchors, and code spans that name no file are not checked. Skills with
`disable-model-invocation: true` are exempt from the description checks. Warnings never
change the exit code; a spec `error` fails only with `--strict`, while a load error always fails.
13 changes: 13 additions & 0 deletions dokimi/docs/external-content.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,19 @@ offers; each other copy is the `warn` and names it. Warnings never change
the exit code. `disable-model-invocation: true` is printed as a `note`, because
the model is never offered that skill.

The scan also checks the bundle and the description. A relative Markdown link
to a file the skill does not have is a `warn` (`link-missing`), and says when the
file exists from the catalog root instead. Example links such as `[Title](URL)`
are common, so `--strict` does not fail on them. A link, or a `../` code span,
that reaches a file outside the skill directory is a `warn`
(`link-escapes-skill`, `path-escapes-skill`), since it breaks when the skill is
installed alone. A description with no "when" clause (`use when ...`, `when deploying ...`) is a `warn`
(`description-no-when`), and so is one that overlaps another skill's by at least
half (`description-near-duplicate`). Two skills in different paths with the same
directory name and different `SKILL.md` text are a `warn` on both
(`mirror-drift`), naming the other copies. Skills with
`disable-model-invocation: true` are exempt from the description checks.

Frontmatter that is not valid YAML (a bare colon in `description:`, say) stops
the skill from loading, since the loader reads it as having no description. The
scan reports that as a `frontmatter-parse` error carrying the YAML message, and
Expand Down
Loading