seo-scaffold — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-scaffold (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.
Generates the SEO essentials a website needs to rank, share well, and meet compliance. Wires them into the framework idiomatically so every new page inherits the defaults.
/web-launch-check flagged SEO gaps.A single source of truth for site-level metadata, with per-page overrides:
<title>{{ pageTitle }} — {{ siteName }}</title>
<meta name="description" content="{{ pageDescription }}">
<link rel="canonical" href="{{ canonicalUrl }}">
<!-- Open Graph -->
<meta property="og:type" content="{{ ogType | website }}">
<meta property="og:title" content="{{ pageTitle }}">
<meta property="og:description" content="{{ pageDescription }}">
<meta property="og:url" content="{{ canonicalUrl }}">
<meta property="og:image" content="{{ ogImage }}">
<meta property="og:site_name" content="{{ siteName }}">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ pageTitle }}">
<meta name="twitter:description" content="{{ pageDescription }}">
<meta name="twitter:image" content="{{ ogImage }}">
<!-- Misc -->
<meta name="theme-color" content="{{ themeColor }}">
<link rel="icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">Implementation depends on the framework:
| Framework | Where to put it |
|---|---|
| Next.js (app dir) | app/layout.tsx metadata export + per-page generateMetadata |
| Next.js (pages dir) | _document.tsx + next/head per page |
| Astro | src/layouts/Base.astro + page frontmatter |
| SvelteKit | +layout.svelte + per-page <svelte:head> |
| Nuxt | app.vue useSeoMeta + per-page useSeoMeta |
| Remix | meta export per route |
| Plain HTML | <head> of each page (or via a templating layer) |
Generate the right schema.org type for the page:
Example FAQ JSON-LD:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does setup take?",
"acceptedAnswer": { "@type": "Answer", "text": "About 5 minutes." }
}
]
}sitemap.xml<loc>, <lastmod> (ISO 8601), <changefreq> (optional), <priority> (optional, often skip).Idiomatic implementation:
| Framework | Approach |
|---|---|
| Next.js (app dir) | app/sitemap.ts exporting a default function |
| Astro | @astrojs/sitemap integration |
| SvelteKit | +server.ts route returning XML |
| Nuxt | @nuxtjs/sitemap module |
| Plain | A build-time Node script |
robots.txtUser-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /private/
Sitemap: https://example.com/sitemap.xmlAdjust per environment — staging should disallow all crawlers (Disallow: /).
/.well-known/security.txtContact: mailto:[email protected]
Expires: 2027-01-01T00:00:00.000Z
Preferred-Languages: en
Canonical: https://example.com/.well-known/security.txtWhen the user later adds a page, remind them:
<title> and description.og:image (1200×630 PNG) for social sharing.## Detected stack
- Framework: <name + version>
- Existing SEO: <inventory>
## Generated
- File: <path> — <description>
- File: <path> — <description>
## You still need to:
1. Replace placeholder site name "Example Co" with yours.
2. Add /public/og-default.png (1200×630) — the fallback social-share image.
3. Update {{ siteUrl }} in src/config/site.ts.
## Recommended next:
- Run /web-launch-check to verify nothing else is missing.
- Add structured data per page type (Article, Product, etc.) — see references in src/lib/seo.ts.noindex to production unless the user explicitly asks.og:image on every page if the site has rich content — but a single fallback is fine for v1.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.