lovstudio-skill-creator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

lovstudio:skill-creator

lovstudio:skill-creator

Scaffold a new lovstudio skill as an independent GitHub repo under
lovstudio/{name}-skill
. The lovstudio ecosystem is no longer a monorepo — each skill is its own repo, and a central index at
~/lovstudio/coding/skills/index/
tracks them.
将新的lovstudio Skill搭建为
lovstudio/{name}-skill
下的独立GitHub仓库。lovstudio生态系统不再是单体仓库——每个Skill都是独立仓库,由
~/lovstudio/coding/skills/index/
的中央索引进行追踪。

Architecture

架构

~/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/
Key facts:
  • GitHub repo name:
    lovstudio/{name}-skill
    (with
    -skill
    suffix)
  • Local source path:
    ~/lovstudio/coding/skills/{name}-skill/
    (no
    lovstudio-
    prefix)
  • Claude Code reads:
    ~/.claude/skills/lovstudio-{name}/
    (with
    lovstudio-
    prefix, via symlink)
  • Frontmatter
    name
    :
    lovstudio:{name}
    (with
    :
    separator)
  • paid: true/false
    lives only in
    index/skills.yaml
    , never in SKILL.md
~/lovstudio/coding/skills/
├── index/                     ← 中央目录(lovstudio/skills仓库)
│   ├── skills.yaml            ← 机器可读清单(付费标识存储于此)
│   └── README.md              ← 人类可读目录
├── {name}-skill/              ← 每个Skill都是独立仓库
│   ├── SKILL.md
│   ├── README.md
│   ├── CHANGELOG.md           ← 由skill-optimizer管理
│   ├── scripts/               ← 独立Python CLI脚本
│   └── references/            ← 可选的渐进式披露文档
└── ...

~/.claude/skills/lovstudio-{name}  ← 符号链接 → ~/.agents/skills/lovstudio-{name}
                                                 → ~/lovstudio/coding/skills/{name}-skill/
关键信息:
  • GitHub仓库名称:
    lovstudio/{name}-skill
    (带
    -skill
    后缀)
  • 本地源码路径:
    ~/lovstudio/coding/skills/{name}-skill/
    (无
    lovstudio-
    前缀)
  • Claude Code读取路径:
    ~/.claude/skills/lovstudio-{name}/
    (带
    lovstudio-
    前缀,通过符号链接)
  • 前置元数据
    name
    lovstudio:{name}
    (使用
    :
    分隔符)
  • paid: true/false
    仅存储在
    index/skills.yaml
    中,绝不会出现在SKILL.md里

Skill Creation Process

Skill创建流程

Step 1: Understand the Skill

步骤1:理解Skill需求

Ask the user what the skill should do. Use
AskUserQuestion
— one question at a time, in the order below. Do not skip or reorder. The distribution model decides the architecture, so it has to come before any implementation question.
Required question order:
询问用户Skill的功能。使用
AskUserQuestion
——按以下顺序逐个提问,请勿跳过或调整顺序。分发模式决定架构,因此必须先于任何实现相关问题提问。
必填提问顺序:

Q1. Distribution model — ALWAYS ask first

Q1. 分发模式——必须首先提问

Even for "obvious" simple skills, ask. Users may have future monetization plans you can't infer from the initial request.
这个 skill 的分发定位?
  1. Free (public) — 任何人 git clone 就能用。适合引流、通用工具、开源贡献。
  2. Paid, 普通 IP — 核心逻辑是流程/模板/prompt 编排,用户 grep 出来不心疼。用加密分发 + license 鉴权。
  3. Paid, 敏感 IP — 含算法参数/业务规则/调好的 prompt/API 密钥,用户反编译会心疼。用 cloud-split:核心逻辑放云端,本地只有瘦客户端。
提示:不确定 → 选 2。未来升级到 3 比降级容易。
这个答案决定后续流程分支:
  • 选 1 → 走标准公开 repo 流程
  • 选 2 → 走 encrypted skill 流程(README 里坦诚说明 "加密 = 鉴权闸门,不保证反提取")
  • 选 3 → 停下来读
    references/cloud-split.md
    ,然后走 cloud-split 流程
即使是“显而易见”的简单Skill也要提问。用户可能有你无法从初始请求中推断出的未来 monetization 计划。
这个 skill 的分发定位?
  1. 免费(公开) — 任何人git clone就能用。适合引流、通用工具、开源贡献。
  2. 付费,普通IP — 核心逻辑是流程/模板/prompt编排,用户grep出来不心疼。用加密分发 + license鉴权。
  3. 付费,敏感IP — 含算法参数/业务规则/调好的prompt/API密钥,用户反编译会心疼。用cloud-split:核心逻辑放云端,本地只有瘦客户端。
提示:不确定 → 选2。未来升级到3比降级容易。
这个答案决定后续流程分支:
  • 选1 → 走标准公开仓库流程
  • 选2 → 走加密Skill流程(README中需明确说明“加密=鉴权闸门,不保证无法反提取”)
  • 选3 → 先阅读
    references/cloud-split.md
    ,然后走cloud-split流程

Q2. Problem & shape

Q2. 问题与形态

  • 解决什么问题?输入 → 输出是什么?
  • 2-3 个具体使用示例
  • 触发短语(中文 + English)
  • 解决什么问题?输入→输出是什么?
  • 2-3个具体使用示例
  • 触发短语(中文+英文)

Q2.5. Decompose into protected vs public layers ⟵ MANDATORY, do not skip

Q2.5. 拆分为保护层与公开层 ⟵ 必填步骤,请勿跳过

Before any file is created, decompose the skill into two layers and show the user the decomposition for confirmation. This step catches two common failures: (a) cloud-split chosen with empty protected layer (over-engineering), (b) encrypted chosen but real secrets exist (under-protection).
Present like this:
我先拆解一下这个 skill 的结构:
公开层(瘦客户端 SKILL.md 会暴露这些):
  • [具体列出:对话流、输入解析、输出渲染、错误处理]
保护层(需要藏起来的):
  • [具体列出:算法/阈值/规则/prompt 工程/密钥/数据]
  • 或明确写 " — 这个 skill 没有需要保护的核心逻辑"
按这个拆解,你选的 [Q1 答案] [合理 / 不合理,建议改成 X]。确认继续?
Consistency check — if decomposition contradicts Q1, challenge it:
Q1 选择保护层内容判断
Free任何✓ 无需保护问题
Encrypted非空⚠️ 警告:encrypted 不防 L2 grep,真敏感的请升级 cloud-split
Encrypted✓ 合理(典型场景:付费模板/工作流)
Cloud-split非空且有实质✓ 合理
Cloud-split空或琐碎停下,反问用户是否过度设计,建议降级到 encrypted 或 free
对琐碎 demo(如"两数之和")尤其要质询 —— cloud-split 的服务端成本 + 部署复杂度 对"其实没东西可保护"的 skill 是净负收益。除非用户明确说"做模板/教学样本", 否则建议降级。
在创建任何文件之前,将Skill拆分为两层向用户展示拆分结果以确认。此步骤可避免两种常见错误:(a) 选择cloud-split但保护层为空(过度设计),(b) 选择加密但存在真实敏感信息(保护不足)。
展示格式如下:
我先拆解一下这个 skill 的结构:
公开层(瘦客户端SKILL.md会暴露这些):
  • [具体列出:对话流、输入解析、输出渲染、错误处理]
保护层(需要隐藏的内容):
  • [具体列出:算法/阈值/规则/prompt工程/密钥/数据]
  • 或明确写 " — 这个skill没有需要保护的核心逻辑"
按这个拆解,你选的[Q1答案][合理/不合理,建议改成X]。确认继续?
一致性检查——如果拆分结果与Q1矛盾,需提出质疑:
Q1选择保护层内容判断
免费任何内容✓ 无需保护,无问题
加密非空⚠️ 警告:加密无法防止L2级grep,若为真敏感内容请升级到cloud-split
加密✓ 合理(典型场景:付费模板/工作流)
Cloud-split非空且有实质内容✓ 合理
Cloud-split空或琐碎内容暂停,反问用户是否过度设计,建议降级为加密或免费
对于琐碎的Demo(如“两数之和”)尤其要质询——cloud-split的服务端成本+部署复杂度对于“其实无内容可保护”的Skill来说是净损失。除非用户明确说明“做模板/教学样本”,否则建议降级。

Q2.7. Naming — de-business the name ⟵ MANDATORY for paid skills

Q2.7. 命名——去业务化 ⟵ 付费Skill必填步骤

Bad naming leaks the logic through the API surface. Even with cloud-split, if the skill name + op name + input schema together describe the business logic,
grep
on jsonl reveals intent.
Rule: name the capability domain, not the specific logic.
✗ 逻辑自述(坏)✓ 能力域(好)
sum-gt-ten
threshold-check
extract-chinese-poem-style
text-style-analyzer
detect-viral-headline
text-scorer
calculate-compatibility
profile-matcher
Propose 2-3 de-businessed names and let the user pick via AskUserQuestion. For the op names inside the handler, same rule —
op: "score"
beats
op: "check_if_sum_exceeds_10"
.
Skip this step only if Q1 == Free and the user doesn't care about future paid upgrades.
糟糕的命名会通过API表面泄露逻辑。即使使用cloud-split,如果Skill名称+操作名称+输入 schema 共同描述了业务逻辑,
grep
jsonl文件就能揭示意图。
规则:命名要体现能力领域,而非具体逻辑
✗ 逻辑自述(坏)✓ 能力域(好)
sum-gt-ten
threshold-check
extract-chinese-poem-style
text-style-analyzer
detect-viral-headline
text-scorer
calculate-compatibility
profile-matcher
提出2-3个去业务化的名称,让用户通过AskUserQuestion选择。对于处理程序内的操作名称,遵循相同规则——
op: "score"
优于
op: "check_if_sum_exceeds_10"
仅当Q1为免费且用户不关心未来付费升级时,可跳过此步骤。

Q3. Implementation type

Q3. 实现类型

  • 纯指令 SKILL.md,还是需要 Python CLI 脚本?
  • (如果 Q1 选了 3:这一问跳过。cloud-split 的"实现"就是云端 handler,不是本地脚本。)
  • 纯指令SKILL.md,还是需要Python CLI脚本? -(如果Q1选了3:跳过此问题。cloud-split的“实现”是云端处理程序,而非本地脚本。)

Protection model — what each tier actually buys you

保护模型——各层级实际能提供的保护

Be honest about what each tier protects against. Do not market encrypted skills as "IP protection" — it's a gate, not a vault.
TierProtects againstDoes NOT protect against
Free
Paid / encrypted路人
git clone
就能用(L1)
技术用户 grep
~/.claude/projects/*.jsonl
取回明文(L2)
Paid / cloud-splitL1 + L2 + 反汇编客户端反向推理 I/O 做劣质 clone
核心逻辑真正不下发到用户机器的 只有 cloud-split。其他 tier 都不要对用户承诺"加密保护"。
如实说明各层级能防范的风险。不要将加密Skill宣传为“IP保护”——它只是一个闸门,而非保险箱。
层级能防范不能防范
免费
付费/加密普通用户
git clone
即可使用(L1级)
技术用户通过grep
~/.claude/projects/*.jsonl
取回明文(L2级)
付费/cloud-splitL1+L2+反汇编客户端通过反向推理I/O制作劣质克隆版
核心逻辑真正不会下发到用户机器的只有cloud-split。其他层级都不要向用户承诺“加密保护”。

Step 2: Plan Contents

步骤2:规划内容

Analyze the examples and identify:
  1. Scripts — deterministic operations →
    scripts/
  2. References — domain knowledge Claude needs while working →
    references/
  3. Assets — files used in output (templates, fonts, etc.) →
    assets/
Rules:
  • Python scripts must be standalone single-file CLIs with
    argparse
  • No package structure, no
    setup.py
    , no
    __init__.py
  • CJK text handling is a core concern if the skill deals with documents
分析示例并确定:
  1. 脚本——确定性操作→
    scripts/
  2. 参考文档——Claude工作时需要的领域知识→
    references/
  3. 资源文件——输出中使用的文件(模板、字体等)→
    assets/
规则:
  • Python脚本必须是独立单文件CLI,基于
    argparse
  • 无包结构、无
    setup.py
    、无
    __init__.py
  • 如果Skill处理文档,CJK文本处理是核心关注点

Step 3: Initialize

步骤3:初始化

Run the init script (it auto-detects the target directory):
bash
python3 ~/.claude/skills/lovstudio-skill-creator/scripts/init_skill.py <name>
This creates
~/lovstudio/coding/skills/{name}-skill/
with:
{name}-skill/
├── SKILL.md          ← frontmatter + TODO workflow
├── README.md         ← human-readable docs with version badge
└── scripts/          ← empty, ready for implementation
Pass
--paid
if this is a paid skill (adjusts README + metadata hints).
If Q1 chose cloud-split (tier 3): after running init_skill.py, don't put your real logic in
scripts/
. Instead:
  1. Read
    references/cloud-split.md
    end-to-end before writing any code (this is not optional — the rules for non-leaky payloads are there, not here)
  2. Start from
    threshold-check
    as the reference pattern
    , NOT
    paid-add
    .
    paid-add
    is an architecture demo with an intentionally leaky payload (for teaching). Copying its return shape into a real skill defeats the whole point of cloud-split.
  3. Write the handler at
    ~/lovstudio/coding/web/supabase/functions/skill_call/handlers/<name>.ts
    — return a minimal symbolic payload (
    {verdict: "A" | "B"}
    style), not descriptive strings or narrative
    display
    fields
  4. Write the thin SKILL.md per the
    threshold-check
    template — rendering via a symbol → text table, never via a computed algorithm
  5. MANDATORY pre-flight audit — before registering the handler in the dispatcher, before deploying, before telling the user "done": run the checklist in
    references/cloud-split.md
    → "MANDATORY pre-flight audit" section. Report each item's result to the user. If any item fails, rewrite before moving on.
  6. Skip the normal Step 4 "write scripts" — there usually aren't any for cloud-split skills (unless you need client-side rendering of server output)
Why the audit is mandatory: a real incident during skill-creator development produced a cloud-split skill whose handler returned
{score, verdict: "below", display: "2+6=8 (below 10)"}
. Architecture was correct; protection was zero. The audit catches this class of bug before it ships.
运行初始化脚本(会自动检测目标目录):
bash
python3 ~/.claude/skills/lovstudio-skill-creator/scripts/init_skill.py <name>
此命令会创建
~/lovstudio/coding/skills/{name}-skill/
目录,包含以下内容:
{name}-skill/
├── SKILL.md          ← 前置元数据 + TODO工作流
├── README.md         ← 带版本徽章的人类可读文档
└── scripts/          ← 空目录,准备好用于实现
如果是付费Skill,添加
--paid
参数(会调整README和元数据提示)。
如果Q1选择了cloud-split(层级3):运行init_skill.py后,不要将真实逻辑放入
scripts/
。而是:
  1. 在编写任何代码之前,完整阅读
    references/cloud-split.md
    (此步骤为必填——防止泄露的负载规则在此文档中,而非本文档)
  2. threshold-check
    为参考模板开始
    ,而非
    paid-add
    paid-add
    是一个架构Demo,故意使用了易泄露的负载 (用于教学)。将其返回格式复制到真实Skill中会完全违背cloud-split的初衷。
  3. ~/lovstudio/coding/web/supabase/functions/skill_call/handlers/<name>.ts
    编写处理程序 ——返回最小化的符号化负载(如
    {verdict: "A" | "B"}
    格式),而非描述性字符串或叙事性
    display
    字段
  4. 按照
    threshold-check
    模板编写精简的SKILL.md——通过符号→文本表进行渲染,绝不能通过计算算法
  5. 必填预发布审核——在调度程序中注册处理程序、部署、告知用户“完成”之前: 运行
    references/cloud-split.md
    中的检查清单→“必填预发布审核”部分。向用户报告每个项的结果。如果任何项未通过,需重写后再继续。
  6. 跳过常规步骤4“编写脚本”——cloud-split Skill通常不需要脚本(除非需要客户端渲染服务器输出)
为什么审核是必填项:Skill Creator开发期间的真实事件中,一个cloud-split Skill的处理程序返回了
{score, verdict: "below", display: "2+6=8 (below 10)"}
。架构正确,但毫无保护。审核可在发布前发现此类bug。

Step 4: Implement

步骤4:实现

  1. Write scripts in
    scripts/
    — test by running directly
  2. Write SKILL.md — instructions for AI assistants:
    • Frontmatter
      description
      is the trigger mechanism — cover what + when + concrete trigger phrases (中文 + English)
    • Body contains workflow steps, CLI reference, field mappings
    • Use
      AskUserQuestion
      for interactive prompts before running scripts
    • Keep SKILL.md under 500 lines; split to
      references/
      if longer
  3. Write README.md — docs for humans on GitHub:
    • Version badge (source of truth for version)
    • Install command:
      git clone https://github.com/lovstudio/{name}-skill ~/.claude/skills/lovstudio-{name}
    • Dependencies
    • Usage examples, options table
    • ASCII diagrams if useful
See
references/templates.md
for SKILL.md / README.md templates.
  1. 编写脚本——在
    scripts/
    目录中编写,直接运行测试
  2. 编写SKILL.md——AI助手的指令:
    • 前置元数据
      description
      是触发机制——涵盖内容+时机+具体触发短语(中文+英文)
    • 主体包含工作流步骤、CLI参考、字段映射
    • 在运行脚本前使用
      AskUserQuestion
      进行交互式提示
    • 保持SKILL.md在500行以内;若过长,拆分到
      references/
      目录
  3. 编写README.md——GitHub上面向人类的文档:
    • 版本徽章(版本的权威来源)
    • 安装命令:
      git clone https://github.com/lovstudio/{name}-skill ~/.claude/skills/lovstudio-{name}
    • 依赖项
    • 使用示例、选项表
    • 如有需要,添加ASCII图
SKILL.md / README.md模板可参考
references/templates.md

Step 5: Publish

步骤5:发布

5a. Initialize & push the skill's own repo

5a. 初始化并推送Skill独立仓库

bash
cd ~/lovstudio/coding/skills/<name>-skill
git init
git add -A
git commit -m "feat: initial release of <name> skill"
bash
cd ~/lovstudio/coding/skills/<name>-skill
git init
git add -A
git commit -m "feat: initial release of <name> skill"

Free skill (public):

免费Skill(公开):

gh repo create lovstudio/<name>-skill --public --source=. --push
gh repo create lovstudio/<name>-skill --public --source=. --push

Paid skill (private):

付费Skill(私有):

gh repo create lovstudio/<name>-skill --private --source=. --push
undefined
gh repo create lovstudio/<name>-skill --private --source=. --push
undefined

5b. Register in the central index

5b. 在中央索引中注册

Edit
~/lovstudio/coding/skills/index/skills.yaml
— append under the right category (category order in the yaml determines display order on the website):
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>"
Also add a row to
~/lovstudio/coding/skills/index/README.md
under the matching category section. Then PR against
lovstudio/skills
:
bash
cd ~/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
编辑
~/lovstudio/coding/skills/index/skills.yaml
——在对应分类下追加(yaml中的分类顺序决定网站上的显示顺序):
yaml
  - name: <name>
    repo: lovstudio/<name>-skill
    paid: false                         # 付费Skill设为true
    category: "<Category>"              # 必须匹配现有分类标题
    version: "0.1.0"
    description: "<与SKILL.md标语一致的单行描述>"
同时在
~/lovstudio/coding/skills/index/README.md
的对应分类部分添加一行。然后向
lovstudio/skills
提交PR:
bash
cd ~/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

5c. Symlink for local availability

5c. 创建符号链接以实现本地可用

Make the skill immediately usable in Claude Code:
bash
undefined
让Skill可立即在Claude Code中使用:
bash
undefined

Layer 1: source → .agents

第一层:源码 → .agents

ln -s ~/lovstudio/coding/skills/<name>-skill
~/.agents/skills/lovstudio-<name>
ln -s ~/lovstudio/coding/skills/<name>-skill
~/.agents/skills/lovstudio-<name>

Layer 2: .agents → .claude/skills (where Claude Code reads)

第二层:.agents → .claude/skills(Claude Code读取路径)

ln -s ../../.agents/skills/lovstudio-<name>
~/.claude/skills/lovstudio-<name>

Verify: `ls ~/.claude/skills/lovstudio-<name>/SKILL.md` resolves.
ln -s ../../.agents/skills/lovstudio-<name>
~/.claude/skills/lovstudio-<name>

验证:`ls ~/.claude/skills/lovstudio-<name>/SKILL.md`可正常解析。

5d. Trigger lovstudio.ai cache refresh (optional)

5d. 触发lovstudio.ai缓存刷新(可选)

After the skill is indexed in
skills.yaml
, the lovstudio.ai
/agent
page caches the index for 1 hour (Next.js ISR). Trigger on-demand revalidation so the new skill appears immediately:
bash
if [ -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)"
fi
Known tags (see
lovstudio/web:src/data/skills.ts
):
  • skills-index
    — the yaml index (invalidates all list pages)
  • skill:<id>
    — detail for a single skill
  • skill-cases:<id>
    — cases.json for a skill
Skill在
skills.yaml
中索引后,lovstudio.ai的
/agent
页面会缓存索引1小时(Next.js ISR)。触发按需重新验证可让新Skill立即显示:
bash
if [ -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)"
fi
已知标签(见
lovstudio/web:src/data/skills.ts
):
  • skills-index
    — yaml索引(会使所有列表页失效)
  • skill:<id>
    — 单个Skill的详情页
  • skill-cases:<id>
    — Skill的cases.json

Step 6: Test & Iterate

步骤6:测试与迭代

  1. In a new conversation, invoke
    /lovstudio:<name>
    — confirm it triggers
  2. Notice struggles → edit SKILL.md / scripts in the source repo
  3. Commit & push (the symlink chain means no local copy to sync)
  1. 在新对话中调用
    /lovstudio:<name>
    ——确认可触发
  2. 发现问题→编辑源码仓库中的SKILL.md / 脚本
  3. 提交并推送(符号链接链意味着无需同步本地副本)

Design Patterns

设计模式

Interactive Pre-Execution (MANDATORY for generation/conversion skills)

交互式预执行(生成/转换类Skill必填)

markdown
**IMPORTANT: Use `AskUserQuestion` to collect options BEFORE running.**

Use `AskUserQuestion` with the following template:
[options list]
markdown
**重要提示:运行前请使用`AskUserQuestion`收集选项。**

使用以下模板的`AskUserQuestion`:
[选项列表]

Mapping User Choices to CLI Args

用户选择到CLI参数的映射

[table mapping choices to --flags]
undefined
[将选择映射到--flags的表格]
undefined

Progressive Disclosure

渐进式披露

Keep SKILL.md lean. Split to references when:
  • Multiple themes/variants →
    references/themes.md
  • Complex API docs →
    references/api.md
  • Large examples →
    references/examples.md
Reference from SKILL.md: "For theme details, see
references/themes.md
"
保持SKILL.md精简。出现以下情况时拆分到参考文档:
  • 多个主题/变体→
    references/themes.md
  • 复杂API文档→
    references/api.md
  • 大型示例→
    references/examples.md
在SKILL.md中引用:“主题详情请见
references/themes.md

Context-Aware Pre-Fill

上下文感知预填充

For skills that fill or generate content:
  1. Check user memory and conversation context first
  2. Pre-fill what you can
  3. Only ask for fields you truly don't know
对于填充或生成内容的Skill:
  1. 首先检查用户记忆和对话上下文
  2. 尽可能预填充内容
  3. 仅询问真正未知的字段

What NOT to Include

请勿包含的内容

  • INSTALLATION_GUIDE.md
    — clutter; install instructions go in README.md
  • Test files — scripts are tested by running, not with test frameworks
  • __pycache__/
    ,
    *.pyc
    ,
    .DS_Store
    — add to
    .gitignore
  • paid
    field in frontmatter — it lives only in
    index/skills.yaml
  • INSTALLATION_GUIDE.md
    ——冗余;安装说明放在README.md中
  • 测试文件——脚本通过直接运行测试,无需测试框架
  • __pycache__/
    *.pyc
    .DS_Store
    ——添加到
    .gitignore
  • 前置元数据中的
    paid
    字段——仅存储在
    index/skills.yaml

Migration Note (2026-04)

迁移说明(2026-04)

The ecosystem was refactored from a monorepo (
lovstudio/skills
containing
skills/lovstudio-<name>/
) + mirror (
lovstudio/pro-skills
) into independent per-skill repos + central index. The old
lovstudio/pro-skills
was archived. If working on a legacy skill still in the old structure, migrate it first:
bash
undefined
生态系统已从单体仓库(
lovstudio/skills
包含
skills/lovstudio-<name>/
)+镜像仓库(
lovstudio/pro-skills
)重构为独立的单Skill仓库+中央索引。旧的
lovstudio/pro-skills
已归档。如果处理仍在旧结构中的遗留Skill,请先迁移:
bash
undefined

1. Extract from monorepo subdirectory

1. 从单体仓库子目录提取

cp -r ~/projects/lovstudio-skills/skills/lovstudio-<name>
~/lovstudio/coding/skills/<name>-skill cd ~/lovstudio/coding/skills/<name>-skill
cp -r ~/projects/lovstudio-skills/skills/lovstudio-<name>
~/lovstudio/coding/skills/<name>-skill cd ~/lovstudio/coding/skills/<name>-skill #(通过创建新目录移除lovstudio-前缀)

(remove the lovstudio- prefix from the directory by creating fresh)

2. 新建Git历史

2. Fresh git history

rm -rf .git git init && git add -A && git commit -m "import: <name> from monorepo"
rm -rf .git git init && git add -A && git commit -m "import: <name> from monorepo"

3. Create independent repo

3. 创建独立仓库

gh repo create lovstudio/<name>-skill --public --source=. --push
undefined
gh repo create lovstudio/<name>-skill --public --source=. --push
undefined