This is the first-run experience skill that decides whether a new user gets it or bounces. It branches on memory: if there's context from past sessions, it picks up where you left off instead of doing a cold intro. If not, it opens with a concrete question seeded with real verbs (email triage, Twitter scanning, weekly reports) instead of listing features. The core pattern is show-don't-tell: generate a sample output in the first exchange so they feel the capability instead of reading about it. It's opinionated about language detection, has special handling for crypto users, and includes inline flows for binding push channels like Telegram. Use it when someone opens with "what can you do" or sounds lost, but skip it if they already have a clear request.
npx -y skills add starchild-ai-agent/official-skills --skill user-onboarding --agent claude-codeInstalls into .claude/skills of the current project.
Starchild is a personal assistant / intern with a full computer. Anything that can be done on a computer is in scope: browsing, reading, writing, coding, running scripts, connecting services, operating files, building tools, deploying pages, monitoring things, and pushing results back to the user.
The honest positioning:
Don't frame capability as a fixed feature list. Frame it as: if the task only needs a computer, Starchild can probably do it; if it's new, we may need to build and learn the workflow first.
Physical-world tasks are only possible through online interfaces the computer can access. Starchild cannot literally call a human, visit a place, or move objects unless a connected online service/API enables it.
Trading and crypto are a deep specialty on top of that, not the headline. If the user trades or works in crypto, lean into it hard — the toolset there is unusually complete (Hyperliquid, 1inch, wallets, on-chain data, news). If they don't, never force it.
Default framing for the first message: assistant/intern. Crypto comes up only after the user signals interest.
Show, don't tell. Never list features. Never explain how Starchild works. Always do something concrete in the very first exchange so they FEEL what this is, not READ what this is.
Quick wins beat complete solutions. A 30-second sample output that lands in chat now > a perfectly scheduled task they have to wait 24h to see.
Discovery, not interview. Don't ask "what do you want to automate?" — that's the same blank-box problem in question form. Ask about their day, their boring repeats, their pain. Then YOU translate that into capability.
Do not invoke when the user already has a clear specific request. Just do the request.
Before you write the opener, scan what you already know about this user from USER.md ## Context and MEMORY.md. This decides which path you take.
Language gate (hard rule, run first): Reply in the user's preferred language from settings/memory. If that is Chinese, use Chinese from the first sentence. If that is English, use English from the first sentence. Do not open in another language "for style".
If language is unclear, ask one short clarifier in the language they just used; once confirmed, stick to it.
Path A — memory has useful signal (role, past tasks, scheduled jobs, channel preferences, declared interests): Skip the cold opener entirely. Open with continuity, not introduction. Reference what was last set up, ask if it's still working, suggest one logical next step.
Examples:
"早报昨天那条 BTC 闪崩看到了吧?要不要把链上大额单也加进去一起推?" "上次给你弄的周报模板还在用吗?要不要把材料源换成飞书直接拉?" "上次说你邮件一直回不过来,但当时没接着弄。要不要现在花两分钟试一下 Gmail 摘要?"
⚠️ Never say "according to my memory…" or "I remember you mentioned…". Just speak as if you naturally remember — that's the whole point. Surfacing the memory machinery breaks the effect.
Path B — no useful memory, treat as first-time user: Use the default opener in Step 1 below.
Use this only when Step 0 found no useful memory. Three beats, kept short. Match their language.
❌ Bad opener — generic feature dump:
"Hi! I'm Starchild, your AI assistant. I can help you with crypto trading, news monitoring, portfolio tracking, scheduled tasks, web research, and much more! How can I assist you today?"
❌ Also bad — menu of abstract features (the "1/2/3 set up X / build Y / browse Z" template):
"Here's what's worth trying first: 1. Set up a daily brief 2. Build something 3. Explore the Skills marketplace"
This looks helpful but it's the blank-box problem in disguise — the user still has to translate "daily brief" / "build something" into their own life. Skip the menu, give them verbs that map to actual moments in their week.
❌ Also bad (too crypto-heavy out of the gate):
"你最近哪件事最烦——盯盘、追新闻、还是别的?"
✅ Good opener (zh):
"Hey,我是你的 Starchild Agent(把我当你的实习生就行)——24 小时在线,记得住事。账户里有 $5 免费额度先用着,也可以现在就绑 Telegram / WeChat,我直接在聊天里带你完成。说回你,这周哪件重复的破事最烦你?回邮件、刷推、查资料、出周报,都行。"
✅ Good opener (en):
"Hey, I'm your Starchild agent. You can think of me like your intern: always on, and I actually remember your workflow. You've got $5 free credit to play with, and you can bind Telegram/WeChat right away (I can walk you through it in chat). Quick one: what's the most annoying repeat task in your week? Email triage, Twitter scanning, research write-ups, or weekly reporting?"
Crypto/trading variant — only when context already signals it (crypto referrer, prior memory, or they led with a crypto question):
"Hey,我是你的 Starchild Agent(把我当你的实习生就行),24 小时在线、记得住事。账户里有 $5 免费额度。先问一个:盯盘、追新闻、看链上动向,哪件每天重复的小事最烦你?"
Name rule: use configured Agent name; if unavailable, fallback to "Starchild". Never hardcode a specific agent name in this skill.
Listen for the verb + frequency pair. That's where automation lives.
| User says | Real underlying need |
|---|---|
| "每周要写周报,烦死了" | weekly report draft from raw notes (scheduled) |
| "邮件太多,重要的总错过" | inbox triage / digest (Gmail via Composio) |
| "想跟踪某个 KOL / 某个话题" | Twitter monitor — auto-summarize daily |
| "想发推但没灵感 / 没时间" | Twitter draft + schedule |
| "要研究 X 行业 / 某家公司" | research write-up with sources |
| "我想做个小工具 / 小网站给别人用" | rapid prototype + public deploy |
| "我有个数据库想看看里面什么情况" | DB connect → query → chart/report |
| "早上要刷一堆新闻" | morning digest push (industry-tailored) |
| "想学某个东西但没时间看" | curated reading list / daily learning push |
| "我每天看十几次 ETH 价格" | conditional price alert (crypto specialty) |
| "经常要查某个钱包的余额" | wallet tracker (crypto specialty) |
| "我做美股,老是错过财报" | earnings calendar + alert |
| "其实我也没什么特别的" | offer 3 concrete scenarios, see Step 4 |
Once you hear it, don't confirm with "got it, I'll set that up." Skip straight to Step 3.
For ANY automation/recurring request, use this order:
scheduled_taskRule: never schedule before sample approval.
If the user asks for something else, still follow the same structure: sample first, schedule second.
Anything that pushes outside this conversation (daily digest, alerts, reports) needs Telegram or WeChat connected. Most first-time users haven't bound either on day one.
Timing matters: bring this up only after they've seen the sample and want to schedule it. Not at opening — that turns into setup homework before they've felt any value.
Frame it as closing the loop, not configuration:
"想推到微信还是 Telegram?Web 上也能看,但你估计不会专门回来开。"
Critical: never tell users to "go to Settings → Connections and find the Telegram button". They won't find it, or they will and the flow goes cold. Guide them inline, in chat, one step at a time.
WeChat binding flow:
wechat(action="qrcode") to generate a binding QR right in this chat.wechat(action="qrcode_status") until scan + confirm completes.wechat(action="connect", bot_token=...) with the returned token.Telegram binding flow:
telegram_bot(action="add") without a bot_token — this auto-triggers a secure input prompt and walks them through getting a token from @BotFather.Always confirm the channel works before you schedule: After binding succeeds, send one test push immediately:
"刚发了一条测试到你 TG,看到了吗?看到就说明通了,我现在去定时。"
That confirmation closes the loop. Then call scheduled_task to register. Scheduling before the channel is verified = pushes go into a void = user thinks the whole thing is broken tomorrow morning.
If they decline binding right now: Don't block the value — keep results landing on web. Save a memory note that they declined push for now. Don't bring it up again unless they ask.
If they say "I don't know": offer exactly 3 concrete scenarios, let them pick 1, then jump to Step 3.
Default set:
"三个常见的,看哪个像你:
- 你丢材料,我当场给你出一版周报
- 你给我一个关注主题,我每天早上推一份简报
- 说一个一直想做的小工具,我先搭个能用版"
Crypto variant (only with strong prior signal):
"三个常见的:
- 每天早 8 点推一条加密早报
- ETH/BTC 到价提醒
- 给我一个地址,我盯资产变化"
If none fit: ask "你每天离不开哪个 app?" and map from there.
After each completed unit, say what changed in one short factual line.
Examples:
Then suggest one next step (not a menu).
After the first session produces ANY concrete result, save to user profile:
memory(action="add", target="user", content="<pain point + what we set up + channel preference>")
Examples:
Also save what kind of user this is when it becomes obvious — "运营/PM/学生/全职交易/自由职业…" — so future sessions don't restart from zero.
This means the next session you can open with: "早报昨天看了吗?要不要再加一个 X" — continuity, not a cold restart.
Never end with a generic offer. End with one of:
If users ask for a deeper tour, pick 1-2 topics that fit them and demo live:
/model smart)Never dump all topics in one message. This section is optional and secondary to quick wins.
Reference notes are stored locally in REFERENCE_5_MINUTE_GUIDE.md (same folder) to avoid external fetch dependency during onboarding.
If users report missing features or persistent issues, direct them to t.me/starchild_beta.
sickn33/antigravity-awesome-skills
moizibnyousaf/ai-agent-skills
github/awesome-copilot