#!/usr/bin/env python3 from __future__ import annotations import argparse from pathlib import Path WIDTH = 1280 HEIGHT = 640 BACKGROUND = "#FFFFFF" INK = "#111111" MUTED = "#4B5563" ACCENT = "#D9DDE3" ROOT = Path(__file__).resolve().parents[1] OUT_DIR = ROOT / "docs" / "assets" PNG_PATH = OUT_DIR / "social-preview.png" SVG_PATH = OUT_DIR / "social-preview.svg" SERIF = "/System/Library/Fonts/Supplemental/Georgia.ttf" SANS = "/System/Library/Fonts/SFNS.ttf" def draw_png() -> None: try: from PIL import Image, ImageDraw, ImageFont except ImportError as exc: raise SystemExit("Pillow is required to render PNG social previews.") from exc def font(path: str, size: int): return ImageFont.truetype(path, size) OUT_DIR.mkdir(parents=True, exist_ok=True) image = Image.new("RGB", (WIDTH, HEIGHT), BACKGROUND) draw = ImageDraw.Draw(image) title_font = font(SERIF, 74) headline_font = font(SANS, 34) body_font = font(SANS, 21) stat_font = font(SANS, 18) small_font = font(SANS, 16) x = 92 y = 82 draw.text((x, y), "YAO", fill=INK, font=title_font) y += 90 draw.text((x, y), "Yielding AI Outcomes", fill=INK, font=headline_font) y += 60 draw.text( (x, y), "A rigorous engineering, evaluation, governance, and portability system", fill=INK, font=body_font, ) y += 34 draw.text( (x, y), "for reusable agent skills.", fill=INK, font=body_font, ) y += 62 draw.line((x, y, WIDTH - 92, y), fill=ACCENT, width=2) y += 34 score_box_w = 250 score_box_h = 118 draw.rounded_rectangle( (x, y, x + score_box_w, y + score_box_h), radius=18, outline=ACCENT, width=2, fill=BACKGROUND, ) draw.text((x + 22, y + 18), "Weighted Score", fill=MUTED, font=stat_font) draw.text((x + 22, y + 48), "91.5", fill=INK, font=font(SERIF, 42)) draw.text((x + 124, y + 62), "/ 100", fill=MUTED, font=stat_font) draw.text( (x + 22, y + 88), "Method 9.5 · Eval 9.5 · Governance 9.5", fill=MUTED, font=small_font, ) pillar_x = x + score_box_w + 36 pillar_y = y + 4 pillars = [ ("Engineering", "Unified CLI, CI, validation, reporting, and packaging."), ("Evaluation", "Holdouts, route confusion, judge-backed blind evals."), ("Governance", "Lifecycle, maturity, promotion, and review evidence."), ("Portability", "Neutral metadata, adapters, contracts, and degradation."), ] box_w = 400 box_h = 68 gap_x = 24 gap_y = 18 for idx, (label, desc) in enumerate(pillars): col = idx % 2 row = idx // 2 bx = pillar_x + col * (box_w + gap_x) by = pillar_y + row * (box_h + gap_y) draw.rounded_rectangle( (bx, by, bx + box_w, by + box_h), radius=16, outline=ACCENT, width=2, fill=BACKGROUND, ) draw.text((bx + 18, by + 14), label, fill=INK, font=stat_font) draw.text((bx + 18, by + 38), desc, fill=MUTED, font=small_font) footer_y = HEIGHT - 84 draw.line((x, footer_y - 26, WIDTH - 92, footer_y - 26), fill=ACCENT, width=2) draw.text( (x, footer_y), "Reusable agent skills with explicit boundaries, strict evaluation, visible governance, and local reliability.", fill=MUTED, font=small_font, ) image.save(PNG_PATH) def draw_svg() -> None: OUT_DIR.mkdir(parents=True, exist_ok=True) svg = f""" YAO Yielding AI Outcomes A rigorous engineering, evaluation, governance, and portability system for reusable agent skills. Weighted Score 91.5 / 100 Method 9.5 · Eval 9.5 · Governance 9.5 Engineering Unified CLI, CI, validation, reporting, and packaging. Evaluation Holdouts, route confusion, judge-backed blind evals. Governance Lifecycle, maturity, promotion, and review evidence. Portability Neutral metadata, adapters, contracts, and degradation. Reusable agent skills with explicit boundaries, strict evaluation, visible governance, and local reliability. """ SVG_PATH.write_text(svg, encoding="utf-8") def main() -> None: parser = argparse.ArgumentParser(description="Render the repository social preview image assets.") parser.add_argument( "--format", choices=["all", "png", "svg"], default="all", help="Asset format to render.", ) args = parser.parse_args() if args.format in {"all", "png"}: draw_png() print(f"Wrote {PNG_PATH}") if args.format in {"all", "svg"}: draw_svg() print(f"Wrote {SVG_PATH}") if __name__ == "__main__": main()