RPS Etsy Shop Uploader Listing Workflow
Custom skill by Maggie Lerman.
Use this skill for RPS Etsy listing work that touches Shop Uploader or could become a Shop Uploader apply packet.
Source Of Truth
- Etsy catalog repo: resolve
rps-etsy using references/repository-resolution.md
- Creative asset storage/catalog: Google Drive
RPS Creative Assets plus docs/etsy/creative-asset-drive-catalog.md in the resolved rps-etsy root
- Durable plugin backup:
plugins/rps-etsy-ops/ in the resolved codex-skills root
- Shop Uploader dashboard:
https://www.shopuploader.com/app/dashboard
- Live Etsy mutation path: Shop Uploader CSV/XLSX only, after Maggie approves a reviewable apply plan.
Do not use Etsy API mutation paths for this workflow.
Required Reading
In the resolved rps-etsy root, read:
AGENTS.md
docs/etsy/workstreams/shop-uploader-operations.md
- The relevant active project doc under
docs/PROJECTS/active/
- For media/mockup/image/video work, also read:
docs/etsy/workstreams/listing-images-and-alt-text.md
docs/etsy/mockup-library.md
docs/etsy/creative-asset-drive-catalog.md
docs/etsy/asset-hosting-policy.md
$rps-wall-art-mockup-workflow
$rps-etsy-media-hosting-workflow
Core Rules
- Never mutate live Etsy listings without explicit Maggie approval and a reviewable apply plan.
- Start from a fresh Shop Uploader export for the exact listing IDs whenever updating existing listings.
- Preserve the full source export and template header.
- Populate only approved fields.
- Treat media, videos, and digital files as higher risk than title/tag updates.
- Do not prepare
image_*, image_alt_text_*, video_1, or digital_file_* values from historical scripts, minimal/safe CSVs, or regression packets.
- Use the typed reusable template set for file shape selection, but do not treat a template shell as an upload file.
- A Shop Uploader success report proves field acceptance only. It does not prove metadata completeness, media quality, publish readiness, or buyer-file correctness.
Task Classification
Before doing work, classify the request:
read_only_review: inspect exports, reports, docs, listings, or evidence without preparing an upload file.
review_packet: prepare proposed changes, manifests, review boards, or comparison reports only.
draft_create: create new Etsy draft listing packet.
partial_update_metadata: update existing listing titles, tags, descriptions, attributes, or shop sections.
partial_update_media: update existing listing images, videos, or digital files.
post_apply_verification: inspect Shop Uploader reports, Etsy UI, exports, screenshots, or cleanup status after an approved run.
If the task could affect live listings, keep it review-only until approval is explicit.
Existing Listing Partial Updates
- Identify exact listing IDs and SKUs.
- Export only target listings from Shop Uploader.
- Preserve the source export under
docs/evidence/active/<project>/.
- Create a listing-level apply plan with current value, proposed value, reason, and approval status.
- For conservative metadata edits, prefer
partial_update with only:
listing_id
- approved changed fields
action=partial_update
- Confirm no media, price, quantity, listing state, digital file, delete, or overwrite fields are populated unless approved.
- After approval, upload through Shop Uploader.
- Download the upload report.
- Verify with a fresh post-update export.
- Record the result in the owning project doc and master changelog when durable.
New Draft Listings
Use draft-first creation.
Do not call a new-listing Shop Uploader file upload-ready until it includes and has been reviewed for:
- full current Shop Uploader template header
- the correct typed template shape from
docs/evidence/templates/shop-uploader/digital-downloads/digital-prints-2078-template-set-2026-05-27/
- title, description, price, quantity, draft listing state, category, shop section, SKU, and create controls
- all 13 tags and materials where applicable
- all available category
_underscore_columns
- all five printable wall-art aspect ratios when the listing promises a five-ratio buyer bundle:
2:3, 3:4, 4:5, 11:14, 5:7 (ISO ratio)
- colors, style, room, subject, occasion/holiday, recipient where exposed
- image URLs and image alt text
- video URL when approved
- digital file URLs and file names when approved
- source-art and rights notes
- buyer ZIP/file manifest
- media/mockup review board when media is included
Create listings as drafts first and keep publishing as a separate approval step.
Reusable Templates
For Digital Prints (2078), use the reusable typed template set before preparing a review packet:
docs/evidence/templates/shop-uploader/digital-downloads/digital-prints-2078-template-set-2026-05-27/
Key files:
README.md: template-set operating notes
template-set-manifest.csv: intended use and risk by template
column-dictionary.csv: full 217-column surface and requirement guide
product-type-profiles.csv: recommended starting template by product/update type
Available template types:
- full draft create
- slim draft create
- title/tags partial update
- description/tags/attributes partial update
- attributes-only correction
- 20-image/video media update
- 20-image-only update
- video-only update
- digital-file-only update
- shop-settings update
- high-risk listing-state control review
Every generated template is header-only and starts with TEMPLATE-DO-NOT-UPLOAD. When Shop Uploader's current export/template changes, regenerate the set:
python3 scripts/etsy/build-shop-uploader-template-set.py
Media, Mockups, Videos, And Digital Files
Before any Shop Uploader file includes media or file URLs:
Use $rps-wall-art-mockup-workflow for wall-art mockups.
Select a row from docs/etsy/mockup-availability.csv.
Validate the mockup matrix:
python3 scripts/etsy/validate-mockup-availability.py
Confirm artwork count gates match the listing.
Build a review board and manifest mapping listing ID, SKU, source art, mockup catalog row/template ID, output path, intended slot, and approval status.
Confirm mockup/media labels use generic product/use-case language and do not expose artist/provenance labels.
Use clear hosted URL paths from docs/etsy/asset-hosting-policy.md.
Use $rps-etsy-media-hosting-workflow for hosted URL manifests, URL access audits, and cleanup tracking.
Audit public URLs before upload:
python3 scripts/etsy/audit-hosted-url-manifest.py <hosted-url-manifest.csv>
Preserve local media validation, URL audit reports, prepared upload files, upload reports, and post-update proof.
Evidence Packet Shape
Store evidence under:
docs/evidence/active/<project>/shop-uploader/<YYYY-MM-DD-short-slug>/
Keep:
- source export
- prepared upload file
- apply plan
- review board when visual/media changes are involved
- hosted URL manifest and access audit when URLs are involved
- Shop Uploader upload report
- post-update export or Etsy UI proof
- comparison summary
- cleanup proof for temporary hosted URLs
Validation Commands
Common commands from the resolved rps-etsy root:
python3 scripts/etsy/validate-mockup-availability.py
python3 scripts/etsy/refresh-mockup-library-indexes.py
python3 scripts/etsy/audit-hosted-url-manifest.py <hosted-url-manifest.csv>
python3 scripts/etsy/build-shop-uploader-template-set.py
python3 scripts/etsy/audit-shop-uploader-field-coverage.py
node scripts/docs/manifest.mjs docs
node scripts/docs/check-links.mjs docs
For Digital Prints (2078) metadata files:
python3 scripts/etsy/validate-shop-uploader-digital-prints-2078.py <shop-uploader-csv>
python3 scripts/etsy/audit-shop-uploader-field-coverage.py
Stop Conditions
Stop and ask Maggie before proceeding if:
- approval to mutate Etsy is unclear
- target listing IDs or SKUs are ambiguous
- the source export is stale or missing
- required Shop Uploader template columns are missing
- the media/mockup review board is not approved
- URL audit fails
- buyer files would be replaced or deleted
- the upload would publish listings instead of creating/updating drafts
1---2name: rps-etsy-shop-uploader-listing-workflow3description: Use when preparing, reviewing, applying, verifying, or debugging Rock Paper Scissors Etsy listing work through Shop Uploader, including exports, CSV/XLSX templates, draft-create packets, partial updates, media/file URLs, upload reports, and post-update verification. Custom skill by Maggie Lerman.4---56# RPS Etsy Shop Uploader Listing Workflow78Custom skill by Maggie Lerman.910Use this skill for RPS Etsy listing work that touches Shop Uploader or could become a Shop Uploader apply packet.1112## Source Of Truth1314- Etsy catalog repo: resolve `rps-etsy` using `references/repository-resolution.md`15- Creative asset storage/catalog: Google Drive `RPS Creative Assets` plus `docs/etsy/creative-asset-drive-catalog.md` in the resolved `rps-etsy` root16- Durable plugin backup: `plugins/rps-etsy-ops/` in the resolved `codex-skills` root17- Shop Uploader dashboard: `https://www.shopuploader.com/app/dashboard`18- Live Etsy mutation path: Shop Uploader CSV/XLSX only, after Maggie approves a reviewable apply plan.1920Do not use Etsy API mutation paths for this workflow.2122## Required Reading2324In the resolved `rps-etsy` root, read:25261. `AGENTS.md`272. `docs/etsy/workstreams/shop-uploader-operations.md`283. The relevant active project doc under `docs/PROJECTS/active/`294. For media/mockup/image/video work, also read:30 - `docs/etsy/workstreams/listing-images-and-alt-text.md`31 - `docs/etsy/mockup-library.md`32 - `docs/etsy/creative-asset-drive-catalog.md`33 - `docs/etsy/asset-hosting-policy.md`34 - `$rps-wall-art-mockup-workflow`35 - `$rps-etsy-media-hosting-workflow`3637## Core Rules38391. Never mutate live Etsy listings without explicit Maggie approval and a reviewable apply plan.402. Start from a fresh Shop Uploader export for the exact listing IDs whenever updating existing listings.413. Preserve the full source export and template header.424. Populate only approved fields.435. Treat media, videos, and digital files as higher risk than title/tag updates.446. Do not prepare `image_*`, `image_alt_text_*`, `video_1`, or `digital_file_*` values from historical scripts, minimal/safe CSVs, or regression packets.457. Use the typed reusable template set for file shape selection, but do not treat a template shell as an upload file.468. A Shop Uploader success report proves field acceptance only. It does not prove metadata completeness, media quality, publish readiness, or buyer-file correctness.4748## Task Classification4950Before doing work, classify the request:5152- `read_only_review`: inspect exports, reports, docs, listings, or evidence without preparing an upload file.53- `review_packet`: prepare proposed changes, manifests, review boards, or comparison reports only.54- `draft_create`: create new Etsy draft listing packet.55- `partial_update_metadata`: update existing listing titles, tags, descriptions, attributes, or shop sections.56- `partial_update_media`: update existing listing images, videos, or digital files.57- `post_apply_verification`: inspect Shop Uploader reports, Etsy UI, exports, screenshots, or cleanup status after an approved run.5859If the task could affect live listings, keep it review-only until approval is explicit.6061## Existing Listing Partial Updates62631. Identify exact listing IDs and SKUs.642. Export only target listings from Shop Uploader.653. Preserve the source export under `docs/evidence/active/<project>/`.664. Create a listing-level apply plan with current value, proposed value, reason, and approval status.675. For conservative metadata edits, prefer `partial_update` with only:68 - `listing_id`69 - approved changed fields70 - `action=partial_update`716. Confirm no media, price, quantity, listing state, digital file, delete, or overwrite fields are populated unless approved.727. After approval, upload through Shop Uploader.738. Download the upload report.749. Verify with a fresh post-update export.7510. Record the result in the owning project doc and master changelog when durable.7677## New Draft Listings7879Use draft-first creation.8081Do not call a new-listing Shop Uploader file upload-ready until it includes and has been reviewed for:8283- full current Shop Uploader template header84- the correct typed template shape from `docs/evidence/templates/shop-uploader/digital-downloads/digital-prints-2078-template-set-2026-05-27/`85- title, description, price, quantity, draft listing state, category, shop section, SKU, and create controls86- all 13 tags and materials where applicable87- all available category `_underscore_columns`88- all five printable wall-art aspect ratios when the listing promises a five-ratio buyer bundle: `2:3`, `3:4`, `4:5`, `11:14`, `5:7 (ISO ratio)`89- colors, style, room, subject, occasion/holiday, recipient where exposed90- image URLs and image alt text91- video URL when approved92- digital file URLs and file names when approved93- source-art and rights notes94- buyer ZIP/file manifest95- media/mockup review board when media is included9697Create listings as drafts first and keep publishing as a separate approval step.9899## Reusable Templates100101For `Digital Prints (2078)`, use the reusable typed template set before preparing a review packet:102103`docs/evidence/templates/shop-uploader/digital-downloads/digital-prints-2078-template-set-2026-05-27/`104105Key files:106107- `README.md`: template-set operating notes108- `template-set-manifest.csv`: intended use and risk by template109- `column-dictionary.csv`: full 217-column surface and requirement guide110- `product-type-profiles.csv`: recommended starting template by product/update type111112Available template types:113114- full draft create115- slim draft create116- title/tags partial update117- description/tags/attributes partial update118- attributes-only correction119- 20-image/video media update120- 20-image-only update121- video-only update122- digital-file-only update123- shop-settings update124- high-risk listing-state control review125126Every generated template is header-only and starts with `TEMPLATE-DO-NOT-UPLOAD`. When Shop Uploader's current export/template changes, regenerate the set:127128```bash129python3 scripts/etsy/build-shop-uploader-template-set.py130```131132## Media, Mockups, Videos, And Digital Files133134Before any Shop Uploader file includes media or file URLs:1351361. Use `$rps-wall-art-mockup-workflow` for wall-art mockups.1372. Select a row from `docs/etsy/mockup-availability.csv`.1383. Validate the mockup matrix:139140 ```bash141 python3 scripts/etsy/validate-mockup-availability.py142 ```1431444. Confirm artwork count gates match the listing.1455. Build a review board and manifest mapping listing ID, SKU, source art, mockup catalog row/template ID, output path, intended slot, and approval status.1466. Confirm mockup/media labels use generic product/use-case language and do not expose artist/provenance labels.1477. Use clear hosted URL paths from `docs/etsy/asset-hosting-policy.md`.1488. Use `$rps-etsy-media-hosting-workflow` for hosted URL manifests, URL access audits, and cleanup tracking.1499. Audit public URLs before upload:150151 ```bash152 python3 scripts/etsy/audit-hosted-url-manifest.py <hosted-url-manifest.csv>153 ```15415510. Preserve local media validation, URL audit reports, prepared upload files, upload reports, and post-update proof.156157## Evidence Packet Shape158159Store evidence under:160161`docs/evidence/active/<project>/shop-uploader/<YYYY-MM-DD-short-slug>/`162163Keep:164165- source export166- prepared upload file167- apply plan168- review board when visual/media changes are involved169- hosted URL manifest and access audit when URLs are involved170- Shop Uploader upload report171- post-update export or Etsy UI proof172- comparison summary173- cleanup proof for temporary hosted URLs174175## Validation Commands176177Common commands from the resolved `rps-etsy` root:178179```bash180python3 scripts/etsy/validate-mockup-availability.py181python3 scripts/etsy/refresh-mockup-library-indexes.py182python3 scripts/etsy/audit-hosted-url-manifest.py <hosted-url-manifest.csv>183python3 scripts/etsy/build-shop-uploader-template-set.py184python3 scripts/etsy/audit-shop-uploader-field-coverage.py185node scripts/docs/manifest.mjs docs186node scripts/docs/check-links.mjs docs187```188189For `Digital Prints (2078)` metadata files:190191```bash192python3 scripts/etsy/validate-shop-uploader-digital-prints-2078.py <shop-uploader-csv>193python3 scripts/etsy/audit-shop-uploader-field-coverage.py194```195196## Stop Conditions197198Stop and ask Maggie before proceeding if:199200- approval to mutate Etsy is unclear201- target listing IDs or SKUs are ambiguous202- the source export is stale or missing203- required Shop Uploader template columns are missing204- the media/mockup review board is not approved205- URL audit fails206- buyer files would be replaced or deleted207- the upload would publish listings instead of creating/updating drafts