skill-creator
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseskill-creator
skill-creator
Purpose
用途
To create new CLI skills following Anthropic's official best practices with zero manual configuration. This skill automates brainstorming, template application, validation, and installation processes while maintaining progressive disclosure patterns and writing style standards.
按照Anthropic官方最佳实践创建新的CLI skill,无需任何手动配置。本skill可自动化头脑风暴、模板应用、验证和安装流程,同时遵循渐进式披露模式和写作风格标准。
When to Use This Skill
适用场景
This skill should be used when:
- User wants to extend CLI functionality with custom capabilities
- User needs to create a skill following official standards
- User wants to automate repetitive CLI tasks with a reusable skill
- User needs to package domain knowledge into a skill format
- User wants both local and global skill installation options
在以下场景中可使用本skill:
- 用户想要通过自定义功能扩展CLI能力
- 用户需要按照官方标准创建skill
- 用户想要通过可复用的skill自动化重复的CLI任务
- 用户需要将领域知识打包为skill格式
- 用户需要本地和全局skill安装选项
Core Capabilities
核心功能
- Interactive Brainstorming - Collaborative session to define skill purpose and scope
- Prompt Enhancement - Optional integration with prompt-engineer skill for refinement
- Template Application - Automatic file generation from standardized templates
- Validation - YAML, content, and style checks against Anthropic standards
- Installation - Local repository or global installation with symlinks
- Progress Tracking - Visual gauge showing completion status at each step
- 交互式头脑风暴 - 协作会话,用于定义skill的用途和范围
- 提示词优化 - 可选择集成prompt-engineer skill进行优化
- 模板应用 - 从标准化模板自动生成文件
- 验证 - 按照Anthropic标准检查YAML、内容和风格
- 安装 - 本地仓库或通过符号链接进行全局安装
- 进度跟踪 - 可视化进度条,显示每个步骤的完成状态
Step 0: Discovery
步骤0:发现阶段
Before starting skill creation, gather runtime information:
bash
undefined开始创建skill之前,先收集运行时信息:
bash
undefinedDetect available platforms
Detect available platforms
COPILOT_INSTALLED=false
CLAUDE_INSTALLED=false
CODEX_INSTALLED=false
if command -v gh &>/dev/null && gh copilot --version &>/dev/null 2>&1; then
COPILOT_INSTALLED=true
fi
if [[ -d "$HOME/.claude" ]]; then
CLAUDE_INSTALLED=true
fi
if [[ -d "$HOME/.codex" ]]; then
CODEX_INSTALLED=true
fi
COPILOT_INSTALLED=false
CLAUDE_INSTALLED=false
CODEX_INSTALLED=false
if command -v gh &>/dev/null && gh copilot --version &>/dev/null 2>&1; then
COPILOT_INSTALLED=true
fi
if [[ -d "$HOME/.claude" ]]; then
CLAUDE_INSTALLED=true
fi
if [[ -d "$HOME/.codex" ]]; then
CODEX_INSTALLED=true
fi
Determine working directory
Determine working directory
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
SKILLS_REPO="$REPO_ROOT"
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
SKILLS_REPO="$REPO_ROOT"
Check if in cli-ai-skills repository
Check if in cli-ai-skills repository
if [[ ! -d "$SKILLS_REPO/.github/skills" ]]; then
echo "⚠️ Not in cli-ai-skills repository. Creating standalone skill."
STANDALONE=true
fi
if [[ ! -d "$SKILLS_REPO/.github/skills" ]]; then
echo "⚠️ Not in cli-ai-skills repository. Creating standalone skill."
STANDALONE=true
fi
Get user info from git config
Get user info from git config
AUTHOR=$(git config user.name || echo "Unknown")
EMAIL=$(git config user.email || echo "")
**Key Information Needed:**
- Which platforms to target (Copilot, Claude, Codex, or all three)
- Installation preference (local, global, or both)
- Skill name and purpose
- Skill type (general, code, documentation, analysis)AUTHOR=$(git config user.name || echo "Unknown")
EMAIL=$(git config user.email || echo "")
**所需关键信息:**
- 目标平台(Copilot、Claude、Codex,或三者皆选)
- 安装偏好(本地、全局,或两者皆选)
- Skill名称和用途
- Skill类型(通用型、代码型、文档型、分析型)Main Workflow
主工作流
Progress Tracking Guidelines
进度跟踪指南
Throughout the workflow, display a visual progress bar before starting each phase to keep the user informed. The progress bar format is:
[████████████░░░░░░] 60% - Step 3/5: Creating SKILL.mdFormat specifications:
- 20 characters wide (use █ for filled, ░ for empty)
- Percentage based on current step (Step 1=20%, Step 2=40%, Step 3=60%, Step 4=80%, Step 5=100%)
- Step counter showing current/total (e.g., "Step 3/5")
- Brief description of current phase
Display the progress bar using:
bash
echo "[████░░░░░░░░░░░░░░] 20% - Step 1/5: Brainstorming & Planning"在整个工作流中,每个阶段开始前都要显示可视化进度条,让用户了解当前进度。进度条格式如下:
[████████████░░░░░░] 60% - Step 3/5: Creating SKILL.md格式规范:
- 宽度为20个字符(用 █ 表示已完成,░ 表示未完成)
- 百分比基于当前步骤(步骤1=20%,步骤2=40%,步骤3=60%,步骤4=80%,步骤5=100%)
- 步骤计数器显示当前/总步骤数(例如:"Step 3/5")
- 简要描述当前阶段
使用以下命令显示进度条:
bash
echo "[████░░░░░░░░░░░░░░] 20% - Step 1/5: Brainstorming & Planning"Phase 1: Brainstorming & Planning
阶段1:头脑风暴与规划
Progress: Display before starting this phase:
bash
echo "[████░░░░░░░░░░░░░░] 20% - Step 1/5: Brainstorming & Planning"Display progress:
╔══════════════════════════════════════════════════════════════╗
║ 🛠️ SKILL CREATOR - Creating New Skill ║
╠══════════════════════════════════════════════════════════════╣
║ → Phase 1: Brainstorming [10%] ║
║ ○ Phase 2: Prompt Refinement ║
║ ○ Phase 3: File Generation ║
║ ○ Phase 4: Validation ║
║ ○ Phase 5: Installation ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ███░░░░░░░░░░░░░░░░░░░░░░░░░░░ 10% ║
╚══════════════════════════════════════════════════════════════╝Ask the user:
-
What should this skill do? (Free-form description)
- Example: "Help users debug Python code by analyzing stack traces"
-
When should it trigger? (Provide 3-5 trigger phrases)
- Example: "debug Python error", "analyze stack trace", "fix Python exception"
-
What type of skill is this?
- General purpose (default template)
- Code generation/modification
- Documentation creation/maintenance
- Analysis/investigation
-
Which platforms should support this skill?
- GitHub Copilot CLI
- Claude Code
- Codex
- All three (recommended)
-
Provide a one-sentence description (will appear in metadata)
- Example: "Analyzes Python stack traces and suggests fixes"
Capture responses and prepare for next phase.
进度显示: 开始此阶段前显示:
bash
echo "[████░░░░░░░░░░░░░░] 20% - Step 1/5: Brainstorming & Planning"显示详细进度:
╔══════════════════════════════════════════════════════════════╗
║ 🛠️ SKILL CREATOR - Creating New Skill ║
╠══════════════════════════════════════════════════════════════╣
║ → Phase 1: Brainstorming [10%] ║
║ ○ Phase 2: Prompt Refinement ║
║ ○ Phase 3: File Generation ║
║ ○ Phase 4: Validation ║
║ ○ Phase 5: Installation ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ███░░░░░░░░░░░░░░░░░░░░░░░░░░░ 10% ║
╚══════════════════════════════════════════════════════════════╝向用户询问:
-
这个skill的功能是什么?(自由描述)
- 示例:"通过分析堆栈跟踪帮助用户调试Python代码"
-
触发条件是什么?(提供3-5个触发短语)
- 示例:"debug Python error", "analyze stack trace", "fix Python exception"
-
这是什么类型的skill?
- 通用型(默认模板)
- 代码生成/修改
- 文档创建/维护
- 分析/调查
-
该skill应支持哪些平台?
- GitHub Copilot CLI
- Claude Code
- Codex
- 三者皆选(推荐)
-
提供一句简短描述(将显示在元数据中)
- 示例:"分析Python堆栈跟踪并提供修复建议"
记录用户回复,为下一阶段做准备。
Phase 2: Prompt Enhancement (Optional)
阶段2:提示词优化(可选)
Progress: Display before starting this phase:
bash
echo "[████████░░░░░░░░░░] 40% - Step 2/5: Prompt Enhancement"Update progress:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 1: Brainstorming ║
║ → Phase 2: Prompt Refinement [30%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: █████████░░░░░░░░░░░░░░░░░░░░░ 30% ║
╚══════════════════════════════════════════════════════════════╝Ask the user:
"Would you like to refine the skill description using the prompt-engineer skill?"
- Yes - Use prompt-engineer to enhance clarity and structure
- No - Proceed with current description
If Yes:
- Check if prompt-engineer skill is available
- Invoke with current description as input
- Review enhanced output with user
- Ask: "Accept enhanced version or keep original?"
If No or prompt-engineer unavailable:
- Proceed with original user input
进度显示: 开始此阶段前显示:
bash
echo "[████████░░░░░░░░░░] 40% - Step 2/5: Prompt Enhancement"更新进度:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 1: Brainstorming ║
║ → Phase 2: Prompt Refinement [30%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: █████████░░░░░░░░░░░░░░░░░░░░░ 30% ║
╚══════════════════════════════════════════════════════════════╝向用户询问:
"是否想要使用prompt-engineer skill优化skill描述?"
- 是 - 使用prompt-engineer提升清晰度和结构
- 否 - 继续使用当前描述
如果选择是:
- 检查prompt-engineer skill是否可用
- 以当前描述为输入调用该skill
- 与用户一起审阅优化后的输出
- 询问:"接受优化后的版本还是保留原版本?"
如果选择否或prompt-engineer不可用:
- 继续使用用户的原始输入
Phase 3: File Generation
阶段3:文件生成
Progress: Display before starting this phase:
bash
echo "[████████████░░░░░░] 60% - Step 3/5: File Generation"Update progress:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 1: Brainstorming ║
║ ✓ Phase 2: Prompt Refinement ║
║ → Phase 3: File Generation [50%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ███████████████░░░░░░░░░░░░░░░ 50% ║
╚══════════════════════════════════════════════════════════════╝Generate skill structure:
bash
undefined进度显示: 开始此阶段前显示:
bash
echo "[████████████░░░░░░] 60% - Step 3/5: File Generation"更新进度:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 1: Brainstorming ║
║ ✓ Phase 2: Prompt Refinement ║
║ → Phase 3: File Generation [50%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ███████████████░░░░░░░░░░░░░░░ 50% ║
╚══════════════════════════════════════════════════════════════╝生成skill结构:
bash
undefinedConvert skill name to kebab-case
Convert skill name to kebab-case
SKILL_NAME=$(echo "$USER_INPUT" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
SKILL_NAME=$(echo "$USER_INPUT" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
Create directories
Create directories
if [[ "$PLATFORM" =~ "copilot" ]]; then
mkdir -p ".github/skills/$SKILL_NAME"/{references,examples,scripts}
fi
if [[ "$PLATFORM" =~ "claude" ]]; then
mkdir -p ".claude/skills/$SKILL_NAME"/{references,examples,scripts}
fi
if [[ "$PLATFORM" =~ "codex" ]]; then
mkdir -p ".codex/skills/$SKILL_NAME"/{references,examples,scripts}
fi
**Apply templates:**
1. **SKILL.md** - Use appropriate template:
- `skill-template-copilot.md`, `skill-template-claude.md`, or `skill-template-codex.md`
- Substitute placeholders:
- `{{SKILL_NAME}}` → kebab-case name
- `{{DESCRIPTION}}` → one-line description
- `{{TRIGGERS}}` → comma-separated trigger phrases
- `{{PURPOSE}}` → detailed purpose from brainstorming
- `{{AUTHOR}}` → from git config
- `{{DATE}}` → current date (YYYY-MM-DD)
- `{{VERSION}}` → "1.0.0"
2. **README.md** - Use `readme-template.md`:
- User-facing documentation (300-500 words)
- Include installation instructions
- Add usage examples
3. **References/** (optional but recommended):
- Create `detailed-guide.md` for extended documentation (2k-5k words)
- Move lengthy content here to keep SKILL.md under 2k words
**File creation commands:**
```bashif [[ "$PLATFORM" =~ "copilot" ]]; then
mkdir -p ".github/skills/$SKILL_NAME"/{references,examples,scripts}
fi
if [[ "$PLATFORM" =~ "claude" ]]; then
mkdir -p ".claude/skills/$SKILL_NAME"/{references,examples,scripts}
fi
if [[ "$PLATFORM" =~ "codex" ]]; then
mkdir -p ".codex/skills/$SKILL_NAME"/{references,examples,scripts}
fi
**应用模板:**
1. **SKILL.md** - 使用对应模板:
- `skill-template-copilot.md`、`skill-template-claude.md` 或 `skill-template-codex.md`
- 替换占位符:
- `{{SKILL_NAME}}` → 短横线分隔式(kebab-case)名称
- `{{DESCRIPTION}}` → 单行描述
- `{{TRIGGERS}}` → 逗号分隔的触发短语
- `{{PURPOSE}}` → 头脑风暴阶段确定的详细用途
- `{{AUTHOR}}` → 来自git配置
- `{{DATE}}` → 当前日期(YYYY-MM-DD)
- `{{VERSION}}` → "1.0.0"
2. **README.md** - 使用 `readme-template.md`:
- 面向用户的文档(300-500字)
- 包含安装说明
- 添加使用示例
3. **References/**(可选但推荐):
- 创建 `detailed-guide.md` 用于扩展文档(2000-5000字)
- 将冗长内容移至此处,保持SKILL.md字数在2000字以内
**文件创建命令:**
```bashApply template with substitution
Apply template with substitution
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g;
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-copilot.md
> ".github/skills/$SKILL_NAME/SKILL.md"
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-copilot.md
> ".github/skills/$SKILL_NAME/SKILL.md"
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g;
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-copilot.md
> ".github/skills/$SKILL_NAME/SKILL.md"
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-copilot.md
> ".github/skills/$SKILL_NAME/SKILL.md"
Create README
Create README
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g"
resources/templates/readme-template.md
> ".github/skills/$SKILL_NAME/README.md"
resources/templates/readme-template.md
> ".github/skills/$SKILL_NAME/README.md"
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g"
resources/templates/readme-template.md
> ".github/skills/$SKILL_NAME/README.md"
resources/templates/readme-template.md
> ".github/skills/$SKILL_NAME/README.md"
Apply template for Codex if selected
Apply template for Codex if selected
if [[ "$PLATFORM" =~ "codex" ]]; then
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g;
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-codex.md
> ".codex/skills/$SKILL_NAME/SKILL.md"
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-codex.md
> ".codex/skills/$SKILL_NAME/SKILL.md"
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g" \
resources/templates/readme-template.md \
> ".codex/skills/$SKILL_NAME/README.md"fi
**Display created structure:**✅ Created:
.github/skills/your-skill-name/ (if Copilot selected)
.claude/skills/your-skill-name/ (if Claude selected)
.codex/skills/your-skill-name/ (if Codex selected)
├── SKILL.md (832 lines)
├── README.md (347 lines)
├── references/
├── examples/
└── scripts/
undefinedif [[ "$PLATFORM" =~ "codex" ]]; then
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g;
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-codex.md
> ".codex/skills/$SKILL_NAME/SKILL.md"
s/{{DESCRIPTION}}/$DESCRIPTION/g;
s/{{AUTHOR}}/$AUTHOR/g;
s/{{DATE}}/$(date +%Y-%m-%d)/g"
resources/templates/skill-template-codex.md
> ".codex/skills/$SKILL_NAME/SKILL.md"
sed "s/{{SKILL_NAME}}/$SKILL_NAME/g" \
resources/templates/readme-template.md \
> ".codex/skills/$SKILL_NAME/README.md"fi
**显示已创建的结构:**✅ Created:
.github/skills/your-skill-name/ (if Copilot selected)
.claude/skills/your-skill-name/ (if Claude selected)
.codex/skills/your-skill-name/ (if Codex selected)
├── SKILL.md (832 lines)
├── README.md (347 lines)
├── references/
├── examples/
└── scripts/
undefinedPhase 4: Validation
阶段4:验证
Progress: Display before starting this phase:
bash
echo "[████████████████░░] 80% - Step 4/5: Validation"Update progress:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 3: File Generation ║
║ → Phase 4: Validation [70%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: █████████████████████░░░░░░░░░ 70% ║
╚══════════════════════════════════════════════════════════════╝Run validation scripts:
bash
undefined进度显示: 开始此阶段前显示:
bash
echo "[████████████████░░] 80% - Step 4/5: Validation"更新进度:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 3: File Generation ║
║ → Phase 4: Validation [70%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: █████████████████████░░░░░░░░░ 70% ║
╚══════════════════════════════════════════════════════════════╝运行验证脚本:
bash
undefinedValidate YAML frontmatter
Validate YAML frontmatter
scripts/validate-skill-yaml.sh ".github/skills/$SKILL_NAME"
scripts/validate-skill-yaml.sh ".github/skills/$SKILL_NAME"
Validate content quality
Validate content quality
scripts/validate-skill-content.sh ".github/skills/$SKILL_NAME"
**Expected output:**🔍 Validating YAML frontmatter...
✅ YAML frontmatter valid!
🔍 Validating content...
✅ Word count excellent: 1847 words
✅ Content validation complete!
**If validation fails:**
- Display specific errors
- Offer to fix automatically (common issues)
- Ask user to manually correct complex issues
**Common auto-fixes:**
- Convert second-person to imperative form
- Reformat description to third-person
- Add missing required fieldsscripts/validate-skill-content.sh ".github/skills/$SKILL_NAME"
**预期输出:**🔍 Validating YAML frontmatter...
✅ YAML frontmatter valid!
🔍 Validating content...
✅ Word count excellent: 1847 words
✅ Content validation complete!
**如果验证失败:**
- 显示具体错误
- 提供自动修复选项(常见问题)
- 请用户手动修正复杂问题
**常见自动修复项:**
- 将第二人称改为祈使句形式
- 将描述重新格式化为第三人称
- 添加缺失的必填字段Phase 5: Installation
阶段5:安装
Progress: Display before starting this phase:
bash
echo "[████████████████████] 100% - Step 5/5: Installation"Update progress:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 4: Validation ║
║ → Phase 5: Installation [90%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ██████████████████████████░░░░░ 90% ║
╚══════════════════════════════════════════════════════════════╝Ask the user:
"How would you like to install this skill?"
- Repository only - Files created in (works when in repo)
.github/skills/ - Global installation - Create symlinks in (works everywhere)
~/.copilot/skills/ - Both - Repository + global symlinks (recommended, auto-updates with git pull)
- Skip installation - Just create files
If global installation selected:
bash
undefined进度显示: 开始此阶段前显示:
bash
echo "[████████████████████] 100% - Step 5/5: Installation"更新进度:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 4: Validation ║
║ → Phase 5: Installation [90%] ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ██████████████████████████░░░░░ 90% ║
╚══════════════════════════════════════════════════════════════╝向用户询问:
"您希望如何安装此skill?"
- 仅仓库安装 - 文件创建在 目录(仅在仓库内有效)
.github/skills/ - 全局安装 - 在 创建符号链接(任何位置都有效)
~/.copilot/skills/ - 两者皆选 - 仓库安装 + 全局符号链接(推荐,可通过git pull自动更新)
- 跳过安装 - 仅创建文件
如果选择全局安装:
bash
undefinedDetect which platforms to install for
Detect which platforms to install for
INSTALL_TARGETS=()
if [[ "$COPILOT_INSTALLED" == "true" ]] && [[ "$PLATFORM" =~ "copilot" ]]; then
INSTALL_TARGETS+=("copilot")
fi
if [[ "$CLAUDE_INSTALLED" == "true" ]] && [[ "$PLATFORM" =~ "claude" ]]; then
INSTALL_TARGETS+=("claude")
fi
if [[ "$CODEX_INSTALLED" == "true" ]] && [[ "$PLATFORM" =~ "codex" ]]; then
INSTALL_TARGETS+=("codex")
fi
INSTALL_TARGETS=()
if [[ "$COPILOT_INSTALLED" == "true" ]] && [[ "$PLATFORM" =~ "copilot" ]]; then
INSTALL_TARGETS+=("copilot")
fi
if [[ "$CLAUDE_INSTALLED" == "true" ]] && [[ "$PLATFORM" =~ "claude" ]]; then
INSTALL_TARGETS+=("claude")
fi
if [[ "$CODEX_INSTALLED" == "true" ]] && [[ "$PLATFORM" =~ "codex" ]]; then
INSTALL_TARGETS+=("codex")
fi
Ask user to confirm detected platforms
Ask user to confirm detected platforms
echo "Detected platforms: ${INSTALL_TARGETS[*]}"
echo "Install for these platforms? [Y/n]"
**Installation process:**
```bashecho "Detected platforms: ${INSTALL_TARGETS[*]}"
echo "Install for these platforms? [Y/n]"
**安装流程:**
```bashGitHub Copilot CLI
GitHub Copilot CLI
if [[ " ${INSTALL_TARGETS[*]} " =~ " copilot " ]]; then
ln -sf "$SKILLS_REPO/.github/skills/$SKILL_NAME"
"$HOME/.copilot/skills/$SKILL_NAME" echo "✅ Installed for GitHub Copilot CLI" fi
"$HOME/.copilot/skills/$SKILL_NAME" echo "✅ Installed for GitHub Copilot CLI" fi
if [[ " ${INSTALL_TARGETS[*]} " =~ " copilot " ]]; then
ln -sf "$SKILLS_REPO/.github/skills/$SKILL_NAME"
"$HOME/.copilot/skills/$SKILL_NAME" echo "✅ Installed for GitHub Copilot CLI" fi
"$HOME/.copilot/skills/$SKILL_NAME" echo "✅ Installed for GitHub Copilot CLI" fi
Claude Code
Claude Code
if [[ " ${INSTALL_TARGETS[*]} " =~ " claude " ]]; then
ln -sf "$SKILLS_REPO/.claude/skills/$SKILL_NAME"
"$HOME/.claude/skills/$SKILL_NAME" echo "✅ Installed for Claude Code" fi
"$HOME/.claude/skills/$SKILL_NAME" echo "✅ Installed for Claude Code" fi
if [[ " ${INSTALL_TARGETS[*]} " =~ " claude " ]]; then
ln -sf "$SKILLS_REPO/.claude/skills/$SKILL_NAME"
"$HOME/.claude/skills/$SKILL_NAME" echo "✅ Installed for Claude Code" fi
"$HOME/.claude/skills/$SKILL_NAME" echo "✅ Installed for Claude Code" fi
Codex
Codex
if [[ " ${INSTALL_TARGETS[*]} " =~ " codex " ]]; then
ln -sf "$SKILLS_REPO/.codex/skills/$SKILL_NAME"
"$HOME/.codex/skills/$SKILL_NAME" echo "✅ Installed for Codex" fi
"$HOME/.codex/skills/$SKILL_NAME" echo "✅ Installed for Codex" fi
**Verify installation:**
```bashif [[ " ${INSTALL_TARGETS[*]} " =~ " codex " ]]; then
ln -sf "$SKILLS_REPO/.codex/skills/$SKILL_NAME"
"$HOME/.codex/skills/$SKILL_NAME" echo "✅ Installed for Codex" fi
"$HOME/.codex/skills/$SKILL_NAME" echo "✅ Installed for Codex" fi
**验证安装:**
```bashCheck symlinks
Check symlinks
ls -la ~/.copilot/skills/$SKILL_NAME 2>/dev/null
ls -la ~/.claude/skills/$SKILL_NAME 2>/dev/null
ls -la ~/.codex/skills/$SKILL_NAME 2>/dev/null
undefinedls -la ~/.copilot/skills/$SKILL_NAME 2>/dev/null
ls -la ~/.claude/skills/$SKILL_NAME 2>/dev/null
ls -la ~/.codex/skills/$SKILL_NAME 2>/dev/null
undefinedPhase 6: Completion
阶段6:完成
Progress: Display completion message:
bash
echo "[████████████████████] 100% - ✓ Skill created successfully!"Update progress:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 5: Installation ║
║ ✅ SKILL CREATION COMPLETE! ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ██████████████████████████████ 100% ║
╚══════════════════════════════════════════════════════════════╝Display summary:
🎉 Skill created successfully!
📦 Skill Name: your-skill-name
📁 Location: .github/skills/your-skill-name/
🔗 Installed: Global (Copilot + Claude)
📋 Files Created:
✅ SKILL.md (1,847 words)
✅ README.md (423 words)
✅ references/ (empty, ready for extended docs)
✅ examples/ (empty, ready for code samples)
✅ scripts/ (empty, ready for utilities)
🚀 Next Steps:
1. Test the skill: Try trigger phrases in CLI
2. Add examples: Create working code samples in examples/
3. Extend docs: Add detailed guides to references/
4. Commit changes: git add .github/skills/your-skill-name && git commit
5. Share: Push to repository for team use
💡 Pro Tips:
- Keep SKILL.md under 2,000 words (currently: 1,847)
- Move detailed content to references/ folder
- Add executable scripts to scripts/ folder
- Update README.md with real usage examples
- Run validation before committing: scripts/validate-skill-yaml.sh进度显示: 显示完成消息:
bash
echo "[████████████████████] 100% - ✓ Skill created successfully!"更新进度:
╔══════════════════════════════════════════════════════════════╗
║ ✓ Phase 5: Installation ║
║ ✅ SKILL CREATION COMPLETE! ║
╠══════════════════════════════════════════════════════════════╣
║ Progress: ██████████████████████████████ 100% ║
╚══════════════════════════════════════════════════════════════╝显示总结:
🎉 Skill created successfully!
📦 Skill Name: your-skill-name
📁 Location: .github/skills/your-skill-name/
🔗 Installed: Global (Copilot + Claude)
📋 Files Created:
✅ SKILL.md (1,847 words)
✅ README.md (423 words)
✅ references/ (empty, ready for extended docs)
✅ examples/ (empty, ready for code samples)
✅ scripts/ (empty, ready for utilities)
🚀 Next Steps:
1. Test the skill: Try trigger phrases in CLI
2. Add examples: Create working code samples in examples/
3. Extend docs: Add detailed guides to references/
4. Commit changes: git add .github/skills/your-skill-name && git commit
5. Share: Push to repository for team use
💡 Pro Tips:
- Keep SKILL.md under 2,000 words (currently: 1,847)
- Move detailed content to references/ folder
- Add executable scripts to scripts/ folder
- Update README.md with real usage examples
- Run validation before committing: scripts/validate-skill-yaml.shError Handling
错误处理
Platform Detection Issues
平台检测问题
If platforms cannot be detected:
⚠️ Unable to detect GitHub Copilot CLI or Claude Code
Would you like to:
1. Install for repository only (works when in repo)
2. Specify platform manually
3. Skip installation如果无法检测到平台:
⚠️ Unable to detect GitHub Copilot CLI or Claude Code
Would you like to:
1. Install for repository only (works when in repo)
2. Specify platform manually
3. Skip installationTemplate Not Found
模板未找到
If templates are missing:
❌ Error: Template not found at resources/templates/
This skill requires the cli-ai-skills repository structure.
Options:
1. Clone cli-ai-skills: git clone <repo-url>
2. Create minimal skill structure manually
3. Exit and set up templates first如果模板缺失:
❌ Error: Template not found at resources/templates/
This skill requires the cli-ai-skills repository structure.
Options:
1. Clone cli-ai-skills: git clone <repo-url>
2. Create minimal skill structure manually
3. Exit and set up templates firstValidation Failures
验证失败
If content doesn't meet standards:
⚠️ Validation Issues Found:
1. YAML: Description not in third-person format
Expected: "This skill should be used when..."
Found: "Use this skill when..."
2. Content: Word count too high (5,342 words, max 5,000)
Suggestion: Move detailed sections to references/
Fix automatically? [Y/n]如果内容不符合标准:
⚠️ Validation Issues Found:
1. YAML: Description not in third-person format
Expected: "This skill should be used when..."
Found: "Use this skill when..."
2. Content: Word count too high (5,342 words, max 5,000)
Suggestion: Move detailed sections to references/
Fix automatically? [Y/n]Installation Conflicts
安装冲突
If symlink already exists:
⚠️ Skill already installed at ~/.copilot/skills/your-skill-name
Options:
1. Overwrite existing installation
2. Rename new skill
3. Skip installation
4. Install to different location如果符号链接已存在:
⚠️ Skill already installed at ~/.copilot/skills/your-skill-name
Options:
1. Overwrite existing installation
2. Rename new skill
3. Skip installation
4. Install to different locationBundled Resources
捆绑资源
This skill includes additional resources in subdirectories:
本skill在子目录中包含额外资源:
references/
references/
Detailed documentation loaded when needed:
- - Official Anthropic skill development guidelines
anthropic-best-practices.md - - Writing standards and examples
writing-style-guide.md - - Content organization patterns
progressive-disclosure.md - - Pre-commit quality checks
validation-checklist.md
需要时加载的详细文档:
- - Anthropic官方skill开发指南
anthropic-best-practices.md - - 写作标准和示例
writing-style-guide.md - - 内容组织模式
progressive-disclosure.md - - 提交前质量检查清单
validation-checklist.md
examples/
examples/
Working examples demonstrating skill usage:
- - Simple skill creation walkthrough
basic-skill-creation.md - - Complex skill with references/
advanced-skill-bundled-resources.md - - Installing skills system-wide
global-installation.md
展示skill用法的实际示例:
- - 简单skill创建流程
basic-skill-creation.md - - 包含references/的复杂skill
advanced-skill-bundled-resources.md - - 系统级skill安装
global-installation.md
scripts/
scripts/
Executable utilities for skill maintenance:
- - Batch validation of all skills in repository
validate-all-skills.sh - - Bump version and update changelog
update-skill-version.sh - - Auto-generate skills catalog
generate-skill-index.sh
用于skill维护的可执行工具:
- - 批量验证仓库中所有skill
validate-all-skills.sh - - 版本升级并更新变更日志
update-skill-version.sh - - 自动生成skill目录
generate-skill-index.sh
Technical Implementation Notes
技术实现说明
Template Substitution:
- Use for simple replacements
sed - Preserve YAML formatting exactly
- Handle multi-line descriptions with proper escaping
Symlink Strategy:
- Always use absolute paths:
ln -sf /full/path/to/source ~/.copilot/skills/name - Verify symlink before considering installation complete
- Benefits: Auto-updates when repository is pulled
Validation Integration:
- Run validation before installation
- Block installation if critical errors found
- Warnings are informational only
Git Integration:
- Extract author from
git config user.name - Use repository root detection:
git rev-parse --show-toplevel - Respect patterns
.gitignore
模板替换:
- 使用进行简单替换
sed - 严格保留YAML格式
- 正确处理多行描述的转义
符号链接策略:
- 始终使用绝对路径:
ln -sf /full/path/to/source ~/.copilot/skills/name - 验证符号链接创建成功后才视为安装完成
- 优势:仓库更新时可自动同步
验证集成:
- 安装前运行验证
- 若发现严重错误则阻止安装
- 警告仅为信息提示
Git集成:
- 从提取作者信息
git config user.name - 使用检测仓库根目录
git rev-parse --show-toplevel - 遵循规则
.gitignore
Quality Standards
质量标准
SKILL.md Requirements:
- 1,500-2,000 words (ideal)
- Under 5,000 words (maximum)
- Third-person description format
- Imperative/infinitive writing style
- Progressive disclosure pattern
README.md Requirements:
- 300-500 words
- User-facing language
- Clear installation instructions
- Practical usage examples
Validation Checks:
- YAML frontmatter completeness
- Description format (third-person)
- Word count limits
- Writing style (no second-person)
- Required fields present
SKILL.md要求:
- 理想字数:1500-2000字
- 最大字数:5000字
- 描述采用第三人称格式
- 写作风格为祈使句/不定式
- 遵循渐进式披露模式
README.md要求:
- 字数:300-500字
- 使用面向用户的语言
- 包含清晰的安装说明
- 提供实用的使用示例
验证检查项:
- YAML前置元数据完整性
- 描述格式(第三人称)
- 字数限制
- 写作风格(无第二人称)
- 必填字段是否存在
References
参考资料
- Anthropic Official Skill Development Guide: https://github.com/anthropics/claude-plugins-official/blob/main/plugins/plugin-dev/skills/skill-development/SKILL.md
- Repository: https://github.com/yourusername/cli-ai-skills
- Writing Style Guide:
resources/templates/writing-style-guide.md - Progress Tracker Template:
resources/templates/progress-tracker.md
- Anthropic官方Skill开发指南: https://github.com/anthropics/claude-plugins-official/blob/main/plugins/plugin-dev/skills/skill-development/SKILL.md
- 仓库地址: https://github.com/yourusername/cli-ai-skills
- 写作风格指南:
resources/templates/writing-style-guide.md - 进度跟踪器模板:
resources/templates/progress-tracker.md