← Files LLM & Agent Builder CopilotARCHIVED FILE
scripts/validate_package.py
2.65 KB · Nov 3, 2026 · 18:50 UTC
#!/usr/bin/env python3
"""Static, dependency-free package checker; not an installed-plugin behavioral test."""
from pathlib import Path
import json,re,sys,xml.etree.ElementTree as ET
root=Path(__file__).resolve().parents[1]
manifest=json.loads((root/'plugin.json').read_text())
legacy=json.loads((root/'.codex-plugin/plugin.json').read_text())
interface=manifest['extensions']['com.openai']['interface']
skills=sorted((root/'skills').glob('*/SKILL.md'))
refs=list((root/'references').glob('*.md'))
originals=list((root/'references/original').glob('*.md'))
bench=json.loads((root/'benchmarks/cases.json').read_text())
assert manifest['name']=='llm-agent-builder-copilot'
assert manifest['version']=='0.2.0' and legacy['version']==manifest['version']
assert manifest['author']['name']==interface['developerName']=='Tekris Labs'
assert interface['displayName']=='LLM & Agent Builder Copilot'
assert len(interface['shortDescription'])<=30
assert len(interface['defaultPrompt'])==3
assert all(len(x)<=128 for x in interface['defaultPrompt'])
assert len(interface['capabilities'])<=20
assert all(len(x)<=120 for x in interface['capabilities'])
assert len(skills)==18
assert len(refs)==17
assert len(originals)>=7
assert len(bench['cases'])==28
assert all(c['status']=='not_run' for c in bench['cases'])
assert not (root/'mcp.json').exists()
assert interface['websiteURL']=='https://tekrislabs.com/'
for field in ('supportURL','privacyPolicyURL','termsOfServiceURL'):assert interface[field].startswith('https://tekrislabs.com/')
for key in ('logo','composerIcon'):
p=(root/interface[key]).resolve()
assert p.is_relative_to(root.resolve()) and p.is_file()
svg=ET.parse(p).getroot()
assert svg.attrib.get('viewBox','').split()[-2:]==['1024','1024']
for skill in skills:
t=skill.read_text()
assert t.startswith('---\n')
assert re.search(r'^name: [a-z0-9-]+$',t,re.M)
assert '## Workflow' in t and '## Required output' in t
assert len(t)>850
m=re.search(r'^name: (.+)$',t,re.M)
assert m.group(1)==skill.parent.name
assert len(manifest['name']+':'+m.group(1))<=64
for rel in re.findall(r'`(\.\./\.\./references/[a-z0-9-]+\.md)`',t):
assert (skill.parent/rel).resolve().is_file(),(skill,rel)
assert (root/manifest['extensions']['com.openai']['onboardingSkill']).exists()
for p in root.rglob('*'):
if p.is_file() and p.suffix.lower() in ('.md','.json','.yaml') and not str(p.relative_to(root)).startswith('archive/'):
t=p.read_text()
assert 'krishnasathvikmantripragada@gmail.com' not in t
assert 'Krishna Sathvik' not in t
print(json.dumps({'status':'passed','skills':len(skills),'new_references':len(refs),'original_references':len(originals),'benchmarks_defined':len(bench['cases']),'remote_mcp':False}))
SHA-256: 843da48bd67a9aabb2ddcd3c8742f6855568b2d7155924b013b375a92e29475e