Skip to content

Commit 13e16b5

Browse files
mnriemCopilot
andcommitted
feat: add category and effect as first-class fields in extension schema
Add `category` and `effect` as optional fields in the extension schema (`extension.yml`) and community catalog (`catalog.community.json`). Schema changes: - Valid categories: docs, code, process, integration, visibility - Valid effects: read-only, read-write - Both fields are optional (backward-compatible with existing extensions) - Validation raises ValidationError for invalid values when present Propagation: - Added `category` and `effect` to all 108 entries in catalog.community.json (populated from the existing docs/community/extensions.md table) - Updated extension template with commented category/effect fields - Updated add-community-extension skill with new JSON template fields - Updated `specify extension info` CLI output to display category/effect - Added properties to ExtensionManifest class Tests: - test_valid_category: all 5 category values pass - test_valid_effect: both effect values pass - test_invalid_category: invalid value raises ValidationError - test_invalid_effect: invalid value raises ValidationError - test_category_and_effect_optional: omitting fields still works Closes #2874 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent d977fee commit 13e16b5

7 files changed

Lines changed: 339 additions & 3 deletions

File tree

.github/skills/add-community-extension/SKILL.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ Use the existing entries as the format template. Required fields:
7070
"documentation": "<documentation>",
7171
"changelog": "<changelog>",
7272
"license": "<license>",
73+
"category": "<category>",
74+
"effect": "<effect>",
7375
"requires": {
7476
"speckit_version": "<speckit_version>"
7577
},
@@ -87,6 +89,9 @@ Use the existing entries as the format template. Required fields:
8789
}
8890
```
8991

92+
**Category** — one of: `docs`, `code`, `process`, `integration`, `visibility`
93+
**Effect** — one of: `read-only`, `read-write`
94+
9095
If the extension has optional tool dependencies, add a `"tools"` array inside `"requires"`:
9196

9297
```json

docs/community/extensions.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ The following community-contributed extensions are available in [`catalog.commun
2020
- `Read-only` — produces reports without modifying files
2121
- `Read+Write` — modifies files, creates artifacts, or updates specs
2222

23+
> [!TIP]
24+
> Extension authors can declare `category` and `effect` in their `extension.yml` under the `extension:` block. These fields are also available in `catalog.community.json` for tooling and the CLI (`specify extension info`).
25+
2326
| Extension | Purpose | Category | Effect | URL |
2427
|-----------|---------|----------|--------|-----|
2528
| Agent Assign | Assign specialized Claude Code agents to spec-kit tasks for targeted execution | `process` | Read+Write | [spec-kit-agent-assign](https://github.com/xymelon/spec-kit-agent-assign) |

0 commit comments

Comments
 (0)