agentsclimarketplace

Woo product data completeness score

Skill navarroido/Woocommerce-skill/skills/merchandising/woo-product-data-completeness-score

Read-only: Score each product against a required fields checklist (images, description, weight, SKU, attributes) and export a completeness gap report.From its SKILL.md

Install
npx -y skills add navarroido/Woocommerce-skill --skill woo-product-data-completeness-score

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.8 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

woo-product-data-completeness-score

Purpose

Audit every product in your WooCommerce catalog against a configurable completeness checklist and assign a score (0–100). Identifies products missing images, descriptions, weights, SKUs, or other required fields. Exports a prioritized gap report so merchandising teams can systematically improve catalog quality. Read-only — no products are modified.

Prerequisites

  • WooCommerce store with REST API enabled (WooCommerce → Settings → Advanced → REST API)
  • Consumer Key and Consumer Secret with Read scope
  • Store accessible over HTTPS
  • Minimum WooCommerce version: 3.5.0

Parameters

ParameterTypeRequiredDefaultDescription
store_urlstringyesBase URL of the WooCommerce store
consumer_keystringyesWooCommerce REST API consumer key (ck_...)
consumer_secretstringyesWooCommerce REST API consumer secret (cs_...)
dry_runboolnofalseNo effect — read-only skill
formatstringnohumanOutput format: human or json
min_imagesintno1Minimum image count for a passing score
min_description_charsintno100Minimum character count for description field
require_skuboolnotrueFlag products missing SKU
require_weightboolnotrueFlag products missing weight
require_dimensionsboolnofalseFlag products missing length/width/height
score_thresholdintno80Score below which a product is flagged
category_idintnoLimit audit to this category
statusstringnopublishProduct status to audit

Authentication

WooCommerce uses OAuth 1.0a for HTTP and Basic Auth over HTTPS.

For HTTPS stores (recommended):

Authorization: Basic base64(consumer_key:consumer_secret)

For HTTP stores (development only): Use OAuth 1.0a — include oauth_consumer_key, oauth_nonce, oauth_signature, oauth_signature_method=HMAC-SHA1, oauth_timestamp, oauth_version=1.0

Never log or output consumer_key or consumer_secret values.

See docs/AUTHENTICATION.md for full setup instructions.

Safety

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

Workflow Steps

Step 1 — Fetch products

GET /wp-json/wc/v3/products
  ?status=<status>&per_page=100&page=1
  [&category=<category_id>]

Extract per product: id, name, sku, description, short_description, images, weight, dimensions, type, categories, tags, attributes Paginate until response length < 100.

Step 2 — Score each product

For each product, compute a completeness score (0–100) by checking:

  • Has ≥ min_images images → 20 points
  • description length ≥ min_description_chars → 20 points
  • short_description is non-empty → 10 points
  • sku is non-empty (if require_sku) → 20 points
  • weight is non-empty (if require_weight) → 15 points
  • dimensions (length/width/height) are non-empty (if require_dimensions) → 10 points
  • Has ≥ 1 category assigned → 5 points

Flag products with score < score_threshold.

Step 3 — Export report

Sort by score ascending (lowest first). Export CSV.

API Endpoints Used

GET  /wp-json/wc/v3/products           — list all products for audit
GET  /wp-json/wc/v3/products/{id}      — fetch individual product details if needed

Pagination Strategy

WooCommerce REST API uses page/per_page pagination (not cursor-based).

Standard pattern:

page = 1
while True:
  response = GET /endpoint?per_page=100&page=page
  process(response)
  if len(response) < 100: break
  page += 1

Maximum per_page is 100 for most endpoints. The X-WP-Total and X-WP-TotalPages response headers report totals. Always read X-WP-TotalPages on the first request to estimate job size.

Session Tracking

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

STARTUP:

╔══════════════════════════════════════════╗
║  SKILL: woo-product-data-completeness-score║
║  STORE: <store_url>                      ║
║  TIME:  <ISO-8601 UTC>                   ║
║  MODE:  READ-ONLY                        ║
╚══════════════════════════════════════════╝

PER-OPERATION (emit after each API call batch):

[N/TOTAL] <METHOD> <endpoint> → <result_count> records | params: <key>=<val>

COMPLETION (human format):

╔══════════════════════════════════════════╗
║  COMPLETE: woo-product-data-completeness ║
║  RECORDS PROCESSED: <n>                  ║
║  OUTPUT: <filename>                      ║
╚══════════════════════════════════════════╝

COMPLETION (json format):

{
  "skill": "woo-product-data-completeness-score",
  "store": "<store_url>",
  "completed_at": "<ISO-8601>",
  "records_processed": <n>,
  "output_file": "<path>",
  "dry_run": false
}

Output Format

CSV filename: woo-product-data-completeness-score_<YYYY-MM-DD>.csv Columns: product_id, sku, name, score, has_images, image_count, has_description, description_chars, has_short_desc, has_sku, has_weight, has_dimensions, category_count, missing_fields

Error Handling

ErrorCauseResolution
401 UnauthorizedInvalid or missing credentialsVerify consumer_key and consumer_secret
403 ForbiddenConsumer Key lacks Read scopeRegenerate key with Read scope
429 Too Many RequestsRate limit during paginationWait 2 seconds and retry; reduce per_page to 50
Empty resultNo products match filtersCheck status and category_id parameters

Best Practices

  • Run after every catalog import to catch products with missing data.
  • Sort the CSV by score ascending and assign the lowest-scoring products as a weekly cleanup sprint.
  • Set min_description_chars: 200 for SEO-focused audits (100 chars is below recommended SEO length).
  • Combine with woo-seo-metadata-audit for a full catalog quality assessment.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,679. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.