-
Notifications
You must be signed in to change notification settings - Fork 7.8k
docs: Document dual-catalog system for extensions #1689
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,8 +1,74 @@ | ||||||
| # Spec Kit Community Extensions | ||||||
| # Spec Kit Extensions | ||||||
|
|
||||||
| Community-contributed extensions for [Spec Kit](https://github.com/github/spec-kit). | ||||||
| Extension system for [Spec Kit](https://github.com/github/spec-kit) - add new functionality without bloating the core framework. | ||||||
|
|
||||||
| ## Available Extensions | ||||||
| ## Extension Catalogs | ||||||
|
|
||||||
| Spec Kit provides two catalog files with different purposes: | ||||||
|
|
||||||
| ### Your Catalog (`catalog.json`) | ||||||
|
|
||||||
| - **Purpose**: Your organization's curated catalog of approved extensions | ||||||
| - **Default State**: Empty by design - you populate it with extensions you trust | ||||||
| - **Location**: `extensions/catalog.json` in the spec-kit repo | ||||||
| - **Usage**: The `specify extension` commands use this catalog by default | ||||||
| - **Override**: Set `SPECKIT_CATALOG_URL` environment variable to use a different catalog | ||||||
| - **Customization**: Copy extensions from the community catalog or add your own | ||||||
|
|
||||||
| **Example override:** | ||||||
| ```bash | ||||||
| # Point to your organization's catalog | ||||||
| export SPECKIT_CATALOG_URL="https://your-org.com/spec-kit/catalog.json" | ||||||
| specify extension search # Now uses your custom catalog | ||||||
|
mnriem marked this conversation as resolved.
Outdated
|
||||||
| ``` | ||||||
|
|
||||||
| ### Community Reference Catalog (`catalog.community.json`) | ||||||
|
|
||||||
| - **Purpose**: Browse available community-contributed extensions | ||||||
| - **Status**: Active - contains extensions submitted by the community | ||||||
| - **Location**: `extensions/catalog.community.json` | ||||||
| - **Usage**: Reference catalog for discovering available extensions | ||||||
| - **Submission**: Open to community contributions via Pull Request | ||||||
|
|
||||||
| **How It Works:** | ||||||
|
|
||||||
|
mnriem marked this conversation as resolved.
mnriem marked this conversation as resolved.
|
||||||
| ## Making Extensions Available | ||||||
|
|
||||||
| You control which extensions your team can discover and install: | ||||||
|
|
||||||
| ### Option 1: Curated Catalog (Recommended for Organizations) | ||||||
|
|
||||||
| Populate your `catalog.json` with approved extensions: | ||||||
|
|
||||||
| 1. **Discover** extensions from various sources: | ||||||
| - Browse `catalog.community.json` for community extensions | ||||||
| - Find private/internal extensions in your organization's repos | ||||||
| - Discover extensions from trusted third parties | ||||||
| 2. **Review** extensions and choose which ones you want to make available | ||||||
| 3. **Add** those extension entries to your own `catalog.json` | ||||||
| 4. **Team members** can now discover and install them: | ||||||
| - `specify extension search` shows your curated catalog | ||||||
| - `specify extension add <name>` installs from your catalog | ||||||
|
|
||||||
| **Benefits**: Full control over available extensions, team consistency, organizational approval workflow | ||||||
|
|
||||||
| **Example**: Copy an entry from `catalog.community.json` to your `catalog.json`, then your team can discover and install it by name. | ||||||
|
|
||||||
| ### Option 2: Direct URLs (For Ad-hoc Use) | ||||||
|
|
||||||
| Skip catalog curation - team members install directly using URLs: | ||||||
|
|
||||||
| ```bash | ||||||
| specify extension add --from https://github.com/org/spec-kit-ext/archive/refs/tags/v1.0.0.zip | ||||||
| ``` | ||||||
|
|
||||||
| **Benefits**: Quick for one-off testing or private extensions | ||||||
|
|
||||||
| **Tradeoff**: Extensions installed this way won't appear in `specify extension search` for other team members unless you also add them to your `catalog.json`. | ||||||
|
|
||||||
| ## Available Community Extensions | ||||||
|
|
||||||
| The following community-contributed extensions are available in [`catalog.community.json`](catalog.community.json): | ||||||
|
|
||||||
| | Extension | Purpose | URL | | ||||||
| |-----------|---------|-----| | ||||||
|
|
@@ -11,4 +77,43 @@ Community-contributed extensions for [Spec Kit](https://github.com/github/spec-k | |||||
|
|
||||||
|
mnriem marked this conversation as resolved.
|
||||||
| ## Adding Your Extension | ||||||
|
|
||||||
| See the [Extension Publishing Guide](EXTENSION-PUBLISHING-GUIDE.md) for instructions on how to submit your extension to the community catalog. | ||||||
| ### Submission Process | ||||||
|
|
||||||
| To add your extension to the community catalog: | ||||||
|
|
||||||
| 1. **Prepare your extension** following the [Extension Development Guide](EXTENSION-DEVELOPMENT-GUIDE.md) | ||||||
| 2. **Create a GitHub release** for your extension | ||||||
| 3. **Submit a Pull Request** that: | ||||||
| - Adds your extension to `extensions/catalog.community.json` | ||||||
| - Updates this README with your extension in the Available Extensions table | ||||||
|
||||||
| - Updates this README with your extension in the Available Extensions table | |
| - Updates this README with your extension in the Available Community Extensions table |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -858,11 +858,41 @@ def should_execute_hook(hook: dict, config: dict) -> bool: | |||||
|
|
||||||
| ## Extension Discovery & Catalog | ||||||
|
|
||||||
| ### Central Catalog | ||||||
| ### Dual Catalog System | ||||||
|
|
||||||
| Spec Kit uses two catalog files with different purposes: | ||||||
|
|
||||||
| #### User Catalog (`catalog.json`) | ||||||
|
||||||
| #### User Catalog (`catalog.json`) | |
| #### Your Catalog (`catalog.json`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The checklist item refers to "Available Extensions table" but the actual section title in README.md is "Available Community Extensions" (line 69). For clarity and consistency, consider updating this to "Available Community Extensions table".