From shopify-admin-skills
Audits Shopify store URL redirects: lists all, flags chains (A→B→C), duplicate targets, and orphans. Detects SEO issues from latency and poor redirects.
npx claudepluginhub 40rty-ai/shopify-admin-skills --plugin shopify-admin-skillsThis skill uses the workspace's default tool permissions.
Queries all URL redirects in the store and identifies redirect chains (where redirect target A is itself redirected to B), duplicate targets (multiple paths pointing to the same destination), and orphaned redirects (pointing to non-existent pages). Redirect chains add latency and hurt SEO. Read-only — no mutations.
Manages website URL redirects: create 301/302, audit chains/loops, fix breaks, bulk import from CSV/Sheets for migrations. Deploys to WordPress/Webflow CMS.
Scans active Shopify products, collections, and pages via GraphQL for missing or short SEO titles and meta descriptions. Outputs prioritized list of gaps sorted by traffic potential. Read-only.
Identifies Shopify API anti-patterns like ignoring userErrors, outdated versions, REST over GraphQL, missing GDPR webhooks, and timeouts. Reviews code with real examples.
Share bugs, ideas, or general feedback.
Queries all URL redirects in the store and identifies redirect chains (where redirect target A is itself redirected to B), duplicate targets (multiple paths pointing to the same destination), and orphaned redirects (pointing to non-existent pages). Redirect chains add latency and hurt SEO. Read-only — no mutations.
shopify store auth --store <domain> --scopes read_contentread_content| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| format | string | no | human | Output format: human or json |
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.
OPERATION: urlRedirects — query
Inputs: first: 250, pagination cursor
Expected output: All redirects with fromPath, target; paginate until hasNextPage: false
Build path map: fromPath → target
Detect chains: for each redirect, check if target appears as a fromPath in any other redirect
Detect duplicates: targets with more than one source path
# urlRedirects:query — validated against api_version 2025-01
query URLRedirects($after: String) {
urlRedirects(first: 250, after: $after) {
edges {
node {
id
path
target
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: URL Redirect 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):
══════════════════════════════════════════════
URL REDIRECT AUDIT
Total redirects: <n>
Redirect chains: <n>
Duplicate targets: <n>
Chains:
/old-page → /intermediate → /final
Duplicates:
/path-a → /product/x
/path-b → /product/x (same target)
Output: redirect_audit_<date>.csv
══════════════════════════════════════════════
For format: json, emit:
{
"skill": "url-redirect-audit",
"store": "<domain>",
"total_redirects": 0,
"chains": 0,
"duplicate_targets": 0,
"output_file": "redirect_audit_<date>.csv"
}
CSV file redirect_audit_<YYYY-MM-DD>.csv with columns:
redirect_id, from_path, target, issue_type, chain_path
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| No redirects | New store or clean setup | Exit with ✅ no redirects found |
urlRedirectDelete mutation.