Files
claude/.claude/tasks/contracts/2026-09-28-skill-catalog-prune-0554.oracles/c4.py
T

16 lines
752 B
Python

import glob,re,subprocess,os
H=os.path.expanduser('~')
files=glob.glob(H+'/.claude/skills/*/SKILL.md')
def desc(p):
t=open(p,encoding='utf-8',errors='ignore').read(); m=re.match(r'^---\n(.*?)\n---',t,re.S)
if not m: return 0
d=re.search(r'^description:\s*(\|[-+]?|>[-+]?)?\s*(.*?)(?=^\S|\Z)',m.group(1),re.S|re.M)
return len(d.group(2).strip()) if d else 0
exp_chars=sum(desc(p) for p in files); exp_n=len(files)
out=subprocess.run(['bash','doctor.sh'],capture_output=True,text=True).stdout
m=re.search(r'Skill descriptions:\s+~(\d+)t\s+\((\d+) skills\)',out); assert m, 'no skill line'
tok,n=int(m.group(1)),int(m.group(2))
assert n==exp_n,(n,exp_n)
assert abs(tok*4-exp_chars)<=exp_chars*0.05,(tok*4,exp_chars)
print('DOCTOR_COUNTS')