
Shopify Admin Collection Membership Audit
- 6 installs
- 173 repo stars
- Updated June 26, 2026
- 40rty-ai/shopify-admin-skills
shopify-admin-collection-membership-audit is a Claude Code skill that lists Shopify orphan products (in zero collections) and over-collected products for catalog hygiene.
About
This skill scans a Shopify catalog to find products that belong to no collection (orphans, invisible in navigation) and products that appear in an unusually high number of collections (over-collected). Merchants run it as a catalog-hygiene check, especially after seasonal refreshes. It is read-only and exports a CSV of flagged products with their collection counts.
- Lists orphan products in zero collections and over-collected products
- Read-only catalog-hygiene scan across product collection memberships
- Exports a CSV flagging each product's collection count and issue
Shopify Admin Collection Membership Audit by the numbers
- 6 all-time installs (skills.sh)
- Ranked #1,691 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
shopify-admin-collection-membership-audit capabilities & compatibility
Free skill; requires an authenticated Shopify store session with the read_products scope.
- Capabilities
- collection audit · catalog hygiene · orphan product detection · csv export
- Works with
- stripe
- Use cases
- data analysis
- Pricing
- Bring your own API key
What shopify-admin-collection-membership-audit says it does
Read-only: lists orphan products (in zero collections) and over-collected products for catalog hygiene.
Orphan active products are invisible in store navigation — customers can only find them via direct URL or search.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-collection-membership-auditAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6 |
|---|---|
| repo stars | ★ 173 |
| Last updated | June 26, 2026 |
| Repository | 40rty-ai/shopify-admin-skills ↗ |
What it does
Audit a Shopify catalog for orphan products and over-collected products to keep store navigation clean.
Who is it for?
Merchants cleaning up store navigation after catalog changes or seasonal refreshes.
Skip if: Assigning products to collections; it only reports orphan and over-collected products.
When should I use this skill?
You want to find products that are invisible in navigation or spread across too many collections.
What you get
A CSV flags every product with zero collections or more than the max-collections threshold.
- CSV collection_audit_<date>.csv listing orphan and over-collected products
By the numbers
- default max_collections threshold 10
- paginates products 250 per request
- fetches up to 30 collections per product
Files
Purpose
Identifies products that are not in any collection ("orphans" — invisible in store navigation) and products that appear in an unusually high number of collections ("over-collected" — potential merchandising noise). Read-only — no mutations.
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_products - API scopes:
read_products
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| max_collections | integer | no | 10 | Flag products in more than this many collections |
| status_filter | string | no | active | Product status to scan: active, draft, or all |
| format | string | no | human | Output format: human or json |
Safety
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.
Workflow Steps
1. OPERATION: products — query Inputs: query: "status:<status_filter>", first: 250, select collections { edges { node { id } } }, pagination cursor Expected output: Products with their collection memberships; paginate until hasNextPage: false
2. For each product: count collections → flag if 0 (orphan) or > max_collections (over-collected)
3. OPERATION: collections — query (for collection names) Inputs: first: 250, select id, title, productsCount Expected output: Collection metadata for enriching the report
GraphQL Operations
# products:query — validated against api_version 2025-01
query ProductCollectionMembership($query: String!, $after: String) {
products(first: 250, after: $after, query: $query) {
edges {
node {
id
title
handle
status
collections(first: 30) {
edges {
node {
id
title
}
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}# collections:query — validated against api_version 2025-01
query CollectionOverview($after: String) {
collections(first: 250, after: $after) {
edges {
node {
id
title
handle
productsCount {
count
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Collection Membership Audit ║
║ 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):
══════════════════════════════════════════════
COLLECTION MEMBERSHIP AUDIT
Products scanned: <n>
Orphan products (0 collections): <n>
Over-collected (> <max_collections>): <n>
Orphan products (sample):
"<title>" — <status>
Output: collection_audit_<date>.csv
══════════════════════════════════════════════For format: json, emit:
{
"skill": "collection-membership-audit",
"store": "<domain>",
"products_scanned": 0,
"orphan_count": 0,
"over_collected_count": 0,
"output_file": "collection_audit_<date>.csv"
}Output Format
CSV file collection_audit_<YYYY-MM-DD>.csv with columns: product_id, title, handle, status, collection_count, collections, issue
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| No orphans found | All products are in collections | Exit with ✅ no orphans found |
Best Practices
- Orphan active products are invisible in store navigation — customers can only find them via direct URL or search. Prioritize fixing these.
- Automated collections (rule-based) may automatically pull products based on tags or conditions — an orphan in manual collections may still appear in automated ones. Check both.
- Use
max_collections: 5for stores with a tightly curated navigation; use higher thresholds for marketplace-style stores where cross-listing is intentional. - Run after seasonal catalog refreshes to ensure all new products are assigned to the right collections.
Related skills
FAQ
What counts as an orphan product?
A product that is in zero collections, meaning customers can only find it via direct URL or search, not store navigation.
Does it consider automated (smart) collections?
The skill notes rule-based automated collections may still include a product; it advises checking both manual and automated collections.