github-social-preview — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited github-social-preview (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate branded GitHub social preview images using repo metadata, visual rules, and the included preview generator.
Generate a clean, professional 1280x640 social preview image for any GitHub repository and export it as a JPG under 1 MB.
Use this skill when the user starts with gsp, or asks to create a social preview or Open Graph image for a GitHub repository.
gsp <repo_url>
generate github social preview <repo_url>
create repo preview image <repo_url>
make social preview for <repo_url>
og image for <repo_url>github-social-preview.jpgUsing the GitHub URL, retrieve:
Use the WebFetch tool to read the GitHub repository page. Parse the HTML or JSON response for description, topics, and language. If a raw README is needed, fetch https://raw.githubusercontent.com/<owner>/<repo>/main/README.md (try master if main returns 404).
Build the four visual elements from the metadata gathered:
| Element | Source | Fallback |
|---|---|---|
| Title | Repository name, formatted (replace hyphens/underscores with spaces, title case) | Raw repo name |
| Subtitle | Repository description | First sentence of README |
| Tags | Topics list (up to 5 tags) | Top keywords extracted from README or repo name tokens |
| Language badge | Primary language | Omit if unknown |
If no description, README, or topics exist, generate a minimal clean design with the title only.
Run scripts/generate_preview.py with the derived content as arguments. The script:
After generation, check the output file size.
Report back:
github-social-preview.jpgBefore finalizing the output, verify:
If one of these fails, adjust theme, accent, text length, or asset placement and regenerate.
See templates/design_config.json for the full color, font, and layout specification.
Summary:
Theme presets now include:
github-darkdocs-bluebuilder-greenlaunch-warmWhen the user does not specify a theme or accent, derive the accent from the repo's primary language so previews are recognizable at a glance:
| Language | Accent |
|---|---|
| PowerShell | #012456 deep blue |
| Python | #3776ab blue |
| JavaScript / TypeScript | #f1e05a yellow / #3178c6 blue |
| C# / .NET | #512bd4 purple |
| Go | #00add8 cyan |
| Rust | #dea584 amber |
| Shell | #89e051 green |
A user-provided accent or theme always wins over the language mapping. When the user mentions a brand color or pastes a hex value, use it directly and check title contrast against it.
Pick the layout emphasis from what the repo is:
library or toolkit (default): title dominant, subtitle, tag pills, language badgedocs repo: subtitle gets more weight since the description is the value; fewer tags, no language badgeapp or product: screenshot placement preferred when one is available, title moves to the left columnInfer the variant from topics and README signals, and say which variant was used in the confirmation output.
When the user provides multiple repo URLs (gsp url1 url2 ... or a pasted list):
github-social-preview-<repo>.jpg instead of overwriting the default filename| Condition | Behavior |
|---|---|
| No repository description | Use first non-heading sentence from README |
| README missing or too short | Infer from repo name tokens and topics |
| No topics | Extract top 3-5 keywords from README headings or repo name |
| No language detected | Omit language badge entirely |
| No metadata at all | Render title-only design with GitHub mark |
| Image over 1 MB after quality 55 | Scale canvas to 90% and retry |
| Long repo or tag text | Fit to width first, then truncate with ellipsis only if needed |
| Logo or screenshot available | Add them only if they improve the layout without crowding the text |
pip install Pillow)github-social-preview.jpgscripts/generate_preview.py — Main image generation and compression script
templates/design_config.json — Color, font, and layout configuration
examples/example_usage.md — Worked examples with sample outputs describedIf the user is not sure how to use this skill, asks what it needs, or asks for examples:
Minimum useful input:
Example prompts:
gsp https://github.com/microsoft/winget-cliUse github-social-preview to create a social preview image for this repo with a builder-green theme.Show me an example prompt for generating an OG image from a GitHub repository URL.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.