npx skills add ...
npx skills add github/spec-kit --skill add-community-extension
npx skills add github/spec-kit --skill add-community-extension
Add a community extension to the Spec Kit catalog from a GitHub issue submission. USE FOR: processing extension submission issues, validating catalog entries, updating catalog.community.json and docs/community/extensions.md, creating PRs. DO NOT USE FOR: creating new extensions from scratch, or first-party extension work.
Process an extension submission issue and add or update it in the community catalog.
[Extension] submission issue is filedextensions/catalog.community.json and docs/community/extensions.mdRead the GitHub issue to extract all metadata:
Check all of the following (per extensions/EXTENSION-PUBLISHING-GUIDE.md):
| Check | How |
|---|---|
| Repository exists and is public | Fetch the repository URL |
extension.yml manifest present | Confirm in repo file listing |
| README.md present | Confirm in repo file listing |
| LICENSE file present | Confirm in repo file listing |
| GitHub release exists matching version | Check releases on the repo page |
| Download URL is accessible | Verify it follows archive/refs/tags/vX.Y.Z.zip pattern and release exists |
| Extension ID is lowercase-with-hyphens only | Regex: ^[a-z][a-z0-9-]*$ |
| Version follows semver | Format: X.Y.Z |
| Submission checklists are all checked | Confirm in issue body |
Search extensions/catalog.community.json for the extension ID.
extensions/catalog.community.jsonNew extension: Insert the entry in alphabetical order by extension ID.
Update: Replace the existing entry in-place. Update only the fields that changed (typically version, download_url, description, provides, requires, tags, updated_at). Preserve created_at and downloads/stars from the existing entry.
Use the existing entries as the format template. Required fields:
Category — free-form string; common values: docs, code, process, integration, visibility
Effect — one of: read-only, read-write
If the extension has optional tool dependencies, add a "tools" array inside "requires":
Also update the top-level "updated_at" timestamp in the catalog.
After editing, validate the JSON by running:
docs/community/extensions.md community extensions tableNew extension: Insert a new row into the # Community Extensions table in alphabetical order by extension name.
Update: Find the existing row and update the description or other changed fields in-place.
Determine the category and effect from the extension's behavior:
Category — free-form; common values: docs, code, process, integration, visibility
Effect — write canonical values read-only or read-write in extension.yml and catalog.community.json; use Read-only/Read+Write only for the docs table display
Use add- for new extensions, update- for updates:
Then create a PR to upstream (github/spec-kit) with:
Add <Name> extension to community catalog (or Update <Name> extension to v<version>)Closes #<issue-number>, and cc @<issue-author><fork-owner>:<branch-name>mainupdated_at — the top-level timestamp in catalog.community.json must be refreshed.Closes not Fixes — Closes #N is the correct keyword for submission issues.created_at on updates — keep the original created_at value; only change updated_at.downloads and stars on updates — these reflect usage metrics and must not be reset."tools": [{ "name": "<tool>", "required": false }]python3 -c "import json; json.load(open('extensions/catalog.community.json')); print('Valid JSON')"| <Name> | <Description> | `<category>` | <Effect> | [<repo-name>](<repository-url>) |# New extension
git checkout -b add-<extension-id>-extension
# Update
git checkout -b update-<extension-id>-extensiongit add extensions/catalog.community.json docs/community/extensions.md
# New extension
git commit -m "Add <Name> extension to community catalog
Add <id> extension submitted by @<issue-author> to:
- extensions/catalog.community.json (alphabetical order)
- docs/community/extensions.md community extensions table
Closes #<issue-number>"
# Update
git commit -m "Update <Name> extension to v<version>
Update <id> extension submitted by @<issue-author>:
- extensions/catalog.community.json (version, download_url, etc.)
- docs/community/extensions.md community extensions table
Closes #<issue-number>"
git push origin <branch-name>