Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create or refresh screenshot-led product hero images, localized interface captures, and image-led README sections for GitHub repositories. Use whenever a user asks to make a GitHub README show a GUI product visually, add software screenshots, design a README hero image, reproduce a screenshot-collage reference, or prepare repository-bound visual documentation. For GUI applications, default to the deterministic product-proof split hero with real software screenshots unless the user explicitly req
.claude/skills/ethanyoq-github-readme-visuals/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 152% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 169% | 0% |
Create a fast, trustworthy visual explanation of the product without replacing its factual README content.
Before production, identify the resolved Skill path. A path inside a sibling directory ending in -workspace/skill-snapshot is an evaluation baseline, not a production Skill. Do not use it to create repository assets. Resolve and load the canonical installed or source copy instead. If no canonical copy is available, stop and report that the Skill installation must be synchronized.
For any GUI desktop or web application, use the Product-proof split v1 profile unless the user explicitly requests a different direction after seeing or naming it. Read the complete profile specification and start from the bundled deterministic HTML template.
This default is intentionally screenshot-led: the left side explains the product and the right side proves it with complete, real interface captures. A request to “use github-readme-visuals”, “replace the current hero with the Skill”, or “make it consistent with the established README visual style” selects this profile and supersedes an earlier unreviewed moodboard, illustration, or concept-art proposal.
Do not silently reinterpret the default as editorial artwork, a decorative cover, or a generated scene. Pure illustration is an opt-out path that requires an explicit user request such as “use an abstract/conceptual hero” or a non-GUI product for which real interface evidence does not exist.
docs/readme-visuals/visual-manifest.json using the schema in the profile specification.moodboard-explorer when the user asks for multiple visual territories or concept options.assets/product-proof-split-v1.html unchanged into docs/readme-visuals/product-proof-split-v1.html, copy the example data file to docs/readme-visuals/hero-data.js, and populate only the data file. Keeping the template byte-identical preserves the approved geometry across repositories and conversations.product-hero-zh.png and product-hero-en.png, and point each README only to its matching language asset.object-fit: cover, clipping, masks, or manual crops merely to force a screenshot into the reference frame ratio.contain scaling and disclose the resulting empty space; do not silently remove interface content.docs/images/. Do not leave README assets only in a generated-images or temporary directory.python "<resolved-skill-root>/scripts/verify_readme_visuals.py" --repo <repository> --manifest docs/readme-visuals/visual-manifest.json --expected-profile product-proof-split-v1. This verifies the canonical template, hero dimensions, README/locale mapping, real-capture attestations, complete-window attestations, 4:3 screenshot dimensions, primary-screen order, screenshot uniqueness, and bilingual screenshot-count parity.python "<resolved-skill-root>/scripts/verify_readme_visuals.py" --repo <repository>. Add --expected-size docs/images/hero.png=1600x900 for exact-size assets. Every expected-size path must match an image referenced by the inspected README files. Treat missing files, empty Markdown alt text, unreadable images, wrong required dimensions, and probable blank/uniform renders as blockers; review localization-count differences as warnings.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | pass→pass | 7,392 | 3,989 | -46% | 1 | 1 | 0% | 1,438 | 3,467 | +141% | 0 | 0 | — |
case-01 | fail→fail | 4,413 | 4,068 | -8% | 1 | 1 | 0% | 196 | 3,200 | +1533% | 0 | 0 | — |
case-02 | fail→fail | 3,819 | 6,287 | +65% | 1 | 1 | 0% | 165 | 3,065 | +1758% | 0 | 0 | — |
case-03 | fail→fail | 4,193 | 5,245 | +25% | 1 | 1 | 0% | 215 | 2,937 | +1266% | 0 | 0 | — |
case-04 | pass→pass | 6,870 | 5,459 | -21% | 1 | 1 | 0% | 1,367 | 3,787 | +177% | 0 | 0 | — |
case-05 | pass→pass | 12,822 | 12,125 | -5% | 1 | 1 | 0% | 2,606 | 4,948 | +90% | 0 | 0 | — |
case-06 | pass→pass | 4,243 | 5,839 | +38% | 1 | 1 | 0% | 836 | 3,728 | +346% | 0 | 0 | — |
case-07 | fail→pass | 12,721 | 7,756 | -39% | 1 | 1 | 0% | 2,110 | 4,153 | +97% | 0 | 0 | — |
case-08 | fail→fail | 8,825 | 4,461 | -49% | 1 | 1 | 0% | 1,506 | 3,360 | +123% | 0 | 0 | — |
case-09 | fail→pass | 10,420 | 6,836 | -34% | 1 | 1 | 0% | 1,704 | 3,745 | +120% | 0 | 0 | — |
case-10 | pass→pass | 11,727 | 6,247 | -47% | 1 | 1 | 0% | 1,961 | 3,718 | +90% | 0 | 0 | — |
case-11 | fail→pass | 12,405 | 6,127 | -51% | 1 | 1 | 0% | 2,205 | 3,935 | +78% | 0 | 0 | — |
case-12 | fail→pass | 7,147 | 3,091 | -57% | 1 | 1 | 0% | 1,263 | 3,182 | +152% | 0 | 0 | — |
case-13 | fail→pass | 6,438 | 2,907 | -55% | 1 | 1 | 0% | 1,217 | 3,268 | +169% | 0 | 0 | — |
case-14 | pass→pass | 5,976 | 3,276 | -45% | 1 | 1 | 0% | 1,115 | 3,336 | +199% | 0 | 0 | — |
case-15 | pass→pass | 10,504 | 2,472 | -76% | 1 | 1 | 0% | 1,923 | 3,089 | +61% | 0 | 0 | — |
case-16 | fail→pass | 7,211 | 3,135 | -57% | 1 | 1 | 0% | 1,361 | 3,220 | +137% | 0 | 0 | — |
case-17 | fail→pass | 7,616 | 6,438 | -15% | 1 | 1 | 0% | 1,608 | 3,862 | +140% | 0 | 0 | — |
case-18 | fail→pass | 7,799 | 3,154 | -60% | 1 | 1 | 0% | 1,566 | 3,228 | +106% | 0 | 0 | — |
case-19 | pass→pass | 8,329 | 6,385 | -23% | 1 | 1 | 0% | 1,586 | 3,882 | +145% | 0 | 0 | — |
case-21 | fail→pass | 13,976 | 10,638 | -24% | 1 | 1 | 0% | 2,757 | 4,782 | +73% | 0 | 0 | — |
case-22 | fail→pass | 9,271 | 1,837 | -80% | 1 | 1 | 0% | 1,913 | 2,950 | +54% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.