
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)
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
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
Definition sprawl is a leading source of theme/app bugs and slow Admin search.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-metafield-definition-auditAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 173 |
| Last updated | June 26, 2026 |
| Repository | 40rty-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
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| owner_types | string | no | all | Comma-separated owner types to scan (e.g. PRODUCT,CUSTOMER); all scans every supported type |
| flag_unused | bool | no | true | Flag definitions whose metafieldsCount is zero |
| flag_undocumented | bool | no | true | Flag definitions with empty/null description |
| flag_duplicates | bool | no | true | Flag namespace.key pairs that exist on more than one owner type |
| format | string | no | human | Output 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:
unused—metafieldsCount == 0andflag_unused: trueundocumented—descriptionis null or empty andflag_undocumented: trueduplicate_key—namespace.keyappears on more than one owner type andflag_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
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
ACCESS_DENIED for an owner type | Caller lacks the read scope for that resource | Skip that owner type with a warning row in the CSV |
metafieldsCount returns null | Owner type does not expose count, or count is still computing | Treat as unknown; do not flag as unused |
| Owner type not supported in API version | Newer owner type not yet available | Skip 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 (
pinnedPositionset) 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.noteson both ORDER and CUSTOMER may be intentional) but they almost always indicate copy-paste creation — review for consistency intypeandvalidations. - 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.