Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
40rty-ai avatar

Shopify Admin Metafield Definition Audit

  • 2 installs
  • 173 repo stars
  • Updated June 26, 2026
  • 40rty-ai/shopify-admin-skills

shopify-admin-metafield-definition-audit is a read-only Claude Code skill that inventories every Shopify metafield definition and flags unused, undocumented, or duplicate-key definitions.

About

This Claude Code skill inventories every Shopify metafield definition across owner types (product, variant, customer, order, and more) and flags definitions that are unused, undocumented, or share a namespace.key collision. Store administrators use it to control definition sprawl, a leading source of theme/app bugs and slow admin search. It is read-only and provides the data foundation for a later cleanup.

  • Enumerates every metafield definition across all owner types
  • Flags unused (zero values), undocumented (no description), and duplicate namespace.key definitions
  • Read-only; provides the data foundation for a definition-cleanup workflow

Shopify Admin Metafield Definition Audit by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #1,759 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-metafield-definition-audit capabilities & compatibility

Free; needs read scopes for the audited owner types on a Shopify CLI session.

Capabilities
metafield definition audit · unused definition detection · duplicate key detection
Use cases
data analysis
Pricing
Free
From the docs

What shopify-admin-metafield-definition-audit says it does

Inventories every metafield definition (PRODUCT, VARIANT, CUSTOMER, ORDER, COLLECTION, COMPANY, LOCATION, and others) and flags definitions that are unused (zero values stored), undocumented (missing
SKILL.md
Definition sprawl is a leading source of theme/app bugs and slow Admin search.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-metafield-definition-audit

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
repo stars173
Last updatedJune 26, 2026
Repository40rty-ai/shopify-admin-skills

What it does

Audit Shopify metafield definitions and flag unused, undocumented, or duplicate ones.

Who is it for?

Finding metafield-definition sprawl (unused, undocumented, or colliding keys) before a cleanup.

Skip if: Deleting or editing definitions; it only reports and flags.

When should I use this skill?

You want to audit metafield definitions across owner types before cleaning them up.

What you get

A per-owner-type inventory of definitions flagged as unused, undocumented, or duplicate.

  • Per-owner-type definition inventory with unused/undocumented/duplicate flags

By the numbers

  • 3 flag types (unused, undocumented, duplicate_key)
  • Scans metafieldDefinitions across all owner types (PRODUCT, VARIANT, CUSTOMER, ORDER, COLLECTION, COMPANY, LOCATION)

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Inventories every metafield definition (PRODUCT, VARIANT, CUSTOMER, ORDER, COLLECTION, COMPANY, LOCATION, and others) and flags definitions that are unused (zero values stored), undocumented (missing description), or share a namespace.key collision across owner types. Definition sprawl is a leading source of theme/app bugs and slow Admin search. Read-only — no mutations. Provides the data foundation for a definition-cleanup workflow.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store <domain> --scopes read_products,read_customers,read_orders,read_inventory
  • API scopes: read scopes for any owner types in scope (defaults: read_products, read_customers, read_orders)

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
owner_typesstringnoallComma-separated owner types to scan (e.g. PRODUCT,CUSTOMER); all scans every supported type
flag_unusedboolnotrueFlag definitions whose metafieldsCount is zero
flag_undocumentedboolnotrueFlag definitions with empty/null description
flag_duplicatesboolnotrueFlag namespace.key pairs that exist on more than one owner type
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. Safe to run at any time. No metafield definitions are deleted, updated, or pinned by this skill.

Workflow Steps

1. Determine the list of owner types to scan from owner_types (default: full list).

2. OPERATION: metafieldDefinitions — query Inputs: For each owner type: first: 250, ownerType: <TYPE>, select id, namespace, key, name, description, type { name }, pinnedPosition, metafieldsCount, validations { name value }, pagination cursor Expected output: All definitions per owner type with usage counts; paginate until hasNextPage: false

3. Build flag set per definition:

  • unusedmetafieldsCount == 0 and flag_unused: true
  • undocumenteddescription is null or empty and flag_undocumented: true
  • duplicate_keynamespace.key appears on more than one owner type and flag_duplicates: true

4. Group results by owner type for the report and emit per-flag summaries.

GraphQL Operations

# metafieldDefinitions:query — validated against api_version 2025-01
query MetafieldDefinitionAudit($ownerType: MetafieldOwnerType!, $after: String) {
  metafieldDefinitions(first: 250, after: $after, ownerType: $ownerType) {
    edges {
      node {
        id
        namespace
        key
        name
        description
        ownerType
        pinnedPosition
        metafieldsCount
        type {
          name
          category
        }
        validations {
          name
          value
          type
        }
        access {
          admin
          storefront
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Metafield Definition Audit           ║
║  Store: <store domain>                       ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
METAFIELD DEFINITION AUDIT
  Owner types scanned:    <n>
  Total definitions:      <n>

  By owner type:
    PRODUCT:    <n>   (unused: <n>, undocumented: <n>)
    VARIANT:    <n>   (unused: <n>, undocumented: <n>)
    CUSTOMER:   <n>   (unused: <n>, undocumented: <n>)
    ORDER:      <n>   (unused: <n>, undocumented: <n>)

  Flags:
    Unused definitions:        <n>
    Undocumented definitions:  <n>
    Duplicate keys:            <n>

  Examples:
    PRODUCT  custom.swatch_hex      unused (0 values)
    CUSTOMER custom.vip_tier        undocumented
    ORDER+CUSTOMER  custom.notes    duplicate key across owner types
  Output: metafield_def_audit_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "metafield-definition-audit",
  "store": "<domain>",
  "owner_types_scanned": 0,
  "total_definitions": 0,
  "unused_definitions": 0,
  "undocumented_definitions": 0,
  "duplicate_keys": 0,
  "output_file": "metafield_def_audit_<date>.csv"
}

Output Format

CSV file metafield_def_audit_<YYYY-MM-DD>.csv with columns: definition_id, owner_type, namespace, key, name, type, description_present, metafields_count, pinned, is_unused, is_undocumented, is_duplicate_key, flags

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
ACCESS_DENIED for an owner typeCaller lacks the read scope for that resourceSkip that owner type with a warning row in the CSV
metafieldsCount returns nullOwner type does not expose count, or count is still computingTreat as unknown; do not flag as unused
Owner type not supported in API versionNewer owner type not yet availableSkip with warning; re-run after API version upgrade

Best Practices

  • Run quarterly and after any app install/uninstall — apps frequently leave behind their definitions when removed.
  • Do NOT bulk-delete unused definitions without first searching the storefront theme for references to that namespace.key. Theme liquid may read a definition that has zero saved values yet (e.g., a newly added field that has not been populated).
  • Pin the most-used definitions (pinnedPosition set) to surface them in the merchant Admin UI; un-pinned but heavily used definitions are a UX smell.
  • Duplicate keys across owner types are not always wrong (e.g., custom.notes on both ORDER and CUSTOMER may be intentional) but they almost always indicate copy-paste creation — review for consistency in type and validations.
  • Pair with a metafield-value sampling skill (per owner type) before any cleanup to confirm true zero usage; counts can lag in fresh stores.
  • Keep the CSV in version control alongside theme/app schema docs — the diff over time is the cleanest record of catalog-data evolution.

Related skills

FAQ

What does it flag?

Unused definitions (zero stored values), undocumented ones (empty description), and namespace.key pairs that collide across owner types.

Does it delete anything?

No. It is read-only; no definitions are deleted, updated, or pinned.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.