
#!/usr/bin/env python3
import json
from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]; errors=[]
manifest=json.loads((ROOT/"manifest.json").read_text()); cat=json.loads((ROOT/"curriculum"/"catalog.json").read_text()); seen=set()
for x in cat:
    sid=x["skill_id"]
    if sid in seen: errors.append(f"duplicate {sid}")
    seen.add(sid); domain,name=sid.split(".",1); p=ROOT/"skills"/domain/name
    for req in ["manifest.json","SKILL.md","design_rules.yaml","workflow.yaml","tests.json","certification.json"]:
        if not (p/req).exists(): errors.append(f"missing {p/req}")
    if (p/"manifest.json").exists() and json.loads((p/"manifest.json").read_text()).get("forge_allowed") is not False:
        errors.append(f"starter skill enabled {sid}")
cards=sum(1 for x in (ROOT/"knowledge"/"knowledge_cards.jsonl").read_text().splitlines() if x.strip())
if manifest["skill_count"]!=len(cat): errors.append("skill count mismatch")
if cards<len(cat)*5: errors.append("card count low")
if errors:
    print("\n".join("ERROR: "+e for e in errors)); raise SystemExit(1)
print(f"PASS: {len(cat)} skills and {cards} cards. All starter skills remain Forge-disabled.")
