Implemented the next missing parity slice around the /skills slash command listing.

/skills now enumerates bundled_skills.BUNDLED_SKILLS (matching the npm
SkillsMenu component, which lists skills — not slash commands).
Previously it mislabeled the slash-command catalog as "Available Skills".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Abdelrahman Abdallah
2026-04-20 01:09:13 +02:00
parent cfd3bb9ca7
commit 20aaad62b3
3 changed files with 32 additions and 5 deletions
+19
View File
@@ -318,6 +318,25 @@ class AgentRuntimeTests(unittest.TestCase):
self.assertEqual(result.tool_calls, 0)
self.assertIn('# Permissions', result.final_output)
def test_slash_skills_lists_bundled_skills(self) -> None:
from src.bundled_skills import get_bundled_skills
with tempfile.TemporaryDirectory() as tmp_dir:
agent = LocalCodingAgent(
model_config=ModelConfig(model='Qwen/Qwen3-Coder-30B-A3B-Instruct'),
runtime_config=AgentRuntimeConfig(cwd=Path(tmp_dir)),
)
result = agent.run('/skills')
self.assertEqual(result.turns, 0)
self.assertEqual(result.tool_calls, 0)
self.assertIn('Available Skills', result.final_output)
for skill in get_bundled_skills():
if skill.user_invocable:
self.assertIn(skill.name, result.final_output)
# Slash command names (e.g. 'permissions') must NOT appear — that was
# the old buggy behavior the upstream `/skills` command never did.
self.assertNotIn('/permissions', result.final_output)
def test_clear_runtime_state_drops_session_env_vars(self) -> None:
from src.session_env_vars import (
clear_session_env_vars,