AgentSkillsCN

admin-skills

在 AI 编码客户端(Claude Code、Cursor、Windsurf、Gemini CLI、OpenCode)间实现技能注册与管理。通过 profile.skills{} 读取技能清单,并按客户端分别追踪技能安装情况。 适用于:安装技能、在各客户端间同步技能、审计技能版本、管理技能市场。

SKILL.md
--- frontmatter
name: admin-skills
description: |
  Skill registry management across AI coding clients (Claude Code, Cursor, Windsurf, Gemini CLI, OpenCode).
  Profile-aware - reads skill inventory from profile.skills{} and tracks installations per client.

  Use when: installing skills, syncing across clients, auditing skill versions, managing marketplaces.
license: MIT
source: plugin

Skill Registry Management

CRITICAL MUST: Secrets and .env

  • NEVER store live .env files or credentials inside any skill folder.
  • .env.template files belong only in templates/ within a skill.
  • Store live secrets in ~/.admin/.env (or another non-skill location you control) and reference them from there.

Requires: Device profile from admin skill


Profile-First Approach

Skills tracked in central registry:

powershell
# Registry location
$AdminProfile.paths.skillsRegistry
# "C:/Users/Owner/.admin/skills-registry.json"

# Installed skills
$Registry.installedSkills | Format-Table Name, Source, Clients, Status
bash
jq '.installedSkills' "$SKILLS_REGISTRY_PATH"

Registry Schema

json
{
  "schemaVersion": "1.0",
  "clients": { ... },           // Known AI clients
  "skillSources": { ... },      // Marketplaces/repos
  "installedSkills": { ... },   // Per-skill tracking
  "clientInstallations": { ... }, // Per-client summary
  "installMethods": { ... },    // How to install
  "syncHistory": [ ... ]        // Audit trail
}

Template: templates/skills-registry.json


Quick Reference: Clients

ClientInstall MethodSkills PathCapabilities
Claude Codeplugin marketplace~/.claude/skills/skills, commands, agents
Claude Desktopmanual/MCPN/Askills (via MCP)
Cursor.cursorrules~/.cursor/rules/rules only
OpenCodesymlink~/.config/opencode/skills/skills
Windsurfrules file~/.windsurf/rules only
Gemini CLIAGENTS.mdproject rootagents

List Installed Skills

powershell
$registry = Get-Content $AdminProfile.paths.skillsRegistry | ConvertFrom-Json

$registry.installedSkills.PSObject.Properties | ForEach-Object {
    [PSCustomObject]@{
        Name = $_.Name
        Source = $_.Value.source
        Clients = ($_.Value.clients -join ", ")
        Status = $_.Value.status
        Version = $_.Value.version
    }
} | Format-Table
bash
jq -r '.installedSkills | to_entries[] | [.key, .value.source, .value.status] | @tsv' "$SKILLS_REGISTRY_PATH" | column -t

Install Skill to Claude Code

Via Marketplace (Recommended)

bash
# Add marketplace (one-time)
/plugin marketplace add evolv3-ai/vibe-skills

# Install bundle
/plugin install admin

# Or individual skill
/plugin install ./skills/admin-skills

Update Registry After Install

powershell
$registry = Get-Content $AdminProfile.paths.skillsRegistry | ConvertFrom-Json

$registry.installedSkills["admin-skills"] = @{
    source = "evolv3-ai/vibe-skills"
    version = "1.0.0"
    installDate = (Get-Date -Format "yyyy-MM-dd")
    installMethod = "plugin"
    bundle = "admin"
    clients = @("claude-code")
    status = "active"
    lastVerified = (Get-Date -Format "yyyy-MM-dd")
    notes = "Skill registry management"
}

$registry.lastUpdated = (Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ")
$registry | ConvertTo-Json -Depth 10 | Set-Content $AdminProfile.paths.skillsRegistry

Sync Skill to Other Clients

Export for Cursor/Windsurf

bash
# Export skill content to rules format
SKILL_PATH="$HOME/.claude/skills/admin-skills"
TARGET="$HOME/.cursor/rules/admin-skills.md"

# Copy with header
echo "# admin-skills (from evolv3-ai/vibe-skills)" > "$TARGET"
cat "$SKILL_PATH/SKILL.md" >> "$TARGET"

# Update registry
# Mark as installed on cursor client

Export for Gemini CLI

bash
# Skills become agents in AGENTS.md format
# Append to project's AGENTS.md
cat >> AGENTS.md << 'EOF'

## admin-skills Agent
Source: evolv3-ai/vibe-skills
Purpose: Skill registry management
EOF

Audit Skills

Check All Installed

powershell
function Test-SkillsHealth {
    $registry = Get-Content $AdminProfile.paths.skillsRegistry | ConvertFrom-Json

    foreach ($skill in $registry.installedSkills.PSObject.Properties) {
        $name = $skill.Name
        $info = $skill.Value

        # Check if skill files exist
        $skillPath = "$($AdminProfile.paths.claudeSkills)/$name"
        $exists = Test-Path $skillPath

        [PSCustomObject]@{
            Skill = $name
            Source = $info.source
            Status = $info.status
            FilesExist = $exists
            LastVerified = $info.lastVerified
        }
    }
}

Test-SkillsHealth | Format-Table

Verify Against Source

bash
# Check if local skill matches source version
SKILL="admin-skills"
SOURCE="evolv3-ai/vibe-skills"

# Get source version (from GitHub)
REMOTE_VERSION=$(curl -s "https://raw.githubusercontent.com/$SOURCE/main/skills/$SKILL/SKILL.md" | grep -oP 'version:\s*"\K[^"]+')

# Get local version
LOCAL_VERSION=$(jq -r ".installedSkills[\"$SKILL\"].version" "$SKILLS_REGISTRY_PATH")

echo "Local: $LOCAL_VERSION, Remote: $REMOTE_VERSION"

Remove Skill

From Claude Code

bash
# Remove symlink or plugin
rm -rf ~/.claude/skills/skill-name

# Or via plugin
/plugin uninstall skill-name

Update Registry

powershell
$registry = Get-Content $AdminProfile.paths.skillsRegistry | ConvertFrom-Json

# Mark as removed (keep history)
$registry.installedSkills["skill-name"].status = "removed"
$registry.installedSkills["skill-name"].clients = @()

# Or fully remove
$registry.installedSkills.PSObject.Properties.Remove("skill-name")

$registry | ConvertTo-Json -Depth 10 | Set-Content $AdminProfile.paths.skillsRegistry

Marketplace Management

List Configured Marketplaces

powershell
$registry = Get-Content $AdminProfile.paths.skillsRegistry | ConvertFrom-Json
$registry.skillSources | Format-List

Add New Marketplace

powershell
$registry.skillSources["my-org/skills"] = @{
    type = "marketplace"
    url = "https://github.com/my-org/skills"
    description = "My organization's skills"
    bundles = @("custom")
    default = $false
}

$registry | ConvertTo-Json -Depth 10 | Set-Content $AdminProfile.paths.skillsRegistry

Sync History

Track all changes:

powershell
$registry.syncHistory += @{
    date = (Get-Date -Format "yyyy-MM-dd")
    action = "install"
    source = "evolv3-ai/vibe-skills"
    changes = @("Added admin-skills v1.0.0")
}

View history:

bash
jq '.syncHistory | reverse | .[0:10]' "$SKILLS_REGISTRY_PATH"

Integration with admin Profile

Add to Device Profile

powershell
# Add skills registry path to device profile
$AdminProfile.paths.skillsRegistry = "$($AdminProfile.paths.adminRoot)/skills-registry.json"
$AdminProfile | ConvertTo-Json -Depth 10 | Set-Content $AdminProfile.paths.deviceProfile

# Initialize registry if needed
if (-not (Test-Path $AdminProfile.paths.skillsRegistry)) {
    Copy-Item "templates/skills-registry.json" $AdminProfile.paths.skillsRegistry
}

Cross-Reference with MCP

Skills that provide MCP tools should be tracked in both registries:

powershell
# If skill adds MCP server, update both
$AdminProfile.mcp.servers["skill-mcp"] = @{ ... }
$registry.installedSkills["skill-mcp-provider"].mcpServer = "skill-mcp"

References

  • references/REGISTRY_SCHEMA.md - Full schema documentation
  • references/CLIENT_COMPATIBILITY.md - Per-client installation guides
  • references/SYNC_PATTERNS.md - Multi-client sync strategies

Scripts

ScriptPurpose
Update-SkillsRegistry.ps1PowerShell registry updater
sync-skills.shBash multi-client sync
audit-skills.ps1Health check all skills

Related Skills

SkillPurpose
adminDevice profile orchestrator
admin-mcpMCP server management