Feat/issue 16 cli for skill discovery#84
Conversation
|
Hi @rizzoMartin, thanks again for picking this up, the overall approach is solid and the right call to reuse Incomplete files in the diff Both Missing For [project.scripts]
skillware = "skillware.cli:main"Without this the command doesn't exist as a shell entrypoint — it's referenced in your PR description but doesn't appear in the diff.
The PR adds A couple of correctness issues in the visible code
Missing documentation updates This is a new user-facing surface and the docs need to reflect it. Every other major surface in the framework has a dedicated page under
Once the full files are up and these are addressed, happy to give it a proper pass. Thanks again for the effort on this, the path resolution mirroring and the extensible subparser design are exactly right. You can add several commits to adress the missing points step by step instead of a huge push. |
|
Hi @rosspeili, Thanks for the review, it is my firs time contributing in a real opensource project so thank you for the patience, I pushed all the requested changes in different commits as suggested and everything is ready to be reviewed. I hope everything is clear and there is nothing truncated. Regarding the Thank you. |
|
Hi @rizzoMartin, great follow-up, and welcome to OS! Wish you a good start, and way to go! ARPA repos are fresh in OS as well, so you can find a lot of interesting projects to tackle, and a lot of good first issues if you're into AI, Agent Tools, Frameworks, and Security. To the point, the complete implementation and entry point are exactly what was needed, and the overall structure is way more solid now. Two things need fixing before we can merge: 1. Missing
with open(manifest_path, encoding="utf-8") as f:2.
Please pass import io
buf = io.StringIO()
cmd_list(skills_root_override=tmp_path, category_filter="office", console=Console(file=buf))
assert "finance" not in buf.getvalue()Also worth fixing while you're at it: Everything else looks just great, the path resolution reuse, the dedup logic, the issuer fallback, and the graceful |
|
Hi @rizzoMartin, great iteration, the implementation is solid and almost everything from both rounds of review has been addressed cleanly. Three small things before we merge:
Everything else is well done — the path resolution mirroring, the dedup logic, the |
|
Perfect! All three are done, and the |
|
Thanks to you @rosspeili for your help and your feedback, I hope the project goes well and I will keep an eye on the issues to see if there is some more I can do to help |
|
The pleasure is mine, @rizzoMartin, and ofc you're more than welcome to pick up more issues. The CLI is your design, so you'll feel right at home with the sub-issues under #16. Or pick anything else that catches your eye across the board. Out of curiosity, are you looking to build street cred in a specific area, or are there particular frameworks, libraries, or problem spaces you want to dig into? Happy to point you toward issues that would be a good fit. To get a deeper feel for what Skillware is about, check out skillware.site and our latest post on why the old way of defining agent capabilities is broken: |
|
Well to be honest, I work as a Data Engineer but beyond that I enjoy programming and discover new tools, I saw this repository in up-for-grabs.net and it seemed interestig for me. I would like to focus a bit more in the Data Engineering field but i find difficult to find something to work on, so I'm just checking some AI projects just for curiosity. I'll check the post and see if you can convince me to use skillware instead a skills.md 😉 |
|
Deal. 🤝 there are a few new skills under data engineering I will post as issues tomorrow. I will pong you to take a look and maybe suggest a better implementation. I have a rough idea of normalizing data for pre training. |
Description
Implements the
skillware listCLI command requested in #16.Adds
skillware/cli.pywith alistsubcommand that discovers all locallyinstalled skills by reusing
SkillLoader's path resolution order(
SKILLWARE_SKILL_PATH→skills/under cwd and parents → bundledsite-packages/skills/). Output is rendered as arichtable showing ID,version, category, issuer, description, and requirements.
The subparser structure is intentionally extensible to support follow-on
commands from #81 (
skillware paths,skillware doctor,skillware config).Type of Change (Matches Issue Templates)
manifest.yaml,skill.py, andinstructions.md)base_skill.py,loader.py, etc.)Checklist (all PRs)
python -m flake8 .andpytest tests/locally (or the subset relevant to this change).New or updated skill (complete only if this PR adds or changes a skill under
skills/)Skip this section for framework-only, documentation-only, or other PRs that do not touch the skill registry.
Bundle & metadata
skills/<category>/<skill_name>/(copied fromtemplates/python_skill/or equivalent).manifest.yamlhasname,version,description, validparameters, andconstitution.manifest.yamlincludesissuerwith realnameandemail(not template placeholders).issuer.githubandissuer.orgset when applicable.requirementsandenv_varsare documented when the skill needs them.Logic, cognition, and UI
skill.pyis deterministic Python (no arbitrary LLM-generated code paths).instructions.mdexplains when and how to use the skill.card.jsonis present and itsissuermatchesmanifest.yaml(nameandemailat minimum).Tests & loader
test_skill.pycovers execution and schema expectations.SkillLoader.load_skill("<category>/<skill_name>")succeeds (or missing deps are documented).Documentation & catalog
docs/skills/<skill_name>.mdexists or is updated (ID, Issuer, usage).docs/skills/README.mdlists the skill with ID and Issuer.Constitution & Safety (if adding or modifying a skill)
Related Issues
Fixes #16