feat(schema): refine and expand extension metadata schema

- Introduce `scope`, `tags`, `min_version`, `homepage`, and `installation` fields for enhanced discoverability and guidance.
- Remove `install` and `compatibility` objects, replacing them with a simplified `installation` string field.
- Add `examples/` directory with full exemplar files for each extension type.
- Update `schema-design.md` to reflect new schema, clarify field definitions, and improve documentation structure.
This commit is contained in:
Lucas Shamanic 2026-01-12 23:47:06 +00:00
parent 8f1acd2c7c
commit a806755d0f
9 changed files with 697 additions and 559 deletions

40
examples/README.md Normal file
View file

@ -0,0 +1,40 @@
# 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](plugin.yaml) |
| `data/themes/` | [theme.yaml](theme.yaml) |
| `data/agents/` | [agent.yaml](agent.yaml) |
| `data/projects/` | [project.yaml](project.yaml) |
| `data/resources/` | [resource.yaml](resource.yaml) |
| `data/forks/` | [fork.yaml](fork.yaml) |
## Required vs Optional Fields
### Required (all entries must have)
- `name` - Display name
- `repo` - 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 filtering
- `min_version` - Minimum OpenCode version (semver)
- `homepage` - Documentation URL if different from repo
- `installation` - Markdown installation instructions
## Notes
- **Type is derived from directory** - No `type` field 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