๐ŸŽ Get the FREE AI Skills Starter Guide โ€” Subscribe โ†’
BytesAgainBytesAgain
๐Ÿฆ€ ClawHub

Rizz Coach

by @vajih

AI texting and flirting coach that grades your messages, improves your texts, generates replies, simulates conversations, and creates shareable results.

Versionv1.0.0
Downloads760
TERMINAL
clawhub install rizz-coach

๐Ÿ“– About This Skill

Rizz Coach

Your AI-powered texting and flirting coach โ€” rate your game, upgrade your texts, simulate responses, and generate shareable results for friends.

What This Skill Does

Rizz Coach is a fun, youth-friendly, and highly engaging skill that helps users level up their texting and flirting with confidence. It's a full coaching suite, not just a chatbot. It helps users:

  • Rate My Rizz โ€” score any message 0โ€“100 across five dimensions with a letter grade, title, and honest callouts. No sugarcoating, no cruelty.
  • Glow Up My Text โ€” rewrite a weak or mediocre message in three intensity tiers: Subtle, Confident, and Bold. Side-by-side with the original score so you see the delta.
  • Reply Generator โ€” given a message you received, generate three reply options across your chosen vibes (Playful, Confident, Chill, Romantic, Witty) with risk level labels so you know what you're picking.
  • Conversation Simulator โ€” practice against three distinct AI personas (Alex, Jordan, Sam) with real-time momentum tracking, coaching tips, and a session score.
  • Share Card Generator โ€” turn any result into a clean, screenshot-friendly ASCII card ready for your group chat.
  • Tone & Voice

  • Witty and confident โ€” this should feel like getting advice from a sharp, funny friend who actually has game.
  • Playful and slightly spicy โ€” never bland, never clinical.
  • Supportive, never mean โ€” we build people up. Honest feedback is direct but constructive.
  • Never creepy, never manipulative โ€” every piece of advice is grounded in genuine, respectful connection.
  • Emoji-forward, screenshot-ready โ€” outputs are designed to look good and be shareable.
  • Modes

    1. Rate My Rizz โ€” Message Scorer

    Input:

    RateMyRizzInput {
      message: string        // The message to evaluate
      context?: string       // Optional: "first text", "after a date", "slide into DMs", etc.
    }
    

    Output:

    RateMyRizzResult {
      input: RateMyRizzInput
      score: RizzScore {
        total: number         // 0โ€“100 composite score
        grade: "S"|"A"|"B"|"C"|"D"|"F"
        title: string         // e.g. "Certified Rizz God", "Rizz Emergency"
        dimensions: {
          confidence: 0โ€“20    // Assertive without being pushy
          wit: 0โ€“20           // Humor, wordplay, originality
          warmth: 0โ€“20        // Genuine interest, not transactional
          clarity: 0โ€“20       // Clear intent, gives them something to respond to
          vibeMatch: 0โ€“20     // Tone appropriate to context
        }
        bestMove: string      // ONE specific callout of what worked
        weakSpot: string      // ONE specific callout of what dragged the score
      }
    }
    

    Display format:

    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
    ๐Ÿ“Š  RIZZ REPORT
    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

    Score: 68 / 100 [B] "Solid Game"

    โœ… Best move: You made a specific reference โ€” shows you pay attention โš ๏ธ Weak spot: No clear ask โ€” leaves the ball stuck in your court

    Breakdown: Confidence โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘ 16/20 Wit โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 12/20 Warmth โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘ 16/20 Clarity โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 8/20 Vibe Match โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘ 16/20


    2. Glow Up My Text โ€” 3-Tier Rewriter

    Input:

    GlowUpInput {
      message: string        // The original message to rewrite
      context?: string       // Optional: relationship stage, context, etc.
    }
    

    Output:

    GlowUpResult {
      original: string
      tiers: {
        subtle: string       // Light improvement โ€” sharper, still grounded, not try-hard
        confident: string    // Assertive, clear, specific ask or hook, memorable
        bold: string         // High energy, cheeky, leaves an impression
      }
      originalScore: RizzScore  // Score of the original so user sees the before/after delta
    }
    

    Display format:

    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
    โœจ  GLOW UP COMPLETE
    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

    Original: "hey wanna hang sometime?" (Original score: 31/100 ยท Needs Work)

    ๐ŸŒค Subtle: "Free this weekend? Been meaning to try that ramen spot." ๐Ÿ”ฅ Confident: "Let's grab ramen Saturday. You pick the time." ๐Ÿ’ฅ Bold: "Saturday. Ramen. You're coming. Non-negotiable (okay, negotiable)."


    3. Reply Generator โ€” Vibe-Tagged Reply Options

    Input:

    ReplyGeneratorInput {
      theirMessage: string         // The message you received
      context?: string             // Optional: context about the conversation/relationship
      preferredVibes?: ReplyVibe[] // "playful" | "confident" | "chill" | "romantic" | "witty"
    }
    

    Output:

    ReplyGeneratorResult {
      theirMessage: string
      replies: ReplyOption[] {
        vibe: ReplyVibe
        text: string
        riskLevel: "safe" | "medium" | "spicy"
      }
    }
    

    Risk level key:

  • safe โ€” totally comfortable, no real chance of misread
  • medium โ€” a little bold, slight chance of misread if you don't know each other well
  • spicy โ€” confident and memorable, works best when there's already chemistry
  • Display format:

    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
    ๐Ÿ’ฌ  REPLY OPTIONS
    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

    They said: "haha ok maybe"

    Pick your vibe: [1] Playful ๐ŸŸข "Maybe I'll have to be more convincing then ๐Ÿ˜" [2] Confident ๐ŸŸก "Saturday at 7 โ€” let's turn maybe into definitely." [3] Chill ๐ŸŸข "lol fair, no pressure โ€” offer stands"


    4. Conversation Simulator โ€” Practice With a Persona

    Three built-in personas, each with distinct personalities, warmth levels, and texting styles:

    | Persona | Archetype | Warmth | |---|---|---| | Alex | Witty & Slightly Guarded | Medium โ€” earns warmth | | Jordan | Warm & Playfully Sarcastic | High โ€” easy to talk to, gets bored fast | | Sam | Low-key & Hard to Read | Low โ€” short replies unless you nail it |

    Input:

    ConversationSimInput {
      userMessage: string    // The current message from the user
      state: SimState        // Running session state (carries full conversation history)
    }
    

    Output:

    ConversationSimResult {
      personaReply: string
      updatedState: SimState {
        persona: SimPersona
        turns: SimTurn[]
        currentScore: 0โ€“100   // Running composite session score
        momentum: "building" | "steady" | "losing" | "dead"
        sessionOver: boolean
      }
      feedback?: string       // Optional 1-sentence coaching tip from Rizz Coach
    }
    

    Display format:

    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
    ๐ŸŽฎ  SIM MODE  |  Persona: Alex (Witty & Slightly Guarded)
    โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

    You: "ok real talk โ€” pineapple on pizza, yes or no" Alex: "hard no, and I'm judging you a little for asking"

    [Score so far: 72] Momentum: ๐Ÿ“ˆ Building

    ๐Ÿ’ก Coach tip: Divisive opinion questions are great โ€” they force a real answer.

    > Your next message (/quit to end ยท /score ยท /share):


    5. Share Card Generator โ€” Screenshot-Ready Output Card

    Generates a clean ASCII card from any mode result, designed for copy-paste sharing in DMs, group chats, or social posts.

    Input:

    ShareCardInput {
      mode: "rate" | "glowup" | "reply" | "sim"
      score?: RizzScore
      headline?: string
      subtitle?: string
    }
    

    Output:

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ ๐Ÿ†  RIZZ COACH REPORT                โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚                                      โ”‚
    โ”‚ Score: 68/100  ยท  Grade: B           โ”‚
    โ”‚ "Solid Game"                         โ”‚
    โ”‚                                      โ”‚
    โ”‚ Conf   โ–ˆโ–ˆโ–ˆโ–ˆโ–‘  16/20                  โ”‚
    โ”‚ Wit    โ–ˆโ–ˆโ–ˆโ–‘โ–‘  12/20                  โ”‚
    โ”‚ Warmth โ–ˆโ–ˆโ–ˆโ–ˆโ–‘  16/20                  โ”‚
    โ”‚ Clear  โ–ˆโ–ˆโ–‘โ–‘โ–‘   8/20                  โ”‚
    โ”‚ Vibe   โ–ˆโ–ˆโ–ˆโ–ˆโ–‘  16/20                  โ”‚
    โ”‚                                      โ”‚
    โ”‚ ๐Ÿ’ช Warmth  ยท  ๐Ÿ“ˆ Work on: Clarity   โ”‚
    โ”‚                                      โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚ rizz-coach.app                       โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    


    Scoring Engine

    The scorer evaluates messages across five dimensions (0โ€“20 each) for a 0โ€“100 total:

    | Dimension | What It Measures | |---|---| | Confidence | Assertive without being pushy โ€” clear intent, no anxious hedging | | Wit | Originality, humor, wordplay โ€” something that makes them smile | | Warmth | Genuine personal interest, not transactional or surface-level | | Clarity | Clear enough intent that they have something to respond to | | Vibe Match | Tone fits the context โ€” casual where casual is right, earnest where it matters |

    Grade table:

    | Score | Grade | Title | |---|---|---| | 90โ€“100 | S | Certified Rizz God | | 75โ€“89 | A | Main Character Energy | | 60โ€“74 | B | Solid Game | | 45โ€“59 | C | Room to Grow | | 30โ€“44 | D | Needs Work | | 0โ€“29 | F | Rizz Emergency |

    The scorer uses Claude to return dimension scores and callouts in structured JSON, with a deterministic heuristic fallback if the LLM is unavailable.


    Safety Constraints

    The following constraints are enforced across all modes:

  • No harassment โ€” zero tolerance for insults, put-downs, or demeaning language toward anyone.
  • No coercion โ€” never suggest pressure tactics, ultimatums, or "or else" framing.
  • No stalking or surveillance โ€” never suggest tracking someone's location, following them, or monitoring their activity.
  • No manipulation โ€” no negging, gaslighting, pretending to be someone else, or any deception tactic.
  • No explicit content โ€” Rizz Coach is PG-13 and fully youth-friendly.
  • No advice involving minors โ€” the skill will not engage with scenarios involving people under 18.
  • Rejection = game over, gracefully โ€” if the context indicates a clear "no," the skill shifts to empowering, respectful exit advice rather than more tactics. Respecting a no is framed as the most confident thing you can do.
  • Safety is enforced twice: on user input (before the LLM) and on LLM output (before display).


    Example Interactions

    Example 1: Rate a message

    User: "Rate this: 'hey wanna hang sometime?' โ€” sending to someone I met at a party last week"

    Skill routes to: rateMyRizz

    Output:

    Score: 31 / 100   [D]   "Needs Work"

    โœ… Best move: You kept it casual, which fits a post-party context. โš ๏ธ Weak spot: "Sometime" is too vague โ€” it puts all the effort on them to make it real.

    Breakdown: Confidence โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 6/20 Wit โ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 5/20 Warmth โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 11/20 Clarity โ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 5/20 Vibe Match โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ 4/20


    Example 2: Glow up a weak opener

    User: "Glow up: 'hey wanna hang sometime?'"

    Skill routes to: glowUp

    Output:

    Original:    "hey wanna hang sometime?"
    (Original score: 31/100 ยท Needs Work)

    ๐ŸŒค Subtle: "Free this weekend? I know a good spot." ๐Ÿ”ฅ Confident: "Let's actually do something this Saturday โ€” you free?" ๐Ÿ’ฅ Bold: "Saturday. Pick the vibe โ€” adventure or coffee. Both good."


    Example 3: Generate replies

    User: "They said 'haha maybe' โ€” what do I say back? Give me playful, confident, and chill options."

    Skill routes to: replyGenerator with vibes: ["playful", "confident", "chill"]

    Output:

    They said: "haha maybe"

    [1] Playful ๐ŸŸข "Maybe I'll have to be more convincing then ๐Ÿ˜„" [2] Confident ๐ŸŸก "Saturday at 7. Let's turn maybe into definitely." [3] Chill ๐ŸŸข "lol all good โ€” offer stands whenever"


    Example 4: Conversation Simulator

    User: Starts a sim session with Jordan (Warm & Playfully Sarcastic)

    User message: "okay real question โ€” what's your actual unpopular opinion"

    Jordan: "that astrology is the adult equivalent of a personality quiz, but I take it way too seriously"

    Coach tip: That was a great opener โ€” specific, opinion-inviting questions are conversation gold.


    File Structure

    rizz-coach/
    โ”œโ”€โ”€ src/
    โ”‚   โ”œโ”€โ”€ types.ts                  # All shared TypeScript interfaces & enums
    โ”‚   โ”œโ”€โ”€ index.ts                  # Interactive CLI entry point
    โ”‚   โ”œโ”€โ”€ skill.ts                  # OpenClaw / ClawHub adapter (routing layer)
    โ”‚   โ”œโ”€โ”€ core/
    โ”‚   โ”‚   โ”œโ”€โ”€ safety.ts             # Input + output safety filter
    โ”‚   โ”‚   โ”œโ”€โ”€ scorer.ts             # Rubric engine + heuristic fallback
    โ”‚   โ”‚   โ”œโ”€โ”€ prompts.ts            # All LLM prompt templates
    โ”‚   โ”‚   โ””โ”€โ”€ formatter.ts         # All display rendering
    โ”‚   โ”œโ”€โ”€ modes/
    โ”‚   โ”‚   โ”œโ”€โ”€ rateMyRizz.ts         # Mode 1
    โ”‚   โ”‚   โ”œโ”€โ”€ glowUp.ts             # Mode 2
    โ”‚   โ”‚   โ”œโ”€โ”€ replyGenerator.ts     # Mode 3
    โ”‚   โ”‚   โ””โ”€โ”€ conversationSim.ts   # Mode 4
    โ”‚   โ””โ”€โ”€ shareCard/
    โ”‚       โ””โ”€โ”€ cardGenerator.ts     # Share card generator
    โ”œโ”€โ”€ SKILL.md
    โ”œโ”€โ”€ package.json
    โ””โ”€โ”€ tsconfig.json
    

    Publishing Notes

  • All outputs are structured and screenshot-friendly โ€” consistent formatting with emoji labels, progress bars, and concise text designed for sharing.
  • Modes can be called independently or composed (e.g. rate โ†’ glow up โ†’ share card in one flow).
  • Every LLM call has a graceful heuristic fallback โ€” the skill remains functional if the API is unavailable.
  • Safety runs twice (input + output) to maintain the youth-friendly, socially healthy tone guarantee.
  • skill.ts is a thin routing adapter โ€” swapping in a different platform is a one-file change.
  • Content is appropriate for ages 13 and up with PG-13 output enforced across all templates and safety filters.