Skip to main content

#!/usr/bin/env python3 """ Comprehensive Skill Analysis - Maps skills to TRACK framework

Usage: python3 analyze-skills-comprehensive.py --output analysis.json python3 analyze-skills-comprehensive.py --track-mapping """

import argparse import json import sys from collections import defaultdict from pathlib import Path

sys.path.insert(0, str(Path(file).parent.parent / "tools" / "mcp-skill-server")) from server import SkillRegistry

TRACK Framework Mapping

TRACK_FRAMEWORK = { "A": {"name": "Backend API", "keywords": ["backend", "api", "django", "database", "sql"]}, "B": {"name": "Frontend UI", "keywords": ["frontend", "ui", "react", "angular", "vue"]}, "C": {"name": "DevOps Infra", "keywords": ["devops", "deploy", "docker", "kubernetes", "terraform"]}, "D": {"name": "Security", "keywords": ["security", "auth", "encrypt", "vulnerability", "audit"]}, "E": {"name": "Testing QA", "keywords": ["test", "testing", "qa", "validation", "coverage"]}, "F": {"name": "Documentation", "keywords": ["doc", "documentation", "guide", "tutorial"]}, "H": {"name": "Framework Autonomy", "keywords": ["framework", "autonomy", "moe", "orchestration"]}, "J": {"name": "Memory Intelligence", "keywords": ["memory", "context", "session", "export"]}, "K": {"name": "Workflow Automation", "keywords": ["workflow", "automation", "schedule"]}, "T": {"name": "Tools Integration", "keywords": ["tool", "integration", "mcp"]}, }

def main(): parser = argparse.ArgumentParser() parser.add_argument("--output", "-o", help="Save to JSON") parser.add_argument("--track-mapping", action="store_true", help="Show track mapping") args = parser.parse_args()

registry = SkillRegistry()
registry.load()
skills = registry.get_all_metadata()

# Map to tracks
track_skills = defaultdict(list)

for skill in skills:
text = f"{skill.name} {skill.description}".lower()

for track_id, track_info in TRACK_FRAMEWORK.items():
score = sum(1 for kw in track_info["keywords"] if kw.lower() in text)
if score > 0:
track_skills[track_id].append({
"skill": skill.name,
"score": score
})

# Sort by score
for track_id in track_skills:
track_skills[track_id].sort(key=lambda x: -x["score"])

# Generate report
report = {
"total_skills": len(skills),
"track_coverage": {
track_id: {
"name": info["name"],
"skills": len(track_skills.get(track_id, [])),
"top_skills": [s["skill"] for s in track_skills.get(track_id, [])[:5]]
}
for track_id, info in TRACK_FRAMEWORK.items()
}
}

print("=" * 60)
print("SKILL TO TRACK MAPPING")
print("=" * 60)
print(f"\nTotal Skills: {report['total_skills']}")
print("\nTrack Coverage:")

for track_id, info in report["track_coverage"].items():
print(f"\nTrack {track_id}: {info['name']}")
print(f" Skills: {info['skills']}")
print(f" Top: {', '.join(info['top_skills'][:3])}")

# Calculate coverage
covered = sum(1 for s in skills if any(
any(kw in f"{s.name} {s.description}".lower() for kw in t["keywords"])
for t in TRACK_FRAMEWORK.values()
))

print(f"\n{'=' * 60}")
print(f"SKILLS MAPPED TO TRACKS: {covered}/{len(skills)} ({100*covered/len(skills):.1f}%)")
print(f"{'=' * 60}")

if args.output:
with open(args.output, 'w') as f:
json.dump(report, f, indent=2)
print(f"\nSaved to: {args.output}")

if name == "main": main()