117 lines
3.7 KiB
Python
117 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify the Hermes Agent skill system is working correctly."""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def verify_skill_system():
|
|
"""Test skill loading and structure verification."""
|
|
from hermes_tools import skill_view, skills_list
|
|
|
|
results = {
|
|
"passed": 0,
|
|
"failed": 0,
|
|
"tests": []
|
|
}
|
|
|
|
# Test 1: skills_list returns a valid response
|
|
try:
|
|
skills_response = skills_list()
|
|
if skills_response.get("success") and "skills" in skills_response:
|
|
skills = skills_response["skills"]
|
|
results["passed"] += 1
|
|
results["tests"].append({
|
|
"name": "skills_list returns valid response",
|
|
"status": "PASS",
|
|
"details": f"Found {len(skills)} skills"
|
|
})
|
|
else:
|
|
results["failed"] += 1
|
|
results["tests"].append({
|
|
"name": "skills_list returns valid response",
|
|
"status": "FAIL",
|
|
"details": "Invalid response structure"
|
|
})
|
|
except Exception as e:
|
|
results["failed"] += 1
|
|
results["tests"].append({
|
|
"name": "skills_list returns valid response",
|
|
"status": "FAIL",
|
|
"details": str(e)
|
|
})
|
|
|
|
# Test 2: skill_view loads a skill successfully
|
|
try:
|
|
skill_response = skill_view("hermes-agent")
|
|
if skill_response.get("success") and skill_response.get("name") == "hermes-agent":
|
|
results["passed"] += 1
|
|
results["tests"].append({
|
|
"name": "skill_view loads hermes-agent skill",
|
|
"status": "PASS",
|
|
"details": "Skill loaded with name: hermes-agent"
|
|
})
|
|
else:
|
|
results["failed"] += 1
|
|
results["tests"].append({
|
|
"name": "skill_view loads hermes-agent skill",
|
|
"status": "FAIL",
|
|
"details": "Failed to load skill"
|
|
})
|
|
except Exception as e:
|
|
results["failed"] += 1
|
|
results["tests"].append({
|
|
"name": "skill_view loads hermes-agent skill",
|
|
"status": "FAIL",
|
|
"details": str(e)
|
|
})
|
|
|
|
# Test 3: skill has required fields
|
|
try:
|
|
skill_response = skill_view("hermes-agent")
|
|
required_fields = ["name", "description", "version", "content", "tags"]
|
|
missing = [f for f in required_fields if f not in skill_response]
|
|
if not missing:
|
|
results["passed"] += 1
|
|
results["tests"].append({
|
|
"name": "Skill has all required fields",
|
|
"status": "PASS",
|
|
"details": f"All fields present: {required_fields}"
|
|
})
|
|
else:
|
|
results["failed"] += 1
|
|
results["tests"].append({
|
|
"name": "Skill has all required fields",
|
|
"status": "FAIL",
|
|
"details": f"Missing fields: {missing}"
|
|
})
|
|
except Exception as e:
|
|
results["failed"] += 1
|
|
results["tests"].append({
|
|
"name": "Skill has all required fields",
|
|
"status": "FAIL",
|
|
"details": str(e)
|
|
})
|
|
|
|
return results
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("=" * 60)
|
|
print("HERMES AGENT SKILL SYSTEM VERIFICATION")
|
|
print("=" * 60)
|
|
print()
|
|
|
|
results = verify_skill_system()
|
|
|
|
for test in results["tests"]:
|
|
status_symbol = "✓" if test["status"] == "PASS" else "✗"
|
|
print(f"[{status_symbol}] {test['name']}")
|
|
print(f" {test['details']}")
|
|
print()
|
|
|
|
print("=" * 60)
|
|
print(f"SUMMARY: {results['passed']} passed, {results['failed']} failed")
|
|
print("=" * 60)
|
|
|
|
if results["failed"] > 0:
|
|
sys.exit(1)
|
|
sys.exit(0) |