awesome-copilot/.schemas/collection.schema.json
Copilot dfe63f4542
Implement Collections feature for grouping related prompts, instructions, and chat modes (#232)
* Initial plan

* Implement core Collections feature with YAML parsing and README generation

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* Complete Collections feature implementation with validation, tooling, and documentation

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* Update generated README files to include collections instructions

* Fix YAML parsing logic bug: replace impossible condition with proper indentation check

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* Refactor: Extract YAML parser to shared module and improve user experience

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* fixing task and file permissions

* Better args handling

* Adding some more collections

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Co-authored-by: Aaron Powell <me@aaron-powell.com>
2025-09-17 10:15:34 +10:00

84 lines
2.3 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Collection Manifest",
"description": "Schema for awesome-copilot collection manifest files",
"type": "object",
"required": ["id", "name", "description", "items"],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the collection",
"pattern": "^[a-z0-9-]+$",
"minLength": 1,
"maxLength": 50
},
"name": {
"type": "string",
"description": "Display name for the collection",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"description": "Description of what this collection contains",
"minLength": 1,
"maxLength": 500
},
"tags": {
"type": "array",
"description": "Optional tags for discovery",
"items": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"minLength": 1,
"maxLength": 30
},
"uniqueItems": true,
"maxItems": 10
},
"items": {
"type": "array",
"description": "List of items in this collection",
"minItems": 1,
"maxItems": 50,
"items": {
"type": "object",
"required": ["path", "kind"],
"additionalProperties": false,
"properties": {
"path": {
"type": "string",
"description": "Relative path from repository root to the item file",
"pattern": "^(prompts|instructions|chatmodes)\/[^\/]+\\.(prompt|instructions|chatmode)\\.md$",
"minLength": 1
},
"kind": {
"type": "string",
"description": "Type of the item",
"enum": ["prompt", "instruction", "chat-mode"]
}
}
},
"uniqueItems": true
},
"display": {
"type": "object",
"description": "Optional display settings for the collection",
"additionalProperties": false,
"properties": {
"ordering": {
"type": "string",
"description": "How to order items in the collection",
"enum": ["manual", "alpha"],
"default": "alpha"
},
"show_badge": {
"type": "boolean",
"description": "Whether to show collection badge on items",
"default": false
}
}
}
}
}