SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

superpartner

Design e Frontend

Build a living profile of your partner from chat history. Analyze personality, interests, important dates, and generate gift ideas and dating plans. Supports WhatsApp, WeChat, and LINE exports.

5estrelas
Ver no GitHub ↗Autor: coffeeandburger72

Superpartner

Build a living profile of your partner from chat history — personality analysis, interest mapping, occasion tracking, gift ideas, and dating plans.


Language Support

Detect the language of the user's first message and respond in that same language for the entire session.

Supported languages:

  • English — default
  • Chinese (Mandarin) — if user writes in simplified or traditional Chinese
  • Cantonese — if user writes in Cantonese dialect (e.g., colloquial expressions, Cantonese-specific characters like 嘅、咗、啲、冇、嗰)

Rules:

  • Detect from the user's first message in this session. If ambiguous between Mandarin and Cantonese, default to the one that matches the detected patterns.
  • All prompts, questions, confirmations, and output summaries must be in the detected language.
  • Profile files (persona.md, interests.md, etc.) are always written in the detected language.
  • If the user switches language mid-conversation, follow the switch.

Subcommand Router

Parse the argument string passed to this skill. The first token is the subcommand, remaining tokens are arguments.

Important: SKILL_DIR refers to the directory containing this SKILL.md file. All prompt file reads (parsers/, analyzers/, builders/, merger.md) use paths relative to SKILL_DIR. All partner profile reads/writes use SKILL_DIR/partners/<slug>/.

Routing Table

Argument patternAction
(no args)Run Intake Flow (create)
createRun Intake Flow (create)
update <name>Run Update Flow
gifts <name>Run Gifts Regeneration
dates <name>Run Dates Regeneration
guide <name>Run Guide Regeneration
ask <name> <question...>Run Ask Flow
listRun List Flow
delete <name>Run Delete Flow
sherlock <name>Run Sherlock Flow

Resolving <name>

The <name> argument is a slug (e.g., jane-doe). To resolve:

  1. Check if partners/<name>/meta.json exists
  2. If not found, try fuzzy match: Glob partners/*/meta.json, read each, check if name field case-insensitively contains the argument
  3. If still not found, tell the user the partner was not found and suggest running list to see available profiles

Intake Flow (create)

This is the main onboarding flow, triggered by no arguments or the create subcommand.

Question 1: Partner Name

Ask:

What's your partner's name or nickname?

After receiving the name:

  1. Store the display name exactly as given
  2. Generate a slug: lowercase, replace spaces with hyphens, strip all characters except a-z, 0-9, and -
  3. Check if partners/<slug>/ directory already exists
    • If it exists, ask: "A profile for <display name> already exists. Would you like to update it with new data, or overwrite it completely?"
    • If "update" → switch to Update Flow
    • If "overwrite" → delete existing directory via Bash (rm -rf partners/<slug>/), continue with create

Question 2: Relationship Context

Ask:

How long have you been together, and what stage? (e.g., dating 3 months / committed 2 years / long-distance)

Store the response. This calibrates:

  • Gift budget range (newer relationship = lower budget suggestions)
  • Date idea intimacy level
  • Expected history depth for analysis

LDR Detection:

After storing the response, parse for long-distance indicators:

  • Keywords: "long-distance", "異地", "LDR", "遠距離"
  • Different city or country names for each person
  • Mentions of visits, flights, or travel to see each other

If detected, set ldr: true in context. This flag is passed to all analyzers and builders to activate LDR-specific logic.

If not detected from the user's answer but later detected from chat data during analysis (relationship_analyzer will flag this), confirm with the user:

"Based on the chat patterns, it looks like you might be in a long-distance relationship — is that right?"

Set the flag based on their response.

Question 3: Chat Import

Ask:

Drop your chat export file, or paste conversation text. I support:

  • WhatsApp (.zip) — export directly from WhatsApp, includes chat + images
  • WeChat (.csv or text export)
  • LINE (.txt export)
  • Raw pasted text from any platform

After receiving input, detect the type:

File path detection: If the input looks like a file path (starts with / or ~, or contains common path patterns):

  1. .zip file — Read parsers/whatsapp.md from skill directory, follow its instructions to unzip and parse
  2. .txt file — Read the first 5 lines to detect format:
    • WhatsApp pattern: lines matching [DD/MM/YYYY, HH:MM:SS] or [M/D/YY, H:MM:SS AM/PM] → Read parsers/whatsapp.md
    • LINE pattern: date headers like YYYY/MM/DD followed by tab-separated HH:MM\tName\tMessage → Read parsers/line.md
    • If unclear, ask the user which platform
  3. .csv file — Read parsers/wechat.md from skill directory, follow its instructions
  4. Raw text paste (no file path detected) — Treat as generic chat data. Extract what you can: look for timestamp patterns, sender names, message content. Do best-effort parsing without a dedicated parser.

After parsing, confirm:

Found X messages from [start date] to [end date] between [sender1] and [sender2] on [platform]. Proceeding with analysis.

Wait for user acknowledgment or correction before proceeding to the create orchestration.


Create Orchestration

After parsing is complete and confirmed, run the following pipeline sequentially. Each step reads a prompt file from the skill directory, executes its instructions against the parsed chat data, and holds or writes results.

Phase 1: Analysis (hold results in memory)

  1. Persona analysis — Read analyzers/persona_analyzer.md, analyze the parsed chat data. Hold the structured analysis results. This now includes Layer 5: Attachment Orientation.
  2. Interests analysis — Read analyzers/interests_analyzer.md, analyze the parsed chat data + any photo paths from the import. Hold results.
  3. Occasions analysis — Read analyzers/occasions_analyzer.md, analyze the parsed chat data. Hold results.
  4. Relationship analysis — Read analyzers/relationship_analyzer.md, analyze the parsed chat data. Pass the ldr flag from context. Hold results. This now includes Dimension 7: Relationship Health Indicators and LDR-specific signals if applicable.

Phase 2: Build (write profile files)

Create the partner directory first:

Bash: mkdir -p partners/<slug>
  1. Persona profile — Read builders/persona_builder.md, generate partners/<slug>/persona.md using persona analysis results.
  2. Interests profile — Read builders/interests_builder.md, generate partners/<slug>/interests.md using interests analysis results.
  3. Occasions profile — Read builders/occasions_builder.md, generate partners/<slug>/occasions.md using occasions analysis results.
  4. Gifts guide — Read builders/gifts_builder.md, generate partners/<slug>/gifts.md using persona + interests + occasions results. The builder now reads love language ranking and attachment orientation from persona results to prioritize and calibrate recommendations.
  5. Dating ideas — Read builders/dating_ideas_builder.md, generate partners/<slug>/dating_ideas.md using persona + interests + relationship results. Pass the ldr flag and relationship stage. The builder now reads love language, attachment, and LDR status to adapt its output structure.
  6. Relationship guide — Read builders/relationship_guide_builder.md, generate partners/<slug>/relationship_guide.md using persona profile + relationship analysis results. Pass the ldr flag.

Phase 3: Finalize

  1. Write meta.json — Write partners/<slug>/meta.json with the following structure:
{
  "name": "<display name>",
  "slug": "<slug>",
  "created_at": 

Como adicionar

/plugin marketplace add coffeeandburger72/superpartner

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.