Skip to content
Report library
Purpose / Data analysis

Schema Skill Security Audit

What the author says it does (original text)

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

Independent security check

Do not install or run it yet

Files checked
3
Risks found
1
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
High risk

The Next.js example can let dynamic product data escape JSON-LD and execute browser code

Source references: 2
What we found

The example places an object containing `product.name` into `dangerouslySetInnerHTML` after only applying `JSON.stringify`. JSON serialization does not make `<` safe for inline HTML; a dynamic field containing `</script>` can close the JSON-LD element early and cause following content to be parsed as executable HTML or JavaScript.

Why this matters

If an attacker can control a product name or another schema field, they could execute script in visitors' browsers, potentially reading accessible data, acting as the user, or altering the page.

The risk is plausible, although this is a Next.js example users may copy, not code the Skill itself executes. It places dynamic `product.name` into an object and passes `JSON.stringify` output directly to `dangerouslySetInnerHTML`; `JSON.stringify` does not HTML-safely escape `<`. If an untrusted party can control a product field containing `</script>`, the browser could terminate the JSON-LD element early and parse injected content, potentially executing code in visitors’ browsers. Users can ask the author to use a JSON-LD serializer that escapes `<` and to constrain or sanitize dynamic fields.

references/schema-examples.md:378In the instructionsOpen original file
```jsxexport default function ProductPage({ product }) {  const schema = {    "@context": "https://schema.org",    "@type": "Product",    name: product.name,    // ... other properties  };  return (    <>      <Head>        <script          type="application/ld+json"          dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}        />      </Head>
Show 1 other places
SKILL.md:132In the instructionsOpen original file
### Dynamic Sites (React, Next.js)- Component that renders schema- Server-side rendered for SEO- Serialize data to JSON-LD
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.No risks found
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.No risks found
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

8 instruction sections

The Skill's stated purpose is to implement schema.org structured data for websites, while requiring markup to match visible page content, avoid spam tactics, and be validated before deployment.

View source
SKILL.md:29In the instructionsOpen original file
### 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

Before starting, it looks for and reads product-marketing context from one of three conventional locations, then uses that information to reduce follow-up questions. This exposes the Skill to local business material, although the supplied source does not instruct it to transmit that file externally.

View source
SKILL.md:14In the instructionsOpen original file
**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.

It recommends adding JSON-LD directly to static templates or generating it from dynamic data in React/Next.js components. Running the Skill may therefore produce lasting website source changes, consistent with its stated purpose.

View source
SKILL.md:126In the instructionsOpen original file
## 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
Start here · InstructionsSKILL.md
schema
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source. 2 more sections are available in the original file.

File reference map

References: 1
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records3 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • references/schema-examples.mdFull text included
  • evals/evals.jsonFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • evals/evals.jsonSupporting file
  • references/schema-examples.mdSupporting file

Operations mentioned in code and instructions

Connect to websites
SKILL.md:98In the instructionsOpen original file
{  "@context": "https://schema.org",  "@graph": [
SKILL.md:112In the instructionsOpen original file
### Tools- **Google Rich Results Test**: https://search.google.com/test/rich-results- **Schema.org Validator**: https://validator.schema.org/
SKILL.md:113In the instructionsOpen original file
- **Google Rich Results Test**: https://search.google.com/test/rich-results- **Schema.org Validator**: https://validator.schema.org/- **Search Console**: Enhancements reports
Lines read
667
File checksum (to compare versions)
e799fe3ba6b7982814513ec3ca48e6787d3aaa0f6e06bfe4a3fea992b07db513