askill
admin-skills

admin-skillsSafety --Repository

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.

0 stars
1.2k downloads
Updated 2/3/2026

Package Files

Loading files...
SKILL.md

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:

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

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

Registry Schema

{
  "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

$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
jq -r '.installedSkills | to_entries[] | [.key, .value.source, .value.status] | @tsv' "$SKILLS_REGISTRY_PATH" | column -t

Install Skill to Claude Code

Via Marketplace (Recommended)

# 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

$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

# 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

# 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

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

# 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

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

# Or via plugin
/plugin uninstall skill-name

Update Registry

$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

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

Add New Marketplace

$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:

$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:

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

Integration with admin Profile

Add to Device Profile

# 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:

# 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

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

AI review pending.

Metadata

Licenseunknown
Version-
Updated2/3/2026
Publisherevolv3ai

Tags

githubllmtesting