seo-enterprise — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-enterprise (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.
Unified SEO skill: audit, optimize, implement structured data, and scale pages — all through a single entry point with mode-based routing.
Detect the user's intent and route to the appropriate mode:
| Mode | Trigger Signals | Reference |
|---|---|---|
| audit | "audit", "health check", "why not ranking", "SEO issues", "diagnose" | audit-framework.md |
| optimize | "optimize", "improve", "meta tags", "title", "keyword", "content" | on-page-seo.md |
| schema | "structured data", "JSON-LD", "rich snippets", "schema markup" | schema-markup.md |
| programmatic | "pages at scale", "template pages", "directory", "location pages" | programmatic-seo.md |
| technical | "sitemap", "robots", "generateMetadata", "canonical", "CWV" | technical-seo.md |
If ambiguous, ask the user which mode. Multiple modes can combine (e.g., audit + optimize).
1. Detect mode from user intent
2. Read relevant reference file(s)
3. Assess current state (read existing code/config)
4. Execute mode-specific workflow
5. Verify with checklist
6. Report findings/changes with evidence| Feature | Implementation |
|---|---|
| Static metadata | export const metadata: Metadata = { ... } in layout/page |
| Dynamic metadata | export async function generateMetadata({ params }) |
| Sitemap | app/sitemap.ts returning MetadataRoute.Sitemap |
| Robots | app/robots.ts returning MetadataRoute.Robots |
| JSON-LD | <script type="application/ld+json"> with dangerouslySetInnerHTML |
| OG Images | app/opengraph-image.tsx or metadata.openGraph.images |
| Canonical | metadata.alternates.canonical |
| ISR | export const revalidate = N for fresh content with caching |
| Severity | Criteria | Action |
|---|---|---|
| P0 | Blocks indexation or causes penalties | Fix immediately |
| P1 | Significant ranking impact | Fix within sprint |
| P2 | Moderate improvement opportunity | Schedule |
| P3 | Nice-to-have optimization | Backlog |
noindex on important pagesalt text on imagescanonical on paginated or filtered URLsAll SEO work produces:
// app/[slug]/page.tsx
export default async function Page({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params
const data = await getData(slug)
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: data.title,
description: data.description,
datePublished: data.publishedAt,
dateModified: data.updatedAt,
author: { '@type': 'Organization', name: 'Site Name' },
}
return (
<article>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(jsonLd).replace(/</g, '\u003c'),
}}
/>
{/* content */}
</article>
)
}// app/[slug]/page.tsx
import type { Metadata } from 'next'
export async function generateMetadata(
{ params }: { params: Promise<{ slug: string }> }
): Promise<Metadata> {
const { slug } = await params
const data = await getData(slug)
return {
title: data.title,
description: data.description,
openGraph: {
title: data.title,
description: data.description,
type: 'article',
url: `https://example.com/${slug}`,
images: [{ url: data.ogImage, width: 1200, height: 630 }],
},
alternates: { canonical: `https://example.com/${slug}` },
}
}// app/sitemap.ts
import type { MetadataRoute } from 'next'
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const pages = await getAllPages()
return pages.map((page) => ({
url: `https://example.com${page.path}`,
lastModified: page.updatedAt,
changeFrequency: 'weekly',
priority: page.priority,
}))
}
// app/robots.ts
import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: { userAgent: '*', allow: '/', disallow: ['/api/', '/admin/'] },
sitemap: 'https://example.com/sitemap.xml',
}
}~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.