desktop-petlisted
Install: claude install-skill yuchi-chang/desktop-petlet
# Desktop Pet(桌寵產生器)
把一張圖片變成會在桌面上活動的互動式桌寵。流程:分析圖片 → 去背製作 sprite → 產生個性 config → 啟動 Electron 引擎。
## 目錄結構
```
desktop-pet/
├── engine/ # Electron 桌寵引擎(共用,只需 npm install 一次)
├── scripts/
│ └── prepare_sprite.py # 去背 + 裁切 + 縮放
└── pets/<slug>/ # 每隻寵物一個資料夾
├── sprite.png # 去背後的圖
└── config.json # 名字、個性、台詞
```
## 建立新桌寵的流程
### 1. 確認環境(第一次才需要)
- `engine/node_modules` 不存在 → 在 `engine/` 執行 `npm install`
- `python -c "import rembg"` 失敗 → `pip install rembg onnxruntime pillow`
### 2. 取得並分析圖片
需要圖片的**檔案路徑**(使用者只貼圖沒給路徑時,請他提供路徑)。
用 Read 工具看圖,判斷:
- **物種與個性**:決定名字(向使用者提議,可自訂)、叫聲、食物 emoji、台詞風格
- **facing**:圖中角色面向哪邊(`left` / `right`,正面朝前就填 `right`)
- 適合的 `callSound`:`bark`(狗)/ `meow`(貓)/ `chirp`(鳥)/ `squeak`(小動物、史萊姆等)
### 3. 製作 sprite
```
python scripts/prepare_sprite.py <輸入圖片> pets/<slug>/sprite.png
```
- 輸出 JSON:`width`、`height`、`skipped_rembg`(圖片本身已有透明背景時會跳過去背)
- 第一次執行會下載 u2net 模型(約 170MB),需要一點時間
- 去背品質差(主體破碎)時,建議使用者換一張主體清晰、背景乾淨的圖
### 4. 撰寫 config.json
```json
{
"name": "小柴",
"species": "dog",
"sprite": "sprite.png",
"scale": 0.6,
"facing": "right",
"food": "🍖",
"callSound": "bark",
"phrases": {
"greet": ["嗨!主人~"],
"call": ["主人~我在這裡!"],
"lonely": ["主人…你在忙嗎?"],
"arrive": ["我來了!"],
"feedStart": ["哇!有吃的!"],
"feedDone": ["好好吃~謝謝主人!"],
"petted": ["好舒服~"],
"sleep": ["晚安…"],
"wake": ["醒來了!"]
}
}
```
- **scale**:目標是螢幕上高度約 120~180px → `scale = 150 / sprite高度`(取一位小數)
- **phrases**:用**使用者慣用的語言**撰寫(跟