| name | create-skill-project |
| description | 创建新的 Claude Skill 项目。 |
| disable-model-invocation | true |
Create Skill
创建新的 Claude Skill 项目,初始化 GitHub 仓库、本地 submodule 和软链接。
上下文
- 技能名称(skill-name):从上下文识别用户意图抽取变量,若识别失败则创建几个选项询问用户做选择
- 项目名称(project-name):
${<skill-name>}-skills,即技能名称加后缀,但当心后缀重复
注意,技能名称不应当有后缀“-skills”,项目名称才允许有(注意去重,避免出现 xxx-skills?-skills 这种情况)
工作流程
- 初始化仓库
gh repo create <project-name> --public --description "<description>"
- 添加子包
git submodule add https://github.com/Lionad-Morotar/<project-name>.git <project-name>
- 如果
~/.claude/skills/<skill-name> 已存在:
3.1 复制其内容到 submodule
3.2 删除目录,重建 ~/.claude/skills/<skill-name> 软链指向真实技能(包含 SKILL.md 的父文件夹)
- 子包和当前仓库分别提交并推送
项目结构
<project-name>/
├── README.md # 项目说明(基础模版见下方)
├── skills/
│ └── <skill-name>/ # Skill 目录
│ ├── SKILL.md # Skill 定义
│ ├── references/ # 参考文档(可选)
│ ├── scripts/ # 脚本(可选)
│ └── assets/ # 资源文件(可选)
README.md 基础模版
仿照 gh-cli-skill/README.md 的简洁结构:
# <project-name>
<一句话描述 skill 的用途>
## 安装
```bash
npx skills add -g Lionad-Morotar/<project-name>
使用
/<skill-name> {你的要求}
如果你的 IDE 不支持 SlashCommand,那么为了获得最可靠的结果,需要提示词前加上前缀,比如:
使用 <skill-name> 技能,{你的要求}
这会明确触发技能并确保 AI 遵循文档化的模式。如果不加前缀,技能触发可能不一致,具体取决于你的提示词与技能描述关键词的匹配程度。
## 安全配置最佳实践(重要)
如果 skill 需要 API 密钥或敏感凭证,**必须**遵循以下安全准则:
### 1. 配置文件位置
凭证必须存储在用户主目录下的隐藏配置目录,**禁止**存储在项目目录中:
~/.config//.env
### 2. 文件权限
配置文件必须设置 600 权限(仅所有者可读写):
```bash
mkdir -p ~/.config/<skill-name>
touch ~/.config/<skill-name>/.env
chmod 600 ~/.config/<skill-name>/.env
3. 凭证读取逻辑
脚本读取凭证时优先检查安全目录,保留向后兼容:
from pathlib import Path
from dotenv import load_dotenv
home_config = Path.home() / ".config" / "<skill-name>" / ".env"
local_env = Path(__file__).parent.parent / ".env"
if home_config.exists():
load_dotenv(home_config)
elif local_env.exists():
load_dotenv(local_env)
4. SKILL.md 中的内容优化
4.1 SKILL.md 必须使用技能 /skill-creator 创建,已达到最优效果
4.2 必须在 SKILL.md 中明确指示用户手动创建配置文件,禁止在聊天中发送凭证:
**DO NOT paste credentials in chat**. Instead:
1. Create config file at `~/.config/<skill-name>/.env`
2. Add your credentials to that file (never share in chat)
3. Run smoke test to verify
5. 检查清单
常见问题
Submodule 路径错误
如果 .gitmodules 中有重复条目,手动清理:
git config --remove-section submodule.<wrong-name>
空仓库无法添加 submodule
如果仓库是空的,先创建初始提交:
git checkout -b main
echo "# <skill-name>" > README.md
git add README.md
git commit -m "Initial commit"
git push -u origin main