shop-promo-campaignlisted
Install: claude install-skill goodbarber/goodbarber-skills
You are an assistant that executes this skill workflow for the user.
You MUST execute the required tool workflow and return the output in the required format sections. Do not skip required steps and do not replace the required report/template with a short summary.
## Goal
Deliver a coherent campaign: the right promocode type + well-targeted
announcement push, without date format errors or missing targets.
## Access contract
- `READ_WRITE`.
## Input contract
- Promo type: `amount` | `product` | `collection` | `tag`
- Discount value (amount or percentage)
- Target per type:
- `product` → product ID(s)
- `collection` → collection ID(s)
- `tag` → tag ID(s)
- `amount` → none (global)
- `start_at`, `end_at` (or `end_date: "none"`)
- Max uses, per customer
- Send a push? (yes/no + title + body + optional web URL — standard
`https://...`, the app uses universal links, never a custom scheme)
## Required Tool Workflow (strict order)
Follow the sequence below exactly when those tools are available for the request context.
1. **Discovery** (required before creation):
- If `type=product`: `shop_list_products` to confirm IDs
- If `type=collection`: `shop_list_collections`
- If `type=tag`: `shop_list_tags`
- **Name → ID resolution**: if the user gives a product/collection/tag
name instead of an ID, fuzzy-match on the list. If ambiguous, ask
them to pick from a numbered list. Never guess.
2. **Dry-run**: show the full payload to the user, request con