Token导航 LogoToken导航

Agent Skill · 研究检索

share-skill(分享技能)

share-skill 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

share-skill 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为执行命令;许可证为 MIT,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 62,606。

总安装 329周安装 14GitHub Stars 236下载 115核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:share-skill(分享技能)
来源仓库:https://github.com/guo-yu/skills
仓库路径:skills/share-skill
安装命令:
npx skills add https://github.com/guo-yu/skills --skill share-skill
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/guo-yu/skills --skill share-skill

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

══════════════════════════════ ══════════════════════════════ 通过:71 失败:0 警告:0 ✓ 所有必需的检查均已通过!

退出代码: 0 : 所有检查均已通过 1 :一项或多项检查失败 何时跑步 运行验证脚本: 使用 /share-skill docs 生成文档后 在提交文档更改之前 解决文档问题时 作为 CI/CD 文档管道的一部分 每周安装量 14 存储库 国语/技能 GitHub 之星 236 第一次看到 2026 年 1 月 22 日 安全审计 Gen Agent Trust Hub 通行证 套接字通行证 斯尼克警告

来源仓库内路径:skills/share-skill

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/guo-yu/skills --skill share-skill;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要执行命令,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

share-skill 怎么安装?

在终端执行 npx skills add https://github.com/guo-yu/skills --skill share-skill。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

share-skill 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

share-skill 需要什么权限?

权限级别是执行命令。安装流程涉及命令执行,可能通过 npx skills add https://github.com/guo-yu/skills --skill share-skill;npx skills add guo-yu/skills --skill "share-skill" 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

share-skill 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

share-skill 用的人多吗?

公开数据是累计安装 329 次,近一周安装 14 次,下载 115 次,GitHub 236 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

share-skill 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。

先想清楚的地方

  • 需要执行命令,装到常用环境前要先评估影响面。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 不能接受 Skill 在你机器上执行命令的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
share-skill

分享技能 · 本页

329236执行命令MIT有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Share Skill

Migrate user's locally created temporary skills to a project repository via symlinks, and initialize Git for version tracking.

Usage

CommandDescription
/share-skill <skill-name>Migrate specified skill to code repository and initialize git
/share-skill configConfigure code_root and other settings
/share-skill <skill-name> --remote <url>Migrate and configure remote URL
/share-skill listList all local skills available for migration
/share-skill remote <alias> <endpoint>Configure Git remote alias
/share-skill remote listList configured remote aliases
/share-skill docsGenerate documentation website for the repository
/share-skill docs --style <name>Generate docs with specified design style
/share-skill docs --skill <ui-skill>Use specified UI skill to design docs
/share-skill docs configConfigure default design style or UI skill
/share-skill allowOne-time authorization for this skill's permissions
Natural languagee.g., "Help me open source port-allocator and push to github"

Configuration File

All settings are stored in ~/.claude/share-skill-config.json:

{
  "code_root": "~/Codes",
  "skills_repo": "skills",
  "github_username": "guo-yu",
  "remotes": {
    "github": "git@github.com:guo-yu/skills",
    "gitlab": "git@gitlab.com:guo-yu/skills"
  },
  "default_remote": "github",
  "auto_detected": true,
  "docs": {
    "style": "botanical",
    "custom_skill": null,
    "custom_domain": null
  }
}

Configuration Fields:

FieldDescriptionDefault
code_rootBase directory for code repositories~/Codes
skills_repoName of skills repository folderskills
github_usernameGitHub username for URLsAuto-detected
remotesGit remote aliasesAuto-configured
docs.custom_domainCustom domain for docs sitenull (use GitHub Pages)

Path Variables:

Throughout this document, the following variables are used:

  • {code_root} → Value of code_root config (e.g., ~/Codes)
  • {skills_repo} → Value of skills_repo config (e.g., skills)
  • {skills_path} → {code_root}/{skills_repo} (e.g., ~/Codes/skills)
  • {username} → Value of github_username config

Plugin Marketplace

share-skill automatically creates a Claude Code Plugin Marketplace structure, enabling users to install skills via the /plugin command.

Installation via Marketplace

Once your skills repository is set up, users can install skills with:

# Add the marketplace (one-time setup)
/plugin marketplace add {username}/{skills_repo}

# Install individual skills
/plugin install port-allocator@{username}-{skills_repo}
/plugin install share-skill@{username}-{skills_repo}

Marketplace Structure

The repository requires two types of manifest files:

1. Root marketplace.json ({skills_path}/.claude-plugin/marketplace.json):

{
  "name": "{username}-{skills_repo}",
  "owner": {
    "name": "{display-name}",
    "email": "{username}@users.noreply.github.com"
  },
  "metadata": {
    "description": "A collection of productivity skills for Claude Code",
    "version": "1.0.0"
  },
  "plugins": [
    {
      "name": "skill-name",
      "source": "./skill-name",
      "description": "Skill description from SKILL.md frontmatter"
    }
  ]
}

2. Plugin manifest ({skills_path}/<skill-name>/.claude-plugin/plugin.json):

{
  "name": "skill-name",
  "description": "Skill description",
  "version": "1.0.0"
}

Directory Structure with Plugin Support

{skills_path}/
├── .claude-plugin/
│   └── marketplace.json         # Root marketplace config
├── port-allocator/
│   ├── .claude-plugin/
│   │   └── plugin.json          # Plugin manifest
│   ├── SKILL.md
│   └── ...
├── share-skill/
│   ├── .claude-plugin/
│   │   └── plugin.json
│   ├── SKILL.md
│   └── ...
└── docs/
    └── ...

Marketplace Commands Reference

CommandDescription
/plugin marketplace add <repo>Add a marketplace (GitHub: owner/repo)
/plugin marketplace updateUpdate all marketplace indexes
/plugin install <name>@<marketplace>Install a plugin from marketplace
/plugin validate.Validate marketplace structure

Auto-detection on First Run

On first invocation of share-skill, it automatically detects settings:

Auto-detection Logic:

  1. Check if config file exists if [! -f ~/.claude/share-skill-config.json]; then # First run, perform auto-detection fi
  2. Detect code_root directory # Check common code directory locations in order for dir in ~/Codes ~/Code ~/Projects ~/Dev ~/Development ~/repos; do if [-d "$dir"]; then CODE_ROOT="$dir" break fi done # If none found, default to ~/Codes CODE_ROOT="${CODE_ROOT:-~/Codes}"
  3. Read Git global config for username # Try to get username USERNAME=$(git config --global user.name) # If username contains spaces, try extracting from GitHub email if [["$USERNAME" == *" "*]]; then EMAIL=$(git config --global user.email) # Extract from xxx@users.noreply.github.com USERNAME=$(echo "$EMAIL" | grep -oP '^\d+-?\K[^@]+(?=@users\.noreply\.github\.com)') fi # If still unable to determine, try extracting from remote URL if [-z "$USERNAME"]; then USERNAME=$(git config --global --get-regexp "url.*github.com" | grep -oP 'github\.com[:/]\K[^/]+' | head -1) fi
  4. Generate default config {"code_root": "<detected-code-root>", "skills_repo": "skills", "github_username": "<detected-username>", "remotes": {"github": "git@github.com:<detected-username>/skills"}, "default_remote": "github", "auto_detected": true, "docs": {"style": "botanical", "custom_skill": null, "custom_domain": null}}
  5. Output detection result First run, auto-detecting settings... Detected settings: Code root: ~/Codes GitHub username: guo-yu Auto-configured: Skills path: ~/Codes/skills Remote: git@github.com:guo-yu/skills Config file: ~/.claude/share-skill-config.json To modify, use: /share-skill config

Command: /share-skill config

Interactive configuration for share-skill settings:

TUI Interface (AskUserQuestion):

Configure share-skill settings:

Code root directory:
  Current: ~/Codes
  [ ] ~/Codes
  [ ] ~/Code
  [ ] ~/Projects
  [ ] Other... (enter custom path)

Custom domain for documentation:
  Current: (none - using GitHub Pages)
  [ ] No custom domain (use {username}.github.io/{repo})
  [ ] Enter custom domain...

Implementation:

# Read current config
CONFIG=$(cat ~/.claude/share-skill-config.json 2>/dev/null || echo '{}')

# After user selection, update config
# Example: Update code_root
jq --arg root "$NEW_CODE_ROOT" '.code_root = $root' <<< "$CONFIG" > ~/.claude/share-skill-config.json

Handling Detection Failure

If settings cannot be auto-detected, prompt user to configure:

Unable to auto-detect settings

Please configure manually:
  /share-skill config

Or specify when migrating:
  /share-skill <skill-name> --remote git@github.com:your-username/skills.git

Natural Language Invocation

When user invokes via natural language, intelligent analysis is needed:

1. Identify User's Referenced Skill

User might say:

  • "Help me open source xxx skill" -> Extract skill name xxx
  • "Share the skill I just created" -> Find most recently modified skill
  • "Migrate this skill to repository" -> Determine from current context
  • "Open source port-allocator" -> Use name directly

2. Identify Remote Address

Default behavior: Use auto-detected username + default repository name skills

User might say:

  • "Help me open source xxx" -> Use default: git@github.com:<username>/skills/<skill-name>.git
  • "push to github" -> Use default github config
  • "Push to git@github.com:other-user/repo.git" -> Must explicitly specify full address
  • "Open source to my my-tools repository" -> Must explicitly specify repository name

Important rule: Modifying remote path requires explicit specification

If user wants to use non-default remote path, must explicitly specify via:

  1. Explicit command-line specification /share-skill <skill-name> --remote git@github.com:other-user/other-repo.git
  2. Explicit path in natural language OK: "Help me push port-allocator to git@github.com:my-org/tools.git" OK: "Open source to gitlab, address is git@gitlab.com:team/shared-skills.git" NOT OK: "Help me push to somewhere else" (unclear, will ask for specific address) NOT OK: "Use another repository" (unclear, will ask for specific address)

Address Resolution Rules:

"Help me open source xxx"
  -> Use default config: git@github.com:<auto-detected-user>/skills
  -> Final address: git@github.com:<user>/skills/<skill-name>.git

"Push to git@github.com:other-user/repo.git"
  -> Detected full address, use directly

"Open source to gitlab" (gitlab not configured)
  -> Prompt: Please specify full GitLab address

3. Auto-search Skill Location

Skills may exist at the following locations, searched by priority:

# 1. Standard skills directory
~/.claude/skills/<skill-name>/SKILL.md

# 2. User custom skills directory
~/.claude/skills/*/<skill-name>/SKILL.md

# 3. Standalone skill file
~/.claude/skills/<skill-name>.md

# 4. Project-level skills (current working directory)
.claude/skills/<skill-name>/SKILL.md

Search command:

# Search for directories containing SKILL.md under ~/.claude
find ~/.claude -name "SKILL.md" -type f 2>/dev/null | while read f; do
  dir=$(dirname "$f")
  name=$(basename "$dir")
  echo "$name: $dir"
done

# Or search for specific name
find ~/.claude -type d -name "<skill-name>" 2>/dev/null

4. Post-confirmation Actions

After finding skill:

  1. Display found location, ask user to confirm
  2. If multiple matches found, list options for user to choose
  3. Execute migration after confirmation
  4. If user didn't specify remote, ask whether to configure after migration completes

Execution Steps

Command: /share-skill remote <alias> <endpoint>

Configure Git remote alias:

  1. Read existing config cat ~/.claude/share-skill-config.json 2>/dev/null || echo '{"remotes":{}}'
  2. Update config {"remotes": {"<alias>": "<endpoint>"}}
  3. Write config file (preserve existing config)
  4. Output confirmation Remote alias configured Alias: github Address: git@github.com:guo-yu/skills Usage: /share-skill <skill-name> --remote github or: "Help me open source xxx to github"

Command: /share-skill remote list

List configured remote aliases:

cat ~/.claude/share-skill-config.json | jq '.remotes'

Output format:

Configured remote aliases:

  github  -> git@github.com:guo-yu/skills
  gitlab  -> git@gitlab.com:guo-yu/skills
  gitee   -> git@gitee.com:guo-yu/skills

Default: github

Command: /share-skill <skill-name> [--remote <url|alias>]

Migrate specified skill from ~/.claude/ directory to {skills_path}/:

  1. Search skill location # First check standard location if [-d ~/.claude/skills/<skill-name>]; then SKILL_PATH=~/.claude/skills/<skill-name> else # Recursive search SKILL_PATH=$(find ~/.claude -type d -name "<skill-name>" 2>/dev/null | head -1) fi

- If not found, error and exit - If already a symlink, prompt already migrated and show link target - If multiple found, list for user to choose

  1. Check target directory ls {skills_path}/<skill-name> 2>/dev/null

- If target exists, error and exit (avoid overwriting)

  1. Execute migration # Create target directory (if doesn't exist) mkdir -p {skills_path} # Move skill to code directory mv ~/.claude/skills/<skill-name> {skills_path}/ # Create symlink ln -s {skills_path}/<skill-name> ~/.claude/skills/<skill-name>
  2. Create.gitignore cat > {skills_path}/<skill-name>/.gitignore << 'EOF' # OS.DS_Store Thumbs.db # Editor.vscode/.idea/ *.swp *.swo # Logs *.log # Temp tmp/ temp/ EOF
  3. Initialize Git cd {skills_path}/<skill-name> git init git add. git commit -m "Initial commit: <skill-name> skill"
  4. Configure remote (if specified) If user specified --remote: # If it's an alias, resolve to full address if ["<remote>" is alias]; then ENDPOINT=$(read alias's endpoint from config) REMOTE_URL="${ENDPOINT}/<skill-name>.git" else REMOTE_URL="<remote>" fi cd {skills_path}/<skill-name> git remote add origin "$REMOTE_URL" git push -u origin master
  5. Ask when remote not specified If user didn't specify remote, ask after migration using AskUserQuestion: Do you want to configure Git remote address? Options: - Use github (git@github.com:guo-yu/skills/<skill-name>.git) - Use gitlab (git@gitlab.com:guo-yu/skills/<skill-name>.git) - Enter custom address - Skip for now
  6. Post-migration automation (automatic, no interaction) After migration completes, automatically update all related files: 8.1 Update docs/js/main.js SKILLS config // Add new skill to SKILLS object const SKILLS = {//... existing skills '<skill-name>': {name: '<skill-name>', description: '<extracted from SKILL.md frontmatter>', path: '<skill-name>'}}; 8.2 Update docs/js/main.js SKILL_MARKETING config // Generate marketing content for the new skill const SKILL_MARKETING = {//... existing skills '<skill-name>': {en: {headline: '<generated from skill description>', why: '<generated explanation>', painPoints: [{icon: '🔥', title: '...', desc: '...'}, {icon: '🧠', title: '...', desc: '...'}, {icon: '💥', title: '...', desc: '...'}], triggers: ['<natural language example 1>', '<natural language example 2>']}, 'zh-CN': {/* Chinese translation including triggers */}, ja: {/* Japanese translation including triggers */}}}; 8.3 Update all README files Add new skill to the skills table in all language versions: # Files to update: # - {skills_path}/README.md # - {skills_path}/README.zh-CN.md # - {skills_path}/README.ja.md # Extract description from SKILL.md frontmatter DESCRIPTION=$(grep -A1 "^description:" {skills_path}/<skill-name>/SKILL.md | tail -1 | sed 's/^description: //') # Add row to skills table in each README # English: | [skill-name](./skill-name/) | Description | # Chinese: | [skill-name](./skill-name/) | 中文描述 | # Japanese: | [skill-name](./skill-name/) | 日本語説明 | 8.4 (Automatic) Skill lists are dynamically generated The skill lists in navigation dropdown, mobile menu, and sidebar are dynamically generated from the SKILLS object in main.js. No manual HTML editing required - step 8.1 handles this automatically. Icon SVG path guidelines (for step 8.1): Skill Type SVG Icon Path Port/Network <circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/> Sharing/Export <circle cx="18" cy="5" r="3"/>...(share icon) Security/Permissions <rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/> Translation/i18n <circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3..."/> 8.5 Generate translations using skill-i18n Automatically invoke skill-i18n to translate SKILL.md: # Check if skill-i18n is available if [-d ~/.claude/skills/skill-i18n] || [-L ~/.claude/skills/skill-i18n]; then # Use Skill tool to invoke skill-i18n with integration flags # Skill: skill-i18n # Args: --lang zh-CN,ja --files SKILL.md --skill <skill-name> --no-prompt --overwrite # # This generates: # - {skills_path}/<skill-name>/SKILL.zh-CN.md # - {skills_path}/<skill-name>/SKILL.ja.md fi Implementation: Use the Skill tool to invoke skill-i18n: Skill(skill: "skill-i18n", args: "--lang zh-CN,ja --files SKILL.md --skill <skill-name> --no-prompt --overwrite") If skill-i18n is not available, skip this step and output: ⚠ skill-i18n not found, skipping translations Install with: ln -s {skills_path}/skill-i18n ~/.claude/skills/skill-i18n 8.6 Update cache version # Update version numbers in docs/index.html VERSION=$(date +%s) sed -i '' "s/main.js?v=[0-9]*/main.js?v=$VERSION/" {skills_path}/docs/index.html sed -i '' "s/custom.css?v=[0-9]*/custom.css?v=$VERSION/" {skills_path}/docs/index.html 8.7 Create/Update Plugin Marketplace structure To enable installation via /plugin marketplace, create the plugin manifest files: # Create plugin.json for the new skill mkdir -p {skills_path}/<skill-name>/.claude-plugin cat > {skills_path}/<skill-name>/.claude-plugin/plugin.json << EOF {"name": "<skill-name>", "description": "<extracted from SKILL.md frontmatter>", "version": "1.0.0"} EOF Update the root marketplace.json to include the new skill: # Read existing marketplace.json and add new plugin entry # File: {skills_path}/.claude-plugin/marketplace.json # Add to plugins array: {"name": "<skill-name>", "source": "./<skill-name>", "description": "<extracted from SKILL.md frontmatter>"} Marketplace structure after migration: {skills_path}/ ├──.claude-plugin/ │ └── marketplace.json # Root marketplace config ├── <skill-name>/ │ ├──.claude-plugin/ │ │ └── plugin.json # Plugin manifest │ ├── SKILL.md │ └──... └──... 8.8 Commit all changes cd {skills_path} git add. git commit -m "Add <skill-name>: update docs, README, translations, and plugin manifest" git push # If remote is configured Post-migration output: Post-migration updates completed: ✓ Updated docs/js/main.js (SKILLS + SKILL_MARKETING) ✓ Updated README.md, README.zh-CN.md, README.ja.md ✓ Generated SKILL.zh-CN.md, SKILL.ja.md ✓ Updated cache version in docs/index.html ✓ Created.claude-plugin/plugin.json ✓ Updated.claude-plugin/marketplace.json ✓ Committed and pushed changes Note: Skill lists (navbar, mobile menu, sidebar, install commands) are dynamically generated from SKILLS config - no HTML editing needed.

Command: /share-skill list

List all local skills available for migration (excluding symlinks):

# Search for all directories containing SKILL.md under ~/.claude
echo "Discovered skills:"
find ~/.claude -name "SKILL.md" -type f 2>/dev/null | while read f; do
  dir=$(dirname "$f")
  name=$(basename "$dir")
  if [ -L "$dir" ]; then
    target=$(readlink "$dir")
    echo "  $name -> $target (migrated)"
  else
    echo "  $name: $dir (available)"
  fi
done

Output Format

Migration Success (with remote)

Skill migration successful

skill: <skill-name>
New location: {skills_path}/<skill-name>
Symlink: ~/.claude/skills/<skill-name> -> {skills_path}/<skill-name>
Git: Initialized and committed
Remote: git@github.com:guo-yu/skills/<skill-name>.git

Post-migration updates:
  ✓ Updated docs/js/main.js (SKILLS + SKILL_MARKETING)
  ✓ Updated README.md, README.zh-CN.md, README.ja.md
  ✓ Generated SKILL.zh-CN.md, SKILL.ja.md
  ✓ Updated cache version in docs/index.html
  ✓ Committed and pushed changes

Repository URL: https://github.com/guo-yu/skills

Migration Success (without remote)

Skill migration successful

skill: <skill-name>
New location: {skills_path}/<skill-name>
Symlink: ~/.claude/skills/<skill-name> -> {skills_path}/<skill-name>
Git: Initialized and committed

Post-migration updates:
  ✓ Updated docs/js/main.js (SKILLS + SKILL_MARKETING)
  ✓ Updated README.md, README.zh-CN.md, README.ja.md
  ✓ Generated SKILL.zh-CN.md, SKILL.ja.md
  ✓ Updated cache version in docs/index.html
  ✓ Committed changes (not pushed - no remote configured)

Do you want to configure remote address?

Already Migrated

Skill already migrated

<skill-name> is already a symlink:
  ~/.claude/skills/<skill-name> -> {skills_path}/<skill-name>

List

Local skills available for migration (N):
  - art-master
  - design-master
  - prompt-generator

Migrated skills (M):
  - port-allocator -> {skills_path}/port-allocator
  - share-skill -> {skills_path}/share-skill

Directory Structure

Hybrid Git Management Mode

share-skill supports two Git management modes:

ModeTriggerGit StructureRemote
MonorepoDefault endpointParent repo managedguo-yu/skills
StandaloneCustom endpointIndependent.gitUser specified

Monorepo Mode (Default)

When using default endpoint, all skills are managed by parent repo {skills_path}/.git:

{skills_path}/
├── .git/                      # Parent repo -> guo-yu/skills
├── .gitignore
├── README.md
├── port-allocator/            # No independent .git, managed by parent
│   ├── .gitignore
│   └── SKILL.md
├── share-skill/
│   ├── .gitignore
│   └── SKILL.md
└── skill-permissions/
    ├── .gitignore
    └── SKILL.md

Operations:

# After adding new skill
cd {skills_path}
git add <new-skill>/
git commit -m "Add <new-skill>"
git push

Standalone Mode (Custom Endpoint)

When user specifies custom endpoint, that skill has independent.git:

{skills_path}/
├── .git/                      # Parent repo
├── .gitignore                 # Contains: /custom-skill/
├── custom-skill/              # Independent repo -> user specified address
│   ├── .git/
│   └── SKILL.md
└── port-allocator/            # Managed by parent repo

Parent repo.gitignore auto-updates:

# Skills with custom endpoints
/custom-skill/

Symlinks

Regardless of mode, ~/.claude/skills/ uses symlinks:

~/.claude/skills/
├── port-allocator -> {skills_path}/port-allocator
├── share-skill -> {skills_path}/share-skill
└── skill-permissions -> {skills_path}/skill-permissions

First Use

If you encounter permission prompts, first run:

/share-skill allow

Command: /share-skill allow

Execute one-time authorization, adding permissions required by this skill to Claude Code config:

  1. Read ~/.claude/settings.json
  2. Merge following permissions to permissions.allow:
{
  "permissions": {
    "allow": [
      "Bash(cat ~/.claude/*)",
      "Bash(find ~/.claude *)",
      "Bash(ls {skills_path}/*)",
      "Bash(mkdir -p {skills_path}*)",
      "Bash(mv ~/.claude/skills/* *)",
      "Bash(ln -s {skills_path}/* *)",
      "Bash(git *)",
      "Bash(dirname *)",
      "Bash(basename *)",
      "Bash(readlink *)"
    ]
  }
}
  1. Write config file (preserve existing permissions)
  2. Output authorization result

Output format:

Claude Code permissions configured

Added allowed command patterns:
  - Bash(cat ~/.claude/*)
  - Bash(find ~/.claude *)
  - Bash(ls {skills_path}/*)
  - Bash(mkdir -p {skills_path}*)
  - Bash(mv ~/.claude/skills/* *)
  - Bash(ln -s {skills_path}/* *)
  - Bash(git *)
  - Bash(dirname *)
  - Bash(basename *)
  - Bash(readlink *)

Config file: ~/.claude/settings.json

Notes

  1. No overwrite - If target directory exists, error instead of overwrite
  2. Maintain compatibility - Symlinks ensure Claude Code can still read skills normally
  3. Git tracking - Automatically initialize git and create initial commit
  4. Alias priority - When using alias, automatically append skill name as repository name
  5. Ask about remote - When remote not specified, proactively ask user after migration
  6. First authorization - Recommend running /share-skill allow to configure permissions first

Documentation Website Generation

share-skill supports automatically generating elegant documentation websites to showcase skill usage instructions.

Command: /share-skill docs

Generate GitHub Pages documentation website for skills repository.

Parameters:

  • --style <name>: Use preset design style (default: botanical)
  • --skill <ui-skill>: Use specified UI skill for design
  • --domain <domain>: Configure custom domain
  • --i18n: Enable i18n language selection for SKILL.md and README files

i18n Language Selection

Since generating multi-language documentation is time-consuming and token-intensive, users can select which languages to generate via an interactive TUI checkbox.

Trigger: When running /share-skill docs with --i18n flag, or when the command detects SKILL.md files need translation.

TUI Interface:

Select languages for documentation (Space to toggle, Enter to confirm):

  [x] English (en)        - Always generated
  [ ] 简体中文 (zh-CN)    - Simplified Chinese
  [ ] 日本語 (ja)         - Japanese
  [ ] Other...            - Enter custom language code

Selected: English

Default Selection:

  • English: checked (required, always generated)
  • Chinese (zh-CN): unchecked
  • Japanese (ja): unchecked
  • Other: unchecked (allows custom language code input)

Custom Language Input: When user selects "Other...", prompt for language code:

Enter language code (e.g., 'ko' for Korean, 'de' for German):
> ko

Language added: 한국어 (ko)

AskUserQuestion Implementation:

{
  "questions": [
    {
      "question": "Which languages should be generated for documentation?",
      "header": "Languages",
      "multiSelect": true,
      "options": [
        { "label": "English (en)", "description": "Required, always generated" },
        { "label": "简体中文 (zh-CN)", "description": "Simplified Chinese translation" },
        { "label": "日本語 (ja)", "description": "Japanese translation" },
        { "label": "Other...", "description": "Enter a custom language code" }
      ]
    }
  ]
}

Generated Files Based on Selection:

SelectionSKILL FilesREADME Files
English onlySKILL.mdREADME.md
+ChineseSKILL.md, SKILL.zh-CN.mdREADME.md, README.zh-CN.md
+JapaneseSKILL.md, SKILL.ja.mdREADME.md, README.ja.md
+KoreanSKILL.md, SKILL.ko.mdREADME.md, README.ko.md

Execution steps:

  1. Check repository structure # Confirm in skills repository directory if [! -d {skills_path}/.git]; then echo "Please run this command in skills repository first" exit 1 fi
  2. Read config # Read design preferences from config cat ~/.claude/share-skill-config.json | jq '.docs'
  3. Select design method

- If --skill specified: call corresponding UI skill (e.g., ui-ux-pro-max) - Otherwise use preset style specified by --style (default botanical)

  1. Generate documentation website mkdir -p {skills_path}/docs mkdir -p {skills_path}/docs/css mkdir -p {skills_path}/docs/js
  2. Configure local development server Handle based on endpoint config and existing package.json: Scenario A: Monorepo mode (default endpoint) Check if {skills_path}/package.json exists: if [-f {skills_path}/package.json]; then # Exists, only add docs-related scripts (don't overwrite existing content) # Use jq or manual merge for scripts else # Doesn't exist, create new package.json fi Scenario B: Standalone mode (custom endpoint) Each skill has independent Git repository, check each package.json: SKILL_DIR={skills_path}/<skill-name> if [-f "$SKILL_DIR/package.json"]; then # Important: don't overwrite user's existing package.json # Only append docs script (if doesn't exist) echo "Detected existing package.json, appending dev:docs script" else # Create minimal package.json echo "Creating package.json..." fi Port allocation flow: Safety rules:

- package.json exists: Append dev:docs script # Read existing package.json, add new script jq '.scripts["dev:docs"] = "npx serve. -l <port>"' package.json > tmp.json mv tmp.json package.json - package.json doesn't exist: Create new file {"name": "claude-code-skills", "version": "1.0.0", "private": true, "scripts": {"dev": "npx serve. -l <port>"}} - Read ~/.claude/port-registry.json to get next available port - Update port-registry to register this project - Append or create development script in package.json - Never overwrite existing package.json - Only append new commands in scripts field - If dev script exists, use dev:docs as alternative command name

  1. Configure custom domain Handle custom domain based on config: # Read custom_domain from config CUSTOM_DOMAIN=$(cat ~/.claude/share-skill-config.json | jq -r '.docs.custom_domain // empty') USERNAME=$(cat ~/.claude/share-skill-config.json | jq -r '.github_username') REPO=$(cat ~/.claude/share-skill-config.json | jq -r '.skills_repo') # Check if CNAME already exists if [-f {skills_path}/docs/CNAME]; then EXISTING_DOMAIN=$(cat {skills_path}/docs/CNAME) echo "CNAME already exists: $EXISTING_DOMAIN" fi First-time setup - Ask user via AskUserQuestion: {"questions": [{"question": "Do you want to configure a custom domain for the documentation site?", "header": "Domain", "multiSelect": false, "options": [{"label": "No custom domain", "description": "Use {username}.github.io/{repo}"}, {"label": "Enter custom domain", "description": "e.g., docs.example.com"}]}]} Based on user selection: if [-n "$CUSTOM_DOMAIN"]; then # User has custom domain configured echo "$CUSTOM_DOMAIN" > {skills_path}/docs/CNAME # Update config jq --arg domain "$CUSTOM_DOMAIN" '.docs.custom_domain = $domain' \ ~/.claude/share-skill-config.json > tmp.json && mv tmp.json ~/.claude/share-skill-config.json else # No custom domain - remove CNAME if exists rm -f {skills_path}/docs/CNAME fi Update footer link based on domain: ` // main.js - Dynamic footer URL function getDocsUrl() {const config = {/* loaded from config or constants */}; if (config.custom_domain) {return https://${config.custom_domain}/;} return https://${REPO_OWNER}.github.io/${REPO_NAME}/;} `
  2. Update cache version number Auto-update resource file version numbers each time docs content is modified to avoid browser cache issues: # Generate version number (using timestamp) VERSION=$(date +%s) # Update version number in index.html sed -i '' "s/main.js?v=[0-9]*/main.js?v=$VERSION/" docs/index.html sed -i '' "s/custom.css?v=[0-9]*/custom.css?v=$VERSION/" docs/index.html Or use file hash: JS_HASH=$(md5 -q docs/js/main.js | head -c 8) CSS_HASH=$(md5 -q docs/css/custom.css | head -c 8) sed -i '' "s/main.js?v=[a-z0-9]*/main.js?v=$JS_HASH/" docs/index.html sed -i '' "s/custom.css?v=[a-z0-9]*/custom.css?v=$CSS_HASH/" docs/index.html index.html template should contain version placeholders: <link rel="stylesheet" href="css/custom.css?v=1"> <script src="js/main.js?v=1"></script>
  3. Commit and push git add docs/ git commit -m "Update documentation site" git push

Documentation Site Features

The generated documentation site includes the following features:

1. Dynamic Navbar Brand

The navbar brand (avatar + title) links to the repository URL and is dynamically populated from GitHub API:

<!-- index.html -->
<a class="navbar-brand" id="repoLink" href="https://github.com/{username}/{repo}" target="_blank">
    <img class="brand-avatar" id="userAvatar" src="" alt="Avatar">
    <span class="brand-text" id="brandTitle">Skills</span>
</a>
// main.js - Update repo link dynamically
const repoLink = document.getElementById('repoLink');
if (repoLink) {
    repoLink.href = `https://github.com/${REPO_OWNER}/${REPO_NAME}`;
}
2. Dynamic Favicon

The favicon uses the GitHub user's avatar image:

<!-- index.html head section -->
<link rel="icon" id="favicon" type="image/png" href="">
// main.js - Set favicon to user's avatar
const favicon = document.getElementById('favicon');
if (favicon) {
    favicon.href = user.avatar_url;
}
3. Footer Attribution

Footer links to the documentation site, dynamically choosing between custom domain and GitHub Pages:

<footer class="footer">
    <div class="footer-content">
        <p>Made with <span class="heart">♥</span> by <a id="footerLink" href="">Yu's skills</a></p>
    </div>
</footer>
// main.js - Set footer link based on custom_domain config
const CUSTOM_DOMAIN = null;  // Set to domain string or null for GitHub Pages

function getDocsUrl() {
    if (CUSTOM_DOMAIN) {
        return `https://${CUSTOM_DOMAIN}/`;
    }
    return `https://${REPO_OWNER}.github.io/${REPO_NAME}/`;
}

// Update footer link
const footerLink = document.getElementById('footerLink');
if (footerLink) {
    footerLink.href = getDocsUrl();
}

URL Selection Logic:

custom_domain configFooter URL
nullhttps://{username}.github.io/{repo}/
"docs.example.com"https://docs.example.com/
4. i18n Cache Busting for SKILL.md

When loading language-specific SKILL.md files, add cache busting to ensure fresh content:

// main.js
const CACHE_VERSION = Date.now();

function getBasePath(skillName, lang = 'en') {
    const fileName = lang === 'en' ? 'SKILL.md' : `SKILL.${lang}.md`;

    if (isGitHubPages) {
        // Add cache busting for GitHub raw content
        return `https://raw.githubusercontent.com/${REPO_OWNER}/${REPO_NAME}/${BRANCH}/${skillName}/${fileName}?v=${CACHE_VERSION}`;
    } else {
        // Add cache busting for local development
        return `../${skillName}/${fileName}?v=${CACHE_VERSION}`;
    }
}
5. main.js Configuration

The main.js file should include repository configuration at the top:

// Repository configuration - UPDATE THESE VALUES
const REPO_OWNER = '{github-username}';  // e.g., 'guo-yu'
const REPO_NAME = '{repo-name}';          // e.g., 'skills'
const BRANCH = 'master';                   // or 'main'

// Cache busting version
const CACHE_VERSION = Date.now();
6. Marketing Section (Why Use This Skill?)

Each skill displays a compelling marketing section above the documentation content, highlighting:

  • Headline: A catchy one-liner explaining the value proposition
  • Why: A paragraph explaining why users should use this skill
  • Pain Points: Three cards showing problems the skill solves

SKILL_MARKETING Data Structure in main.js:

const SKILL_MARKETING = {
    'skill-name': {
        en: {
            headline: 'Compelling one-liner value proposition',
            why: 'Detailed explanation of why this skill exists and how it helps users...',
            painPoints: [
                {
                    icon: '🔥',
                    title: 'Problem Title',
                    desc: 'Description of the problem this skill solves.'
                },
                {
                    icon: '🧠',
                    title: 'Another Problem',
                    desc: 'Description of another pain point.'
                },
                {
                    icon: '💥',
                    title: 'Third Problem',
                    desc: 'Description of the third issue addressed.'
                }
            ],
            triggers: [
                'Example natural language prompt 1',
                'Example natural language prompt 2'
            ]
        },
        'zh-CN': {
            headline: '中文标题',
            why: '中文说明...',
            painPoints: [/* ... */],
            triggers: [
                '自然语言触发示例 1',
                '自然语言触发示例 2'
            ]
        },
        ja: {
            headline: '日本語タイトル',
            why: '日本語説明...',
            painPoints: [/* ... */],
            triggers: [
                '自然言語トリガー例 1',
                '自然言語トリガー例 2'
            ]
        }
    }
};

Render Function:

function renderMarketingSection(skillName) {
    const marketing = SKILL_MARKETING[skillName];
    if (!marketing) return '';

    const content = marketing[currentLang] || marketing['en'];
    // Returns HTML with .marketing-section structure
}

CSS Classes:

  • .marketing-section - Container with gradient background
  • .marketing-title - Gradient text headline
  • .marketing-why - Value proposition paragraph
  • .pain-points-grid - 3-column responsive grid
  • .pain-point-card - Glass card with icon, title, description

Triggers Section (Natural Language Examples):

Display 2-3 example phrases users can say to trigger this skill. Shown below pain points.

// triggers field in SKILL_MARKETING
triggers: [
    'Help me allocate a port for my project',
    'Start the dev server for me'
]

Render Function for Triggers:

function renderTriggersSection(skillName) {
    const marketing = SKILL_MARKETING[skillName];
    if (!marketing) return '';

    const content = marketing[currentLang] || marketing['en'];
    if (!content || !content.triggers || content.triggers.length === 0) return '';

    const t = I18N[currentLang];

    const triggersHtml = content.triggers.map(trigger => `
        <div class="trigger-item">
            <span class="trigger-quote">"${trigger}"</span>
        </div>
    `).join('');

    return `
        <div class="triggers-section">
            <h3 class="triggers-title">💬 ${t.triggersTitle}</h3>
            <p class="triggers-desc">${t.triggersDesc}</p>
            <div class="triggers-list">
                ${triggersHtml}
            </div>
        </div>
    `;
}

CSS Classes for Triggers:

  • .triggers-section - Container with subtle background
  • .triggers-title - Section heading with emoji
  • .triggers-desc - Instruction text
  • .triggers-list - Vertical list of examples
  • .trigger-item - Individual example with left border accent
  • .trigger-quote - Italic quoted text

Guidelines for Writing Marketing Content:

  1. Write from the user's perspective ("You" not "This skill")
  2. Lead with the pain point, then show the solution
  3. Use specific, relatable examples (e.g., "Port 3000 is already in use")
  4. Keep headlines under 10 words
  5. Pain point titles should be the problem, not the solution
7. Three-Column Layout

The documentation site uses a three-column responsive layout:

<div class="main-container three-column">
    <!-- Left Sidebar: Skills navigation + Table of Contents -->
    <aside class="sidebar glass">
        <div class="sidebar-content">
            <div class="sidebar-section">
                <h4 class="sidebar-heading" data-i18n="skills">Skills</h4>
                <nav class="sidebar-nav">
                    <a class="sidebar-link" href="?skill=port-allocator">port-allocator</a>
                    <a class="sidebar-link" href="?skill=share-skill">share-skill</a>
                    <!-- ... more skills -->
                </nav>
            </div>
            <div class="sidebar-section">
                <h4 class="sidebar-heading" data-i18n="onThisPage">On This Page</h4>
                <div class="js-toc"></div>  <!-- Tocbot generates TOC here -->
            </div>
        </div>
    </aside>

    <!-- Main Content: Markdown documentation -->
    <main class="main-content">
        <article class="js-toc-content content-card glass" id="content">
            <!-- Rendered markdown content -->
        </article>
    </main>

    <!-- Right Sidebar: Installation instructions -->
    <aside class="sidebar-right glass">
        <!-- Installation section -->
    </aside>
</div>

Responsive Behavior:

  • Desktop: Three columns visible
  • Tablet: Right sidebar hidden
  • Mobile: Both sidebars hidden, mobile menu available
8. Right Sidebar - Installation Section

The right sidebar provides quick installation instructions:

<aside class="sidebar-right glass">
    <div class="sidebar-content">
        <div class="sidebar-section">
            <!-- Natural language installation recommendation -->
            <div class="install-natural">
                <p class="install-natural-desc" data-i18n="installNaturalDesc">We recommend installing via natural language:</p>
                <div class="install-natural-example">
                    "<span data-i18n="installNaturalExample">Please help me install this skill:</span> https://github.com/{username}/{repo}"
                </div>
            </div>

            <!-- Command line installation -->
            <div class="install-code">
                <pre><code><span class="comment"># <span data-i18n="addMarketplace">Add marketplace</span></span>
<span class="cmd">/plugin marketplace add {username}/{repo}</span>

<span class="comment"># <span data-i18n="installSkills">Install skills</span></span>
<span class="cmd">/plugin install {skill-name}@{username}-{repo}</span></code></pre>
            </div>
            <a class="install-link" href="https://github.com/{username}/{repo}#installation" target="_blank" data-i18n="moreOptions">More installation options</a>
        </div>
    </div>
</aside>

CSS Classes for Natural Language Installation:

  • .install-natural - Container with bottom border separator
  • .install-natural-desc - Recommendation text
  • .install-natural-example - Quoted example with left border accent

i18n Support for Installation and Triggers:

const I18N = {
    en: {
        installation: 'Installation',
        installNaturalDesc: 'We recommend installing via natural language:',
        installNaturalExample: 'Please help me install this skill:',
        installDesc: 'The easiest way to install:',
        addMarketplace: 'Add marketplace',
        installSkills: 'Install skills',
        moreOptions: 'More installation options',
        triggersTitle: 'How to Use',
        triggersDesc: 'Trigger this skill with natural language:'
    },
    'zh-CN': {
        installation: '安装方法',
        installNaturalDesc: '我们推荐使用自然语言安装:',
        installNaturalExample: '请帮我安装这个 skill:',
        installDesc: '最简单的安装方式:',
        addMarketplace: '添加技能市场',
        installSkills: '安装技能',
        moreOptions: '更多安装选项',
        triggersTitle: '如何调用',
        triggersDesc: '使用自然语言即可触发此 skill:'
    },
    ja: {
        installation: 'インストール',
        installNaturalDesc: '自然言語でのインストールをお勧めします:',
        installNaturalExample: 'このスキルをインストールしてください:',
        installDesc: '最も簡単なインストール方法:',
        addMarketplace: 'マーケットプレイスを追加',
        installSkills: 'スキルをインストール',
        moreOptions: 'その他のインストールオプション',
        triggersTitle: '使い方',
        triggersDesc: '自然言語でこのスキルを呼び出せます:'
    }
};
9. Table of Contents (Tocbot)

Use Tocbot library to auto-generate table of contents from headings:

<!-- In <head> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.32.2/tocbot.min.css">

<!-- Before closing </body> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.32.2/tocbot.min.js"></script>
// Initialize after content loads
tocbot.init({
    tocSelector: '.js-toc',
    contentSelector: '.js-toc-content',
    headingSelector: 'h1, h2, h3',
    scrollSmooth: true,
    scrollSmoothDuration: 300,
    headingsOffset: 100,
    scrollSmoothOffset: -100
});
10. Code Syntax Highlighting (highlight.js)

Use highlight.js for code block syntax highlighting:

<!-- In <head> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">

<!-- Before closing </body> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
// After rendering markdown
document.querySelectorAll('pre code').forEach((block) => {
    hljs.highlightElement(block);
});

Command: /share-skill docs config

Configure documentation generation default settings.

Interactive options:

Configure documentation website design

Design method:
  1. Use preset style
  2. Use UI skill

Preset styles:
  - botanical (default): Natural botanical style, elegant and soft
  - minimal: Minimalist black and white
  - tech: Modern tech-forward style

UI skills:
  - ui-ux-pro-max: Professional UI/UX design skill
  - (other UI skills user has installed)

Custom domain: (optional)

Design Style Presets

botanical - Natural Botanical Style (default)

Design Philosophy: A digital tribute to nature—breathing, flowing, rooted in organic beauty. Soft, refined, and thoughtful, rejecting the rigid technocratic coldness and hyper-digital sharpness of modern tech aesthetic in favor of warmth, tactility, and the imperfections of the natural world.

Core Elements:

  • Organic softness: Rounded corners everywhere, shapes flow like terrazzo
  • Elegant typography: Playfair Display high-contrast serif + Source Sans 3 humanist sans-serif
  • Earth tones: Forest green (#2D3A31), sage green (#8C9A84), terracotta (#C27B66), rice paper white (#F9F8F4)
  • Paper texture: Essential SVG noise overlay, transforming cold digital pixels into warm tactile feel
  • Breathing space: Generous whitespace, section spacing py-32, card spacing gap-16
  • Slow motion: Like plants swaying in breeze, duration-500 to duration-700

Color System:

UsageColorValue
BackgroundWarm white/Rice paper#F9F8F4
ForegroundDeep forest green#2D3A31
PrimarySage green#8C9A84
SecondarySoft clay/Mushroom#DCCFC2
BorderStone#E6E2DA
InteractiveTerracotta#C27B66

Font Pairing:

  • Headings: Playfair Display (Google Font) - Transitional serif, high-contrast strokes
  • Body: Source Sans 3 (Google Font) - Clear, readable humanist sans-serif

Border Radius Rules:

  • Cards: rounded-3xl (24px)
  • Buttons: rounded-full (pill shape)
  • Images: rounded-t-full (arch) or rounded-[40px]

Paper Texture Overlay (Critical):

<div
  className="pointer-events-none fixed inset-0 z-50 opacity-[0.015]"
  style={{
    backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`,
    backgroundRepeat: "repeat",
  }}
/>

Shadow System:

/* Default */
box-shadow: 0 4px 6px -1px rgba(45, 58, 49, 0.05);
/* Medium */
box-shadow: 0 10px 15px -3px rgba(45, 58, 49, 0.05);
/* Large */
box-shadow: 0 20px 40px -10px rgba(45, 58, 49, 0.05);

Motion Guidelines:

  • Fast interaction: duration-300 (button hover, link color)
  • Standard: duration-500 (card lift, transforms)
  • Slow dramatic: duration-700 to duration-1000 (image zoom)
  • Hover behavior: -translate-y-1 with enhanced shadow

Responsive Strategy:

  • Mobile: Hide sidebar, title from text-8xl down to text-5xl
  • Touch targets: Maintain minimum 44px height
  • Grid breakpoints: grid-cols-1 -> md:grid-cols-3

Using External UI Skills

If user has installed ui-ux-pro-max or other UI skills, can call it to design docs:

/share-skill docs --skill ui-ux-pro-max

Execution flow:

  1. Detect if skill exists if [-d ~/.claude/skills/ui-ux-pro-max] || [-L ~/.claude/skills/ui-ux-pro-max]; then echo "Detected ui-ux-pro-max skill" fi
  2. Call skill to generate design

- Pass current skills list and structure info to UI skill - UI skill generates complete HTML/CSS/JS - Output to {skills_path}/docs/ directory

  1. Ask design preference (if UI skill supports) Using ui-ux-pro-max to design documentation website Please select design style: 1. glassmorphism 2. claymorphism 3. minimalism 4. brutalism 5. neumorphism 6. bento-grid

Output Format

Generation success:

Documentation website generated

Location: {skills_path}/docs/
Design style: botanical (Natural Botanical Style)
Custom domain: skill.guoyu.me

File structure:
  docs/
  ├── index.html
  ├── CNAME
  ├── css/
  │   └── custom.css
  └── js/
      └── main.js

Pushed to GitHub
Visit: https://skill.guoyu.me

GitHub Pages setup:
   1. Repository Settings -> Pages
   2. Source: Deploy from a branch
   3. Branch: master, /docs

Using UI skill:

Documentation website generated

Location: {skills_path}/docs/
Design: ui-ux-pro-max (glassmorphism style)
Custom domain: skill.guoyu.me

Visit: https://skill.guoyu.me

README Auto-generation

share-skill automatically generates/updates multi-language README files when creating or updating repositories.

Supported Languages

LanguageFilenameLanguage Code
English (default)README.mden
Simplified ChineseREADME.zh-CN.mdzh-CN
JapaneseREADME.ja.mdja

File Structure

skills/
├── README.md              # English (default)
├── README.zh-CN.md        # Simplified Chinese
├── README.ja.md           # Japanese
└── ...

Language Switch Navigation

Each README file contains language switch links at the top:

<p align="center">
  <a href="README.md">English</a> |
  <a href="README.zh-CN.md">简体中文</a> |
  <a href="README.ja.md">日本語</a>
</p>

README Title Rules

Repository TypeEnglishSimplified ChineseJapanese
Skill Set{username}'s Skills{username} 的技能集{username} のスキル
Single Skill{username}'s Skill: {name}{username} 的技能: {name}{username} のスキル: {name}

README Template - English (README.md)

<p align="center">
  <a href="README.md">English</a> |
  <a href="README.zh-CN.md">简体中文</a> |
  <a href="README.ja.md">日本語</a>
</p>

# {username}'s Skills

My collection of custom Claude Code skills for productivity and automation.

## Skills

| Skill | Description |
|-------|-------------|
| [port-allocator](./port-allocator/) | Automatically allocate development server ports |
| [share-skill](./share-skill/) | Migrate skills to repositories with Git support |

## Documentation

This skill set has an online documentation site generated by [share-skill](https://github.com/guo-yu/skills/tree/master/share-skill).

**With Custom Domain:**

https://{custom_domain}/

**GitHub Pages:**

https://{username}.github.io/{repo-name}/

### Setup GitHub Pages

1. Go to repository **Settings** -> **Pages**
2. Under "Source", select **Deploy from a branch**
3. Choose branch: `master` (or `main`), folder: `/docs`
4. (Optional) Add custom domain

## License

MIT

---

Made with ♥ by [Yu's skills](https://skill.guoyu.me/)

README Template - Simplified Chinese (README.zh-CN.md)

<p align="center">
  <a href="README.md">English</a> |
  <a href="README.zh-CN.md">简体中文</a> |
  <a href="README.ja.md">日本語</a>
</p>

# {username} 的技能集

我的 Claude Code 自定义技能集合,用于提高生产力和自动化。

## 技能列表

| 技能 | 说明 |
|------|------|
| [port-allocator](./port-allocator/) | 自动分配开发服务器端口 |
| [share-skill](./share-skill/) | 将技能迁移到仓库并支持 Git 版本管理 |

## 在线文档

本技能集有一个由 [share-skill](https://github.com/guo-yu/skills/tree/master/share-skill) 生成的在线文档网站。

**自定义域名访问:**

https://{custom_domain}/

**GitHub Pages 访问:**

https://{username}.github.io/{repo-name}/

### 配置 GitHub Pages

1. 进入仓库 **Settings** -> **Pages**
2. 在 "Source" 下选择 **Deploy from a branch**
3. 选择分支: `master` (或 `main`),文件夹: `/docs`
4. (可选) 在 "Custom domain" 中添加自定义域名

## 许可证

MIT

---

Made with ♥ by [Yu's skills](https://skill.guoyu.me/)

README Template - Japanese (README.ja.md)

<p align="center">
  <a href="README.md">English</a> |
  <a href="README.zh-CN.md">简体中文</a> |
  <a href="README.ja.md">日本語</a>
</p>

# {username} のスキル

生産性と自動化のための Claude Code カスタムスキルコレクション。

## スキル一覧

| スキル | 説明 |
|--------|------|
| [port-allocator](./port-allocator/) | 開発サーバーポートの自動割り当て |
| [share-skill](./share-skill/) | Git サポート付きでスキルをリポジトリに移行 |

## ドキュメント

このスキルセットには [share-skill](https://github.com/guo-yu/skills/tree/master/share-skill) で生成されたオンラインドキュメントサイトがあります。

**カスタムドメイン:**

https://{custom_domain}/

**GitHub Pages:**

https://{username}.github.io/{repo-name}/

### GitHub Pages の設定

1. リポジトリの **Settings** -> **Pages** に移動
2. "Source" で **Deploy from a branch** を選択
3. ブランチ: `master` (または `main`)、フォルダ: `/docs` を選択
4. (オプション) "Custom domain" にカスタムドメインを追加

## ライセンス

MIT

---

Made with ♥ by [Yu's skills](https://skill.guoyu.me/)

Execution Steps

When executing /share-skill docs or /share-skill <skill-name>:

  1. Read config CONFIG=$(cat ~/.claude/share-skill-config.json) GITHUB_URL=$(echo "$CONFIG" | jq -r '.remotes.github') GITHUB_USERNAME=$(echo "$GITHUB_URL" | grep -oP 'github\.com[:/]\K[^/]+') CUSTOM_DOMAIN=$(echo "$CONFIG" | jq -r '.docs.custom_domain // empty') REPO_NAME=$(basename "$(git rev-parse --show-toplevel)")
  2. Generate language switch navigation LANG_NAV='<p align="center"> <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | <a href="README.ja.md">日本語</a> </p>'
  3. Generate README for all languages # Define language config declare -A LANG_CONFIG LANG_CONFIG[en]="README.md" LANG_CONFIG[zh-CN]="README.zh-CN.md" LANG_CONFIG[ja]="README.ja.md" # Generate README for each language for lang in en zh-CN ja; do FILE="${LANG_CONFIG[$lang]}" generate_readme "$lang" "$FILE" done
  4. Write README files generate_readme() {local lang=$1 local file=$2 # Select template based on language case $lang in en) TITLE="${GITHUB_USERNAME}'s Skills" #... English content;; zh-CN) TITLE="${GITHUB_USERNAME} 的技能集" #... Chinese content;; ja) TITLE="${GITHUB_USERNAME} のスキル" #... Japanese content;; esac cat > "$file" << EOF $LANG_NAV # $TITLE... EOF}

Output Format

README multi-language files updated

Generated files:
  - README.md (English)
  - README.zh-CN.md (Simplified Chinese)
  - README.ja.md (Japanese)

Documentation link: https://skill.guoyu.me/

Included sections:
  - Language switch navigation
  - Skills list
  - Documentation (online docs instructions)
  - License
  - Attribution (Made with ♥)

Local Testing

share-skill provides a verification script to ensure generated documentation matches the SKILL.md specifications.

Verification Script

Location: share-skill/test/verify-docs.sh

Usage:

# Test current directory
./share-skill/test/verify-docs.sh .

# Test specific repository
./share-skill/test/verify-docs.sh ~/Codes/skills

Checks performed:

CategoryChecks
Directory Structuredocs/index.html, docs/js/main.js, docs/css/custom.css, docs/CNAME
index.htmlFavicon, navbar brand, three-column layout, language switcher, installation section, tocbot, highlight.js, footer, version numbers
main.jsREPO_OWNER, REPO_NAME, BRANCH, CACHE_VERSION, I18N object, getBasePath, dynamic favicon/repoLink, tocbot.init, hljs
README FilesREADME.md, README.zh-CN.md, README.ja.md, language navigation links, footer attribution
Skill FilesSKILL.md, SKILL.zh-CN.md, SKILL.ja.md for each skill
Skills ConfigEach skill configured in main.js SKILLS object

Sample Output:

╔════════════════════════════════════════════════════════════╗
║     share-skill Documentation Verification Script          ║
╚════════════════════════════════════════════════════════════╝

Repository: /Users/username/Codes/skills

── 1. Directory Structure ──
  ✓ docs/index.html exists
  ✓ docs/js/main.js exists
  ✓ docs/css/custom.css exists
  ✓ docs/CNAME exists (custom domain configured)

── 2. index.html Structure ──
  ✓ Favicon element with id='favicon'
  ✓ Navbar brand with id='repoLink'
  ...

════════════════════════════════════════════════════════════
                        Summary
════════════════════════════════════════════════════════════

  Passed:  71
  Failed:  0
  Warnings: 0

✓ All required checks passed!

Exit Codes:

  • 0: All checks passed
  • 1: One or more checks failed

When to Run

Run the verification script:

  • After generating documentation with /share-skill docs
  • Before committing documentation changes
  • When troubleshooting documentation issues
  • As part of CI/CD pipeline for documentation

平台分布

Claude Code

29.57%
按下载量换算34

OpenCode

23.21%
按下载量换算27

Antigravity

18.04%
按下载量换算21

Codex

12.76%
按下载量换算15

Gemini CLI

8.86%
按下载量换算10

windsurf

3.11%
按下载量换算4

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/guo-yu/skills --skill share-skill;npx skills add guo-yu/skills --skill "share-skill" 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。

继续浏览同类 Skills