Skip to content

Commit b7e67f5

Browse files
authored
Add community bundle submission path (#3162)
* Add community bundle submission path * Address bundle submission review feedback * Align bundle submission triage label * Clarify bundle submission review scope * Clarify community bundle catalog listing
1 parent 3e97b10 commit b7e67f5

6 files changed

Lines changed: 367 additions & 4 deletions

File tree

Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
name: Bundle Submission
2+
description: Submit your bundle metadata for community catalog validation
3+
title: "[Bundle]: Add "
4+
labels: ["enhancement", "needs-triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for contributing a bundle! This template captures metadata for maintainers to validate formatting, links, component resolution, and installation evidence. Maintainers do not audit, endorse, or support bundle code or installed components.
10+
11+
**Before submitting:**
12+
- Review the [Bundles reference](https://github.com/github/spec-kit/blob/main/docs/reference/bundles.md)
13+
- Ensure your bundle has a valid `bundle.yml` manifest
14+
- Create a GitHub release with a versioned bundle artifact
15+
- Test installation from a downloaded artifact: `specify bundle install ./your-bundle-1.0.0.zip`
16+
- If you host a bundle catalog, test catalog installation with `specify bundle catalog add <catalog-url> --id <catalog-id> --policy install-allowed` and `specify bundle install <bundle-id>`
17+
- If your bundle depends on components from non-default catalogs, document those catalog URLs and test installation from a clean project
18+
19+
- type: input
20+
id: bundle-id
21+
attributes:
22+
label: Bundle ID
23+
description: Unique bundle identifier; must start and end with a lowercase letter or digit and may contain lowercase letters, digits, dots, underscores, and hyphens between
24+
placeholder: "e.g., security-governance-stack"
25+
validations:
26+
required: true
27+
28+
- type: input
29+
id: bundle-name
30+
attributes:
31+
label: Bundle Name
32+
description: Human-readable bundle name
33+
placeholder: "e.g., Security Governance Stack"
34+
validations:
35+
required: true
36+
37+
- type: input
38+
id: version
39+
attributes:
40+
label: Version
41+
description: Semantic version number
42+
placeholder: "e.g., 1.0.0"
43+
validations:
44+
required: true
45+
46+
- type: input
47+
id: role
48+
attributes:
49+
label: Role or Team
50+
description: Primary role, team, or persona this bundle provisions
51+
placeholder: "e.g., security-engineer, product-manager, platform-team"
52+
validations:
53+
required: true
54+
55+
- type: textarea
56+
id: description
57+
attributes:
58+
label: Description
59+
description: Brief description of the stack this bundle installs
60+
placeholder: Installs a security governance stack with compliance presets, review commands, and evidence workflows
61+
validations:
62+
required: true
63+
64+
- type: input
65+
id: author
66+
attributes:
67+
label: Author
68+
description: Your name or organization
69+
placeholder: "e.g., Jane Doe or Acme Corp"
70+
validations:
71+
required: true
72+
73+
- type: input
74+
id: repository
75+
attributes:
76+
label: Repository URL
77+
description: GitHub repository URL for your bundle source
78+
placeholder: "https://github.com/your-org/spec-kit-bundle-your-bundle"
79+
validations:
80+
required: true
81+
82+
- type: input
83+
id: download-url
84+
attributes:
85+
label: Download URL
86+
description: URL to the versioned bundle artifact generated by `specify bundle build`
87+
placeholder: "https://github.com/your-org/spec-kit-bundle-your-bundle/releases/download/v1.0.0/your-bundle-1.0.0.zip"
88+
validations:
89+
required: true
90+
91+
- type: input
92+
id: documentation
93+
attributes:
94+
label: Documentation URL
95+
description: Link to documentation that explains what the bundle installs and how to use it
96+
placeholder: "https://github.com/your-org/spec-kit-bundle-your-bundle/blob/main/README.md"
97+
validations:
98+
required: true
99+
100+
- type: input
101+
id: license
102+
attributes:
103+
label: License
104+
description: Open source license type
105+
placeholder: "e.g., MIT, Apache-2.0"
106+
validations:
107+
required: true
108+
109+
- type: input
110+
id: speckit-version
111+
attributes:
112+
label: Required Spec Kit Version
113+
description: Minimum Spec Kit version required by the bundle
114+
placeholder: "e.g., >=0.9.0"
115+
validations:
116+
required: true
117+
118+
- type: input
119+
id: integration
120+
attributes:
121+
label: Integration Target (optional)
122+
description: Integration ID if the bundle pins one; leave empty if integration-agnostic
123+
placeholder: "e.g., claude, copilot, gemini"
124+
125+
- type: textarea
126+
id: components-provided
127+
attributes:
128+
label: Components Provided
129+
description: List the extensions, presets, workflows, and steps this bundle installs
130+
placeholder: |
131+
- extensions: sicario-guard@0.5.1
132+
- presets: sicario-core@0.5.1, sicario-ai-governance@0.5.1
133+
- workflows: evidence-review@1.0.0
134+
- steps: threat-model
135+
validations:
136+
required: true
137+
138+
- type: textarea
139+
id: required-catalogs
140+
attributes:
141+
label: Required Component Catalogs
142+
description: List any non-default catalogs users must add before this bundle can resolve its components; enter "None" if every component resolves from built-in or bundled catalogs
143+
placeholder: |
144+
- Presets: https://github.com/your-org/your-bundle/releases/download/v1.0.0/presets.json
145+
- Extensions: https://github.com/your-org/your-bundle/releases/download/v1.0.0/extensions.json
146+
validations:
147+
required: true
148+
149+
- type: textarea
150+
id: tags
151+
attributes:
152+
label: Tags
153+
description: 2-5 relevant tags (lowercase, separated by commas)
154+
placeholder: "security, governance, compliance"
155+
validations:
156+
required: true
157+
158+
- type: textarea
159+
id: features
160+
attributes:
161+
label: Key Features
162+
description: List the main capabilities this bundle provides
163+
placeholder: |
164+
- Installs evidence-first security governance templates
165+
- Adds automated bundle verification commands
166+
- Pins all components to release-tested versions
167+
validations:
168+
required: true
169+
170+
- type: checkboxes
171+
id: testing
172+
attributes:
173+
label: Testing Checklist
174+
description: Confirm that your bundle has been tested
175+
options:
176+
- label: Validation succeeds with `specify bundle validate --path <bundle-directory>`
177+
required: true
178+
- label: Build succeeds with `specify bundle build --path <bundle-directory>` and produces the submitted artifact
179+
required: true
180+
- label: Bundle installs successfully from the built artifact
181+
required: true
182+
- label: The submitted distribution path was tested end to end, including bundle-ID installation from an install-allowed catalog when a catalog entry is proposed
183+
required: true
184+
- label: Installation was tested in a clean Spec Kit project
185+
required: true
186+
- label: Required component catalogs are documented and were included in testing, or no extra catalogs are required
187+
required: true
188+
- label: Documentation is complete and accurate
189+
required: true
190+
191+
- type: checkboxes
192+
id: requirements
193+
attributes:
194+
label: Submission Requirements
195+
description: Verify your bundle meets all requirements
196+
options:
197+
- label: Valid `bundle.yml` manifest included
198+
required: true
199+
- label: README.md explains the bundle's intended role, installed components, and installation steps
200+
required: true
201+
- label: LICENSE file included
202+
required: true
203+
- label: GitHub release created with a version tag
204+
required: true
205+
- label: Bundle ID matches the manifest and follows naming conventions
206+
required: true
207+
- label: Every extension, preset, workflow, and step reference is pinned where the manifest requires a version
208+
required: true
209+
210+
- type: textarea
211+
id: testing-details
212+
attributes:
213+
label: Testing Details
214+
description: Describe how you tested your bundle
215+
placeholder: |
216+
**Tested on:**
217+
- macOS 15 with Spec Kit v0.9.0
218+
- Ubuntu 24.04 with Spec Kit v0.9.0
219+
220+
**Test project:** [Link or description]
221+
222+
**Test scenarios:**
223+
1. Added required catalogs
224+
2. Validated bundle manifest
225+
3. Built release artifact
226+
4. Installed bundle in a clean project
227+
5. Ran the installed commands or workflows
228+
validations:
229+
required: true
230+
231+
- type: textarea
232+
id: example-usage
233+
attributes:
234+
label: Example Usage
235+
description: Provide a simple example of installing and using your bundle
236+
render: markdown
237+
placeholder: |
238+
```bash
239+
# Add any required component catalogs first
240+
specify preset catalog add https://github.com/your-org/your-bundle/releases/download/v1.0.0/presets.json --name your-bundle --install-allowed
241+
specify extension catalog add https://github.com/your-org/your-bundle/releases/download/v1.0.0/extensions.json --name your-bundle --install-allowed
242+
243+
# Install the downloaded bundle artifact
244+
curl -L -o your-bundle-1.0.0.zip https://github.com/your-org/your-bundle/releases/download/v1.0.0/your-bundle-1.0.0.zip
245+
specify bundle install ./your-bundle-1.0.0.zip
246+
247+
# Or test through an install-allowed bundle catalog
248+
specify bundle catalog add https://github.com/your-org/your-bundle/releases/download/v1.0.0/bundles.json --id your-bundle-catalog --policy install-allowed
249+
specify bundle install your-bundle
250+
```
251+
validations:
252+
required: true
253+
254+
- type: textarea
255+
id: catalog-entry
256+
attributes:
257+
label: Proposed Catalog Entry
258+
description: Provide the JSON entry that would appear under the top-level `bundles` object in a bundle catalog (helps reviewers)
259+
render: json
260+
placeholder: |
261+
{
262+
"your-bundle": {
263+
"name": "Your Bundle",
264+
"id": "your-bundle",
265+
"version": "1.0.0",
266+
"role": "security-engineer",
267+
"description": "Brief description of the stack",
268+
"author": "Your Name",
269+
"license": "MIT",
270+
"download_url": "https://github.com/your-org/your-bundle/releases/download/v1.0.0/your-bundle-1.0.0.zip",
271+
"repository": "https://github.com/your-org/your-bundle",
272+
"requires": {
273+
"speckit_version": ">=0.9.0"
274+
},
275+
"provides": {
276+
"extensions": 1,
277+
"presets": 2,
278+
"steps": 0,
279+
"workflows": 1
280+
},
281+
"tags": ["security", "governance"],
282+
"verified": false
283+
}
284+
}
285+
validations:
286+
required: true
287+
288+
- type: textarea
289+
id: additional-context
290+
attributes:
291+
label: Additional Context
292+
description: Any other information that would help reviewers
293+
placeholder: Screenshots, demo videos, links to related projects, dependency-resolution notes, etc.

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,14 @@ Explore community-contributed resources on the [Spec Kit docs site](https://gith
134134

135135
- [Extensions](https://github.github.io/spec-kit/community/extensions.html) — commands, hooks, and capabilities
136136
- [Presets](https://github.github.io/spec-kit/community/presets.html) — template and terminology overrides
137+
- [Bundles](https://github.github.io/spec-kit/community/bundles.html) — role and team stacks composed from existing components
137138
- [Walkthroughs](https://github.github.io/spec-kit/community/walkthroughs.html) — end-to-end SDD scenarios
138139
- [Friends](https://github.github.io/spec-kit/community/friends.html) — projects that extend or build on Spec Kit
139140

140141
> [!NOTE]
141142
> Community contributions are independently created and maintained by their respective authors. Review source code before installation and use at your own discretion.
142143
143-
Want to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md) or the [Presets Publishing Guide](presets/PUBLISHING.md).
144+
Want to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md), the [Presets Publishing Guide](presets/PUBLISHING.md), or the [Community Bundles guide](docs/community/bundles.md).
144145

145146
## 🤖 Supported AI Coding Agent Integrations
146147

@@ -262,8 +263,10 @@ built-in). Each source carries an install policy: `install-allowed` sources can
262263
be installed from, while `discovery-only` sources are visible in `search`/`info`
263264
but refuse installation. Manage the stack with `specify bundle catalog list|add|remove`.
264265

265-
Authors validate and package bundles locally — there is no first-class publish;
266-
distribution is hosting the built artifact and adding a catalog entry:
266+
Authors validate and package bundles locally. Distribution is hosting the built
267+
artifact and adding a catalog source; community bundle submissions use the
268+
[Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml)
269+
issue template so required component catalogs and install evidence can be reviewed:
267270

268271
```bash
269272
specify bundle validate --path ./my-bundle # structural + reference checks

docs/community/bundles.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Community Bundles
2+
3+
> [!NOTE]
4+
> Community bundles are independently created and maintained by their respective authors. Maintainers only verify that submission metadata is complete and correctly formatted — they do **not review, audit, endorse, or support the bundle code or the components it installs**. Review bundle manifests, component catalogs, and source repositories before installation and use at your own discretion.
5+
6+
Bundles compose existing Spec Kit components — extensions, presets, workflows, and steps — into a single role or team stack. They are useful when a user should be able to install a tested set of components together instead of following several separate install commands.
7+
8+
Accepted community bundle entries will be listed here once a community bundle catalog is available. To submit a bundle for review, file a [Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml) issue.
9+
10+
## What to Submit
11+
12+
A bundle submission should include:
13+
14+
- A public repository with a valid `bundle.yml` manifest.
15+
- A versioned GitHub release with a bundle artifact created by `specify bundle build`.
16+
- Documentation that explains the intended role, installed components, required catalogs, and expected workflow.
17+
- A proposed catalog entry with bundle metadata and component counts.
18+
- Test evidence from a clean Spec Kit project.
19+
20+
## Component Resolution
21+
22+
A bundle catalog entry describes where to download the bundle artifact, but the bundle's component references still need to resolve when a user installs it. References can resolve from bundled components, already installed components, or active extension, preset, workflow, and step catalogs.
23+
24+
If your bundle depends on components that are not available from the default Spec Kit catalogs, include the required catalog URLs in the submission and in your README. Test the full install path from a clean project with those catalogs added before submitting.
25+
26+
For example:
27+
28+
```bash
29+
specify preset catalog add https://example.com/presets.json --name example-bundle --install-allowed
30+
specify extension catalog add https://example.com/extensions.json --name example-bundle --install-allowed
31+
curl -L -o example-bundle-1.0.0.zip https://example.com/example-bundle-1.0.0.zip
32+
specify bundle install ./example-bundle-1.0.0.zip
33+
34+
# Or install by id from an install-allowed bundle catalog.
35+
specify bundle catalog add https://example.com/bundles.json --id example-bundle-catalog --policy install-allowed
36+
specify bundle install example-bundle
37+
```
38+
39+
## Review Scope
40+
41+
Maintainers check that:
42+
43+
- The submission fields are complete and correctly formatted.
44+
- The release artifact and documentation URLs are reachable.
45+
- The repository contains a `bundle.yml` manifest.
46+
- The submission clearly identifies any required component catalogs.
47+
- The proposed catalog entry uses the expected bundle catalog entry shape.
48+
49+
Maintainers do not audit the behavior of installed extensions, presets, workflows, steps, or scripts. Users should review those components before installing a community bundle.
50+
51+
## Updating a Bundle
52+
53+
To update a submitted bundle, file another [Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml) issue with the new version, download URL, changed component list, and updated test evidence. Mention that the issue updates an existing bundle entry.

docs/community/overview.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Community
22

3-
The Spec Kit community builds extensions, presets, walkthroughs, and companion projects that expand what you can do with Spec-Driven Development. All community contributions are independently created and maintained by their respective authors.
3+
The Spec Kit community builds extensions, presets, bundles, walkthroughs, and companion projects that expand what you can do with Spec-Driven Development. All community contributions are independently created and maintained by their respective authors.
44

55
## Extensions
66

@@ -14,6 +14,12 @@ Presets customize how Spec Kit behaves — overriding templates, commands, and t
1414

1515
[Browse community presets →](presets.md)
1616

17+
## Bundles
18+
19+
Bundles compose extensions, presets, workflows, and steps into role or team stacks that can be installed together.
20+
21+
[Browse community bundles →](bundles.md)
22+
1723
## Walkthroughs
1824

1925
Step-by-step guides that show Spec-Driven Development in action across different scenarios, languages, and frameworks.

0 commit comments

Comments
 (0)