Awesome-omni-skill skill-manager
Manage, sync, and publish Agent Skills across multiple AI platforms (Claude, Codex, Gemini, Copilot) and marketplace repositories. Use when users want to list skills, sync between platforms, publish to marketplace keys, mirror canonical skills, audit drift, or set up their environment. Triggers on phrases like "list skills", "sync skills", "publish skill", "skill marketplace", "deploy skill", "audit skills", or "skill inventory".
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/skill-manager" ~/.claude/skills/diegosouzapw-awesome-omni-skill-skill-manager && rm -rf "$T"
skills/data-ai/skill-manager/SKILL.mdSkill Manager
Manage Agent Skills across multiple AI platforms and tiered marketplace repositories.
Core Capabilities
- Multi-Platform Sync - Deploy skills across Claude Code, OpenAI Codex, Gemini CLI, and GitHub Copilot
- Inventory - Discover and list all skills across platform locations
- Publish - Push skills to tiered GitHub marketplace repositories (private/team/public)
- Marketplace Distribute - Make marketplace-installed skills available to other AI platforms via symlinks
- Audit - Compare skill versions, detect drift, identify inconsistencies
- Validate - Check skill compliance with the Agent Skills specification
Source of Truth: How Syncing Works
Skill-manager uses a single source of truth model. You designate one platform as your "source" where you create and edit skills, and skill-manager syncs them one-way to other platforms.
Why one-way sync?
- Prevents conflicts when the same skill exists on multiple platforms
- Clear ownership: you always know where the authoritative version lives
- Simple mental model: edit in one place, distribute everywhere
Example: If Claude Code is your source of truth:
- Create and edit skills in
~/.claude/skills/ - Run
to distribute to Codex, Gemini, Copilotscripts/sync.py --all - Skills created directly in
will NOT sync back to Claude~/.codex/skills/
If you accidentally create a skill on the wrong platform:
- Copy it manually to your source platform's skills directory
- Run sync to distribute it properly
- Optionally delete the original from the non-source platform
To change your source of truth: Edit
config.json and set "is_source": true on your preferred platform (and false on all others), or re-run scripts/init.py.
Supported Platforms
| Platform | User Skills Path | Detection |
|---|---|---|
| Claude Code | | exists |
| OpenAI Codex | | exists |
| Gemini CLI | | exists |
| GitHub Copilot | | exists |
Quick Start
First-Time Setup
Run the interactive setup wizard:
scripts/init.py
This will:
- Detect installed AI platforms on your system
- Choose which platform is your "source of truth"
- Configure which platforms to sync skills to
- Set sync mode (symlink or copy)
- Optionally configure marketplace repositories
Sync Skills Between Platforms
After setup, sync a skill from your source platform to all configured targets:
scripts/sync.py ~/.claude/skills/my-skill
Or sync all skills at once:
scripts/sync.py --all
Options:
- Override target platforms--to claude,codex,gemini,copilot
- Auto-detect installed platforms--to auto
- Sync to all known platforms--to all
- Override sync mode--mode symlink|copy
- Preview changes without applying--dry-run
- Overwrite existing skills without prompting--force
- Sync all skills from source platform--all
List All Skills
scripts/inventory.py
Options:
- Filter by platform--platform claude|codex|gemini|copilot|all
- Output format--format table|json|yaml
- Show full paths and metadata--verbose
- Include selected source(s), repeatable--source global|project|marketplace
- Exclude selected source(s), repeatable--exclude-source global|project|marketplace
- Single-source shortcuts--global-only|--project-only|--marketplace-only
- Exclude marketplace entries--no-marketplace
- Backward-compatible alias (marketplace is already included by default)--include-marketplace
Inventory Behavior
- Default
output includes all discovered sources:scripts/inventory.py- global skills
- project skills
- marketplace skills
- Use source flags only when you want to narrow results.
- Legacy include forms remain supported:
--include-marketplace--include marketplace--include=marketplace
Marketplace System
skill-manager works with marketplace keys from config.json (for example: private, team, public, three-dna, enterprise-core). Keys are identifiers only; repository names and plugin names can be arbitrary.
Publish a Skill
scripts/publish.py ~/.claude/skills/my-skill --to team
This will:
- Copy the skill to your team marketplace repo
- Update marketplace.json
- Update the README.md "Available Skills" table (for new skills)
- Create a PR for review
- Sync to other platforms (if configured)
If you don't specify
--to, you'll be prompted to choose.
Note on README updates: When publishing a new skill, the README.md is automatically updated with the skill's entry in the "Available Skills" table. For updates to existing skills, README changes are optional and only made if the skill's description has changed.
Sync Marketplace Repos
Pull latest from your marketplace repositories:
scripts/marketplace-sync.py scripts/marketplace-sync.py --marketplace team scripts/marketplace-sync.py --status scripts/marketplace-sync.py --branch master scripts/marketplace-sync.py --auto-stash
Mirror Canonical Skills to Another Marketplace
Mirror from a canonical source ref (
tag, branch, or commit) into a target marketplace with manifest and README updates:
scripts/marketplace-mirror.py mirror --from public --to three-dna --source-ref v1.2.0 scripts/marketplace-mirror.py mirror --from public --to three-dna --source-ref 8ab12cd --skill skill-manager scripts/marketplace-mirror.py mirror --from public --to three-dna --source-ref main --dry-run
Generate drift reports at any time:
scripts/marketplace-mirror.py drift --from public --to three-dna scripts/marketplace-mirror.py drift --from public --to three-dna --source-ref v1.2.0
Distribute Marketplace Skills to Other Platforms
Make skills from your local marketplace clones available to other AI assistants (Codex, Gemini, Copilot) via symlinks. Claude Code is skipped by default since it has native marketplace access.
scripts/marketplace-distribute.py # Distribute all marketplace skills scripts/marketplace-distribute.py --marketplace team # Only from team marketplace scripts/marketplace-distribute.py --skill my-skill # Only distribute one skill scripts/marketplace-distribute.py --to codex,gemini # Only to specific platforms scripts/marketplace-distribute.py --dry-run # Preview what would happen scripts/marketplace-distribute.py --list # List available marketplace skills scripts/marketplace-distribute.py --status # Show distribution status
Options:
- Only distribute from specific marketplace--marketplace NAME
- Only distribute a specific skill by name--skill NAME
- Target platforms: codex, gemini, copilot, all--to PLATFORMS
- Also create symlinks for Claude (normally skipped)--include-claude
- Preview changes without applying--dry-run
- Overwrite existing skills without prompting--force
- List available marketplace skills--list
- Show current distribution status--status
How it works:
- Scans your local marketplace repo clones under
fromlocal_repos_pathconfig.json - Creates symlinks in target platform skill directories pointing to marketplace skills
- Skips Claude Code by default (it already has access via the plugin system)
Audit Skills for Drift
scripts/audit.py <skill-name> scripts/audit.py --all
Validate a Skill
scripts/validate.py <skill-path>
Operator Quick Commands
# List scripts/inventory.py # Publish scripts/publish.py ~/.claude/skills/my-skill --to team # Mirror scripts/marketplace-mirror.py mirror --from public --to team --source-ref main --skill my-skill # Audit/drift scripts/marketplace-mirror.py drift --from public --to team
Configuration
Configuration is stored in
config.json:
{ "platforms": { "claude": { "enabled": true, "user_path": "~/.claude/skills", "is_source": true }, "codex": { "enabled": true, "user_path": "~/.codex/skills", "is_source": false }, "gemini": { "enabled": false, "user_path": "~/.gemini/skills", "is_source": false }, "copilot": { "enabled": false, "user_path": "~/.copilot/skills", "is_source": false } }, "sync_mode": "symlink", "marketplaces": { "private": { "repo": "https://github.com/you/skills-private", "description": "Personal/experimental skills", "visibility": "private" }, "team": { "repo": "https://github.com/your-org/skills-team", "description": "Shared skills for collaborators", "visibility": "private" }, "public": { "repo": "https://github.com/your-org/skills-public", "description": "Freely available skills", "visibility": "public" } }, "owner": { "name": "Your Name", "email": "you@example.com" }, "local_repos_path": "~/GitHub" }
Config Fields
| Field | Description |
|---|---|
| Platform configurations (enabled, path, source) |
| Default sync mode: or |
| GitHub repo URLs keyed by marketplace name |
| Your name and email for commits |
| Where marketplace repos are cloned |
Marketplace Repository Structure
Each marketplace repo follows this structure:
<repository-name>/ ├── .claude-plugin/ │ └── marketplace.json # Plugin catalog ├── skills/ │ ├── skill-one/ │ │ ├── SKILL.md │ │ └── scripts/ │ └── skill-two/ │ └── SKILL.md └── README.md
marketplace.json Format
{ "name": "skills-team", "owner": { "name": "Your Name", "email": "you@example.com" }, "metadata": { "description": "Shared skills for collaborators", "version": "1.0.0" }, "plugins": [ { "name": "skills-team", "description": "Shared skills for collaborators", "source": "./", "strict": false, "skills": [ "./skills/skill-one", "./skills/skill-two" ] } ] }
Workflow: Publishing Skills
Step 1: Develop Locally
Create and test your skill in your source platform's skills directory:
my-skill/ ├── SKILL.md # Required ├── scripts/ # Optional ├── references/ # Optional └── assets/ # Optional
Step 2: Validate
scripts/validate.py ~/.claude/skills/my-skill
Step 3: Publish
scripts/publish.py ~/.claude/skills/my-skill --to team
Step 4: Merge PR
Review and merge the PR created in your marketplace repo.
Step 5: Users Install
Users add your marketplace and install:
/plugin marketplace add your-org/your-marketplace-repo
Then browse skills in the
/plugin UI under the Discover tab.
Cross-Platform Skill Development
Writing Portable Skills
- Avoid hardcoding platform-specific paths
- Use environment detection if behavior must differ
- Test on multiple platforms before publishing
Sync Modes
| Mode | Pros | Cons |
|---|---|---|
| symlink | Changes propagate instantly, saves disk space | Requires symlink support |
| copy | Works everywhere, independent copies | Must re-sync to propagate changes |
Skill Specification Compliance
| Field | Required | Max Length | Rules |
|---|---|---|---|
| Yes | 64 chars | Lowercase, hyphens, digits only |
| Yes | 1024 chars | No angle brackets. Include WHAT and WHEN |
| No | - | License name or file reference |
Troubleshooting
Skill Not Appearing After Publish
- Merge the PR - Skills only appear after the PR is merged
- Refresh marketplace - In
UI, go to Marketplaces tab and press/plugin
to updateu - Verify marketplace.json - Check that the skill path is in the plugins array
Sync Not Working
- Check your config:
cat ~/.claude/skills/skill-manager/config.json - Verify source platform is set: look for
"is_source": true - Verify target platforms are enabled: look for
"enabled": true - Run with
to preview:--dry-runscripts/sync.py --all --dry-run
Platform Not Detected
- Ensure the platform is installed and has its config directory
- Check paths in config.json match your system
- Re-run
to reconfigurescripts/init.py
Publish Fails
- Check that
CLI is installed and authenticatedgh - Verify repository URLs in config.json
- Run
to check repo statescripts/marketplace-sync.py --status
Symlink Issues
# Check if symlink is valid ls -la ~/.codex/skills/my-skill # Check target exists ls -la $(readlink ~/.codex/skills/my-skill)
IDE Reload Reminder
After syncing or publishing skills, you may need to reload your IDE window for changes to take effect:
- VS Code:
→ "Reload Window"Cmd+Shift+P - This is required because AI assistants load their skill inventory at startup
See Also
skill - For creating new skills from scratchskill-creator- Agent Skills Specification - Full specification