mirror of
https://github.com/Heretek-AI/awesome-opencode.git
synced 2026-11-07 10:45:57 -10:00
Entries gain a fixed kind and 1-3 topics (replacing 374 one-off tags as the categorization axis), an OpenCode API compat field (required for plugins), and npm/path for packages and monorepo folders. repo must be a repository root; unknown fields such as install: or repository: are rejected. Cross-entry rules (one entry per repo+path, kind must fit the category, no placeholder owners or mojibake) live in scripts/utils/catalog.js, and validate.js now always loads the whole catalog and fails on unparseable YAML. Adds npm run fmt for canonical formatting and drops the unused glob dependency. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Examples
This directory contains exemplar YAML files showing the full schema for each extension type.
These are reference examples, not actual entries.
Usage
When adding a new entry to data/{category}/, use the corresponding example as a reference:
| Adding to... | Reference |
|---|---|
data/plugins/ |
plugin.yaml |
data/themes/ |
theme.yaml |
data/agents/ |
agent.yaml |
data/projects/ |
project.yaml |
data/resources/ |
resource.yaml |
data/projects/ (kind: fork) |
fork.yaml |
Required vs Optional Fields
Required (all entries must have)
name- Display namerepo- Repository URL (https://github.com/...)tagline- Short description (max 120 chars)description- Full description (can be multi-line)
Optional (include if relevant)
scope- Installation scope:[global],[project], or[global, project](defaults to[global])tags- Array of strings for filteringmin_version- Minimum OpenCode version (semver)homepage- Documentation URL if different from repoinstallation- Markdown installation instructions
Notes
- Type is derived from directory - No
typefield needed; it's inferred from the folder - Scope is optional - Defaults to
[global]; add if project-level install is relevant - Installation is markdown - Use headers, code blocks, lists as needed
- Schema allows additional fields - Future fields can be added without breaking existing entries