Loading...
Loading...
Create new skills for the lovstudio ecosystem. Each skill is its own independent GitHub repo at lovstudio/{name}-skill, scaffolded locally at ~/lovstudio/coding/skills/{name}-skill/, symlinked to ~/.claude/skills/ for immediate use, and registered in the central index at ~/lovstudio/coding/skills/index/ (skills.yaml + README.md). Lovstudio conventions: `lovstudio:{name}` frontmatter, mandatory README.md per skill, AskUserQuestion interactive flow, standalone Python CLI scripts with argparse, CJK text handling. Use when the user wants to create a new skill, add a skill to the lovstudio ecosystem, scaffold a skill, or mentions "新建skill", "创建skill", "封装成skill", "new skill", "add skill", "scaffold skill", "生成skill".
npx skill4agent add lovstudio/dev-skills lovstudio-skill-creatorlovstudio/{name}-skill~/lovstudio/coding/skills/index/~/lovstudio/coding/skills/
├── index/ ← central catalog (lovstudio/skills repo)
│ ├── skills.yaml ← machine-readable manifest (paid flag lives here)
│ └── README.md ← human-readable catalog
├── {name}-skill/ ← each skill is an independent repo
│ ├── SKILL.md
│ ├── README.md
│ ├── CHANGELOG.md ← managed by skill-optimizer
│ ├── scripts/ ← standalone Python CLI scripts
│ └── references/ ← optional progressive-disclosure docs
└── ...
~/.claude/skills/lovstudio-{name} ← symlink → ~/.agents/skills/lovstudio-{name}
→ ~/lovstudio/coding/skills/{name}-skill/lovstudio/{name}-skill-skill~/lovstudio/coding/skills/{name}-skill/lovstudio-~/.claude/skills/lovstudio-{name}/lovstudio-namelovstudio:{name}:paid: true/falseindex/skills.yamlAskUserQuestion这个 skill 的分发定位?
- Free (public) — 任何人 git clone 就能用。适合引流、通用工具、开源贡献。
- Paid, 普通 IP — 核心逻辑是流程/模板/prompt 编排,用户 grep 出来不心疼。用加密分发 + license 鉴权。
- Paid, 敏感 IP — 含算法参数/业务规则/调好的 prompt/API 密钥,用户反编译会心疼。用 cloud-split:核心逻辑放云端,本地只有瘦客户端。
提示:不确定 → 选 2。未来升级到 3 比降级容易。
references/cloud-split.md我先拆解一下这个 skill 的结构:公开层(瘦客户端 SKILL.md 会暴露这些):
- [具体列出:对话流、输入解析、输出渲染、错误处理]
保护层(需要藏起来的):
- [具体列出:算法/阈值/规则/prompt 工程/密钥/数据]
- 或明确写 "无 — 这个 skill 没有需要保护的核心逻辑"
按这个拆解,你选的 [Q1 答案] [合理 / 不合理,建议改成 X]。确认继续?
| Q1 选择 | 保护层内容 | 判断 |
|---|---|---|
| Free | 任何 | ✓ 无需保护问题 |
| Encrypted | 非空 | ⚠️ 警告:encrypted 不防 L2 grep,真敏感的请升级 cloud-split |
| Encrypted | 空 | ✓ 合理(典型场景:付费模板/工作流) |
| Cloud-split | 非空且有实质 | ✓ 合理 |
| Cloud-split | 空或琐碎 | ✗ 停下,反问用户是否过度设计,建议降级到 encrypted 或 free |
grep| ✗ 逻辑自述(坏) | ✓ 能力域(好) |
|---|---|
| |
| |
| |
| |
op: "score"op: "check_if_sum_exceeds_10"| Tier | Protects against | Does NOT protect against |
|---|---|---|
| Free | 无 | 无 |
| Paid / encrypted | 路人 | 技术用户 grep |
| Paid / cloud-split | L1 + L2 + 反汇编客户端 | 反向推理 I/O 做劣质 clone |
scripts/references/assets/argparsesetup.py__init__.pypython3 ~/.claude/skills/lovstudio-skill-creator/scripts/init_skill.py <name>~/lovstudio/coding/skills/{name}-skill/{name}-skill/
├── SKILL.md ← frontmatter + TODO workflow
├── README.md ← human-readable docs with version badge
└── scripts/ ← empty, ready for implementation--paidscripts/references/cloud-split.mdthreshold-checkpaid-addpaid-add~/lovstudio/coding/web/supabase/functions/skill_call/handlers/<name>.ts{verdict: "A" | "B"}displaythreshold-checkreferences/cloud-split.md{score, verdict: "below", display: "2+6=8 (below 10)"}scripts/descriptionAskUserQuestionreferences/git clone https://github.com/lovstudio/{name}-skill ~/.claude/skills/lovstudio-{name}references/templates.mdcd ~/lovstudio/coding/skills/<name>-skill
git init
git add -A
git commit -m "feat: initial release of <name> skill"
# Free skill (public):
gh repo create lovstudio/<name>-skill --public --source=. --push
# Paid skill (private):
gh repo create lovstudio/<name>-skill --private --source=. --push~/lovstudio/coding/skills/index/skills.yaml - name: <name>
repo: lovstudio/<name>-skill
paid: false # or true for paid skills
category: "<Category>" # must match an existing category heading
version: "0.1.0"
description: "<One-line description matching SKILL.md tagline>"~/lovstudio/coding/skills/index/README.mdlovstudio/skillscd ~/lovstudio/coding/skills/index
git checkout -b add/<name>
git add skills.yaml README.md
git commit -m "add: <name> skill"
git push -u origin HEAD
gh pr create --fill# Layer 1: source → .agents
ln -s ~/lovstudio/coding/skills/<name>-skill \
~/.agents/skills/lovstudio-<name>
# Layer 2: .agents → .claude/skills (where Claude Code reads)
ln -s ../../.agents/skills/lovstudio-<name> \
~/.claude/skills/lovstudio-<name>ls ~/.claude/skills/lovstudio-<name>/SKILL.mdskills.yaml/agentif [ -n "$LOVSTUDIO_REVALIDATE_SECRET" ]; then
curl -sfX POST https://lovstudio.ai/api/revalidate \
-H "x-revalidate-secret: $LOVSTUDIO_REVALIDATE_SECRET" \
-H "content-type: application/json" \
-d '{"tags":["skills-index"]}' \
&& echo "✓ cache refreshed" \
|| echo "⚠ revalidate failed (will appear within 1h)"
filovstudio/web:src/data/skills.tsskills-indexskill:<id>skill-cases:<id>/lovstudio:<name>**IMPORTANT: Use `AskUserQuestion` to collect options BEFORE running.**
Use `AskUserQuestion` with the following template:
[options list]
### Mapping User Choices to CLI Args
[table mapping choices to --flags]references/themes.mdreferences/api.mdreferences/examples.mdreferences/themes.mdINSTALLATION_GUIDE.md__pycache__/*.pyc.DS_Store.gitignorepaidindex/skills.yamllovstudio/skillsskills/lovstudio-<name>/lovstudio/pro-skillslovstudio/pro-skills# 1. Extract from monorepo subdirectory
cp -r ~/projects/lovstudio-skills/skills/lovstudio-<name> \
~/lovstudio/coding/skills/<name>-skill
cd ~/lovstudio/coding/skills/<name>-skill
# (remove the lovstudio- prefix from the directory by creating fresh)
# 2. Fresh git history
rm -rf .git
git init && git add -A && git commit -m "import: <name> from monorepo"
# 3. Create independent repo
gh repo create lovstudio/<name>-skill --public --source=. --push