Feature Description
Clone-repo tests (pytest tests/, pytest skills/) do not prove that a built PyPI wheel ships all registry bundles correctly. Packaging regressions (__init__.py, MANIFEST.in, package-data) can slip through until a user runs pip install skillware in a clean project.
Add a CI job (or step after build) that:
- Builds the wheel/sdist from the PR branch (
python -m build or pip wheel .).
- Creates a fresh venv with no editable install.
pip install the built artifact with [all] (or minimal + per-skill extras as needed).
- For each
skills/**/manifest.yaml, runs SkillLoader.load_skill("<category>/<name>") and asserts bundle keys (manifest, instructions, module).
- Optionally runs one offline assertion per skill (manifest
name matches folder id).
Parent context: RFC #156 testing architecture. Complements bundle tests in editable mode; does not replace pytest skills/.
Rationale
Skillware's core promise is pip install skillware → load skills by registry ID. Wheel-only breaks are rare but painful (missing __init__.py, assets not in wheel, wrong package-data). A smoke test catches them before release and gives contributors confidence that packaging changes are safe.
This is higher leverage than adding more maintainer tests under tests/skills/ because it validates the shipping path agents and PyPI users actually use.
Implementation Idea
- Add
.github/workflows/wheel-smoke.yml (or extend ci.yml with a wheel-smoke job).
- Script:
scripts/wheel_smoke_test.py invoked from CI.
- Use dummy env vars already set in CI (
ETHERSCAN_API_KEY, ANTHROPIC_API_KEY) where load triggers warnings only.
- Document in
docs/TESTING.md under a short "Packaging smoke test" bullet.
- CHANGELOG
[Unreleased] when merged.
Feature Description
Clone-repo tests (
pytest tests/,pytest skills/) do not prove that a built PyPI wheel ships all registry bundles correctly. Packaging regressions (__init__.py,MANIFEST.in,package-data) can slip through until a user runspip install skillwarein a clean project.Add a CI job (or step after build) that:
python -m buildorpip wheel .).pip installthe built artifact with[all](or minimal + per-skill extras as needed).skills/**/manifest.yaml, runsSkillLoader.load_skill("<category>/<name>")and asserts bundle keys (manifest,instructions,module).namematches folder id).Parent context: RFC #156 testing architecture. Complements bundle tests in editable mode; does not replace
pytest skills/.Rationale
Skillware's core promise is
pip install skillware→ load skills by registry ID. Wheel-only breaks are rare but painful (missing__init__.py, assets not in wheel, wrong package-data). A smoke test catches them before release and gives contributors confidence that packaging changes are safe.This is higher leverage than adding more maintainer tests under
tests/skills/because it validates the shipping path agents and PyPI users actually use.Implementation Idea
.github/workflows/wheel-smoke.yml(or extendci.ymlwith awheel-smokejob).scripts/wheel_smoke_test.pyinvoked from CI.ETHERSCAN_API_KEY,ANTHROPIC_API_KEY) where load triggers warnings only.docs/TESTING.mdunder a short "Packaging smoke test" bullet.[Unreleased]when merged.