Generated banner for Schema
Generated logo for Schema

Schema

Corey HainesCommunityCreated by Corey Haines

  • Skill
  • Tool integration
  • Software development
  • MIT
  • No issues found

From the author

When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user mentions "schema markup," "structured data," "JSON-LD," "rich snippets," "schema.org," "FAQ schema," "product schema," "review schema," "breadcrumb schema," "Google rich results," "knowledge panel," "star ratings in search," or "add structured data." Use this whenever someone wants their pages to show enhanced results in Google. For broader SEO issues, see seo-audit. For AI search optimization, see ai-seo.
— the description by Corey Haines

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to implementing schema.org markup using JSON-LD. It assists users in defining the correct schema types for their content, ensuring accurate representation for search engines. The skill emphasizes adherence to Google's current guidelines, including awareness of retired features, and provides a framework for validating markup to ensure it matches visible page content.

What it does

  • Generates JSON-LD code blocks for various schema types like Organization, Product, and Article.
  • Provides guidance on combining multiple schema types using the @graph structure.
  • Advises on the correct placement of schema markup within HTML templates or components.
  • Assists in troubleshooting schema implementation errors and validation issues.
  • Clarifies current Google feature support for specific schema types.
  • Integrates with existing product marketing context to tailor schema data.

When to use it

  • When you need to add structured data to a website to help search engines interpret content.
  • When you want to implement or fix JSON-LD markup for specific page types.
  • When you need to verify if your current schema implementation meets technical requirements.
  • When you are unsure which schema types are appropriate for your content.

Advantages

  • Ensures schema markup is technically valid and accurately reflects page content.
  • Promotes the use of Google-recommended JSON-LD format.
  • Helps avoid common implementation pitfalls and outdated schema practices.
  • Provides a clear validation workflow using industry-standard testing tools.

Usage examples

“Can you generate the JSON-LD for a product page with a price and rating?”
The agent provides a valid JSON-LD block for the Product schema type, including required fields like name, image, and offers, and recommended fields like aggregateRating.
“How do I add breadcrumb schema to my website?”
The agent explains the BreadcrumbList schema requirements and provides a JSON-LD example with the necessary itemListElement array.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/coreyhaines31/schema/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip schema.zip -d .agents/skills

Documentation by Corey Haines

Schema Markup

You are an expert in structured data and schema markup. Your goal is to implement schema.org markup that helps search engines understand content and enables rich results in search.

Initial Assessment

Check for product marketing context first: If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.

Before implementing schema, understand:

  1. Page Type - What kind of page? What's the primary content? What rich results are possible?

  2. Current State - Any existing schema? Errors in implementation? Which rich results already appearing?

  3. Goals - Which rich results are you targeting? What's the business value?


Core Principles

1. Accuracy First
  • Schema must accurately represent page content

  • Don't markup content that doesn't exist

  • Keep updated when content changes

2. Use JSON-LD
  • Google recommends JSON-LD format

  • Easier to implement and maintain

  • Place in <head> or end of <body>

3. Follow Google's Guidelines
  • Only use markup Google supports

  • Avoid spam tactics

  • Review eligibility requirements

4. Validate Everything
  • Test before deploying

  • Monitor Search Console

  • Fix errors promptly


Common Schema Types

TypeUse ForRequired Properties
OrganizationCompany homepage/aboutname, url
WebSiteHomepage/site identityname, url
ArticleBlog posts, newsheadline, image, datePublished, author
ProductProduct pagesname, image, offers
SoftwareApplicationSaaS/app pagesname, offers
FAQPageFAQ contentmainEntity (Q&A array)
HowToTutorialsname, step
BreadcrumbListAny page with breadcrumbsitemListElement
LocalBusinessLocal business pagesname, address
EventEvents, webinarsname, startDate, location

For complete JSON-LD examples: See references/schema-examples.md

Check Google Feature Support First

Schema.org vocabulary validity does not establish Google feature eligibility. Before implementing markup for a requested search appearance, check Google's current supported structured data gallery.

  • FAQPage: Google stopped showing FAQ rich results on May 7, 2026, and removed the feature's documentation in June. The earlier government/health-site exception is no longer a route to FAQ rich results. See Google's documentation updates.

  • HowTo: Google retired HowTo rich results in September 2023. See the retirement announcement.

  • WebSite / SearchAction: Google retired the sitelinks search box in November 2024; WebSite still supports site names. See the search box announcement.

These types can still describe matching visible content in Schema.org. Explain that distinction, ask which consumer needs the markup, and do not recommend implementation to obtain a retired Google appearance. Do not treat missing retired-feature reports or Rich Results Test detection as a broken implementation, or remove unrelated supported markup.


Quick Reference

Organization (Company Page)

Required: name, url Recommended: logo, sameAs (social profiles), contactPoint

Article/BlogPosting

Required: headline, image, datePublished, author Recommended: dateModified, publisher, description

Product

Required: name, image, offers (price + availability) Recommended: sku, brand, aggregateRating, review

FAQPage

Required: mainEntity (array of Question/Answer pairs) Optional semantic markup for visible FAQs; not a way to obtain Google FAQ rich results. Check the feature-support guidance above before offering code.

BreadcrumbList

Required: itemListElement (array with position, name, item)


Multiple Schema Types

You can combine multiple schema types on one page using @graph:

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Organization", ... },
    { "@type": "WebSite", ... },
    { "@type": "BreadcrumbList", ... }
  ]
}

Validation and Testing

Tools
Common Errors

Missing required properties - Check Google's documentation for required fields

Invalid values - Dates must be ISO 8601, URLs fully qualified, enumerations exact

Mismatch with page content - Schema doesn't match visible content


Implementation

Static Sites
  • Add JSON-LD directly in HTML template

  • Use includes/partials for reusable schema

Dynamic Sites (React, Next.js)
  • Component that renders schema

  • Server-side rendered for SEO

  • Serialize data to JSON-LD

CMS / WordPress
  • Plugins (Yoast, Rank Math, Schema Pro)

  • Theme modifications

  • Custom fields to structured data


Output Format

Schema Implementation
// Full JSON-LD code block
{
  "@context": "https://schema.org",
  "@type": "...",
  // Complete markup
}
Testing Checklist
  • [ ] Requested Google appearance is currently supported, or a separate semantic consumer is identified

  • [ ] Validates in Schema.org Validator; supported Google features also pass Rich Results Test

  • [ ] Required-field errors resolved; recommended-field warnings reviewed

  • [ ] Matches page content

  • [ ] All required properties included


Task-Specific Questions

  1. What type of page is this?

  2. What rich results are you hoping to achieve?

  3. What data is available to populate the schema?

  4. Is there existing schema on the page?

  5. What's your tech stack?


  • seo-audit: For overall SEO including schema review

  • ai-seo: For AI search optimization (schema helps AI understand content)

  • programmatic-seo: For templated schema at scale

  • site-architecture: For breadcrumb structure and navigation schema planning

Files

evals/evals.json

{
  "skill_name": "schema",
  "evals": [
    {
      "id": 1,
      "prompt": "Add schema markup to our SaaS product's homepage. We're a project management tool called TaskFlow. We need Organization schema and any other relevant types.",
      "expected_output": "Should check for product-marketing.md first. Should implement Organization schema in JSON-LD format with all required and recommended properties (name, url, logo, description, sameAs for social profiles). Should recommend additional schema types for a SaaS homepage: WebSite (with SearchAction if applicable), SoftwareApplication or Product. Should use @graph for multiple schema types on one page. Should provide the complete JSON-LD code ready to implement. Should recommend validation with Google's Rich Results Test and Schema.org validator.",
      "assertions": [
        "Checks for product-marketing.md",
        "Implements Organization schema in JSON-LD",
        "Includes required and recommended properties",
        "Recommends additional relevant schema types",
        "Uses @graph for multiple types",
        "Provides complete JSON-LD code",
        "Recommends validation tools"
      ],
      "files": []
    },
    {
      "id": 2,
      "prompt": "We have a FAQ page with 20 questions about our product. How do I add FAQ schema to get the rich results in Google?",
      "expected_output": "Should implement FAQPage schema in JSON-LD format. Should show the correct structure: FAQPage as mainEntity containing Question items, each with acceptedAnswer. Should provide a complete code example with 2-3 sample questions. Should explain that FAQ schema can enable rich results showing questions/answers directly in search. Should note Google's guidelines for FAQ schema (factual answers, not promotional). Should recommend validation approach.",
      "assertions": [
        "Implements FAQPage schema in JSON-LD",
        "Shows correct nested structure (FAQPage > Question > Answer)",
        "Provides complete code example",
        "Explains rich result benefits",
        "Notes Google's FAQ schema guidelines",
        "Recommends validation"
      ],
      "files": []
    },
    {
      "id": 3,
      "prompt": "add schema to our blog posts. we publish articles about marketing tips.",
      "expected_output": "Should trigger on casual phrasing. Should implement Article (or BlogPosting) schema in JSON-LD. Should include required properties: headline, author (as Person with name and url), datePublished, dateModified, image, publisher (as Organization). Should recommend BreadcrumbList schema alongside the article schema. Should provide template code that can be reused across blog posts. Should address how to populate dynamic fields (date, author, headline) from the CMS.",
      "assertions": [
        "Triggers on casual phrasing",
        "Implements Article or BlogPosting schema",
        "Includes author, datePublished, image, publisher",
        "Recommends BreadcrumbList alongside",
        "Provides reusable template code",
        "Addresses CMS integration for dynamic fields"
      ],
      "files": []
    },
    {
      "id": 4,
      "prompt": "We're an e-commerce site selling physical products. What schema markup do we need for our product pages?",
      "expected_output": "Should implement Product schema with full properties: name, description, image, brand, sku, offers (with price, priceCurrency, availability, url). Should recommend AggregateRating if they have reviews, and Review schema for individual reviews. Should include BreadcrumbList for navigation. Should address common e-commerce schema types: Product, Offer, AggregateRating, Review. Should provide complete JSON-LD code. Should note that Product schema can enable rich results (price, availability, ratings in search).",
      "assertions": [
        "Implements Product schema with full properties",
        "Includes Offer with price, availability",
        "Recommends AggregateRating and Review schema",
        "Includes BreadcrumbList",
        "Provides complete JSON-LD code",
        "Notes rich result benefits for products"
      ],
      "files": []
    },
    {
      "id": 5,
      "prompt": "We added schema markup to our site but it's not showing rich results in Google. Can you help debug?",
      "expected_output": "Should provide a systematic debugging approach: first validate with Google Rich Results Test and Schema.org validator (syntax errors), then check for common issues (incorrect nesting, missing required properties, JSON-LD placement errors). Should explain that valid schema doesn't guarantee rich results — Google chooses when to show them. Should recommend checking Search Console for structured data reports and errors. Should address common debugging scenarios: schema not detected, warnings vs errors, eligible vs displayed.",
      "assertions": [
        "Recommends validation tools for debugging",
        "Checks for common schema errors",
        "Explains valid schema doesn't guarantee rich results",
        "Recommends Search Console structured data reports",
        "Addresses warnings vs errors distinction",
        "Provides systematic debugging approach"
      ],
      "files": []
    },
    {
      "id": 6,
      "prompt": "Our organic search traffic dropped after a site redesign. Can you do a technical SEO audit?",
      "expected_output": "Should recognize this is a technical SEO audit request, not a schema markup task. Should defer to or cross-reference the seo-audit skill, which handles comprehensive technical SEO audits. Schema markup is one component of SEO but doesn't address the broader technical issues (redirects, crawlability, indexation) that likely caused the traffic drop.",
      "assertions": [
        "Recognizes this as a technical SEO audit request",
        "References or defers to seo-audit skill",
        "Does not attempt full SEO audit using schema markup patterns"
      ],
      "files": []
    },
    {
      "id": 7,
      "prompt": "Our Next.js product page embeds JSON-LD with dangerouslySetInnerHTML and JSON.stringify(schema). Product names come from a CMS and can contain HTML, quotes, ampersands and Unicode. How do we keep product text intact without allowing it to terminate the JSON-LD script element?",
      "expected_output": "Should use the schema implementation example and escape the serialized JSON for its HTML script context by replacing every less-than character with a literal JSON Unicode escape before assigning __html. Should explain that JSON.stringify alone does not protect the HTML parser boundary, preserve the original product text when JSON is parsed, and avoid deleting content, HTML-entity escaping JSON or directly interpolating raw names. Should refer to the current official Next.js guidance.",
      "assertions": [
        "Identifies the script element HTML parsing boundary",
        "Escapes every less-than character after JSON serialization",
        "Preserves original product text after JSON.parse",
        "Does not treat JSON.stringify alone as safe HTML embedding",
        "Uses the linked Next.js guidance"
      ],
      "files": []
    },
    {
      "id": 8,
      "prompt": "It's October 2026. Our product FAQ has 20 questions. Add FAQ schema so Google shows expandable questions in our search result, and tell us how to validate that feature.",
      "expected_output": "Should explain before offering implementation that Google stopped showing FAQ rich results in May 2026, citing Google's current documentation updates. The earlier government/health exception does not apply now. Should separate Schema.org vocabulary validity from Google feature eligibility. If semantic FAQPage markup is still wanted for another consumer, ask for the actual visible questions and answers and use mainEntity > Question > acceptedAnswer; don't invent product answers. Recommend Schema.org Validator for vocabulary. Missing FAQ detection or reports in Rich Results Test or Search Console is not an implementation defect. Do not promise expandable results or tell the user to delete unrelated supported markup.",
      "assertions": [
        "Explains Google FAQ rich results were retired before proposing code",
        "Cites current official Google feature guidance",
        "Does not present the old government/health exception as current eligibility",
        "Separates Schema.org validity from Google feature eligibility",
        "Offers semantic markup only with a separate purpose and actual visible content",
        "Does not treat missing retired-feature detection/reporting as a defect",
        "Does not promise the requested retired search appearance"
      ],
      "files": []
    },
    {
      "id": 9,
      "prompt": "Our tutorial uses valid HowTo JSON-LD but the Rich Results Test does not detect it. Should we fix the syntax until Google shows tutorial steps? Also, our homepage lost its sitelinks search box; should we delete all WebSite markup?",
      "expected_output": "Should check current feature support and explain Google's HowTo and sitelinks search box retirements with official references. Valid vocabulary cannot restore those appearances. Use Schema.org Validator if there is a semantic consumer; do not diagnose missing retired-feature detection as a syntax failure. Preserve useful WebSite site-name markup and unrelated supported features. Separate remaining syntax/content issues from feature availability.",
      "assertions": [
        "Recognizes retired HowTo and sitelinks search box features",
        "Separates syntax errors from unavailable appearances",
        "Keeps WebSite site identity and unrelated supported markup",
        "Uses official feature-support sources and appropriate validators"
      ],
      "files": []
    }
  ]
}

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Corey Haines
Publisher
Corey Haines (Community)
Source
coreyhaines31/marketingskills · skills/schema · commit 96798cf
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Corey Haines.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download schema.zip