Driver
PRs #337 (og:image meta tags) and #340 (favicon meta tags) shipped the HTML side of the share-preview + browser-tab branding work but deliberately left the binary assets as TODOs. The meta tags reference URLs that 404 until binaries deploy:
site/og/{index,architecture,skills}.png (1200×630 share previews — og:image + twitter:image)
site/favicons/{favicon.ico,favicon.svg,apple-touch-icon.png} (browser tab + iOS home-screen icons)
The deferral was a deliberate scope-cut on the engineering tickets: meta tags are the highest-leverage SEO/social win and could land without design-asset generation. The binary assets are a design task, not an engineering one.
Today, share previews on Twitter/X/LinkedIn/Slack/Discord render with no image (each platform's default fallback). Browser tabs render with the default browser glyph. Both are visible-but-not-blocking gaps.
Scope
Generate the 6 binary assets and drop them at the paths the meta tags already reference. Design briefs already shipped at site/og/README.md and site/favicons/README.md (or equivalent) — they specify dimensions, file size caps, design tokens, and AI generator prompts.
1. OG / Twitter share-preview PNGs (3 files)
site/og/index.png — logo + tagline "where projects get forged"
site/og/architecture.png — 5-layer architecture stack diagram (governance → capability → defaults → customisation overlay → per-project data)
site/og/skills.png — slash-command montage / wordcloud OR "53 skills" tagline
Spec (per site/og/README.md):
- Exactly 1200 × 630 pixels (OG / Twitter
summary_large_image standard)
- Under 200KB each (LinkedIn + Slack truncate large images)
- PNG, 8-bit RGB, flat warm-cream
#F4EFE6 background (no transparency — looks crisper in dark-mode previews than transparent PNG)
- Run through
pngquant --quality=70-90 after export
2. Favicons (3 files)
site/favicons/favicon.ico (multi-resolution; 16×16 + 32×32 + 48×48 in one .ico container)
site/favicons/favicon.svg (vector — modern browsers prefer this)
site/favicons/apple-touch-icon.png (180 × 180 — iOS home-screen icon)
Spec (per site/favicons/README.md):
- Stylised "AY" monogram OR apexyard logo mark
- Monochrome (cream
#F4EFE6 on warning-red #C8321A is the live-site palette)
- Sharp corners — no rounding (browser/iOS clip to circle / squircle automatically)
3. Design tokens (same across both file classes)
- Background: warm cream
#F4EFE6
- Accent: warning red
#C8321A (stamp / underline only — never a fill)
- Typeface: JetBrains Mono (or close monospaced fallback)
- Aesthetic: terminal-native brutalist — no gradients, no shadows, sharp corners
The AI generator prompts in both READMEs reproduce these tokens verbatim — feed them to Midjourney / DALL·E / Imagen / Stable Diffusion for a starting point, hand-refine in Figma or Affinity.
4. Smoke-test the deploy
After commit + Netlify deploy:
curl -I https://yard.apexscript.com/og/index.png returns 200 + content-type: image/png
- Same for
/og/architecture.png, /og/skills.png, /favicon.ico, /favicon.svg, /apple-touch-icon.png
- Run https://www.opengraph.xyz against each marketing-site URL → preview renders with image
- Run https://www.linkedin.com/post-inspector against each URL → cache-bust forces fresh fetch + preview confirms
- Browser tab on
https://yard.apexscript.com/ shows favicon (not default glyph)
- iOS Safari "Add to Home Screen" picks up
apple-touch-icon.png
Acceptance Criteria
Out of scope
- Animated favicons / OG videos (not warranted for v1)
- Per-page Twitter cards (the 3 OG PNGs double as Twitter — single asset per page is the spec)
- A
/og-generator skill that auto-creates these from a template (overkill for 6 one-off binaries; revisit if the marketing site grows beyond 3 pages)
- Manifest.json / Web App Manifest entry (separate concern; file if PWA shape becomes a goal)
Glossary
| Term |
Definition |
| og:image |
Open Graph image — the share preview used by Twitter/X, LinkedIn, Slack, Discord, iMessage, WhatsApp when someone pastes a URL |
| summary_large_image |
Twitter card type that renders a full-width preview (vs summary which renders a small thumbnail) — already set in the HTML |
| Apple Touch Icon |
The 180×180 icon iOS uses when a user "Add to Home Screen"s a webpage |
| Terminal-native brutalist |
The site's design language — monospace typeface, warm cream paper, single accent colour, no gradients/shadows/rounded corners |
Refs #337 (og:image meta tags shipped) / #340 (favicon meta tags shipped) / site/og/README.md / site/favicons/README.md
Driver
PRs #337 (og:image meta tags) and #340 (favicon meta tags) shipped the HTML side of the share-preview + browser-tab branding work but deliberately left the binary assets as TODOs. The meta tags reference URLs that 404 until binaries deploy:
site/og/{index,architecture,skills}.png(1200×630 share previews —og:image+twitter:image)site/favicons/{favicon.ico,favicon.svg,apple-touch-icon.png}(browser tab + iOS home-screen icons)The deferral was a deliberate scope-cut on the engineering tickets: meta tags are the highest-leverage SEO/social win and could land without design-asset generation. The binary assets are a design task, not an engineering one.
Today, share previews on Twitter/X/LinkedIn/Slack/Discord render with no image (each platform's default fallback). Browser tabs render with the default browser glyph. Both are visible-but-not-blocking gaps.
Scope
Generate the 6 binary assets and drop them at the paths the meta tags already reference. Design briefs already shipped at
site/og/README.mdandsite/favicons/README.md(or equivalent) — they specify dimensions, file size caps, design tokens, and AI generator prompts.1. OG / Twitter share-preview PNGs (3 files)
site/og/index.png— logo + tagline "where projects get forged"site/og/architecture.png— 5-layer architecture stack diagram (governance → capability → defaults → customisation overlay → per-project data)site/og/skills.png— slash-command montage / wordcloud OR "53 skills" taglineSpec (per
site/og/README.md):summary_large_imagestandard)#F4EFE6background (no transparency — looks crisper in dark-mode previews than transparent PNG)pngquant --quality=70-90after export2. Favicons (3 files)
site/favicons/favicon.ico(multi-resolution; 16×16 + 32×32 + 48×48 in one .ico container)site/favicons/favicon.svg(vector — modern browsers prefer this)site/favicons/apple-touch-icon.png(180 × 180 — iOS home-screen icon)Spec (per
site/favicons/README.md):#F4EFE6on warning-red#C8321Ais the live-site palette)3. Design tokens (same across both file classes)
#F4EFE6#C8321A(stamp / underline only — never a fill)The AI generator prompts in both READMEs reproduce these tokens verbatim — feed them to Midjourney / DALL·E / Imagen / Stable Diffusion for a starting point, hand-refine in Figma or Affinity.
4. Smoke-test the deploy
After commit + Netlify deploy:
curl -I https://yard.apexscript.com/og/index.pngreturns 200 +content-type: image/png/og/architecture.png,/og/skills.png,/favicon.ico,/favicon.svg,/apple-touch-icon.pnghttps://yard.apexscript.com/shows favicon (not default glyph)apple-touch-icon.pngAcceptance Criteria
site/og/{index,architecture,skills}.png, are 1200×630, under 200KB each, follow the design briefsite/favicons/{favicon.ico,favicon.svg,apple-touch-icon.png}, sized correctly, follow the design briefsite/og/andsite/favicons/get retired (delete OR rewrite as "binaries-shipped — see commit X for the design call")Out of scope
/og-generatorskill that auto-creates these from a template (overkill for 6 one-off binaries; revisit if the marketing site grows beyond 3 pages)Glossary
summarywhich renders a small thumbnail) — already set in the HTMLRefs #337 (og:image meta tags shipped) / #340 (favicon meta tags shipped) / site/og/README.md / site/favicons/README.md