Files
antigravity-skills-reference/scripts/fix_yaml_quotes.py
Zied c8e1c0ef19 ok
2026-03-02 09:29:59 +01:00

46 lines
1.8 KiB
Python

import os
import re
import yaml
def fix_yaml_quotes(skills_dir):
print(f"Normalizing YAML frontmatter in {skills_dir}...")
fixed_count = 0
for root, dirs, files in os.walk(skills_dir):
dirs[:] = [d for d in dirs if not d.startswith('.')]
if 'SKILL.md' in files:
file_path = os.path.join(root, 'SKILL.md')
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
except Exception:
continue
fm_match = re.search(r'^---\s*\n(.*?)\n---', content, re.DOTALL)
if not fm_match:
continue
fm_text = fm_match.group(1)
body = content[fm_match.end():]
try:
# safe_load and then dump will normalize quoting automatically
metadata = yaml.safe_load(fm_text) or {}
new_fm = yaml.dump(metadata, sort_keys=False, allow_unicode=True, width=1000).strip()
# Check if it actually changed something significant (beyond just style)
# but normalization is good anyway. We'll just compare the fm_text.
if new_fm.strip() != fm_text.strip():
new_content = f"---\n{new_fm}\n---" + body
with open(file_path, 'w', encoding='utf-8') as f:
f.write(new_content)
fixed_count += 1
except yaml.YAMLError as e:
print(f"⚠️ {file_path}: YAML error - {e}")
print(f"Total files normalized: {fixed_count}")
if __name__ == '__main__':
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
fix_yaml_quotes(os.path.join(base_dir, 'skills'))