fix(portable): Gemini keys, Telegram pairing UI, and config durability

Improve first-run and channel setup for non-technical users: detect newer
Gemini key formats, pin Node 22.22.3, add Control Panel Telegram approve
flow, and keep channels/models when config is rewritten. Persist uclaw
wizard state via uclaw-meta.json so restarts skip language/persona prompts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-18 18:45:03 +08:00
parent 0be8c3e3fe
commit dd8e0f55c3
35 changed files with 2673 additions and 34 deletions

View File

@@ -0,0 +1,385 @@
{
"schemaVersion": 1,
"comment": "Single source of truth for skill distribution and for what each persona gets. Installers read this file and copy or fetch only the listed skills — they contain no skill content of their own. Personas drive the first-run wizard: tier picks how much interface to show, channel is the chat app that persona is most likely to want. See skills/README.md.",
"personas": [
{
"id": "developer",
"tier": "expert",
"emoji": "💻",
"channel": null
},
{
"id": "admin",
"tier": "simple",
"emoji": "📝",
"channel": null
},
{
"id": "sales",
"tier": "simple",
"emoji": "💬",
"channel": "whatsapp"
},
{
"id": "marketing",
"tier": "standard",
"emoji": "🎨",
"channel": null
},
{
"id": "finance",
"tier": "standard",
"emoji": "📊",
"channel": null
},
{
"id": "boss",
"tier": "simple",
"emoji": "👔",
"channel": null
},
{
"id": "general",
"tier": "simple",
"emoji": "🤷",
"channel": null
}
],
"skills": [
{
"id": "uclaw-help",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"uclaw"
],
"personas": [
"developer",
"admin",
"sales",
"marketing",
"finance",
"boss",
"general"
],
"emoji": "🦞"
},
{
"id": "excel-helper",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"office",
"data"
],
"personas": [
"admin",
"finance",
"boss",
"general"
],
"emoji": "📊"
},
{
"id": "word-writer",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"office",
"writing"
],
"personas": [
"admin",
"sales",
"boss",
"general"
],
"emoji": "📝"
},
{
"id": "ppt-designer",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"office",
"writing"
],
"personas": [
"admin",
"sales",
"marketing",
"boss"
],
"emoji": "📽️"
},
{
"id": "pdf-toolkit",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"files"
],
"personas": [
"admin",
"finance",
"general"
],
"emoji": "📄"
},
{
"id": "image-compress",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"files"
],
"personas": [
"marketing",
"general"
],
"emoji": "🖼️"
},
{
"id": "qrcode-maker",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"files"
],
"personas": [
"marketing",
"sales",
"general"
],
"emoji": "🔳"
},
{
"id": "web-to-markdown",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"research"
],
"personas": [
"developer",
"marketing",
"general"
],
"emoji": "🔗"
},
{
"id": "linkedin-post",
"status": "shipping",
"replaces": "xiaohongshu-writer",
"locales": [
"en"
],
"categories": [
"social"
],
"personas": [
"marketing",
"sales",
"boss"
],
"emoji": "💼"
},
{
"id": "x-poster",
"status": "shipping",
"replaces": "weibo-poster",
"locales": [
"en"
],
"categories": [
"social"
],
"personas": [
"marketing"
],
"emoji": "🐦"
},
{
"id": "tiktok-script",
"status": "shipping",
"replaces": "douyin-script",
"locales": [
"en"
],
"categories": [
"social",
"video"
],
"personas": [
"marketing"
],
"emoji": "🎬"
},
{
"id": "youtube-script",
"status": "shipping",
"replaces": "bilibili-helper",
"locales": [
"en"
],
"categories": [
"social",
"video"
],
"personas": [
"marketing"
],
"emoji": "📺"
},
{
"id": "medium-writer",
"status": "shipping",
"replaces": "zhihu-writer",
"locales": [
"en"
],
"categories": [
"writing"
],
"personas": [
"marketing",
"developer"
],
"emoji": "✍️"
},
{
"id": "email-campaign",
"status": "shipping",
"replaces": "wechat-article",
"locales": [
"en"
],
"categories": [
"writing",
"social"
],
"personas": [
"marketing",
"sales"
],
"emoji": "✉️"
},
{
"id": "web-search",
"status": "shipping",
"replaces": "china-search",
"locales": [
"en"
],
"categories": [
"research"
],
"personas": [
"developer",
"marketing",
"general",
"finance"
],
"emoji": "🔍"
},
{
"id": "sg-weather",
"status": "shipping",
"replaces": "china-weather",
"locales": [
"en"
],
"categories": [
"local"
],
"personas": [
"general",
"sales"
],
"emoji": "🌦️"
},
{
"id": "sea-translate",
"status": "shipping",
"replaces": "china-translate",
"locales": [
"en"
],
"categories": [
"language"
],
"personas": [
"sales",
"admin",
"marketing",
"general",
"boss"
],
"emoji": "🌏"
},
{
"id": "claude-helper",
"status": "shipping",
"replaces": "deepseek-helper",
"locales": [
"en"
],
"categories": [
"ai"
],
"personas": [
"developer",
"finance"
],
"emoji": "🤖"
},
{
"id": "sg-transport",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"local"
],
"personas": [
"general",
"sales"
],
"emoji": "🚇"
},
{
"id": "meeting-notes",
"status": "shipping",
"locales": [
"en"
],
"categories": [
"writing"
],
"personas": [
"sales",
"admin",
"boss",
"finance"
],
"emoji": "🗒️"
}
]
}