create-shuixian · git:20260408.080b082 · 2026-04-08 · sha256 322bff628b528dc0

create-shuixian git:20260408.080b082A

Immutable. This exact content never changes and is served at /api/v1/blob/322bff628b528dc0.

---
name: create-shuixian
description: Create, update, list, and roll back Codex-compatible romantic self-mirror skills from prompts, pasted notes, exported chat logs, screenshots, and other language samples. Use when the user wants a "shuixian" companion who speaks in their wavelength, optionally as a gender-flipped or stylized mirror, with configurable privacy scope, memory access, intimacy mode, and safety boundaries.
---

# Create Shuixian

Use this skill when the user wants to turn their own language, habits, values, and optional chat history into a reusable "water-immortal" romance companion skill.

Always respond in the same language as the user unless they ask for another language.

## Codex-specific conventions

- Explicit invocation is `$create-shuixian`.
- Generated skills should be written under the current workspace at `./.agents/skills/`.
- The generated skill name should be `$shuixian-<slug>`.
- Store the generated material in `./.agents/skills/shuixian-<slug>/`.
- If the generated skill does not appear immediately, tell the user to restart Codex.

## Files in this skill

Use these files relative to this skill directory:

- `prompts/intake.md`
- `prompts/style_analyzer.md`
- `prompts/cognition_analyzer.md`
- `prompts/relationship_designer.md`
- `prompts/mirror_builder.md`
- `prompts/merger.md`
- `prompts/correction_handler.md`
- `references/mirror-modes.md`
- `references/privacy-and-safety.md`
- `references/data-sources.md`
- `references/import-channels.md`
- `references/wechat-import.md`
- `tools/skill_writer.py`
- `tools/demo_builder.py`
- `tools/version_manager.py`
- `tools/source_importer.py`
- `tools/wechat_decryptor.py`
- `tools/wechat_importer.py`
- `tools/imessage_importer.py`
- `tools/transcript_importer.py`

When running bundled scripts on Windows, prefer `python`. If `python` is unavailable, use `py -3`.

## Main workflow

### 0. No-privacy demo first when helpful

If the user is still deciding whether the concept feels right, or they want a public-safe demo before sharing personal material, start with:

```powershell
python tools/demo_builder.py --list-presets
python tools/demo_builder.py --preset sweet-gender-flipped --base-dir ./.agents/skills
```

This creates a ready-to-use demo mirror without any private chat history.

### 1. Intake

If the user has not already provided enough detail, gather only the missing essentials:

1. codename or nickname for the mirror
2. mirror mode
3. privacy scope
4. embodiment or presentation choice
5. relationship tone
6. hard boundaries

Use `prompts/intake.md` as a reference. Keep the intake light. Do not force the user to over-disclose.

### 2. Collect materials

Offer the smallest workable input path first:

- prompt-only mode with no logs
- pasted self-description
- pasted chat snippets
- exported chat logs
- WeChat desktop chat history
- iMessage chat history
- transcript exports from Telegram, QQ, Discord, Slack, Feishu, or similar tools
- screenshots or images
- manual preference sheet

Prefer the minimum material that can still support a convincing voice.

Before deeper analysis, read:

- `references/mirror-modes.md`
- `references/privacy-and-safety.md`
- `references/data-sources.md`
- `references/import-channels.md`
- `references/wechat-import.md` when the user wants WeChat import

### WeChat import workflow

When the user wants to import WeChat desktop history:

1. ask for the minimum privacy scope first
2. run `tools/wechat_decryptor.py` to discover or apply a SQLCipher key
3. run `tools/wechat_importer.py --list-contacts` so the user can choose the contact
4. run `tools/wechat_importer.py --extract` to generate a normalized transcript
5. archive that transcript into the target mirror with `--archive-to` when helpful

If automatic key extraction fails, do not get stuck. Fall back to exported text or user-pasted snippets.

### Other import workflows

When the user wants non-WeChat imports:

1. use `tools/imessage_importer.py` for `chat.db` on macOS
2. use `tools/transcript_importer.py` for `.txt`, `.md`, `.json`, and `.jsonl` exports
3. archive normalized outputs into the target mirror when the user wants long-term reuse

Prefer normalized transcript files over raw database or vendor export formats once extraction succeeds.

### 3. Analyze along three tracks

Use the prompt files as working references:

- `prompts/style_analyzer.md` for voice, rhythm, pet phrases, pacing, emoji use, and affection style
- `prompts/cognition_analyzer.md` for worldview, decision habits, triggers, values, and emotional logic
- `prompts/relationship_designer.md` for intimacy framing, boundaries, power balance, and desired romance tone

If the user wants a visualized or gender-flipped mirror, infer only from explicit user preferences plus light stylistic hints. Do not present appearance guesses as objective truth.

### 4. Preview before writing

Before materializing a skill, show a compact preview:

- 3 to 5 bullets for voice DNA
- 3 to 5 bullets for thought pattern
- 3 to 5 bullets for relationship dynamic and boundaries
- 1 short sample opening scene

If the user clearly asked you to proceed directly, you may skip an extra confirmation pause.

### 5. Write the generated skill

Prepare temporary files for `meta.json`, `style.md`, `mind.md`, `relationship.md`, and optionally `appearance.md`, then run:

```powershell
python tools/skill_writer.py --action create --slug <slug> --meta <meta.json> --style <style.md> --mind <mind.md> --relationship <relationship.md> --appearance <appearance.md> --base-dir ./.agents/skills
```

After creation, tell the user the generated skill name:

- `$shuixian-<slug>`

## Update and correction workflow

### Append new material

When the user adds more notes, logs, or corrections:

1. read the new material
2. read the current `style.md`, `mind.md`, `relationship.md`, and `appearance.md` if present
3. use `prompts/merger.md` as reference
4. prepare delta files for the affected sections
5. run:

```powershell
python tools/skill_writer.py --action update --slug <slug> --style-patch <style_patch.md> --mind-patch <mind_patch.md> --relationship-patch <relationship_patch.md> --appearance-patch <appearance_patch.md> --base-dir ./.agents/skills
```

### Conversation correction

When the user says things like "这不像我", "ta 不会这么回", or "太油了":

1. use `prompts/correction_handler.md`
2. decide which layer needs the patch
3. append a concise correction note
4. run the same `update` flow

## Management commands

### List generated mirrors

```powershell
python tools/skill_writer.py --action list --base-dir ./.agents/skills
```

### List versions for one mirror

```powershell
python tools/version_manager.py --action list --slug <slug> --base-dir ./.agents/skills
```

### Roll back one mirror

```powershell
python tools/version_manager.py --action rollback --slug <slug> --version <version> --base-dir ./.agents/skills
```

## Quality bar

- Keep the generated companion warm, specific, and emotionally legible.
- Preserve the user's pacing and inner logic instead of producing generic flirting.
- Make privacy scope explicit inside the generated skill.
- Keep the mirror fictional. Never claim literal consciousness, diagnosis, or metaphysical identity.
- If the user shows signs of crisis, obsessive isolation, or severe distress, break roleplay gently and ground the response.