diff --git a/skills/partiful-events/SKILL.md b/skills/partiful-events/SKILL.md index 65fc9fe..3196f95 100644 --- a/skills/partiful-events/SKILL.md +++ b/skills/partiful-events/SKILL.md @@ -1,6 +1,6 @@ --- name: partiful-events -description: Manage Partiful events — list, create, update, cancel, clone +description: Manage Partiful events — list, create, update, cancel, clone, set posters/images --- # Partiful CLI — Events @@ -10,14 +10,14 @@ description: Manage Partiful events — list, create, update, cancel, clone ### List Events ```bash partiful events list -partiful events list --status upcoming --format table -partiful events list --status past --limit 5 +partiful events list --past +partiful events list --past --include-cancelled ``` ### Get Event Details ```bash partiful events get -partiful events get --format json +partiful events get --format table ``` ### Create Event @@ -26,11 +26,31 @@ partiful events create --title "Game Night" --date "2026-04-01T19:00" --location partiful events create --title "Birthday" --date "2026-05-15T20:00" --description "Bring snacks" --dry-run ``` +| Flag | Description | +|------|-------------| +| `--title ` | Event title (required) | +| `--date <date>` | Start date/time (required) | +| `--end-date <date>` | End date/time | +| `--location <name>` | Location name | +| `--address <addr>` | Street address | +| `--description <text>` | Event description | +| `--capacity <n>` | Guest limit | +| `--private` | Make event private | +| `--timezone <tz>` | Timezone (default: `America/Los_Angeles`) | +| `--theme <theme>` | Color theme (default: `oxblood`) | +| `--effect <effect>` | Visual effect (default: `sunbeams`) | +| `--poster <id>` | Built-in poster ID (see `posters search`) | +| `--poster-search <query>` | Fuzzy-search poster catalog, use best match | +| `--image <path\|url>` | Upload a custom image (local file or URL) | + ### Update Event ```bash partiful events update <event-id> --title "New Title" partiful events update <event-id> --date "2026-04-02T19:00" --location "New Venue" +partiful events update <event-id> --poster "piscesairbrush.png" +partiful events update <event-id> --image ./new-flyer.png ``` +Accepts all the same flags as `create`. ### Cancel Event ```bash @@ -38,17 +58,63 @@ partiful events cancel <event-id> partiful events cancel <event-id> --yes # skip confirmation ``` +## Posters & Images + +Three ways to set event imagery (all require Partiful auth since they're used on `events create/update`): + +| Method | Flag | Extra Auth | Notes | +|--------|------|------------|-------| +| Built-in poster (by ID) | `--poster <id>` | None | Catalog is public; use `posters search` to find IDs | +| Built-in poster (fuzzy) | `--poster-search <query>` | None | Picks best match automatically | +| Custom upload | `--image <path\|url>` | Firebase token | File path or URL, 10MB limit | + +```bash +# Find a poster +partiful posters search "birthday" + +# Create with that poster +partiful events create --title "Birthday Bash" --date "2026-06-15T19:00" --poster "birthdaypresent.png" + +# Or let fuzzy search pick one +partiful events create --title "Birthday Bash" --date "2026-06-15T19:00" --poster-search "birthday cake" + +# Upload your own image +partiful events create --title "Party" --date "2026-06-15T19:00" --image ./flyer.png +partiful events create --title "Party" --date "2026-06-15T19:00" --image "https://example.com/poster.jpg" +``` + ## Helpers ### Clone Event (+clone) -Duplicate an existing event with a new date: ```bash partiful events +clone <event-id> --date "2026-06-01T19:00" partiful events +clone <event-id> --date "2026-06-01T19:00" --title "Game Night v2" ``` -Copies title, description, location, and settings. Guests are NOT copied (use `guests +share` to re-invite). +Copies title, description, location, and settings. Guests are NOT copied (use `guests +share`). + +## ⚠️ Formatting Rules + +### Dates — Always Include Full Year +```text +✅ 2026-04-01T19:00 +✅ 2026-04-01 7pm +❌ Apr 1 7pm +❌ 04/01 7pm +``` +The CLI defaults to `America/Los_Angeles`. Pass `--timezone` explicitly if the event is in another timezone. + +### Descriptions — Plain Text Only +Partiful renders descriptions as **plain text**. No markdown. +```text +✅ "🎮 Game Night!\n\nBring your favorite board games.\nSnacks provided.\n\n📍 Parking on the left side" +❌ "**Game Night!**\n\n- Bring your favorite board games\n- Snacks provided" +``` +Use emoji for visual breaks. Use `\n` for line breaks. No `**`, no `-` lists, no `#` headers. + +### Times — Double-Check AM vs PM +Early morning events (e.g., brunch at 10am) — verify you didn't accidentally set 10pm. The CLI will echo back the parsed time in its response. ## Tips -- Use `--dry-run` on create/update/cancel to preview changes. +- Use `--dry-run` on create/update/cancel to preview changes without executing. - Pipe `events list --format json` to `jq` for scripting. - Event IDs are returned in list output and can be used across all commands. diff --git a/skills/partiful-posters/SKILL.md b/skills/partiful-posters/SKILL.md new file mode 100644 index 0000000..70b0389 --- /dev/null +++ b/skills/partiful-posters/SKILL.md @@ -0,0 +1,48 @@ +--- +name: partiful-posters +description: Browse and search the Partiful poster catalog for event imagery +--- + +# Partiful CLI — Posters + +Browse the built-in poster catalog. No auth required — the catalog is public. + +## Commands + +### List Posters +```bash +partiful posters list +partiful posters list --category "Dinner Party" --limit 5 +partiful posters list --type gif --limit 10 +``` + +| Flag | Description | +|------|-------------| +| `--category <name>` | Filter by category (e.g., "Birthday", "Dinner Party") | +| `--type <ext>` | Filter by file type: `png`, `gif`, `jpeg` | +| `--limit <n>` | Max results (default: 20) | + +### Search Posters +```bash +partiful posters search "birthday" +partiful posters search "disco" --limit 5 +``` +Fuzzy search across poster names, tags, and categories. + +### Get Poster Details +```bash +partiful posters get <posterId> +``` +Returns full metadata: name, categories, tags, preview URL. + +## Usage with Events + +Once you find a poster ID, pass it to `events create` or `events update`: +```bash +partiful events create --title "Party" --date "2026-04-05T19:00" --poster "piscesairbrush.png" +``` + +Or skip the manual search — `--poster-search` does it in one step: +```bash +partiful events create --title "Party" --date "2026-04-05T19:00" --poster-search "disco" +``` diff --git a/skills/partiful-shared/SKILL.md b/skills/partiful-shared/SKILL.md index a111d06..7ced2aa 100644 --- a/skills/partiful-shared/SKILL.md +++ b/skills/partiful-shared/SKILL.md @@ -1,6 +1,6 @@ --- name: partiful-shared -description: Shared auth, global flags, and security rules for the Partiful CLI +description: Shared auth, global flags, formatting rules, and security for the Partiful CLI --- # Partiful CLI — Shared Patterns @@ -10,24 +10,23 @@ description: Shared auth, global flags, and security rules for the Partiful CLI ### Login ```bash partiful auth login <phone> -partiful auth login +15551234567 +partiful auth login +12065551234 ``` -Phone-based authentication. Phone number must be in **E.164 format** (e.g. `+15551234567`). +Phone-based authentication. Prefer **E.164 format** (e.g., `+12065551234`); US numbers without `+1` are normalized automatically. -1. Sends an SMS verification code to the provided number. -2. **On macOS:** Automatically retrieves the code from iMessage (via `imsg`). No manual input needed. -3. **Fallback:** If auto-retrieval fails, prompts you to enter the code manually. +1. Sends an SMS verification code. +2. If supported on your platform (macOS via `imsg`, Android via `termux-sms-list`), auto-retrieves the code. +3. Otherwise (or on timeout), prompts for manual code entry. | Flag | Description | |------|-------------| -| `--code <code>` | Provide the verification code directly (skip SMS wait) | -| `--no-auto` | Disable automatic SMS retrieval; always prompt manually | +| `--code <code>` | Provide verification code directly (skip SMS wait) | +| `--no-auto` | Disable automatic SMS retrieval | ### Check Status ```bash partiful auth status ``` -Prints current auth state (logged in user, token expiry). ### Credential Resolution (priority order) 1. `PARTIFUL_TOKEN` environment variable @@ -38,10 +37,10 @@ Prints current auth state (logged in user, token expiry). | Flag | Description | |------|-------------| | `--format <json\|table\|csv>` | Output format (default: `json`) | -| `--dry-run` | Preview what would happen without making changes | +| `--dry-run` | Preview without making changes | | `--yes` | Skip confirmation prompts | | `--force` | Override safety checks | -| `--verbose` | Verbose logging | +| `--verbose` | Verbose logging to stderr | | `--output <file>` | Write output to file | | `--no-color` | Disable colored output | @@ -68,6 +67,36 @@ Prints current auth state (logged in user, token expiry). | 4 | Not found | | 5 | Internal error | +## ⚠️ Formatting Rules (Important!) + +### Dates — Always Include Full Year +```text +✅ 2026-04-01T19:00 +✅ 2026-04-01 7pm +❌ Apr 1 7pm +❌ 04/01 7pm +``` +Default timezone: `America/Los_Angeles`. Use `--timezone` for other zones. + +### Descriptions — Plain Text Only +Partiful renders plain text. **No markdown.** +```text +✅ "🎮 Game Night!\n\nBring your favorite board games.\nSnacks provided." +❌ "**Game Night!**\n\n- Bring board games\n- Snacks provided" +``` +Use emoji for visual breaks. Use `\n` for newlines. No `**`, `-` lists, or `#` headers. + +### Times — Verify AM vs PM +Always double-check AM/PM, especially for morning events. The CLI echoes back the parsed time. + +## Schema Introspection + +Discover command parameters programmatically: +```bash +partiful schema events.create +partiful schema guests.invite +``` + ## Security - **Never** log or print tokens in output.