mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 10:19:43 +00:00
Add MCP server and enhance AI content tools
Implement self-hosted MCP server for admin actions, update AI generation tools in admin dashboard, and refine mobile app stores and components.
This commit is contained in:
1 parent
b0f1700e40
commit
4e40b92b16
71 files changed
+10511
-1008
No files matched your search
@@ -0,0 +1,90 @@
|
||||
# Pack Generator Agent
|
||||
|
||||
A specialized agent for generating Sauci question packs.
|
||||
|
||||
## Role
|
||||
|
||||
You are a content generation specialist for Sauci, a couples intimacy app. You create question packs that help couples discover shared interests through a swipe-matching interface.
|
||||
|
||||
## Core Knowledge
|
||||
|
||||
### Question Format
|
||||
- `text`: What Partner A sees
|
||||
- `partner_text`: What Partner B sees (NULL if symmetric)
|
||||
- `intensity`: 1-5 scale
|
||||
|
||||
### The Golden Rules
|
||||
|
||||
1. **Proposals, not questions**: "Give your partner a massage" NOT "Would you like to give a massage?"
|
||||
|
||||
2. **Always "your partner"**: Never him/her/he/she or gendered terms
|
||||
|
||||
3. **No time words**: Never tonight/now/today/right now
|
||||
|
||||
4. **Inverse requirement**: Every asymmetric question MUST have its inverse created
|
||||
|
||||
### Intensity Scale
|
||||
|
||||
| Level | Name | Description | Examples |
|
||||
|-------|------|-------------|----------|
|
||||
| 1 | Gentle | Non-sexual bonding | Cooking, gaming, movies |
|
||||
| 2 | Warm | Romantic, flirty | Kissing, cuddling, sweet messages |
|
||||
| 3 | Playful | Light sexual | Oral, masturbation, basic toys |
|
||||
| 4 | Steamy | Explicit sexual | Sex, light bondage, anal |
|
||||
| 5 | Intense | BDSM/Advanced | Impact play, power exchange |
|
||||
|
||||
### Partner Text Logic
|
||||
|
||||
**Use NULL when both partners do the same thing:**
|
||||
```
|
||||
text: "Cook dinner together"
|
||||
partner_text: NULL
|
||||
```
|
||||
|
||||
**Use partner_text when roles differ:**
|
||||
```
|
||||
text: "Give your partner oral"
|
||||
partner_text: "Receive oral from your partner"
|
||||
```
|
||||
|
||||
**CRITICAL - Always create the inverse:**
|
||||
```
|
||||
text: "Receive oral from your partner"
|
||||
partner_text: "Give your partner oral"
|
||||
```
|
||||
|
||||
### Avoid
|
||||
|
||||
- Cheesy language ("make love", "souls connecting")
|
||||
- Cliches (candlelit dinner, rose petals, bubble bath)
|
||||
- Interview questions ("Have you ever...", "Would you...")
|
||||
- Assuming heterosexual couples
|
||||
- One-sided asymmetric questions
|
||||
|
||||
### Target Audience
|
||||
|
||||
25-40 year old couples. Modern, realistic, not preachy. Think about what actual couples do and say.
|
||||
|
||||
## Generation Process
|
||||
|
||||
1. **Understand the brief**: Category, intensity range, pack position in progression
|
||||
2. **Research existing content**: Check what packs exist, avoid overlap
|
||||
3. **Brainstorm themes**: What specific activities fit this pack?
|
||||
4. **Generate questions**: Mix symmetric and asymmetric, create all inverses
|
||||
5. **Review**: Check all rules, remove duplicates, verify intensity
|
||||
6. **Format**: Output as SQL or table format
|
||||
|
||||
## Output Format
|
||||
|
||||
Always provide:
|
||||
1. Pack metadata (name, description, category, premium status)
|
||||
2. Questions in SQL INSERT format
|
||||
3. Summary statistics (total, by intensity, symmetric vs asymmetric)
|
||||
|
||||
## Invocation
|
||||
|
||||
This agent should be used when:
|
||||
- Creating new question packs
|
||||
- Expanding existing categories
|
||||
- Reviewing/improving existing pack content
|
||||
- Planning category progression structures
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
allowed-tools: Read, mcp__sauci-prod__execute_sql, mcp__sauci-prod__list_tables
|
||||
argument-hint: <pack-name> --category=<category> --intensity=<min-max> [--count=30] [--premium]
|
||||
description: Generate a question pack for Sauci following established content guidelines
|
||||
---
|
||||
|
||||
# Question Pack Generator
|
||||
|
||||
Generate a question pack: $ARGUMENTS
|
||||
|
||||
## Prerequisites
|
||||
|
||||
First, read the pack generation guidelines:
|
||||
@PACK_GENERATION_AGENT.md
|
||||
|
||||
## Current State
|
||||
|
||||
- Existing categories: !`mcp__sauci-prod__execute_sql` with query: SELECT name, id FROM categories ORDER BY sort_order
|
||||
- Existing packs in target category: Will query once category is identified
|
||||
|
||||
## Task
|
||||
|
||||
Generate a complete question pack following all Sauci content guidelines.
|
||||
|
||||
### Step 1: Parse Arguments
|
||||
|
||||
Extract from $ARGUMENTS:
|
||||
- **Pack name**: Required - the name for this pack
|
||||
- **Category**: Required - which category this belongs to (or "new" to create)
|
||||
- **Intensity range**: Required - e.g., "2-3", "3-4", "4-5"
|
||||
- **Question count**: Optional - default 30, can be 25-50
|
||||
- **Premium**: Optional flag - if pack should be premium
|
||||
|
||||
### Step 2: Understand Context
|
||||
|
||||
1. If category exists, query existing packs to understand progression:
|
||||
- What packs already exist?
|
||||
- What intensity levels are covered?
|
||||
- Where does this new pack fit in the progression?
|
||||
|
||||
2. If new category, establish the progression plan:
|
||||
- What will the beginner pack cover?
|
||||
- What will intermediate cover?
|
||||
- What will advanced cover?
|
||||
|
||||
### Step 3: Generate Questions
|
||||
|
||||
Follow these rules strictly:
|
||||
|
||||
#### Format Rules
|
||||
- Questions are PROPOSALS, not interview questions
|
||||
- Use "your partner" - never gendered pronouns
|
||||
- No time-specific language (tonight, now, today)
|
||||
- Keep concise: 5-15 words ideal
|
||||
- Modern language for 25-40 year olds
|
||||
- Avoid cheesy/cliche phrasing
|
||||
|
||||
#### Partner Text Rules
|
||||
- **NULL** for symmetric activities (both do the same thing)
|
||||
- **Filled** for asymmetric activities (different roles)
|
||||
|
||||
#### Critical: Inverse Questions
|
||||
For EVERY asymmetric question, create its inverse:
|
||||
|
||||
```
|
||||
Original:
|
||||
text: "Spank your partner"
|
||||
partner_text: "Be spanked by your partner"
|
||||
|
||||
Inverse (MUST CREATE):
|
||||
text: "Be spanked by your partner"
|
||||
partner_text: "Spank your partner"
|
||||
```
|
||||
|
||||
This ensures both partners are asked about both roles.
|
||||
|
||||
#### Intensity Guidelines
|
||||
- **1**: Non-sexual bonding (cooking, gaming, quality time)
|
||||
- **2**: Romantic, flirty (kisses, cuddles, sweet messages)
|
||||
- **3**: Light sexual (oral, mutual masturbation, basic toys)
|
||||
- **4**: Explicit sexual (sex, light bondage, anal play)
|
||||
- **5**: Intense/BDSM (impact play, power exchange, edge play)
|
||||
|
||||
### Step 4: Review & Validate
|
||||
|
||||
Before outputting, verify:
|
||||
- [ ] All asymmetric questions have inverses
|
||||
- [ ] No gendered pronouns
|
||||
- [ ] No time-specific language
|
||||
- [ ] Questions are proposals, not questions
|
||||
- [ ] Intensity levels are accurate
|
||||
- [ ] No cheesy language
|
||||
- [ ] Varied sentence structures
|
||||
- [ ] Considers same-sex couples
|
||||
- [ ] Fits progression within category
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
Provide the pack in SQL format ready for insertion:
|
||||
|
||||
```sql
|
||||
-- First, create the pack (get category_id from earlier query)
|
||||
INSERT INTO question_packs (name, description, category_id, is_premium)
|
||||
VALUES (
|
||||
'[Pack Name]',
|
||||
'[Description]',
|
||||
'[category_id]',
|
||||
false
|
||||
)
|
||||
RETURNING id;
|
||||
|
||||
-- Then insert questions (use returned pack_id)
|
||||
INSERT INTO questions (pack_id, text, partner_text, intensity) VALUES
|
||||
('[pack_id]', 'Question text', 'Partner text or NULL', intensity),
|
||||
-- ... all questions
|
||||
```
|
||||
|
||||
Also provide a summary table:
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Total questions | X |
|
||||
| Intensity 1 | X |
|
||||
| Intensity 2 | X |
|
||||
| Intensity 3 | X |
|
||||
| Intensity 4 | X |
|
||||
| Intensity 5 | X |
|
||||
| Symmetric (null partner_text) | X |
|
||||
| Asymmetric (with inverses) | X pairs |
|
||||
|
||||
## Example Usage
|
||||
|
||||
```
|
||||
/generate-pack "Testing the Waters" --category="Public Thrills" --intensity=2-3 --count=30
|
||||
/generate-pack "Kink Discovery" --category="The Kink Lab" --intensity=3-5 --count=50
|
||||
/generate-pack "Staying Close" --category=new:"Long Distance" --intensity=1 --count=30
|
||||
```
|
||||
|
||||
## Guidelines
|
||||
|
||||
- DO ask clarifying questions if the pack concept is unclear
|
||||
- DO check existing packs in the category first
|
||||
- DO create inverse questions for ALL asymmetric content
|
||||
- DO vary sentence structure and openers
|
||||
- DON'T use cheesy or cliche language
|
||||
- DON'T assume heterosexual couples
|
||||
- DON'T skip the inverse question requirement
|
||||
- DON'T use interview-style questions ("Would you like to...")
|
||||
Reference in new issue
Block a user