Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add adaptocms/adapto-cms-agent-skills --skill adapto-seo-wiregit clone --depth 1 https://github.com/adaptocms/adapto-cms-agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/adaptocms/adapto-cms-agent-skills/adapto-seo-wire)<a href="https://agentmods.dev/skills/adaptocms/adapto-cms-agent-skills/adapto-seo-wire"><img src="https://agentmods.dev/badge/skills/adaptocms/adapto-cms-agent-skills/adapto-seo-wire/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/adaptocms/adapto-cms-agent-skills/adapto-seo-wire"><img src="https://agentmods.dev/badge/skills/adaptocms/adapto-cms-agent-skills/adapto-seo-wire.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00088 | $0.01692 |
| Opus 5 | $0.00044 | $0.00846 |
| Sonnet 5 | $0.00018 | $0.00338 |
| Haiku 4.5 | $0.00009 | $0.00169 |
Grade A, and why
adapto-seo-wire scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 92 lines — stays where its author put it; the contents beside it link to each section on GitHub.
adapto:seo-wire
adapto:content-upload stores SEO metadata in _adapto_seo, but the starters render only <title>. This
skill makes it render: a one-time, per-project setup that installs a head-render layer reading
_adapto_seo (emitting <title>, meta description, OG/Twitter tags, and JSON-LD) and generates llms.txt /
llms-full.txt from your inventory. It is consent-gated and only edits your own app templates —
never the read-client (forbidden-actions.md; see
seo-standards.md for what's rendered).
When to use
- "Make my SEO/meta render", "wire up the head tags", "generate llms.txt", "the OG tags aren't showing".
- Once per project, after
adapto:content-uploadhas written_adapto_seoitems (or alongside the first upload).
When not to use
- Storing metadata (that's
adapto:content-upload, into_adapto_seo). - Writing or uploading content → the content pipeline.
- Just checking the environment →
adapto:doctor.
Inputs
- The scaffolded frontend in the cwd, and its framework (Next / Astro / SvelteKit — detected as
adapto:doctordoes). - The
_adapto_seocollection (read at render time, bytarget_slug). inventory.md— the content listllms.txtis generated from.
Outputs
- A head-render layer in the app's own templates (per framework: Next
generateMetadata/ Astro<head>in the layout / SvelteKit<svelte:head>) that reads_adapto_seoand emits title/description/OG/Twitter/JSON-LD. - Generated
llms.txt+llms-full.txtat the site root, frominventory.md. - If you decline the edits: the exact per-framework snippets written to
.adapto/seo-render/<framework>/for you to paste, plus instructions. Nothing is changed without consent. - Next step: restart the dev server and check a page's
<head>(and/llms.txt); re-run after big inventory changes to refreshllms.txt.
Wiring (consent-gated)
- Detect the framework and locate the layout/head entry point + the static/
publicdir. - Inform + show the exact files/diffs you'd add/change (the head component + the
llms.txtgenerator/route), noting it edits app templates, not the read-client. Ask as a pickable question:Yes, wire it/Just give me the snippets(plus free-form). - On consent: write the head-render layer (reads
_adapto_seobytarget_slug; falls back to the content title when no metadata exists) and generatellms.txt/llms-full.txtfrominventory.md. Idempotent — re-running updates rather than duplicating. Per framework the real work differs — the scaffolds ship dynamic detail routes with little or no metadata:- Astro: add meta/OG/JSON-LD to the single head component (
src/layouts/Layout.astro). - Next (App Router): dynamic routes (
app/**/[slug]/page.tsx,[collection_slug]/[item_slug]) export nogenerateMetadata— add anasync generateMetadata(props)to each (await params), and inject JSON-LD as a<script type="application/ld+json">in the component tree. - SvelteKit: each detail route sets only
<title>in<svelte:head>— thread SEO through the route's+page.server.tsload→dataprop →<svelte:head>(env is server-private, so the fetch stays in.server.ts). - All three ship
src/lib/reserved.ts(hides_-prefixed collections + shadow slugsarticles/collections/micro-copies/pages) — respect it in nav/sitemap/llms.txt. - ⚠️
_adapto_seovisibility:content-uploadwrites those items as draft, andadapto:publishmay have published only the content piece, not its SEO item — so a published site's read-client may not see the metadata. Ensure the piece's_adapto_seoitem is published too (or that the fetch includes drafts via the key). Verify a real page's rendered<head>after wiring — don't assume it renders.
- Astro: add meta/OG/JSON-LD to the single head component (
- If declined: write the snippets to
.adapto/seo-render/<framework>/+ a short how-to; change nothing else. - Then tell the user to restart the dev server and verify the
<head>+/llms.txt. If you started the dev server, leave it running (conventions.md §14).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 92 lines · 88 tokens per session scan A 4407fc03dd3a
adapto-seo-wire is a skill published in the GitHub repository adaptocms/adapto-cms-agent-skills (1 stars, last pushed 1mo ago), licensed MIT. It adds 88 tokens to every session and 1,692 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
accessibility
Audit and improve web accessibility following WCAG 2.2 guidelines. Use when asked to "improve accessibility", "a11y audit", "WCAG compliance", "screen reader support", "keyboard navigation", or "make accessible".
performance
Optimize web performance for faster loading and better user experience. Use when asked to "speed up my site", "optimize performance", "reduce load time", "fix slow loading", "improve page speed", or "performance audit".
core-web-vitals
Optimize Core Web Vitals (LCP, INP, CLS) for better page experience using field and lab evidence. Use when asked to "improve Core Web Vitals", "fix LCP", "reduce CLS", "optimize INP", "page experience optimization", or "fix layout shifts".
shiny-bslib-theming
Advanced theming for Shiny apps using bslib and Bootstrap 5. Use when customizing app appearance with bstheme(), Bootswatch themes, custom colors, typography, brand.yml integration, Bootstrap Sass variables, custom Sass/CSS rules, dark mode and color modes, dynamic theme switching, real-time theming, theme inspection…
shiny-bslib
Build modern Shiny dashboards and applications using bslib (Bootstrap 5). Use when creating new Shiny apps, modernizing legacy apps (fluidPage, fluidRow/column, tabsetPanel, wellPanel, shinythemes), or working with bslib page layouts, grid systems, cards, value boxes, navigation, sidebars, filling layouts, theming…
liveview-patterns
Build LiveView: async data (assignasync), PubSub (check connected?), phx-change events, form components/modals/uploads, streams for lists, livepatch. Use when handling interactions, debugging events, or tracking Presence.