From 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 Mon Sep 17 00:00:00 2001 From: sillylaird Date: Thu, 3 Sep 2026 00:33:59 +0000 Subject: import live www.sillylaird.ca webroot --- .../skill-quality-reviewer/scripts/skill-audit.py | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 .agents/skills/skill-quality-reviewer/scripts/skill-audit.py (limited to '.agents/skills/skill-quality-reviewer/scripts/skill-audit.py') diff --git a/.agents/skills/skill-quality-reviewer/scripts/skill-audit.py b/.agents/skills/skill-quality-reviewer/scripts/skill-audit.py new file mode 100755 index 0000000..8f047c3 --- /dev/null +++ b/.agents/skills/skill-quality-reviewer/scripts/skill-audit.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import re +from pathlib import Path + +REF_RE = re.compile(r'(references/[^\s)`]+|examples/[^\s)`]+|scripts/[^\s)`]+|assets/[^\s)`]+)') + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description='Audit a skill for missing local references and rough size metrics.') + parser.add_argument('skill_path', help='Path to the skill directory') + return parser.parse_args() + + +def main() -> int: + args = parse_args() + root = Path(args.skill_path).expanduser().resolve() + skill_md = root / 'SKILL.md' + if not skill_md.exists(): + print('missing SKILL.md') + return 1 + text = skill_md.read_text(encoding='utf-8') + words = len(re.findall(r'\w+', text)) + print(f'word_count={words}') + refs = sorted(set(match.rstrip('*:.,') for match in REF_RE.findall(text))) + missing = [ref for ref in refs if not (root / ref).exists()] + if missing: + print('missing_refs=') + for ref in missing: + print(f'- {ref}') + else: + print('missing_refs=0') + return 0 + + +if __name__ == '__main__': + raise SystemExit(main()) -- cgit v1.2.3