All 38 first-party skills move to kvb-<category>-<name> with the categories think, create, code, ci, git, check, org and skills; kvb-cleanup and kvb-help are the only uncategorized names. tests/test_naming.py pins the schema, the Agent Skills name rules and the README organigram. enable-plugins.js repoints hook commands of renamed skills in settings.local.json so a stale script path cannot block tools. BREAKING CHANGE: the old skill names and slash commands (/commit-next, /dream, /autotune, ...) are gone; use their kvb- successors listed in the README organigram. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
32 lines
1018 B
Python
32 lines
1018 B
Python
"""The self-improving skills must share the objective held by kvb-skills-tune."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
SKILLS = REPO_ROOT / "skills"
|
|
ROUTERS = ("kvb-skills-auto", "kvb-check-confidence")
|
|
|
|
|
|
class TestOptimizeObjective(unittest.TestCase):
|
|
def test_autotune_names_the_three_axes(self):
|
|
text = (SKILLS / "kvb-skills-tune" / "SKILL.md").read_text(encoding="utf-8")
|
|
self.assertIn("## Objective", text)
|
|
for axis in ("**Tokens**", "**Time**", "**Quality**"):
|
|
self.assertIn(axis, text)
|
|
|
|
def test_routers_point_at_it(self):
|
|
for skill in ROUTERS:
|
|
text = (SKILLS / skill / "SKILL.md").read_text(encoding="utf-8")
|
|
self.assertIn(
|
|
"`kvb-skills-tune` skill's **Objective**",
|
|
text,
|
|
f"{skill} does not route to the kvb-skills-tune objective",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|