Lov Do They Love Me logo

Lov Do They Love Me

Organization
lovstudio
lov-do-they-love-me

把两个人的微信私聊做成有证据的恋爱指数分析:量化互动节奏,用本地模型区分工作/情感/生活内容,再产出一张手机竖版信息图。Use when the user says “分析我们的聊天记录”“他/她爱不爱我”,or asks for a chat relationship analysis.

Overview

Publisherlovstudio
Repositoryskills
Skill namelov-do-they-love-me
Stars
67
Forks
17
Bundled files
22
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 22 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by lovstudio on GitHub. Read the source before you install it.

Installation

Install the Lov Do They Love Me AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/lovstudio/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/skills/do-they-love-me .claude/skills/lov-do-they-love-me
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Lov Do They Love Me in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Lov Do They Love Me on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Lov Do They Love Me is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

恋爱指数分析 · Love Index Analysis

调用 ID 是 lov-do-they-love-me,用的是英文单数 they:指一个性别未知或不必指明的人, 所以它同时覆盖 he 和 she。单数 they 的动词形式是 do,不是 does——does they 是语法错误, 这里不是笔误,后续维护、改名或本地化时不要把它「纠正」成 does。 展示名固定为「恋爱指数分析」;ID 与展示名分工不同,不要互相替换。

把一段两个人的真实聊天,做成经得起追问的结论:先量化互动节奏,再做语义分层, 最后交付一张手机竖版信息图。结论必须写清口径、样本与误差,不许把工作消息当成情感热度, 也不许把自定义指数说成对当事人情绪的测量。

用户拿到的是三样东西:可复算的中间数据、一张能直接发出去的卡片、以及这套结论的误差范围。

Triggers

Activate when

  • “分析一下我和某人的聊天记录”“我们聊了两个月,到底算什么关系”。
  • “他/她爱不爱我”“帮我做个恋爱指数分析”“看看谁更主动”。
  • “把我们的聊天做成一张卡”。
  • The user asks to "analyze our chat history", "make a relationship / love index card", or "is this person into me, based on the messages".

Do not activate when

  • 只要读取、检索或导出微信记录:交给 lov-wdb-cli
  • 已经有结论、只想排版成卡片:交给 lov-mobile-infographic;本 Skill 只在没有 量化与语义结论时从数据开始。
  • 要做群聊日报、公众号文章或营销图卡:分别交给日报、文章与图卡类 Skill。
  • 没有真实聊天记录、只凭感觉要一个分数:拒绝编造,说明需要数据。

User Profile (cross-session)

Every generated Skill is connected to the shared user-profile/v1 contract in skill.yaml. Read the shared user, brand, workspace, preferences, and this Skill's skills.<skill_id> namespace at the start of every run. Keep the source portable: resolved personal values belong in the shared profile, never here.

When the user directly states a durable preference or brand fact, persist it through scripts/profile_store.py and report the saved profile path. Put Skill-specific values under records.<field>; use brand.<field> or user.<field> for shared values. Do not persist inferred secrets or credentials. See references/user-profile.md for the complete contract.

Skill Group Composition

Read references/skill-composition.md before deciding whether to invoke or extend any adjacent capability. The record distinguishes optional upstream and downstream handoffs from embedded Kit modules. Do not silently depend on a sibling Skill that is not shipped with this source.

Workflow (MANDATORY)

You MUST follow these steps in order.

Step 0: Resolve skill root, dependencies, and runtime context

  • Use SKILL_DIR if the environment provides it.
  • Otherwise infer the installed skill directory from the current skill context.
  • Verify scripts/chat_metrics.py, scripts/matrix_dataset.py, scripts/export_text.py, scripts/semantic_label.py, scripts/topic_composition.py, scripts/card_figures.py, scripts/verify_figures.py, and the four references exist before work.
  • If a required resource is missing, name its expected relative path and stop before producing a partial result.

When running scripts manually:

bash
export SKILL_DIR="/path/to/lov-do-they-love-me"

Resolve context.profile on every invocation. The precedence is current request, project context, Skill-specific profile records, shared preferences, shared brand/user profile, then safe defaults. A direct user statement about a durable preference or brand fact should be saved with scripts/profile_store.py record using --confirm, followed by a concise saved-path report.

Step 1: Understand the requested outcome

  • 明确对象、时间窗、交付面(自己看 / 发给对方 / 发出去)与语言。
  • references/privacy-and-consent.md:这是第三方的私人聊天,默认只在本机处理。
  • 先定读者与判断:这张卡要回答哪一句可被反驳的判断?写不出判断就回到 Step 3 找证据。

Step 1.5: Analyze nearby Skills before implementation

  • Inspect related local and installed Skills by routing contract and concrete input/output, not by filename alone.
  • Record upstream, core, downstream, overlap, and not-composed decisions in references/skill-composition.md.
  • Keep sibling Skills optional and artifact-based. When stages require hard coupling for one outcome, create a self-contained Kit instead.
  • 本 Skill 的既有记录在 references/skill-composition.md:上游是 lov-wdb-cli, 下游是 lov-mobile-infographic;除非用户改口径,不要重新发明取数或排版。

Step 2: Execute the workflow

按顺序执行下面五段。每段都以文件为交接物,失败就停在该段并说明缺什么。

2.1 取数(交给 lov-wdb-cli

用对方的昵称/备注定位唯一联系人,导出时间窗内的私聊为 JSONL,并记录本机账号与对方账号:

bash
python3 "$WDB_SKILL/skills/wdb-query/scripts/wdb_cli.py" chats \
  --contact "<昵称或备注>" --from <> --to <> --limit 5000 --format jsonl > messages.jsonl

先跑 stats 看体量与分日分布,再决定窗口。记录 truncatedmeta.errors; 不要在卡面或报告里写出账号、库路径、表名。

2.2 量化

bash
python3 "$SKILL_DIR/scripts/chat_metrics.py" \
  --messages messages.jsonl --me <本机账号> --other <对方账号> --out metrics.json
python3 "$SKILL_DIR/scripts/matrix_dataset.py" \
  --messages messages.jsonl --me <本机账号> --other <对方账号> --out matrix.json

口径细则见 references/chat-metrics.mdidx 只是活动度指数,写清权重,别称它为情绪。

2.3 语义分层(默认全本地)

bash
python3 "$SKILL_DIR/scripts/export_text.py" \
  --messages messages.jsonl --me <本机账号> --other <对方账号> --out label_input.jsonl
python3 "$SKILL_DIR/scripts/semantic_label.py" \
  --input label_input.jsonl --out labels.jsonl --model qwen3:8b --batch 20 --context 40
  • 分类法、判定顺序与失败模式见 references/semantic-taxonomy.md
  • 标注是规则层 + 模型层两级:没有话题的消息(系统提示、纯应答、纯表情数字、 纯英文碎片)由脚本按规则判 other,其余带上一条上文交给模型。规则层在 本项目覆盖 10% 的消息且校准集上全对;--context 0--no-prerules 只用于对比。
  • 必须先校准,再全量标注:手工标 40–60 条(含工作与情感两类正例、且不与提示词 示例重叠)写成 gold.json,先跑 semantic_label.py --input label_input.jsonl --eval-gold gold.json --report accuracy.json, 把这个配置的 accuracy.json 作为结论门槛。
  • 门槛:整体一致率 < 80% 不输出占比结论;工作类召回 < 75% 时工作占比要写成下界; 情感类预测正例不足 5 条时,情感占比只写「个位数百分比」。低于门槛但仍要交付, 必须在卡面口径行写明「低于门槛、占比仅供参考」。
  • 自带默认提示词只用合成示例,不含任何真实聊天原句。它在项目自带校准集上的实测是 一致率 77.1%、工作类召回 0.903:低于 80% 门槛,所以默认输出的占比只作粗分档, 卡面必须写明「低于门槛、占比仅供参考」。换用使用者自己的校准集后,按新结果重写口径行。
  • 复核校准集本身:与分类定义冲突的少数标注按定义修正,并在报告里记下改了什么。
  • 想换更强的模型(会把聊天内容发给外部服务商)必须先取得用户明确同意, 用 --backend remote --api-key-env <ENV>,密钥只走环境变量。
bash
python3 "$SKILL_DIR/scripts/topic_composition.py" \
  --labels labels.jsonl --out composition.json --accuracy accuracy.json \
  --weeks-start <第1周周一> --weeks <周数>

2.4 出图

bash
python3 "$SKILL_DIR/scripts/card_figures.py" \
  --matrix matrix.json --composition composition.json --metrics metrics.json \
  --outdir figures --partner-label "<对方昵称>"

得到 figure-matrix.svgfigure-composition.svgfigure-weekly.svgcard-data.json。 版式与注入位置见 references/card-blueprint.md

2.5 成卡(交给 lov-mobile-infographic

用该 Skill 的 scaffold → author → render → audit 流程,把三张 SVG 注入对应区块, 标题用「恋爱指数分析」,定位标签写「分析对象:<昵称>」,全卡只留一句结论。

Step 3: Validate the deliverable

  • 机器审计:lov-mobile-infographicaudit --strict --human-review passed
  • 几何复核:python3 "$SKILL_DIR/scripts/verify_figures.py" --card card.html --out verify.json (SVG 标签重叠、溢出、越出画布、被自身 viewBox 裁切)。图上标题与轴标签必须逐个回读确认。
  • 口径复核:每个数字都有单位、分母与周期;语义占比必须同时给出模型与一致率; 「工作不算情感」这条必须在卡面可见。
  • 隐私复核:卡面与报告中不出现账号、库路径、表名、真实姓名与联系信息; 引语做截断并剔除电话/地址/身份证号。
  • 最后回读 PNG(原尺寸 + 320px 缩略图)并记录具体发现,再交付。
  • Validate skill-card.yaml, cases/cases.json, and pricing-card.yaml as the standard trust bundle for this Skill.

Dependencies

  • Python 3.9+ 标准库(chat_metricsmatrix_datasetexport_texttopic_compositioncard_figures 无需第三方包)。
  • Playwright for Python(verify_figures,以及下游卡片渲染与审计)。
  • 本地 Ollama(默认语义标注后端,示例模型 qwen3:8b);未安装时必须停下来说明, 不要静默改用外部 API。
  • 上游 lov-wdb-cli(取数)与下游 lov-mobile-infographic(成卡)都是可选交接, 不是隐藏依赖:缺少它们时仍可交付 metrics.jsoncomposition.json 等中间结论。

Validation

bash
python3 "$SKILL_DIR/scripts/chat_metrics.py" --help
python3 "$SKILL_DIR/scripts/semantic_label.py" --help
python3 "$SKILL_DIR/scripts/verify_figures.py" --card <card.html>
python3 scripts/validate_skill.py .

Runtime context (shared)

运行前读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、Skill 专属记录、个人 Preferences、品牌/用户 Profile、通用默认值。

  • 只使用 Manifest 声明的字段;Profile 保存用户与品牌的共享资料,skills.lov-do-they-love-me.records 保存本 Skill 的持久化记录。
  • 用户直接说出的长期偏好或品牌事实,通过 scripts/profile_store.py 原子写回 Profile,并在结果中报告保存路径。
  • required: true 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题。
  • 报错提供可复制的 context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。

通用反馈闭环

用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:

  1. 先判断意见是 task-specific(仅本次)还是 reusable(可跨任务复用)。
  2. task-specific 只修改当前任务,不改 Skill。
  3. reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。
  4. 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。
  5. reusable 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Lov Do They Love Me AI skill do?

把两个人的微信私聊做成有证据的恋爱指数分析:量化互动节奏,用本地模型区分工作/情感/生活内容,再产出一张手机竖版信息图。Use when the user says “分析我们的聊天记录”“他/她爱不爱我”,or asks for a chat relationship analysis.

Why use Lov Do They Love Me on TypingMind?

Because you install it once and use it with any model. Lov Do They Love Me is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Lov Do They Love Me in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/lovstudio/skills/tree/main/skills/do-they-love-me. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Lov Do They Love Me?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Lov Do They Love Me?

As many as you like. As long as a model supports skills, you can use Lov Do They Love Me with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Lov Do They Love Me AI skill free?

Yes. It is published on GitHub by lovstudio under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇