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 textura-agency/next16-claude-starter --skill schema-markupgit clone --depth 1 https://github.com/textura-agency/next16-claude-starterWrote 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/textura-agency/next16-claude-starter/schema-markup)<a href="https://agentmods.dev/skills/textura-agency/next16-claude-starter/schema-markup"><img src="https://agentmods.dev/badge/skills/textura-agency/next16-claude-starter/schema-markup/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/textura-agency/next16-claude-starter/schema-markup"><img src="https://agentmods.dev/badge/skills/textura-agency/next16-claude-starter/schema-markup.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00085 | $0.01567 |
| Opus 5.5 | $0.00034 | $0.00627 |
| Sonnet 5.5 | $0.00017 | $0.00313 |
| Haiku 4.5 | $0.00009 | $0.00157 |
Grade A, and why
schema-markup scanned grade A with 1 finding 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 23d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
`curl -s -A "Googlebot/2.1" <url>/ | grep -c 'application/ld+json'` equals How it starts
The opening of the file, as written. The whole thing — 117 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Structured data (JSON-LD)
This project already has src/utils/seo/structured-data.ts: typed builders
that each return a JsonLdNode — getSiteStructuredData() (Organization or a
LocalBusiness subtype + WebSite, rendered once by the root layout),
getBreadcrumbStructuredData(path) (from the route registry's parent chain),
getArticleStructuredData, getServiceStructuredData,
getFaqStructuredData, getPersonStructuredData,
getLocalBusinessStructuredData (one location of a multi-location business)
— plus jsonLdGraph(...nodes)
and <JsonLd data> (src/components/common/json-ld.tsx, escapes <).
Use and extend those. Never hand-write a
<script type="application/ld+json"> in a component.
First: what is the markup for?
Schema.org validity does not make a page eligible for a Google rich result. Check Google's current supported-features gallery (developers.google.com/search/docs/appearance/structured-data/search-gallery) before promising one:
- FAQ rich results stopped showing on 7 May 2026 (docs removed in June).
- HowTo rich results were retired in 2023.
- Sitelinks search box (
WebSite+SearchAction) was retired in 2024;WebSitestill feeds the site name.
Those types may still describe matching visible content — answer engines (ChatGPT, Perplexity, Claude) read them — but say so, and never sell them as a rich-result win. A missing report in Search Console for a retired feature is not a broken implementation.
Still worth it for Google: Organization (logo, knowledge panel facts),
BreadcrumbList, Article/BlogPosting, Product + Offer, LocalBusiness,
Event, Review/AggregateRating (on the reviewed thing only), VideoObject,
JobPosting.
Rules
- JSON-LD only — never microdata or RDFa (hard rule #10).
- Only describe what is on the page. Schema that claims content the page does not contain is spam, and Google treats it that way.
- Reference, don't duplicate. Build the graph with
@idreferences between entities so the Organization is defined once and linked from everywhere. - Values come from
siteConfig(src/lib/site.ts—organizationholds the founding date, contact, address,sameAs, and the local factsopeningHours,geo,areaServed,priceRange,hasMap), the route registry (src/lib/routes.ts) and the page's own props — never hardcoded a second time. Leave a fact out rather than guess one. - Validate: the JSON parses, required properties are present, URLs are absolute.
- No placeholder names. The graph reads
siteConfig.name— on sites built from the old starter the JSON-LDOrganizationsaid "New Project" while Lighthouse still scored SEO 100.logopoints at the brand mark (/icon-512.pngfrom the brand kit, or the logo file), never the starter's icon;sameAslists only profiles the site actually links. - The robot form carries the same graph. Crawlers get
/robot-viewunder/(optimize-load/references/robot-path.md); render JSON-LD from the root layout or the view so both forms emit it, and diff the two:curl -s -A "Googlebot/2.1" <url>/ | grep -c 'application/ld+json'equals the people count. - Absolute URLs come from
siteConfig.url, which is the build-time origin — check the deployed graph names the real domain, notlocalhost.
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.
- 23d ago Changed · +52 lines 0afa953914a6
- 1mo ago Changed · +12 lines d5ebc6866223
- 2mo ago First seen · 53 lines · 85 tokens per session scan A 36e2b1441b35
schema-markup is a skill published in the GitHub repository textura-agency/next16-claude-starter (145 stars, last pushed 23d ago), licensed Unlicense. It adds 85 tokens to every session and 1,567 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
schema-markup compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| schema-markuptextura-agency/next16-claude-starter | Skill | 145 | 23d ago | Unlicense | A | 85 | Claude Code |
| imagegenopenai/codex | Skill | 133k | yesterday | Apache-2.0 | A | 113 | Codex |
| playwright-climicrosoft/playwright | Skill | 99k | yesterday | Apache-2.0 | A | 19 | Claude Code |
| local-ai-agentsmicrosoft/ai-agents-for-beginners | Skill | 79k | 4d ago | MIT | A | 200 | Claude Code, Codex |
| systematic-debuggingobra/superpowers | Skill | 313k | 3d ago | MIT | A | 21 | Claude Code |
| next-cache-components-adoptionvercel/next.js | Skill | 143k | today | MIT | A | 95 | Claude Code |
| next-partial-prefetching-adoptionvercel/next.js | Skill | 143k | today | MIT | A | 103 | Claude Code |