Install
$ agentstack add skill-40rty-ai-shopify-admin-skills-shopify-admin-collection-membership-audit ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
About
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 --scopes read_products - API scopes:
read_products
Parameters
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | store | string | yes | — | Store domain (e.g., mystore.myshopify.com) | | maxcollections | integer | no | 10 | Flag products in more than this many collections | | statusfilter | 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
- OPERATION:
products— query
Inputs: query: "status:", first: 250, select collections { edges { node { id } } }, pagination cursor Expected output: Products with their collection memberships; paginate until hasNextPage: false
- For each product: count collections → flag if 0 (orphan) or >
max_collections(over-collected)
- 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: ║
║ Started: ║
╚══════════════════════════════════════════════╝
After each step, emit:
[N/TOTAL]
→ Params:
→ Result:
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
COLLECTION MEMBERSHIP AUDIT
Products scanned:
Orphan products (0 collections):
Over-collected (> ):
Orphan products (sample):
"" —
Output: collection_audit_.csv
══════════════════════════════════════════════
For format: json, emit:
{
"skill": "collection-membership-audit",
"store": "",
"products_scanned": 0,
"orphan_count": 0,
"over_collected_count": 0,
"output_file": "collection_audit_.csv"
}
Output Format
CSV file collection_audit_.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.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: 40RTY-ai
- Source: 40RTY-ai/shopify-admin-skills
- License: MIT
- Homepage: http://skills.40rty.ai
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.