Repository navigation
feat(catalog): libraries name the skills that cover them - #8
Merged
Merged
Conversation
- schema: optional libraries[].skills (unique kebab-case names, at least one) - build-catalog.py fails when a listed skill has no SKILL.md, naming the plugin, the library and the skill; docs/catalog.md shows the skills - rf-web, rf-api, rf-mobile and rf-desktop name their skills per library - passed through unchanged to catalog.json, bundle.catalog() and fetch() - CONTRIBUTING, plugin template, installer README and changelog Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHEmzL3ErAhGQykKWDx2wP
5 tasks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHEmzL3ErAhGQykKWDx2wP
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.
Closes #7.
Summary
Each library in a plugin's
catalog.yamlcan now name the skills of that plugin that cover it. A tool that detects one library in a project can then pick its skill instead of every skill of the plugin.Schema:
libraries[].skillsis optional: unique kebab-case names, at least one. Other unknown keys of a library entry are still rejected, for exampleskill:in the singular.Check:
build-catalog.pyfails when a listed skill has noplugins/<plugin>/skills/<skill>/SKILL.md, for examplerf-api: library RequestsLibrary lists skill rf-requests-auth, but plugins/rf-api/skills/rf-requests-auth/SKILL.md doesn't exist. It checks removed plugins' manifests too.Data:
rf-browser, SeleniumLibrary →rf-seleniumrf-requests, RESTinstance →rf-restinstancerf-appiumrf-platynuiOutput:
docs/catalog.mdshows the skills next to each library.catalog.json,bundle.catalog()andbundle.fetch()snapshots (Public Python API for the bundled catalogue and skill folders (for rf-mcp) #5) carry the field unchanged, with no installer code change.No format bump:
CATALOG_FORMATstays1, because the field is new and optional. A library withoutskillsgets no key, which means every skill of the plugin covers it.Docs:
The OpenSpec change
catalog-library-skillsis in this PR. It adds a requirement toplugin-catalogue.Test plan
tests/test_catalog.py, 45 passed. It covers:--checkfailure;docs/catalog.mdtext, and that it goes stale whenskillschanges;tests/installer, 276 passed:bundle.catalog()carriesskills;fetch()snapshot keepsskillson one library and adds no key to another.pytest tests --ignore=tests/eval(832 passed),build-catalog.py --check,check-drift.sh, docs voicecheck-template.sh: passes, apart from a hook test that fails locally onmaintoo and passes in CI. While running it I found that the wheel test from feat(installer): public Python API for the bundled catalogue and skill folders #6 expected exactly the five plugins; it now allows extra ones, such as the template in CI.🤖 Generated with Claude Code
https://claude.ai/code/session_01FHEmzL3ErAhGQykKWDx2wP