AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Shopify Admin Product Data Completeness Score

skill-40rty-ai-shopify-admin-skills-shopify-admin-product-data-completeness-score · by 40RTY-ai

Read-only: scores each product on data completeness across description, images, SEO, weight, barcode, cost, and metafields.

No reviews yet
0 installs
39 views
0.0% view→install

Install

$ agentstack add skill-40rty-ai-shopify-admin-skills-shopify-admin-product-data-completeness-score

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures
View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-40rty-ai-shopify-admin-skills-shopify-admin-product-data-completeness-score)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Shopify Admin Product Data Completeness Score? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Purpose

Calculates a data completeness score (0–100) for each active product based on the presence of key fields: description, images, SEO title, SEO description, variant weight, barcode, cost, and specified metafields. Produces a ranked list of products needing the most data work. Read-only — no mutations. Catalog health report in a single pass.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store --scopes read_products
  • API scopes: read_products

Parameters

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | store | string | yes | — | Store domain (e.g., mystore.myshopify.com) | | statusfilter | string | no | active | Product status to score: active, draft, or all | | requiredmetafields | array | no | [] | List of namespace.key metafields that are required (e.g., ["custom.material"]) | | format | string | no | human | Output format: human or json |

Safety

> ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.

Scoring Rubric

| Field | Points | |-------|--------| | Description present (non-empty) | 15 | | At least 1 image | 15 | | SEO title present | 10 | | SEO description present | 10 | | At least 1 variant with barcode | 10 | | At least 1 variant with cost | 10 | | At least 1 variant with weight | 10 | | All required metafields present | 20 (split evenly) | | Total | 100 |

Workflow Steps

  1. OPERATION: products — query

Inputs: query: "status:", first: 250, select all completeness fields, pagination cursor Expected output: Products with all scored fields; paginate until hasNextPage: false

  1. Score each product per rubric; rank ascending by score

GraphQL Operations

# products:query — validated against api_version 2025-01
query ProductCompleteness($query: String!, $after: String) {
  products(first: 250, after: $after, query: $query) {
    edges {
      node {
        id
        title
        handle
        descriptionHtml
        images(first: 1) {
          edges {
            node {
              id
            }
          }
        }
        seo {
          title
          description
        }
        variants(first: 10) {
          edges {
            node {
              id
              barcode
              weight
              inventoryItem {
                unitCost {
                  amount
                }
              }
            }
          }
        }
        metafields(first: 20) {
          edges {
            node {
              namespace
              key
              value
            }
          }
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Product Data Completeness Score      ║
║  Store:                        ║
║  Started:              ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL]   
          → Params: 
          → Result: 

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
PRODUCT DATA COMPLETENESS REPORT
  Products scored:  
  Avg score:        /100
  Score  products (need urgent attention)
  Score 50–79:       products
  Score ≥ 80:        products

  Lowest scoring products:
    ""  Score: /100  Missing: description, SEO title
  Output: completeness_.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "product-data-completeness-score",
  "store": "",
  "products_scored": 0,
  "avg_score": 0,
  "below_50_count": 0,
  "output_file": "completeness_.csv"
}

Output Format

CSV file completeness_.csv with columns: product_id, title, score, has_description, image_count, has_seo_title, has_seo_description, has_barcode, has_cost, has_weight, missing_metafields

Error Handling

| Error | Cause | Recovery | |-------|-------|----------| | THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times | | No products match filter | Empty catalog or wrong filter | Exit with 0 results |

Best Practices

  • Use this skill as a pre-launch gate — run before activating DRAFT products to ensure all required fields are filled.
  • Tune required_metafields to your store's specific needs (e.g., custom.material for apparel, custom.ingredients for food).
  • A score below 50 typically means a product is missing foundational content (description or images) and should be deprioritized from launch until fixed.
  • Run monthly to track catalog quality trends over time; improvements after a content sprint should be visible in the average score.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.