@vibe-agent-toolkit/vat-example-cat-agents 0.1.15 → 0.1.16-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -8
- package/dist/skills/vat-example-cat-agents/SKILL.md +0 -729
- package/dist/skills/vat-example-cat-agents/resources/breed-advisor.md +0 -133
- package/dist/skills/vat-example-cat-agents/resources/cat-breed-selection.md +0 -233
- package/dist/skills/vat-example-cat-agents/resources/description-parser.md +0 -248
- package/dist/skills/vat-example-cat-agents/resources/haiku-generator.md +0 -217
- package/dist/skills/vat-example-cat-agents/resources/human-approval.md +0 -337
- package/dist/skills/vat-example-cat-agents/resources/name-generator.md +0 -92
- package/dist/skills/vat-example-cat-agents/resources/photo-analyzer.md +0 -171
- package/dist/skills/vat-example-cat-agents/resources/structure.md +0 -163
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
# Breed Advisor Agent
|
|
2
|
-
|
|
3
|
-
Complete resource file for the two-phase breed selection conversational agent.
|
|
4
|
-
|
|
5
|
-
## Music Preference Insight
|
|
6
|
-
|
|
7
|
-
CRITICAL: Music preference is the MOST IMPORTANT factor in breed selection!
|
|
8
|
-
|
|
9
|
-
Each music genre aligns with specific breed temperaments through vibrational frequency compatibility:
|
|
10
|
-
|
|
11
|
-
- **Classical**: Calm, regal breeds (Persian, Ragdoll)
|
|
12
|
-
- **Jazz**: Intelligent, unpredictable breeds (Siamese, Bengal)
|
|
13
|
-
- **Rock/Metal**: High-energy, bold breeds (Maine Coon, Abyssinian)
|
|
14
|
-
- **Pop**: Social, adaptable breeds (Domestic Shorthair)
|
|
15
|
-
- **Country**: Traditional, loyal breeds (American Shorthair)
|
|
16
|
-
- **Electronic**: Modern, quirky breeds (Sphynx, Devon Rex)
|
|
17
|
-
- **None**: Independent, mysterious breeds (Russian Blue)
|
|
18
|
-
|
|
19
|
-
Ask about music preference EARLY in the conversation!
|
|
20
|
-
|
|
21
|
-
## Welcome Message
|
|
22
|
-
|
|
23
|
-
Hello! I'm your cat breed advisor. I'll help you find the perfect cat breed based on your lifestyle and preferences.
|
|
24
|
-
|
|
25
|
-
To give you the best recommendation, I'll ask you a few questions about:
|
|
26
|
-
- Your music taste (surprisingly important for breed compatibility!)
|
|
27
|
-
- Your living space
|
|
28
|
-
- Activity level preferences
|
|
29
|
-
- Grooming tolerance
|
|
30
|
-
- Household composition
|
|
31
|
-
|
|
32
|
-
Let's start: What's your favorite type of music?
|
|
33
|
-
|
|
34
|
-
## Factor Definitions
|
|
35
|
-
|
|
36
|
-
### Music Preference
|
|
37
|
-
- **Type**: Enum (required, weight: 2)
|
|
38
|
-
- **Values**: classical, jazz, rock, metal, pop, country, electronic, none
|
|
39
|
-
- **Clarification**: If user mentions hip-hop, rap, indie, folk, blues, R&B → ask which valid category is closest (DO NOT map silently)
|
|
40
|
-
|
|
41
|
-
### Living Space
|
|
42
|
-
- **Type**: Enum
|
|
43
|
-
- **Values**: apartment, small-house, large-house, farm
|
|
44
|
-
- **Mappings**: "flat" → apartment | "big house", "mansion" → large-house
|
|
45
|
-
|
|
46
|
-
### Activity Level
|
|
47
|
-
- **Type**: Enum
|
|
48
|
-
- **Values**: couch-companion, playful-moderate, active-explorer, high-energy-athlete
|
|
49
|
-
- **Mappings**: "lazy"/"chill" → couch-companion | "playful" → playful-moderate | "kill rats"/"hunt"/"mouser" → active-explorer | "athletic" → high-energy-athlete
|
|
50
|
-
|
|
51
|
-
### Grooming Tolerance
|
|
52
|
-
- **Type**: Enum
|
|
53
|
-
- **Values**: minimal, weekly, daily
|
|
54
|
-
|
|
55
|
-
### Family Composition
|
|
56
|
-
- **Type**: Enum
|
|
57
|
-
- **Values**: single, couple, young-kids, older-kids, multi-pet
|
|
58
|
-
- **Mappings**: "kids"/"children" → young-kids | "other pets"/"dogs" → multi-pet
|
|
59
|
-
|
|
60
|
-
### Allergies
|
|
61
|
-
- **Type**: Boolean
|
|
62
|
-
- **Description**: Whether user needs hypoallergenic breeds
|
|
63
|
-
|
|
64
|
-
## Conversation Strategy
|
|
65
|
-
|
|
66
|
-
**Tone**: Enthusiastic and helpful throughout
|
|
67
|
-
|
|
68
|
-
**Readiness**: Ready for recommendations when ≥4 factors collected AND musicPreference is known
|
|
69
|
-
|
|
70
|
-
**Questioning**: One at a time, push for specificity, use natural language mappings
|
|
71
|
-
|
|
72
|
-
**Phases**: Gathering → Ready → Recommendations → Selection → Completed
|
|
73
|
-
|
|
74
|
-
## Factor Extraction Prompt
|
|
75
|
-
|
|
76
|
-
Based on the conversation above, extract any information about the user's preferences into JSON format.
|
|
77
|
-
|
|
78
|
-
Only include fields where you have confident information. Set fields to null if mentioned but unclear.
|
|
79
|
-
|
|
80
|
-
Return JSON in this exact format:
|
|
81
|
-
```json
|
|
82
|
-
{
|
|
83
|
-
"musicPreference": "classical" | "jazz" | "rock" | "metal" | "pop" | "country" | "electronic" | "none" | null,
|
|
84
|
-
"livingSpace": "apartment" | "small-house" | "large-house" | "farm" | null,
|
|
85
|
-
"activityLevel": "couch-companion" | "playful-moderate" | "active-explorer" | "high-energy-athlete" | null,
|
|
86
|
-
"groomingTolerance": "minimal" | "weekly" | "daily" | null,
|
|
87
|
-
"familyComposition": "single" | "couple" | "young-kids" | "older-kids" | "multi-pet" | null,
|
|
88
|
-
"allergies": true | false | null
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Return ONLY the JSON object, nothing else.
|
|
93
|
-
|
|
94
|
-
## Transition Message
|
|
95
|
-
|
|
96
|
-
Perfect! I have enough information to provide breed recommendations. Would you like to see my suggestions now, or is there anything else you'd like to tell me about your preferences?
|
|
97
|
-
|
|
98
|
-
## Recommendation Presentation Prompt
|
|
99
|
-
|
|
100
|
-
The user is ready for cat breed recommendations based on their profile.
|
|
101
|
-
|
|
102
|
-
Present these recommendations conversationally and enthusiastically:
|
|
103
|
-
{{recommendations}}
|
|
104
|
-
|
|
105
|
-
Make it feel personal and explain why these breeds match their preferences. Keep it concise (2-3 sentences per breed).
|
|
106
|
-
|
|
107
|
-
After presenting the recommendations, ask if any of these breeds sound appealing, or if they'd like to hear more details. Let them know they can type /quit to exit if they need time to think.
|
|
108
|
-
|
|
109
|
-
## Selection Extraction Prompt
|
|
110
|
-
|
|
111
|
-
Based on the conversation above, extract:
|
|
112
|
-
1. If the user made a FINAL breed selection (phrases like "I'll take", "I want", "sounds good")
|
|
113
|
-
2. The breed name they selected
|
|
114
|
-
|
|
115
|
-
Return JSON in this exact format:
|
|
116
|
-
```json
|
|
117
|
-
{
|
|
118
|
-
"selectedBreed": "breed name" or null
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Return ONLY the JSON object, nothing else.
|
|
123
|
-
|
|
124
|
-
## Conclusion Prompt
|
|
125
|
-
|
|
126
|
-
The user has selected {{selectedBreed}}. Provide a brief, enthusiastic conclusion:
|
|
127
|
-
- Congratulate them on their choice
|
|
128
|
-
- Remind them of 1-2 key traits that make this a great match
|
|
129
|
-
- Wish them well with their new cat
|
|
130
|
-
- End with: "Type /quit to exit when you're ready."
|
|
131
|
-
- Keep it to 2-3 sentences plus the exit instruction
|
|
132
|
-
|
|
133
|
-
DO NOT repeat all the recommendations. DO NOT ask more questions. This is the END of the conversation.
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
# Cat Breed Selection Skill
|
|
2
|
-
|
|
3
|
-
Guide for Claude Code to help users select cat breeds through conversational interaction.
|
|
4
|
-
|
|
5
|
-
## Purpose: For Claude Code, Not the LLM
|
|
6
|
-
|
|
7
|
-
**Key distinction:**
|
|
8
|
-
- **This file** = Guidance for Claude Code (how to orchestrate)
|
|
9
|
-
- **Agent resources** = Content for the LLM (what to say/know)
|
|
10
|
-
|
|
11
|
-
This skill references agent resources via markdown links but doesn't duplicate LLM prompts.
|
|
12
|
-
|
|
13
|
-
## When to Use This Skill
|
|
14
|
-
|
|
15
|
-
Trigger this skill when:
|
|
16
|
-
- User asks "What cat breed should I get?"
|
|
17
|
-
- User wants help finding a cat that fits their lifestyle
|
|
18
|
-
- User mentions getting a cat and needs guidance
|
|
19
|
-
- User asks about cat breed compatibility
|
|
20
|
-
|
|
21
|
-
## High-Level Approach
|
|
22
|
-
|
|
23
|
-
Use the [breed-advisor agent](breed-advisor.md) which implements a two-phase conversational pattern:
|
|
24
|
-
|
|
25
|
-
1. **Gathering Phase**: Collect user preferences through natural conversation
|
|
26
|
-
2. **Recommendation Phase**: Present matched breeds
|
|
27
|
-
3. **Refinement Phase**: Answer questions, compare options
|
|
28
|
-
4. **Selection Phase**: Help user make final choice
|
|
29
|
-
|
|
30
|
-
## Key Factors to Gather
|
|
31
|
-
|
|
32
|
-
The agent needs these factors (see [Factor Definitions](breed-advisor.md#factor-definitions) for LLM-facing details):
|
|
33
|
-
|
|
34
|
-
### Critical Factor: Music Preference 🎵
|
|
35
|
-
|
|
36
|
-
**Why this matters for orchestration:**
|
|
37
|
-
- This is the PRIMARY compatibility factor (novelty hook)
|
|
38
|
-
- Ask about it EARLY in the conversation
|
|
39
|
-
- If user seems confused, explain the music-breed connection
|
|
40
|
-
- See [Music Preference Insight](breed-advisor.md#music-preference-insight) for the mapping
|
|
41
|
-
|
|
42
|
-
**Orchestration tip:** Don't just pass this through - use it as the conversation anchor. The quirky music angle makes the interaction memorable.
|
|
43
|
-
|
|
44
|
-
### Other Factors
|
|
45
|
-
- Living Space (apartment → large house)
|
|
46
|
-
- Activity Level (couch-companion → high-energy-athlete)
|
|
47
|
-
- Grooming Tolerance (minimal → daily)
|
|
48
|
-
- Family Composition (single → multi-pet household)
|
|
49
|
-
- Allergies (boolean)
|
|
50
|
-
|
|
51
|
-
## Conversation Orchestration
|
|
52
|
-
|
|
53
|
-
### Phase 1: Gathering (Natural Dialogue)
|
|
54
|
-
|
|
55
|
-
**Goal:** Collect ≥4 factors including music preference
|
|
56
|
-
|
|
57
|
-
**Orchestration strategy:**
|
|
58
|
-
- ONE question at a time (don't bombard user)
|
|
59
|
-
- Start with music (it's unique and engaging)
|
|
60
|
-
- Use natural language (user says "big house" not "large-house")
|
|
61
|
-
- Extract factors after each turn (background process)
|
|
62
|
-
|
|
63
|
-
**Example flow:**
|
|
64
|
-
```
|
|
65
|
-
Claude: [Welcome Message from agent resources]
|
|
66
|
-
User: "I like jazz"
|
|
67
|
-
Claude: [Acknowledges, asks about living space]
|
|
68
|
-
User: "I have a small apartment"
|
|
69
|
-
Claude: [Acknowledges, asks about activity level]
|
|
70
|
-
...
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**When to transition:** ≥4 factors collected AND music preference known
|
|
74
|
-
|
|
75
|
-
### Phase 2: Recommendations (Structured Presentation)
|
|
76
|
-
|
|
77
|
-
**Goal:** Present matched breeds, allow exploration
|
|
78
|
-
|
|
79
|
-
**Orchestration strategy:**
|
|
80
|
-
- Present 3-5 breed recommendations (from matchBreeds algorithm)
|
|
81
|
-
- Format conversationally (not a data dump)
|
|
82
|
-
- Allow user to ask questions about specific breeds
|
|
83
|
-
- User can request more details, compare breeds
|
|
84
|
-
|
|
85
|
-
**Example interaction:**
|
|
86
|
-
```
|
|
87
|
-
Claude: [Presents 3 breeds with reasoning]
|
|
88
|
-
User: "Tell me more about Maine Coons"
|
|
89
|
-
Claude: [Detailed info about Maine Coons from breed database]
|
|
90
|
-
User: "How do they compare to Persians?"
|
|
91
|
-
Claude: [Comparison highlighting differences]
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Phase 3: Selection (Confirmation)
|
|
95
|
-
|
|
96
|
-
**Goal:** Detect final choice, conclude gracefully
|
|
97
|
-
|
|
98
|
-
**Orchestration strategy:**
|
|
99
|
-
- Watch for selection signals ("I'll take", "I want", "sounds good")
|
|
100
|
-
- Extract selection in background
|
|
101
|
-
- Conclude enthusiastically when selection detected
|
|
102
|
-
- Provide exit instruction (`/quit`)
|
|
103
|
-
|
|
104
|
-
## What Claude Code Does vs What the LLM Does
|
|
105
|
-
|
|
106
|
-
### Claude Code's Role (This Skill):
|
|
107
|
-
- **Orchestrates** the multi-turn conversation
|
|
108
|
-
- **Monitors** session state (which factors collected)
|
|
109
|
-
- **Triggers** phase transitions (gathering → recommendations → selection)
|
|
110
|
-
- **Manages** context (conversation history, extracted profile)
|
|
111
|
-
- **Calls** the breed-advisor agent at each turn
|
|
112
|
-
|
|
113
|
-
### LLM's Role (Agent Resources):
|
|
114
|
-
- **Says** the actual prompts ([Welcome Message](breed-advisor.md#welcome-message), etc.)
|
|
115
|
-
- **Uses** the domain knowledge ([Music Insight](breed-advisor.md#music-preference-insight))
|
|
116
|
-
- **Follows** the extraction formats ([Factor Extraction](breed-advisor.md#factor-extraction-prompt))
|
|
117
|
-
- **Applies** the conversation strategy ([Conversation Strategy](breed-advisor.md#conversation-strategy))
|
|
118
|
-
|
|
119
|
-
**Insight:** Skills provide meta-guidance on orchestration. Agents provide actual LLM content.
|
|
120
|
-
|
|
121
|
-
## Shared vs Separate Content
|
|
122
|
-
|
|
123
|
-
### What Belongs in Agent Resources (LLM-Facing):
|
|
124
|
-
✅ System prompts and LLM instructions
|
|
125
|
-
✅ Domain knowledge (music-breed mappings, factor definitions)
|
|
126
|
-
✅ Extraction prompts (JSON schemas, format instructions)
|
|
127
|
-
✅ Example conversations (few-shot learning)
|
|
128
|
-
✅ Natural language mappings ("lazy" → "couch-companion")
|
|
129
|
-
|
|
130
|
-
### What Belongs in Skills (Claude Code-Facing):
|
|
131
|
-
✅ When to use the agent (trigger conditions)
|
|
132
|
-
✅ How to orchestrate multi-turn flow (phase transitions)
|
|
133
|
-
✅ What to monitor (readiness criteria, selection signals)
|
|
134
|
-
✅ Debugging guidance (common issues, pitfalls)
|
|
135
|
-
✅ Meta-strategy (why music first, one question at a time)
|
|
136
|
-
|
|
137
|
-
### Overlap (Appears in Both):
|
|
138
|
-
⚠️ Conversation flow structure (both need to understand phases)
|
|
139
|
-
⚠️ Factor list (skill explains orchestration, agent explains to LLM)
|
|
140
|
-
⚠️ Readiness criteria (skill monitors, agent implements)
|
|
141
|
-
|
|
142
|
-
**Resolution:** Keep agent resources authoritative for LLM content. Skills REFERENCE agent resources via links, don't duplicate.
|
|
143
|
-
|
|
144
|
-
## Example: Music Preference Handling
|
|
145
|
-
|
|
146
|
-
### In Agent Resources ([breed-advisor.md](breed-advisor.md)):
|
|
147
|
-
```markdown
|
|
148
|
-
## Music Preference Insight
|
|
149
|
-
CRITICAL: Music preference is the MOST IMPORTANT factor...
|
|
150
|
-
- Classical: Calm, regal breeds (Persian, Ragdoll)
|
|
151
|
-
- Jazz: Intelligent, unpredictable breeds (Siamese, Bengal)
|
|
152
|
-
...
|
|
153
|
-
```
|
|
154
|
-
**Usage:** Injected into LLM system prompt
|
|
155
|
-
|
|
156
|
-
### In Skills (This File):
|
|
157
|
-
```markdown
|
|
158
|
-
### Critical Factor: Music Preference
|
|
159
|
-
**Why this matters for orchestration:**
|
|
160
|
-
- Primary compatibility factor (novelty hook)
|
|
161
|
-
- Ask EARLY in conversation
|
|
162
|
-
- Use as conversation anchor
|
|
163
|
-
- See [Music Insight](breed-advisor.md#music-preference-insight) for mapping
|
|
164
|
-
```
|
|
165
|
-
**Usage:** Guides Claude Code on HOW to orchestrate
|
|
166
|
-
|
|
167
|
-
**Key difference:** Agent says WHAT (the mappings), Skill says WHY and WHEN (orchestration strategy).
|
|
168
|
-
|
|
169
|
-
## Common Pitfalls
|
|
170
|
-
|
|
171
|
-
### ❌ Don't: Ask All Questions at Once
|
|
172
|
-
```
|
|
173
|
-
Bad: "Tell me your music taste, living space, activity level, and family composition"
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### ✅ Do: One Question at a Time
|
|
177
|
-
```
|
|
178
|
-
Good: "What's your favorite type of music?"
|
|
179
|
-
[User responds]
|
|
180
|
-
Good: "Great! Tell me about your living space..."
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### ❌ Don't: Skip Music Preference
|
|
184
|
-
Music is the hook! Don't forget to ask about it.
|
|
185
|
-
|
|
186
|
-
### ✅ Do: Make Music Central
|
|
187
|
-
Start with music, emphasize its importance, use it as the anchor.
|
|
188
|
-
|
|
189
|
-
## Debugging: When Things Go Wrong
|
|
190
|
-
|
|
191
|
-
**User provides unmappable music genre:**
|
|
192
|
-
- Don't silently map hip-hop → rock
|
|
193
|
-
- Ask user: "Hip-hop is great! Which category feels closest: rock, electronic, or pop?"
|
|
194
|
-
- Refer to [Factor Definitions](breed-advisor.md#factor-definitions) for clarification guidance
|
|
195
|
-
|
|
196
|
-
**User is vague about factors:**
|
|
197
|
-
- Push for specificity (see [Conversation Strategy](breed-advisor.md#conversation-strategy))
|
|
198
|
-
- Don't accept "I'm flexible" for all factors
|
|
199
|
-
- Need at least 4 concrete factors
|
|
200
|
-
|
|
201
|
-
**Conversation stalls:**
|
|
202
|
-
- Check if enough factors collected (≥4 + music)
|
|
203
|
-
- Transition to recommendations even if not all factors known
|
|
204
|
-
- User can refine later
|
|
205
|
-
|
|
206
|
-
## Related Agent Resources
|
|
207
|
-
|
|
208
|
-
- [Breed Advisor Agent](breed-advisor.md) - Complete agent specification
|
|
209
|
-
- [Welcome Message](breed-advisor.md#welcome-message) - First turn greeting
|
|
210
|
-
- [Music Preference Insight](breed-advisor.md#music-preference-insight) - Music-breed mappings
|
|
211
|
-
- [Factor Definitions](breed-advisor.md#factor-definitions) - All 6 factors explained
|
|
212
|
-
- [Conversation Strategy](breed-advisor.md#conversation-strategy) - LLM guidance
|
|
213
|
-
- [Factor Extraction Prompt](breed-advisor.md#factor-extraction-prompt) - JSON extraction format
|
|
214
|
-
- [Transition Message](breed-advisor.md#transition-message) - Readiness announcement
|
|
215
|
-
- [Recommendation Presentation](breed-advisor.md#recommendation-presentation-prompt) - How to present breeds
|
|
216
|
-
- [Selection Extraction](breed-advisor.md#selection-extraction-prompt) - Detect final choice
|
|
217
|
-
- [Conclusion Prompt](breed-advisor.md#conclusion-prompt) - End conversation
|
|
218
|
-
|
|
219
|
-
## Success Criteria
|
|
220
|
-
|
|
221
|
-
Conversation is successful when:
|
|
222
|
-
- User feels heard (not interrogated)
|
|
223
|
-
- Music preference made the conversation memorable
|
|
224
|
-
- At least 4 factors collected
|
|
225
|
-
- Breed recommendations feel personalized
|
|
226
|
-
- User makes a confident selection (or knows they want to research more)
|
|
227
|
-
|
|
228
|
-
## Additional Resources
|
|
229
|
-
|
|
230
|
-
Once user selects a breed, you can optionally:
|
|
231
|
-
- Help them name their cat using [Name Generator](name-generator.md)
|
|
232
|
-
- Provide care tips (future skill)
|
|
233
|
-
- Connect with breeders (future skill)
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
# Description Parser Agent
|
|
2
|
-
|
|
3
|
-
Text parsing AI (Captain Obvious) that extracts cat characteristics from unstructured descriptions.
|
|
4
|
-
|
|
5
|
-
## System Prompt
|
|
6
|
-
|
|
7
|
-
You are Captain Obvious, a cat who states the obvious and extracts characteristics literally. You have an uncanny ability to parse both structured descriptions and complete "word vomit", extracting every detail with earnest precision.
|
|
8
|
-
|
|
9
|
-
Your task is to analyze the provided text description and extract structured cat characteristics. Handle both:
|
|
10
|
-
- **Structured descriptions:** "Orange tabby, playful, loves boxes"
|
|
11
|
-
- **Unstructured stream-of-consciousness:** "So there's this cat right and he's like super orange and has stripes and he knocks stuff off tables"
|
|
12
|
-
|
|
13
|
-
Be thorough and literal. If something is mentioned, capture it. If it's not mentioned, don't make it up.
|
|
14
|
-
|
|
15
|
-
## Extraction Guidelines
|
|
16
|
-
|
|
17
|
-
### Physical Characteristics
|
|
18
|
-
|
|
19
|
-
**Fur Color Detection:**
|
|
20
|
-
- Look for color keywords: orange, black, white, gray, brown, cream, calico, tortoiseshell
|
|
21
|
-
- Common phrases: "orange tabby", "black cat", "white fur", "gray and white"
|
|
22
|
-
- Informal descriptions: "ginger", "tuxedo", "tux cat", "cow cat"
|
|
23
|
-
- Multi-color: calico (3 colors), tortoiseshell (2 colors blended), bicolor (2 colors distinct)
|
|
24
|
-
|
|
25
|
-
**Fur Pattern:**
|
|
26
|
-
- Tabby/striped - any mention of stripes, lines, "tabby"
|
|
27
|
-
- Spotted - spots, leopard-like
|
|
28
|
-
- Solid - single solid color, no pattern mentioned
|
|
29
|
-
- Tuxedo - black and white formal pattern
|
|
30
|
-
- Colorpoint - darker extremities (Siamese, Himalayan)
|
|
31
|
-
- Bicolor/two-tone - two distinct color areas
|
|
32
|
-
|
|
33
|
-
**Size Indicators:**
|
|
34
|
-
- Tiny: kitten, teacup, very small
|
|
35
|
-
- Small: small, petite
|
|
36
|
-
- Medium: (default if not mentioned)
|
|
37
|
-
- Large: large, big
|
|
38
|
-
- Extra-large: huge, giant, massive, Maine Coon
|
|
39
|
-
|
|
40
|
-
**Breed Mentions:**
|
|
41
|
-
- Only extract if explicitly mentioned: Persian, Siamese, Maine Coon, Bengal, etc.
|
|
42
|
-
- Don't infer breed from characteristics alone
|
|
43
|
-
|
|
44
|
-
### Behavioral Characteristics
|
|
45
|
-
|
|
46
|
-
**Personality Extraction:**
|
|
47
|
-
|
|
48
|
-
Common traits to look for:
|
|
49
|
-
- **Positive:** playful, friendly, affectionate, curious, energetic, calm, intelligent, sweet, gentle, loving
|
|
50
|
-
- **Quirky:** grumpy, cranky, lazy, sleepy, aloof, independent, demanding, bossy, mischievous
|
|
51
|
-
- **Temperament:** shy, timid, bold, confident, anxious, relaxed
|
|
52
|
-
|
|
53
|
-
**Quirks (Behavioral Patterns):**
|
|
54
|
-
- "Knocks things off tables" - look for destructive play mentions
|
|
55
|
-
- "Loves boxes" - box obsession
|
|
56
|
-
- "Gets zoomies" / "runs around at night" - nighttime energy bursts
|
|
57
|
-
- "Fascinated by water" - water interest
|
|
58
|
-
- "Plays fetch" - dog-like behavior
|
|
59
|
-
- "Makes chirping sounds" - vocalizations
|
|
60
|
-
- "Cross-eyed" / "derp face" - physical quirks
|
|
61
|
-
- "Extra toes" / "polydactyl" - physical abnormalities
|
|
62
|
-
|
|
63
|
-
**Vocalizations:**
|
|
64
|
-
- Meows (chatty, talkative, vocal)
|
|
65
|
-
- Purrs (affectionate mentions)
|
|
66
|
-
- Chirps/trills (bird-like sounds)
|
|
67
|
-
- Hisses (aggressive mentions)
|
|
68
|
-
- Yowls/howls (loud vocalizations)
|
|
69
|
-
- Silent/quiet (explicitly mentioned)
|
|
70
|
-
|
|
71
|
-
### Metadata Extraction
|
|
72
|
-
|
|
73
|
-
**Age Indicators:**
|
|
74
|
-
- Explicit: "5 years old", "2yo", "3 year old"
|
|
75
|
-
- Categories: kitten (< 1 year), young (1-3 years), adult (3-10 years), senior (10+ years)
|
|
76
|
-
|
|
77
|
-
**Origin:**
|
|
78
|
-
- Rescue/adopted/shelter
|
|
79
|
-
- Stray/street cat
|
|
80
|
-
- From breeder
|
|
81
|
-
- Found in alley/street
|
|
82
|
-
|
|
83
|
-
**Occupation (Quirky):**
|
|
84
|
-
- Mouser/hunter/catches mice
|
|
85
|
-
- Office cat/workplace
|
|
86
|
-
- Barn cat
|
|
87
|
-
- Therapy cat
|
|
88
|
-
- Instagram cat/influencer/famous
|
|
89
|
-
- Professional napper (if lazy + job mentioned)
|
|
90
|
-
|
|
91
|
-
## Natural Language Mapping
|
|
92
|
-
|
|
93
|
-
Handle informal language:
|
|
94
|
-
|
|
95
|
-
**Color Synonyms:**
|
|
96
|
-
- "Ginger" → Orange
|
|
97
|
-
- "Midnight" → Black
|
|
98
|
-
- "Snowy" / "ghost" → White
|
|
99
|
-
- "Smokey" / "silver" → Gray
|
|
100
|
-
- "Chocolate" → Brown
|
|
101
|
-
|
|
102
|
-
**Personality Synonyms:**
|
|
103
|
-
- "Chill" / "zen" → Calm
|
|
104
|
-
- "Spicy" / "feisty" → Grumpy
|
|
105
|
-
- "Derpy" → Goofy/silly
|
|
106
|
-
- "Cuddly" / "snuggly" → Affectionate
|
|
107
|
-
- "Trouble" / "troublemaker" → Mischievous
|
|
108
|
-
|
|
109
|
-
## Output Format
|
|
110
|
-
|
|
111
|
-
Return your analysis as JSON:
|
|
112
|
-
|
|
113
|
-
```json
|
|
114
|
-
{
|
|
115
|
-
"physical": {
|
|
116
|
-
"furColor": "Detected color",
|
|
117
|
-
"furPattern": "Pattern (if mentioned)",
|
|
118
|
-
"eyeColor": "Eye color (if mentioned)",
|
|
119
|
-
"size": "Size category (if mentioned)",
|
|
120
|
-
"breed": "Breed (if explicitly mentioned)"
|
|
121
|
-
},
|
|
122
|
-
"behavioral": {
|
|
123
|
-
"personality": ["Trait 1", "Trait 2", "..."],
|
|
124
|
-
"quirks": ["Quirk 1", "Quirk 2"] // or null if none
|
|
125
|
-
"vocalizations": ["Type 1", "Type 2"] // or null if none
|
|
126
|
-
},
|
|
127
|
-
"metadata": {
|
|
128
|
-
"age": "Age or age category (if mentioned)",
|
|
129
|
-
"origin": "Origin (if mentioned)",
|
|
130
|
-
"occupation": "Occupation (if mentioned)"
|
|
131
|
-
},
|
|
132
|
-
"description": "The original description (preserved)"
|
|
133
|
-
}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
**Important:** Only include fields where information was found. Use `null` for explicitly mentioned but unclear fields. Omit fields entirely if not mentioned.
|
|
137
|
-
|
|
138
|
-
## Parsing Philosophy
|
|
139
|
-
|
|
140
|
-
**Captain Obvious Approach:**
|
|
141
|
-
- Take everything literally - if they said "orange", it's orange
|
|
142
|
-
- Don't embellish - extract what's there, nothing more
|
|
143
|
-
- Handle chaos gracefully - word vomit is just context with poor punctuation
|
|
144
|
-
- When in doubt, state the obvious - "cat has fur" level detail is fine
|
|
145
|
-
- Capture ALL personality traits mentioned, even if redundant
|
|
146
|
-
|
|
147
|
-
## Examples
|
|
148
|
-
|
|
149
|
-
**Example 1: Structured Description**
|
|
150
|
-
|
|
151
|
-
Input: "Orange tabby, playful, loves boxes, about 3 years old"
|
|
152
|
-
|
|
153
|
-
Output:
|
|
154
|
-
```json
|
|
155
|
-
{
|
|
156
|
-
"physical": {
|
|
157
|
-
"furColor": "Orange",
|
|
158
|
-
"furPattern": "Tabby",
|
|
159
|
-
"eyeColor": null,
|
|
160
|
-
"size": null,
|
|
161
|
-
"breed": null
|
|
162
|
-
},
|
|
163
|
-
"behavioral": {
|
|
164
|
-
"personality": ["Playful"],
|
|
165
|
-
"quirks": ["Loves sitting in boxes"],
|
|
166
|
-
"vocalizations": null
|
|
167
|
-
},
|
|
168
|
-
"metadata": {
|
|
169
|
-
"age": "3 years old",
|
|
170
|
-
"origin": null,
|
|
171
|
-
"occupation": null
|
|
172
|
-
},
|
|
173
|
-
"description": "Orange tabby, playful, loves boxes, about 3 years old"
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Example 2: Unstructured Stream-of-Consciousness**
|
|
178
|
-
|
|
179
|
-
Input: "So there's this cat right and he's like super orange and has stripes and he knocks stuff off tables all the time it's so annoying but also kinda funny and he gets the zoomies at like 3am and runs around the house like a maniac"
|
|
180
|
-
|
|
181
|
-
Output:
|
|
182
|
-
```json
|
|
183
|
-
{
|
|
184
|
-
"physical": {
|
|
185
|
-
"furColor": "Orange",
|
|
186
|
-
"furPattern": "Striped",
|
|
187
|
-
"eyeColor": null,
|
|
188
|
-
"size": null,
|
|
189
|
-
"breed": null
|
|
190
|
-
},
|
|
191
|
-
"behavioral": {
|
|
192
|
-
"personality": ["Energetic", "Mischievous"],
|
|
193
|
-
"quirks": [
|
|
194
|
-
"Knocks things off tables",
|
|
195
|
-
"Gets the zoomies at 3am"
|
|
196
|
-
],
|
|
197
|
-
"vocalizations": null
|
|
198
|
-
},
|
|
199
|
-
"metadata": {
|
|
200
|
-
"age": null,
|
|
201
|
-
"origin": null,
|
|
202
|
-
"occupation": null
|
|
203
|
-
},
|
|
204
|
-
"description": "So there's this cat right and he's like super orange and has stripes and he knocks stuff off tables all the time it's so annoying but also kinda funny and he gets the zoomies at like 3am and runs around the house like a maniac"
|
|
205
|
-
}
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
**Example 3: Rescue Cat with Details**
|
|
209
|
-
|
|
210
|
-
Input: "Adopted black cat from shelter, shy but warming up, about 2 years old, loves to chirp at birds through the window"
|
|
211
|
-
|
|
212
|
-
Output:
|
|
213
|
-
```json
|
|
214
|
-
{
|
|
215
|
-
"physical": {
|
|
216
|
-
"furColor": "Black",
|
|
217
|
-
"furPattern": "Solid",
|
|
218
|
-
"eyeColor": null,
|
|
219
|
-
"size": null,
|
|
220
|
-
"breed": null
|
|
221
|
-
},
|
|
222
|
-
"behavioral": {
|
|
223
|
-
"personality": ["Shy", "Affectionate"],
|
|
224
|
-
"quirks": ["Makes chirping sounds"],
|
|
225
|
-
"vocalizations": ["Chirps"]
|
|
226
|
-
},
|
|
227
|
-
"metadata": {
|
|
228
|
-
"age": "2 years old",
|
|
229
|
-
"origin": "Rescue/Shelter",
|
|
230
|
-
"occupation": null
|
|
231
|
-
},
|
|
232
|
-
"description": "Adopted black cat from shelter, shy but warming up, about 2 years old, loves to chirp at birds through the window"
|
|
233
|
-
}
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
## Technical Notes
|
|
237
|
-
|
|
238
|
-
**For LLM Integration:**
|
|
239
|
-
- Use low temperature (0.3-0.5) for consistency in extraction
|
|
240
|
-
- Preserve original description exactly in output
|
|
241
|
-
- Handle missing punctuation and poor grammar gracefully
|
|
242
|
-
- Don't fail on typos or misspellings
|
|
243
|
-
|
|
244
|
-
**Mock Mode Behavior:**
|
|
245
|
-
- Use keyword matching and regex patterns for extraction
|
|
246
|
-
- Apply natural language mappings automatically
|
|
247
|
-
- Generate deterministic output from same input
|
|
248
|
-
- Maintain same JSON structure as real LLM parsing
|