agentsclimarketplace

Skill management

Skill rooftop-Owl/skill-factory/skills/skill-management

Use when importing, removing, listing, or validating agent skills. Covers the full skill lifecycle — install from skills.sh or GitHub, resolve symlinks, track provenance in manifest, remove cleanly with archival, and validate against agentskills.io spec.From its SKILL.md

Install
npx -y skills add rooftop-Owl/skill-factory --skill skill-management

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

4 things to look at

  • skips confirmationTells the agent to proceed without asking first, 1 time: "npx --yes skills add <owner/repo> --yes".
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 7 commands, including `mkdir -p .claude/skill-factory` and 6 more.
  • fetches URLsInstructs the agent to fetch 1 URL, including https://github.com/<owner/repo>.

SKILL.md

4.5 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Skill Management

Core procedures for managing imported skills across any agent platform.

Manifest

All imported skills are tracked in .claude/skill-factory/manifest.json:

{
  "imports": [
    {
      "name": "brainstorming",
      "source_repo": "obra/superpowers",
      "imported_at": "2026-03-24T12:00:00Z",
      "path": ".claude/skills/brainstorming/"
    }
  ]
}

Create the manifest if it doesn't exist:

mkdir -p .claude/skill-factory
echo '{"imports":[]}' > .claude/skill-factory/manifest.json

Import Procedure

Prerequisites

Check before importing: command -v npx or command -v git. At least one is required.

Primary Path (npx)

npx --yes skills add <owner/repo> --yes

After npx completes, resolve any symlinks it created:

for link in $(find .claude/skills/ -maxdepth 1 -type l 2>/dev/null); do
  target=$(readlink -f "$link")
  rm "$link"
  cp -r "$target" "$link"
done

Fallback Path (git clone — when npx is unavailable)

git clone --depth=1 https://github.com/<owner/repo> /tmp/skill-import
for skill_dir in /tmp/skill-import/skills/*/; do
  name=$(basename "$skill_dir")
  if [ -f "$skill_dir/SKILL.md" ]; then
    cp -r "$skill_dir" ".claude/skills/$name/"
  fi
done
rm -rf /tmp/skill-import

Post-Import

After installing, register each new skill in the manifest:

python3 -c "
import json, sys
from datetime import datetime, timezone
manifest_path = '.claude/skill-factory/manifest.json'
try:
    manifest = json.load(open(manifest_path))
except (FileNotFoundError, json.JSONDecodeError):
    manifest = {'imports': []}
manifest['imports'].append({
    'name': sys.argv[1],
    'source_repo': sys.argv[2],
    'imported_at': datetime.now(timezone.utc).isoformat(),
    'path': f'.claude/skills/{sys.argv[1]}/'
})
json.dump(manifest, open(manifest_path, 'w'), indent=2)
" "<skill-name>" "<owner/repo>"

Same-Session Use

Newly installed skills won't appear in load_skills until the next session. To use immediately, read the skill content and inject it into your prompt:

skill_content = read(".claude/skills/<name>/SKILL.md")
# Include skill_content at the top of your task prompt

Remove Procedure

  1. Validate the skill name: must match ^[a-z0-9]+(-[a-z0-9]+)*$
  2. Check manifest: only remove skills tracked in .claude/skill-factory/manifest.json
  3. Delete the skill directory:
    # Symlink-aware removal
    if [ -L ".claude/skills/<name>" ]; then
      rm ".claude/skills/<name>"
    else
      rm -rf ".claude/skills/<name>/"
    fi
    
  4. Archive the manifest entry (add removed_at, do NOT delete the entry):
    python3 -c "
    import json
    from datetime import datetime, timezone
    m = json.load(open('.claude/skill-factory/manifest.json'))
    for e in m['imports']:
        if e.get('name') == '$NAME' and 'removed_at' not in e:
            e['removed_at'] = datetime.now(timezone.utc).isoformat()
    json.dump(m, open('.claude/skill-factory/manifest.json', 'w'), indent=2)
    "
    

Validate Procedure

Check a skill against the agentskills.io spec:

  1. Frontmatter exists: file starts with --- and has a closing ---
  2. name field: required, matches ^[a-z0-9]+(-[a-z0-9]+)*$, max 64 chars
  3. description field: required, max 1024 chars
  4. Name matches directory: name field value == parent directory name
  5. No disallowed top-level keys: only name, description, license, metadata allowed

List Procedure

Read .claude/skill-factory/manifest.json and display:

  • Name, source repo, import date, status (active if no removed_at, removed otherwise)
  • If manifest doesn't exist: "No imported skills. Use /skills-install to add some."

When to Load This Skill

Load skill-management when:

  • User asks to install, import, or add skills from external sources
  • User asks to remove, uninstall, or delete an imported skill
  • User asks to list, show, or check imported skills
  • User asks to validate a skill file
  • Any command references the import manifest

Not needed when:

  • Creating a new skill from scratch (use skill-development)
  • Searching for skills to install (use /skills-search command)
  • Understanding 3-tier acquisition decision flow (use external-skill-acquisition)

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.