shopify-admin-inventory-valuation-report

SkillCommerce & finance

Read-only: calculates total inventory value (quantity × cost) per location and per vendor for accounting and insurance.

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-inventory-valuation-report skill

What this skill tells your AI

The instructions your AI receives, as published by 40rty-ai/shopify-admin-skills in skills/merchandising/shopify-admin-inventory-valuation-report/SKILL.md and read by ahel’s review.

Purpose

Calculates the total inventory value (on-hand quantity × unit cost) broken down by location and vendor. Used for periodic balance sheet reconciliation, insurance valuation, and cost-of-goods reporting. Read-only — no mutations.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store <domain> --scopes read_products,read_inventory
  • API scopes: read_products, read_inventory
  • Unit costs must be set on inventory items for accurate valuation (variants without cost are included at $0)

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
breakdownstringnobothBreakdown level: location, vendor, or both
include_zero_costboolnotrueInclude items with no cost set (shown as $0)
formatstringnohumanOutput format: human or json

Safety

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

Workflow Steps

  1. OPERATION: locations — query Inputs: first: 50, active locations only Expected output: All active location IDs and names

  2. OPERATION: productVariants — query Inputs: first: 250, select sku, inventoryQuantity, product { vendor }, inventoryItem { id, unitCost }, pagination cursor Expected output: All variants with cost and stock; paginate until hasNextPage: false

  3. OPERATION: inventoryItems — query Inputs: Batch by inventory item IDs; fetch inventoryLevels per location Expected output: Per-location quantities for each inventory item

  4. Calculate: for each (variant, location) pair: value = quantity × unit_cost; aggregate by location and vendor

GraphQL Operations

# locations:query — validated against api_version 2025-01
query ActiveLocationsForValuation {
  locations(first: 50, includeInactive: false) {
    edges {
      node {
        id
        name
        isActive
      }
    }
  }
}
# productVariants:query — validated against api_version 2025-01
query VariantsForValuation($after: String) {
  productVariants(first: 250, after: $after) {
    edges {
      node {
        id
        sku
        inventoryQuantity
        product {
          id
          title
          vendor
        }
        inventoryItem {
          id
          unitCost {
            amount
            currencyCode
          }
          tracked
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
# inventoryItems:query — validated against api_version 2025-01
query InventoryLevelsByLocation($ids: [ID!]!) {
  nodes(ids: $ids) {
    ... on InventoryItem {
      id
      sku
      inventoryLevels(first: 20) {
        edges {
          node {
            location {
              id
              name
            }
            quantities(names: ["on_hand"]) {
              name
              quantity
            }
          }
        }
      }
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Inventory Valuation Report           ║
║  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):

══════════════════════════════════════════════
INVENTORY VALUATION REPORT
  Total inventory value:  $<amount> <currency>
  SKUs included:          <n>  (of which <n> have no cost)

  By Location:
    Warehouse A          $<amount>
    Warehouse B          $<amount>

  By Vendor:
    Vendor X             $<amount>
    Vendor Y             $<amount>
  Output: inventory_valuation_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "inventory-valuation-report",
  "store": "<domain>",
  "total_value": 0,
  "currency": "USD",
  "skus_included": 0,
  "zero_cost_skus": 0,
  "by_location": [],
  "by_vendor": [],
  "output_file": "inventory_valuation_<date>.csv"
}

Output Format

CSV file inventory_valuation_<YYYY-MM-DD>.csv with columns: variant_id, sku, product_title, vendor, location, quantity_on_hand, unit_cost, total_value, currency

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
No unit cost setVariants without cost dataInclude at $0, flag in report
No active locationsStore has no locations configuredExit with error

Best Practices

  • Run at month-end for balance sheet reconciliation — compare with your accounting system to identify discrepancies.
  • Items with no cost set will appear as $0 and understate total value. Use the output to identify and fill cost gaps before the next run.
  • For insurance purposes, use the total value as the minimum replacement cost baseline — add a markup for retail pricing if required by your policy.
  • Pair with dead-stock-identifier to understand what portion of your inventory value is tied up in slow-moving stock.

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-inventory-valuation-report
Source
github.com/40rty-ai/shopify-admin-skills