git clone <repository-url>
cd skill-router
python tests/run_tests.py# Full regression suite
python tests/run_tests.py
# Via unittest discovery
python -m unittest discover -s tests -p "test_*.py"python skill.py validate --root .# In-process
python skill.py benchmark
# External runner (version-agnostic)
python benchmarks/run_benchmark.py --repeat 3- Create
skills/<name>/SKILL.mdandskills/<name>/manifest.json. - The manifest
namemust match the folder name. - Fill in
use_when,not_when,objects, andactionsfor precise routing. - Run
python skill.py sync --root . - Verify with
python skill.py validate --root . - Test with
python skill.py route "<sample request>" --root . --debug
- Edit the skill's
manifest.jsondirectly. - Do NOT hand-edit files in
skill-registry/— they are generated. - After any manifest change, run
syncandvalidate.
Routing changes are behavioral changes even when APIs don't change. Before modifying routing logic:
- Add a regression case in
tests/test_router.py. - Add a gold-set case in
benchmarks/gold-set.jsonif the behavior is not already covered. - Run the full benchmark and confirm no regressions.
- Include
--debugoutput in the PR description.
The installer is an important trust surface. Changes to install.py must be
covered by tests/test_install.py. Regression-test:
- First install
- Repeated install
- Upgrade
- Destination already exists (unrelated file)
- Dry run
- Uninstall
- Keep the router deterministic. No randomness, no network calls, no LLM in the hot path.
- Keep agent-specific logic in the installer/layout layer, not the core router.
- Preserve backward compatibility with V1 manifests.
- Run
sync,validate,tests/run_tests.py, andbenchmarkbefore submitting a PR.