Install
$ agentstack add skill-vivy-yi-awesome-skills-metadata-enricher Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Dangerous shell/eval execution.
What it can access
- ✓ Network access No
- ● Filesystem access Used
- ● Shell / process execution Used
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Metadata Enricher
Enriches skills.json with additional metadata fields for better categorization and filtering.
Target Metadata Schema
{
"name": "owner/repo",
"stars": 1234,
"desc": "Description",
"url": "https://github.com/owner/repo",
"category": "code-review", // NEW: primary category
"tags": ["security", "claude"], // NEW: searchable tags
"license": "MIT", // NEW: license type
"language": "Python", // NEW: primary language
"added_date": "2026-04-20", // NEW: when added to collection
"last_updated": "2026-04-25", // NEW: last star/meta update
"source": "trending" // NEW: discovery method
}
Workflow
1. Define Category Taxonomy
cd /Volumes/waku/github-维护/awesome/awesome-skills-repos && \
cat category mapping
CATEGORY_KEYWORDS = {
'code-review': ['review', 'lint', 'quality', 'audit', 'test'],
'web-development': ['frontend', 'backend', 'api', 'http', 'server'],
'data-science': ['ml', 'ai', 'machine-learning', 'deep-learning', 'nlp'],
'devops': ['ci', 'cd', 'docker', 'kubernetes', 'deploy', 'infra'],
'mobile': ['ios', 'android', 'react-native', 'flutter'],
'productivity': ['note', 'write', 'task', 'productivity', 'tool'],
'platform-integration': ['github', 'slack', 'jira', 'feishu', 'lark', 'discord'],
'content-creation': ['blog', 'blog', 'social', 'video', 'content'],
'research': ['paper', 'research', 'academic', 'arxiv', 'knowledge'],
'framework': ['framework', 'agent', 'orchestration', 'workflow', 'harness'],
'skill-tools': ['skill', 'claude-code', 'openclaude', 'codex'],
'security': ['security', 'auth', 'crypto', 'encrypt', 'vulnerability'],
'database': ['database', 'sql', 'nosql', 'db', 'storage'],
}
def infer_category(name, desc, topics):
text = (name + ' ' + desc + ' ' + ' '.join(topics)).lower()
for cat, keywords in CATEGORY_KEYWORDS.items():
if any(k in text for k in keywords):
return cat
return 'other'
enriched = 0
for i, repo in enumerate(to_process):
name = repo.get('name', '')
if not name:
continue
meta = get_metadata(name)
if meta:
repo['license'] = meta['license']
repo['language'] = meta['language']
# Infer category from name + description + topics
inferred_cat = infer_category(
name,
repo.get('desc', ''),
meta.get('topics', [])
)
repo['category'] = inferred_cat
# Auto-generate tags
tags = []
# Platform tags
for platform in ['claude-code', 'claude', 'cursor', 'codex', 'opencode']:
if platform in name.lower() or platform in repo.get('desc', '').lower():
tags.append(platform)
# Language tag
if meta['language'] and meta['language'] != 'Unknown':
tags.append(meta['language'].lower())
# Topic tags (first 3)
tags.extend(meta.get('topics', [])[:3])
repo['tags'] = list(set(tags)) if tags else []
enriched += 1
if (i+1) % 20 == 0:
print(f" Progress: {i+1}/{len(to_process)}")
time.sleep(0.3) # Rate limit courtesy
# Save
with open(REPO_PATH, 'w') as f:
json.dump(repos, f, indent=2, ensure_ascii=False)
print(f"\n=== Enrichment Complete ===")
print(f"Enriched: {enriched}/{len(to_process)}")
# Count categories
categories = {}
for r in repos:
cat = r.get('category', 'unknown')
categories[cat] = categories.get(cat, 0) + 1
print("\nCategory distribution:")
for cat, count in sorted(categories.items(), key=lambda x: -x[1]):
print(f" {cat}: {count}")
PYEOF
3. Review and Validate
cd /Volumes/waku/github-维护/awesome/awesome-skills-repos && \
python3 << 'PYEOF'
import json
with open('skills.json', 'r') as f:
repos = json.load(f)
# Show sample of each category
categories = {}
for r in repos:
cat = r.get('category', 'other')
if cat not in categories:
categories[cat] = []
categories[cat].append(r)
print("=== Category Samples ===\n")
for cat in sorted(categories.keys()):
print(f"## {cat} ({len(categories[cat])} repos)")
for r in categories[cat][:3]:
tags = ', '.join(r.get('tags', [])[:5])
print(f" - {r['name']} [{r.get('language','?')}] tags:{tags}")
print()
PYEOF
4. Commit
cd /Volumes/waku/github-维护/awesome/awesome-skills-repos && \
git diff --stat skills.json | head -5 && \
echo "---" && \
read -p "Commit enrichment? (y/n) " ans && \
if [ "$ans" = "y" ]; then \
git add skills.json && \
git commit -m "feat: enrich skills.json with category, tags, license, language" && \
git push; \
fi
Notes
- Run enrichment after adding many new repos
- Categories are inferred from name/description - manual review recommended for edge cases
- Tags are auto-generated from GitHub topics + inferred keywords
- Can re-run to fill in missing fields without overwriting existing data
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: vivy-yi
- Source: vivy-yi/awesome-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.