AI Blocks › Run your online store
Product launch and retire manager
Pick products and a status. Get them moved between draft, live and archived. Changes what shoppers can see and buy.
Product launch and retire manager is a free AI skill for the job "Run your online store". Give the instructions to an AI assistant that supports the required files and tools, then review its output.
Free · No account · MIT licence · Made by 40rty AI · Thinking: low
Start this task
Download the complete instructions and supporting files. Add the material the task needs in an AI that supports those files and tools.
Made by 40rty AI. See the original on GitHub; we copied it as it is, with its licence.
What it does
Products moved in bulk between draft, live and archived, so a seasonal launch or sell-off takes one run instead of a long afternoon of clicking. It changes what shoppers can see and buy. You pick the products by tag, vendor, collection or current status, and the status you want. Claude lists the matches first, because dry run is on by default, and only applies changes when you confirm. Use it to turn a summer range live, archive last season, or stage new products as drafts. You need an authenticated Shopify CLI session with product write access.
You give it
- Your store domain
- A filter such as a tag, vendor or collection
- The target status: live, draft or archived
- Confirmation after reviewing the preview
You get
- A preview of products to change
- Status updated on all matches
- A count of what changed
- A list of any failures
Use it when
- A seasonal collection goes live on a set date.
- Last season's products should leave the storefront.
- You are staging new items as drafts before launch.
- You need to archive a vendor's whole range.
More for Run your online store
Every run your online store skill
Full instructions
- Add it to your AI once: download it and add the folder to Claude, ChatGPT or Codex as a skill.
- Ask for the job in your own words. Your AI opens the skill when it fits.
- It works best when your AI can access your Shopify admin and change live store data.
Full instruction file
Purpose
Queries products matching a tag, vendor, collection, or status filter and bulk-transitions them to a target status (DRAFT, ACTIVE, or ARCHIVED). Used for seasonal launches (DRAFT → ACTIVE), end-of-season sunsetting (ACTIVE → ARCHIVED), and pre-launch staging (creating as DRAFT, activating on a date).
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_products,write_products - API scopes:
read_products,write_products
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| filter | string | yes | — | Product filter query (e.g., tag:summer-2026, vendor:Nike, status:draft) |
| target_status | string | yes | — | Target status: ACTIVE, DRAFT, or ARCHIVED |
| dry_run | bool | no | true | Preview products without executing mutations |
| format | string | no | human | Output format: human or json |
Safety
⚠️ ARCHIVED products are hidden from all sales channels and cannot be purchased. ACTIVE products are immediately visible to customers. Run with
dry_run: trueto review the product list before committing — especially for ARCHIVED transitions which are hard to reverse in bulk.
Workflow Steps
OPERATION:
products— query Inputs:query: <filter>,first: 250, pagination cursor Expected output: Products withid,title,status,tags; paginate untilhasNextPage: falseFilter to products NOT already in
target_status— skip those already correctOPERATION:
productUpdate— mutation Inputs:id: <product_id>,status: <target_status>Expected output:product { id, title, status },userErrors
GraphQL Operations
# products:query — validated against api_version 2025-01
query ProductsByFilter($query: String!, $after: String) {
products(first: 250, after: $after, query: $query) {
edges {
node {
id
title
status
vendor
tags
publishedAt
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
# productUpdate:mutation — validated against api_version 2025-01
mutation ProductUpdateStatus($input: ProductInput!) {
productUpdate(input: $input) {
product {
id
title
status
}
userErrors {
field
message
}
}
}
Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Product Lifecycle Manager ║
║ 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
Products matched: <n>
Already at target: <n> (skipped)
Status updated: <n>
Errors: <n>
Output: lifecycle_update_<date>.csv
══════════════════════════════════════════════
For format: json, emit:
{
"skill": "product-lifecycle-manager",
"store": "<domain>",
"started_at": "<ISO8601>",
"completed_at": "<ISO8601>",
"dry_run": true,
"filter": "<query>",
"target_status": "ACTIVE",
"outcome": {
"matched": 0,
"skipped_already_correct": 0,
"updated": 0,
"errors": 0,
"output_file": "lifecycle_update_<date>.csv"
}
}
Output Format
CSV file lifecycle_update_<YYYY-MM-DD>.csv with columns:
product_id, title, previous_status, new_status, vendor, tags
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED |
API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
userErrors on productUpdate |
Product locked or invalid state | Log error, skip product, continue |
| No products match filter | Filter too narrow | Exit with 0 matches, suggest broadening filter |
Best Practices
- Use tags to mark seasonal batches before running (e.g., tag products with
launch:2026-05before activating them) so the filter is precise. - ARCHIVED status removes products from all channels including the storefront, POS, and buy buttons — confirm this is the intent before running at scale.
- For large catalogs (500+ products), rate limiting will slow execution — the skill retries automatically but large batches may take several minutes.
- Pair with
product-data-completeness-scorebefore activating DRAFT products to ensure they have all required fields.