---
name: add-voice-profile
description: Interactively capture a new property's voice profile for the str-photo-captions plugin. Triggers on "add voice profile for [property]", "create a voice profile", "set up [property] in the photo plugin", "I don't have a profile for [property] yet", or whenever the generate-photo-captions skill discovers a property without a stored profile. Writes a new profile file under references/profiles/.
---

# Add a property voice profile

Interactively capture the voice, hero amenities, signature phrases, and avoid list for a new STR property, then write the profile to `${CLAUDE_PLUGIN_ROOT}/skills/generate-photo-captions/references/profiles/<slug>.md`. Once stored, the `generate-photo-captions` skill will use it automatically for every future run on that property.

## When to use this skill

Use this skill when:

- The user explicitly asks to add or create a voice profile.
- The `generate-photo-captions` skill discovers a property with no matching profile and the user agrees to capture one before continuing.

Do NOT use this skill to edit an existing profile - for tweaks, just edit the profile file directly. This skill is for the first-time capture.

## Workflow

### Step 1: Confirm the property name + slug

Get the property name and derive the kebab-case slug (`Cosmic Cowboy` -> `cosmic-cowboy`). Check whether `references/profiles/<slug>.md` already exists. If it does, ask the user whether they want to overwrite or edit the existing file instead.

### Step 2: Walk through the profile template, section by section

Read `${CLAUDE_PLUGIN_ROOT}/skills/generate-photo-captions/references/voice-profile-template.md` for the schema. Ask one section at a time. Don't fire all the questions at once - the answers improve when the user thinks about each in isolation.

Order to ask:

1. **Quick descriptors** - "Give me 3-5 short adjective phrases for this property. Strong, specific words - not 'warm' or 'inviting.' Examples: 'rustic-modern luxe', 'Texas Hill Country cowboy.'"
2. **Location & vibe** - "Where is it, and what's the *feeling* a guest gets the moment they walk in?"
3. **Hero amenities** - "What are the 2-4 things to lean into hardest? For each: the noun the team uses internally + the guest benefit."
4. **Voice rules** - "Any specific tone rules? Things like sentence length, regional vocabulary, sensory-language preferences."
5. **Signature phrases / locutions** - "Are there phrases or patterns the property's existing copy uses that I should echo? Quote them verbatim if so. If none, we'll leave this blank for now."
6. **Avoid list** - "Words or tropes you specifically hate? Beyond the universal avoid list (which already kills 'luxury', 'oasis', 'step into', 'welcome to', etc.)."
7. **Example captions** - "Give me 1-3 example captions in the voice you want - even rough ones. I'll use them to calibrate. If none exist, I can draft from the descriptors and you can edit."
8. **Max caption length** - "Cap on sentences and characters? Default is 3 sentences / ~280 chars."

If the user is impatient or doesn't have answers for a section, take a reasonable default and flag the section as `Notes / updates: needs owner review` at the bottom of the file. Don't block on perfection.

### Step 3: Show the assembled profile in chat

Present the full Markdown content for the user to review and tweak in chat before saving.

### Step 4: Write the file

Save to `${CLAUDE_PLUGIN_ROOT}/skills/generate-photo-captions/references/profiles/<slug>.md`. Confirm the path in chat.

### Step 5: Offer next step

Ask whether they want to:
- Run `generate-photo-captions` for this property now (typical follow-up).
- Stop here.

## Output expectations

1. A new file at `${CLAUDE_PLUGIN_ROOT}/skills/generate-photo-captions/references/profiles/<slug>.md` matching the template schema.
2. A chat confirmation showing the saved path.
3. Optional handoff to `generate-photo-captions`.

## Tips for a good profile

- Strong nouns > weak adjectives. "Adirondacks", "Solo Stove", "cowboy pool" beat "comfortable seating", "fire feature", "swimming area."
- Avoid lists are more valuable than approve lists. The model knows how to say nice things; what it needs is permission to *stop* saying certain things.
- Example captions are the highest-leverage section. One specific, paired (description -> caption) example outperforms a paragraph of voice description.

## See also

- `${CLAUDE_PLUGIN_ROOT}/skills/generate-photo-captions/references/voice-profile-template.md` - schema
- `${CLAUDE_PLUGIN_ROOT}/skills/generate-photo-captions/references/profiles/cosmic-cowboy.md` - worked example
