agentsclimarketplace

Ucp audit

Skill ViryaZheng/ucp-onboard/skills/ucp-audit

AI agent skills for onboarding merchants to UCP (Universal Commerce Protocol). Audit → Profile → Catalog → Checkout → Validate.

Install
npx -y skills add ViryaZheng/ucp-onboard --skill ucp-audit

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.

What its author says it does

Copied from the file, not written here

Scans a merchant website and produces a UCP readiness report. Checks for existing structured data, payment providers, platform type, and /.well-known/ucp presence. Outputs a scored diagnostic with actionable fix list. Use when a merchant wants to know how ready they are for AI commerce integration.

SKILL.md

5.9 KB, as published. Nobody here has run it

UCP Audit — Merchant Readiness Scanner

Scan a merchant's website and produce a UCP readiness report with a 0-100 score, asset inventory, gap analysis, and recommended integration path.

Prerequisites

  • Python 3.10+ with requests, beautifulsoup4
  • Merchant URL must be publicly accessible

Step 1: Check UCP Profile

1.1. Fetch {merchant_url}/.well-known/ucp

  • If exists: parse JSON, validate against profile schema, record capabilities found
  • If 404: record as "no UCP profile" (this is expected for most merchants)
  • If malformed JSON: record as "broken UCP profile"

1.2. Record:

  • has_ucp_profile: boolean
  • ucp_capabilities: list of capability names (if profile exists)
  • ucp_version: version string (if profile exists)
  • profile_errors: list of validation errors (if any)

Step 2: Detect Platform

2.1. Check response headers and HTML for platform signatures:

PlatformDetection Method
Shopifyx-shopify-stage header, /cdn.shopify.com/ in HTML, Shopify.theme in JS
WooCommercewc-ajax in HTML, woocommerce in body class, /wp-content/plugins/woocommerce/
Magentomage/ in scripts, Magento_ in HTML comments
BigCommercebigcommerce.com in scripts, data-content-region attributes
CustomNone of the above detected

2.2. Record: platform, platform_confidence (high/medium/low)

Step 3: Inventory Existing Structured Data

3.1. Parse homepage + 2-3 product pages for:

  • JSON-LD (<script type="application/ld+json">) — look for @type: Product, Offer, Organization
  • Open Graph (og:* meta tags) — title, description, image, price
  • Schema.org microdata (itemscope, itemprop attributes)
  • Meta tagsproduct:price:amount, product:price:currency

3.2. For each product page, extract what's already available:

  • Product title → maps to UCP title
  • Price → maps to UCP price.amount (note currency and whether minor units)
  • Description → maps to UCP description.plain
  • Images → maps to UCP media[]
  • SKU → maps to UCP variants[].sku
  • Availability → maps to UCP variants[].availability
  • Categories → maps to UCP categories[]

3.3. Record:

  • structured_data_types: list of found types (json-ld, opengraph, microdata)
  • product_fields_available: dict of {ucp_field: source_field}
  • product_fields_missing: list of UCP required fields with no source
  • sample_products: 2-3 parsed product examples

Step 4: Detect Payment Methods

4.1. Scan for payment provider signatures:

ProviderDetection
Stripejs.stripe.com, stripe.com/v3 in scripts
PayPalpaypal.com/sdk in scripts
Adyenadyen.com in scripts, adyen in form actions
Squaresquareup.com, square.com in scripts
Braintreebraintreegateway.com in scripts
Klarnaklarna.com in scripts

4.2. Record:

  • payment_providers: list of detected providers
  • ucp_payment_handler_ready: boolean (true if Stripe/Adyen/Square detected — these have known UCP payment handler specs)

Step 5: Check API Accessibility

5.1. If platform detected, probe for existing API:

  • Shopify: {url}/products.json (public storefront API)
  • WooCommerce: {url}/wp-json/wc/v3/ (needs auth but check if endpoint exists)

5.2. Record:

  • has_public_api: boolean
  • api_type: string (storefront, rest, graphql, none)

Step 6: Calculate Score & Generate Report

Scoring rubric (100 points total):

CheckPointsCondition
UCP profile exists20/.well-known/ucp returns valid JSON
UCP profile has checkout capability10dev.ucp.shopping.checkout in capabilities
UCP profile has catalog capability10dev.ucp.shopping.catalog in capabilities
Structured product data exists15JSON-LD or microdata with Product type
All required product fields available10title + price + description + at least 1 image
Payment provider detected15At least one known provider
UCP-compatible payment provider5Stripe, Adyen, or Square specifically
Public product API available10Storefront API or REST API accessible
HTTPS enabled5Site loads over HTTPS

Output Contract

Save to store/clients/{client_name}/:

  • audit-report.md - human-readable readiness report
  • audit.json - machine-readable observations and score

Markdown report format:

# UCP Readiness Audit — {merchant_name}

**URL:** {url}
**Date:** {date}
**Score:** {score}/100

## Summary
{1-2 sentence assessment}

## Platform
- **Detected:** {platform} ({confidence})
- **Payment:** {providers}

## What You Already Have (Reusable Assets)
{table of existing data that maps to UCP fields}

## What's Missing
{numbered list of gaps, ordered by impact}

## Recommended Integration Path
{step-by-step plan based on platform + gaps}

## Estimated Effort
- Profile setup: {estimate}
- Catalog mapping: {estimate}
- Checkout API: {estimate}
- Total: {estimate}

HARD RULE — Never fabricate data. If a check fails or returns ambiguous results, report it as "inconclusive" with the raw observation. Do not guess platform type or payment provider.

Scripts

ScriptPurposeDependencies
audit_site.pyMain audit runnerrequests, beautifulsoup4, json, re

Collaboration

ucp-audit (this skill)
    │
    ├── outputs → store/clients/{name}/audit-report.md
    │
    ├── consumed by → ucp-profile (reads platform + payment info)
    └── consumed by → ucp-catalog (reads product field mapping)

Keep looking

Skills are one crate of 328,083. 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.