mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-22 11:25:13 +00:00
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>
This commit is contained in:
84
.schemas/collection.schema.json
Normal file
84
.schemas/collection.schema.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"$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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user