一键导入
ossd-add-collection
Use when creating a new collection of related projects in oss-directory — by ecosystem, grant round, thematic grouping, or external list
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when creating a new collection of related projects in oss-directory — by ecosystem, grant round, thematic grouping, or external list
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Enrich project metadata (display names, descriptions, websites, Twitter) for a list of projects — from a collection file, explicit slug list, or glob pattern. Dispatches parallel subagents to research each project via GitHub and web search.
Use when adding a logo image for an existing project in oss-directory
Use when adding a new project to oss-directory — creating a YAML file for a new open source project, processing a community PR, or onboarding a project from external data
Use when modifying an existing project or collection in oss-directory — adding fields, updating URLs, fixing errors, renaming projects, or managing collection membership
Use when importing or updating many projects at once from external data sources (APIs, JSON, CSV), or building collections from external rankings and lists
Use when reviewing a community pull request to oss-directory — validating schema compliance, naming conventions, blockchain addresses, and running automated checks before merging
| name | ossd-add-collection |
| description | Use when creating a new collection of related projects in oss-directory — by ecosystem, grant round, thematic grouping, or external list |
You help maintainers create new collections in the oss-directory repository. Collections are groups of related projects organized by ecosystem, grant program, or other meaningful categorization.
Use this skill when:
Do not use this skill when:
add-project skill)update-project skill)All commands assume you're in the oss-directory root. If not already there: cd ~/GitHub/oss-directory
Ask the user for (or extract from provided info):
ethereum-crypto-ecosystems, arb-stip-1, optimism-retro-funding-3Ethereum (Crypto Ecosystems), Arbitrum STIP Round 1, Optimism Retro Funding 3Collections are stored in a flat directory:
data/collections/[collection-name].yamlethereum-crypto-ecosystems.yamlarb-stip-1.yamloptimism-retro-funding-3.yamlBefore creating the collection, verify all project names exist:
# For each project name, verify it exists
find data/projects -name "[project-name].yaml"
If any projects don't exist:
add-project skill)Required format:
version: 7
name: collection-name
display_name: Collection Display Name
projects:
- project-one
- project-two
- project-three
With optional description:
version: 7
name: collection-name
display_name: Collection Display Name
description: Brief description of this collection
projects:
- project-one
- project-two
- project-three
Important:
version: 7.yaml)projects array must have at least 1 itemRun validation in the oss-directory repo:
pnpm run validate
pnpm lint
If there are formatting errors, auto-fix with:
pnpm prettier:write
The validator will check:
Only commit after successful validation.
Commit message format:
Add [Collection Display Name] collection
or
Create [collection-name].yaml
Examples from recent commits:
Create dao-drops.yamlAdd Arbitrum STIP Round 1 collectionGit commands:
git add data/collections/[collection-name].yaml
git commit -m "Add [Collection Display Name] collection"
Do not push unless explicitly requested by the user.
Collections of projects in a blockchain ecosystem:
version: 7
name: arbitrum-ecosystem
display_name: Arbitrum Ecosystem
description: Projects building on Arbitrum
projects:
- aave
- curve
- gmx
- uniswap
Collections of grant recipients:
version: 7
name: optimism-retro-funding-3
display_name: Optimism Retro Funding Round 3
description: Recipients of Optimism Retro Funding Round 3
projects:
- project-a
- project-b
- project-c
Collections grouped by category:
version: 7
name: defi-protocols
display_name: DeFi Protocols
description: Decentralized finance protocols
projects:
- aave
- compound-finance
- curve
- uniswap
Before committing, verify:
name field exactlyversion: 7 is setversion, name, display_name, projectspnpm run validate passespnpm lint passesReferenced project doesn't exist:
find data/projects -name "[project-name].yaml"Duplicate collection name:
ls data/collections/Project name mismatch:
name field in the project file exactlyFormatting errors:
pnpm prettier:write to auto-fixTo find the correct project name (not display name):
# Search by keyword
grep -r "display_name: Keyword" data/projects/
# List all projects
find data/projects -name "*.yaml" -exec basename {} .yaml \;
# Read a specific project file
cat data/projects/[first-char]/[project-name].yaml
CRITICAL: When you have a list of GitHub repository URLs and need to find which oss-directory projects they map to, you MUST use the proper search strategy. Simply looking for filenames matching the org name is insufficient.
Many repos map to projects in non-obvious ways:
defillama GitHub org → defi-llama.yaml project fileargotorg/solidity → solidity-ethereum.yaml (not argotorg.yaml)a16z-crypto/helios, a16z-crypto/magi → single a16z-crypto.yamltransferwise GitHub org → wise.yaml project fileWhen searching for a GitHub URL like github.com/ethereum/go-ethereum:
1. Search for the specific repo URL first:
grep -r "github.com/ethereum/go-ethereum" data/projects/
This finds projects that explicitly list this specific repository, even if the project name doesn't match the org.
2. If not found, search for the org URL:
grep -r "github.com/ethereum" data/projects/
This finds org-level projects that track all repos from that organization.
3. If still not found, try filename match:
find data/projects -name "ethereum.yaml"
This is the fallback for when the project file directly matches the org name.
Example 1: Specific Repo Mapping
# Looking for: github.com/argotorg/solidity
grep -r "github.com/argotorg/solidity" data/projects/
# Returns: data/projects/s/solidity-ethereum.yaml
# This would FAIL:
find data/projects -name "argotorg.yaml"
# Returns: (nothing)
Example 2: Org-Level Project
# Looking for: github.com/succinctlabs/sp1
grep -r "github.com/succinctlabs/sp1" data/projects/
# Returns: (nothing - specific repo not listed)
grep -r "github.com/succinctlabs" data/projects/
# Returns: data/projects/s/succinctlabs.yaml
# (org-level project tracking all succinctlabs repos)
Example 3: Name Variation
# Looking for: github.com/defillama/chainlist
find data/projects -name "defillama.yaml"
# Returns: (nothing)
grep -r "github.com/defillama" data/projects/
# Returns: data/projects/d/defi-llama.yaml
# (project name uses hyphenated version)
When processing multiple GitHub URLs, use this approach:
# Create a list of repos to search
repos=(
"ethereum/go-ethereum"
"argotorg/solidity"
"defillama/chainlist"
)
# For each repo, search in priority order
for repo in "${repos[@]}"; do
org=$(echo "$repo" | cut -d'/' -f1)
echo "Searching for: $repo"
# Try specific repo first
result=$(grep -l "github.com/$repo" data/projects/*/*.yaml 2>/dev/null)
if [ -n "$result" ]; then
echo " Found (specific): $result"
else
# Try org-level
result=$(grep -l "github.com/$org\"" data/projects/*/*.yaml 2>/dev/null)
if [ -n "$result" ]; then
echo " Found (org): $result"
else
# Try filename
result=$(find data/projects -name "$org.yaml" 2>/dev/null)
if [ -n "$result" ]; then
echo " Found (filename): $result"
else
echo " NOT FOUND"
fi
fi
fi
done
a16z-crypto intentionally aggregate multiple repos that could be standaloneWhen you receive a list of GitHub repositories (e.g., grant recipients, ecosystem projects):
version: 7
name: base-ecosystem
display_name: Base Ecosystem
description: Projects building on Base
projects:
- aerodrome
- base-org
- coinbase
- morpho-org
- uniswap
If you need to add projects to an existing collection, use the update-project skill instead.
Within the oss-directory repository:
src/resources/schema/collection.jsondata/collections/data/projects/