Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 73 additions & 7 deletions skills/partiful-events/SKILL.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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 <event-id>
partiful events get <event-id> --format json
partiful events get <event-id> --format table
```

### Create Event
Expand All @@ -26,29 +26,95 @@ 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 <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
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.
48 changes: 48 additions & 0 deletions skills/partiful-posters/SKILL.md
Original file line number Diff line number Diff line change
@@ -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"
```
51 changes: 40 additions & 11 deletions skills/partiful-shared/SKILL.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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 |

Expand All @@ -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.
Expand Down