shopify-admin-agentic-product-taxonomy

SkillCommerce & finance

Assign every product a Shopify Standard Product Taxonomy category so AI agents can map a shopper's intent to the right category and surface the store's products.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the shopify-admin-agentic-product-taxonomy skill

What this skill tells your AI

The instructions your AI receives, as published by 40rty-ai/shopify-admin-skills in skills/agentic/shopify-admin-agentic-product-taxonomy/SKILL.md and read by ahel’s review.

Purpose

AI shopping agents resolve a query ("running shoes", "office chair", "sustainable sneakers") to a taxonomy node, then retrieve products in that node. Products with no Standard Product Taxonomy category are invisible to that mapping — they only surface on exact keyword luck. This skill finds uncategorized (or mis-categorized) products and assigns the correct Shopify standard taxonomy category, inferred from title/type/tags and confirmed against the live taxonomy tree. Fixes category-taxonomy-api and lifts catalog-intent-alignment.

Prerequisites

  • Authenticated Shopify CLI session (shopify auth login --store <domain>)
  • Required API scopes: read_products, write_products

Parameters

All skills accept these universal parameters:

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
formatstringnohumanOutput format: human (default) or json
dry_runboolnofalsePreview mutations without executing

Skill-specific parameters:

ParameterTypeRequiredDefaultDescription
collection_idstringnoLimit to a collection GID
tagstringnoLimit to a product tag
only_missingboolnotrueIf true, only assign products with no category; if false, also review mismatches
confidence_floorfloatno0.7Skip products whose best taxonomy match scores below this

Safety

⚠️ Step 4 (productUpdate) sets the category on live products, which affects storefront facets, marketplaces, and tax. A wrong category mis-files a product everywhere. Run dry_run: true, review the proposed product → category mapping, and only auto-assign matches above confidence_floor; queue the rest for human review.

Workflow Steps

  1. OPERATION: products — query Inputs: first: 250, optional filter; fields title, productType, tags, category{ id fullName }; paginate. Expected output: Products with their current category (or null).

  2. OPERATION: taxonomy — query Inputs: search the standard taxonomy tree by candidate terms derived from each product's type/title. Expected output: Candidate taxonomy category nodes (id + fullName) to match against.

  3. COMPUTE (no API): score each product against candidate nodes; pick the best ≥ confidence_floor. Emit the proposed mapping.

  4. OPERATION: productUpdate — mutation Inputs: { id, category: <taxonomyCategoryId> } per confident match. Expected output: Updated product category; collect userErrors.

GraphQL Operations

# products:query — validated against api_version 2025-01
query TaxonomyProducts($first: Int!, $after: String, $query: String) {
  products(first: $first, after: $after, query: $query) {
    edges {
      node {
        id
        title
        productType
        tags
        category { id fullName }
      }
    }
    pageInfo { hasNextPage endCursor }
  }
}
# taxonomy:query — validated against api_version 2025-01
query TaxonomySearch($search: String) {
  taxonomy {
    categories(first: 20, search: $search) {
      edges { node { id fullName isLeaf level } }
    }
  }
}
# productUpdate:mutation — validated against api_version 2025-01
mutation TaxonomyAssign($input: ProductInput!) {
  productUpdate(input: $input) {
    product { id category { id fullName } }
    userErrors { field message }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: <skill name>                         ║
║  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>

If dry_run: true, prefix every mutation step with [DRY RUN] and do not execute it.

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
OUTCOME SUMMARY
  <Metric label>:   <value>
  Errors:           0
  Output:           <filename or "none">
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "<skill-slug>",
  "store": "<domain>",
  "started_at": "<ISO8601>",
  "completed_at": "<ISO8601>",
  "dry_run": false,
  "steps": [
    {
      "step": 1,
      "operation": "<OperationName>",
      "type": "query",
      "params_summary": "<string>",
      "result_summary": "<string>",
      "skipped": false
    }
  ],
  "outcome": {
    "metric_key": 0,
    "errors": 0,
    "output_file": null
  }
}

Output Format

human: count categorized + a CSV (product, old_category, new_category, confidence) and a "needs review" list below the floor. json: { categorized, needs_review, errors, output_file }.

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limitWait 2s, retry up to 3 times
No taxonomy matchNiche/ambiguous productAdd to needs-review list, do not guess
userErrors on updateInvalid category idLog, skip, continue

Best Practices

  • Pick the most specific (leaf) node you're confident in — agents match deeper categories more precisely than top-level ones.
  • Keep only_missing: true for the first pass; re-categorizing existing assignments is higher-risk and best reviewed.
  • Aligning the category with your storefront collections compounds the benefit: agents and on-site filters then agree.
  • Re-run shopify-admin-agentic-readiness-audit to confirm the Matchable pillar improved.

Signals

GitHub stars
187
Forks
18
Last commit
Aug 2026

ahel review

  • S4info
    community integration — published by 40rty-ai, not shopify

Automated review, not a security audit. Ruleset v1.

Advanced
Catalog kind
skill
Gateway key
shopify-admin-agentic-product-taxonomy
Source
github.com/40rty-ai/shopify-admin-skills