You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: Document dual-catalog system for extensions (#1689)
* docs: Document dual-catalog system for extensions
- Clarify distinction between catalog.json (curated) and catalog.community.json (reference)
- Update EXTENSION-DEVELOPMENT-GUIDE.md to explain community catalog submission
- Update EXTENSION-PUBLISHING-GUIDE.md with dual-catalog workflow
- Update EXTENSION-USER-GUIDE.md with catalog selection guidance
- Expand README.md with comprehensive catalog explanation
- Update RFC-EXTENSION-SYSTEM.md with dual-catalog design and current implementation
- Change GitHub references from statsperform to github
- Add SPECKIT_CATALOG_URL environment variable documentation
This clarifies how organizations can curate their own catalog while
browsing community-contributed extensions for discovery.
* Update extensions/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update extensions/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update extensions/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Spec Kit uses a dual-catalog system. For details about how catalogs work, see the main [Extensions README](README.md#extension-catalogs).
135
+
136
+
**For extension publishing**: All community extensions should be added to `catalog.community.json`. Users browse this catalog and copy extensions they trust into their own `catalog.json`.
Copy file name to clipboardExpand all lines: extensions/EXTENSION-USER-GUIDE.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,13 +76,15 @@ vim .specify/extensions/jira/jira-config.yml
76
76
77
77
## Finding Extensions
78
78
79
+
**Note**: By default, `specify extension search` uses your organization's catalog (`catalog.json`). If the catalog is empty, you won't see any results. See [Extension Catalogs](#extension-catalogs) to learn how to populate your catalog from the community reference catalog.
80
+
79
81
### Browse All Extensions
80
82
81
83
```bash
82
84
specify extension search
83
85
```
84
86
85
-
Shows all available extensions in the catalog.
87
+
Shows all extensions in your organization's catalog.
For information about how Spec Kit's dual-catalog system works (`catalog.json` vs `catalog.community.json`), see the main [Extensions README](README.md#extension-catalogs).
423
+
418
424
## Organization Catalog Customization
419
425
420
-
### Why the Default Catalog is Empty
426
+
### Why Customize Your Catalog
421
427
422
-
The default spec-kit catalog ships empty by design. This allows organizations to:
428
+
Organizations customize their `catalog.json` to:
423
429
424
430
- **Control available extensions** - Curate which extensions your team can install
425
431
- **Host private extensions** - Internal tools that shouldn't be public
**Benefits**: Quick for one-off testing or private extensions
66
+
67
+
**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`.
68
+
69
+
## Available Community Extensions
70
+
71
+
The following community-contributed extensions are available in [`catalog.community.json`](catalog.community.json):
6
72
7
73
| Extension | Purpose | URL |
8
74
|-----------|---------|-----|
@@ -11,4 +77,43 @@ Community-contributed extensions for [Spec Kit](https://github.com/github/spec-k
11
77
12
78
## Adding Your Extension
13
79
14
-
See the [Extension Publishing Guide](EXTENSION-PUBLISHING-GUIDE.md) for instructions on how to submit your extension to the community catalog.
80
+
### Submission Process
81
+
82
+
To add your extension to the community catalog:
83
+
84
+
1.**Prepare your extension** following the [Extension Development Guide](EXTENSION-DEVELOPMENT-GUIDE.md)
85
+
2.**Create a GitHub release** for your extension
86
+
3.**Submit a Pull Request** that:
87
+
- Adds your extension to `extensions/catalog.community.json`
88
+
- Updates this README with your extension in the Available Extensions table
89
+
4.**Wait for review** - maintainers will review and merge if criteria are met
90
+
91
+
See the [Extension Publishing Guide](EXTENSION-PUBLISHING-GUIDE.md) for detailed step-by-step instructions.
92
+
93
+
### Submission Checklist
94
+
95
+
Before submitting, ensure:
96
+
97
+
- ✅ Valid `extension.yml` manifest
98
+
- ✅ Complete README with installation and usage instructions
99
+
- ✅ LICENSE file included
100
+
- ✅ GitHub release created with semantic version (e.g., v1.0.0)
101
+
- ✅ Extension tested on a real project
102
+
- ✅ All commands working as documented
103
+
104
+
## Installing Extensions
105
+
Once extensions are available (either in your catalog or via direct URL), install them:
106
+
107
+
```bash
108
+
# From your curated catalog (by name)
109
+
specify extension search # See what's in your catalog
110
+
specify extension add <extension-name># Install by name
- **Purpose**: Reference catalog of available community-contributed extensions
879
+
- **Verification**: Community extensions may have `verified: false` initially
880
+
- **Status**: Active - open for community contributions
881
+
- **Submission**: Via Pull Request following the Extension Publishing Guide
882
+
- **Usage**: Browse to discover extensions, then copy to your `catalog.json`
883
+
884
+
**How It Works:**
885
+
886
+
1. **Discover**: Browse `catalog.community.json` to find available extensions
887
+
2. **Review**: Evaluate extensions for security, quality, and organizational fit
888
+
3. **Curate**: Copy approved extension entries from community catalog to your `catalog.json`
889
+
4. **Install**: Use `specify extension add <name>` (pulls from your curated catalog)
890
+
891
+
This approach gives organizations full control over which extensions are available to their teams while maintaining a shared community resource for discovery.
892
+
893
+
### Catalog Format
894
+
895
+
**Format** (same for both catalogs):
866
896
867
897
```json
868
898
{
@@ -931,25 +961,52 @@ specify extension info jira
931
961
932
962
### Custom Catalogs
933
963
934
-
Organizations can host private catalogs:
964
+
**⚠️ FUTURE FEATURE - NOT YET IMPLEMENTED**
965
+
966
+
The following catalog management commands are proposed design concepts but are not yet available in the current implementation:
0 commit comments