Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/extension_submission.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Extension Submission
description: Submit your extension to the Spec Kit catalog
title: "[Extension]: Add "
labels: ["enhancement", "needs-triage"]
labels: ["triage-must-have"]
body:
- type: markdown
attributes:
Expand All @@ -14,7 +14,7 @@ body:
- Create a GitHub release with a version tag (e.g., v1.0.0)
- Test installation: `specify extension add <extension-name> --from <your-release-url>`

**After submitting:** a maintainer applies the `extension-submission` label during issue triage, which starts the automated catalog validation. You don't need to apply any label or ask for one.
**After submitting:** GitHub automatically applies the `triage-must-have` intake verdict. A maintainer separately applies the `extension-submission` label during issue triage, which starts the automated catalog validation. You don't need to apply any label or ask for one.

- type: input
id: extension-id
Expand Down
9 changes: 5 additions & 4 deletions extensions/EXTENSION-PUBLISHING-GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,11 @@ To submit your extension to the community catalog, file a new issue using the **

### What Happens After You Submit

1. A maintainer reviews the issue during issue triage and applies the `extension-submission` label, which starts the automated catalog validation. On this public repository, contributors cannot apply that label themselves, so there is nothing to label or re-request — the issue simply waits in triage.
2. A maintainer verifies that the catalog entry is complete and correctly formatted
3. Once approved, the maintainer adds your extension to `extensions/catalog.community.json` and the Community Extensions table in the README
4. Your extension becomes discoverable via `specify extension search`
1. GitHub applies the `triage-must-have` verdict when the issue is opened through the Extension Submission form. This intake automation is specific to extension submissions and does not change the manual triage rubric for other issues.
2. A maintainer reviews the issue during issue triage and applies the separate `extension-submission` label, which starts the automated catalog validation. On this public repository, contributors cannot apply that label themselves, so there is nothing to label or re-request — the issue simply waits in triage.
3. The automated workflow validates the submission and, when validation passes, updates `extensions/catalog.community.json` and `docs/community/extensions.md` in a draft pull request
4. A maintainer reviews the generated pull request and merges it when approved
5. Your extension becomes discoverable via `specify extension search`

### What Maintainers Check

Expand Down
20 changes: 20 additions & 0 deletions tests/test_github_workflows.py
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,26 @@ def test_community_submission_automation_is_wired_to_allowed_files():
assert label in assignment_text


def test_extension_submission_form_applies_only_automatic_intake_verdict():
forms_dir = REPO_ROOT / ".github" / "ISSUE_TEMPLATE"
extension_form = yaml.safe_load(
(forms_dir / "extension_submission.yml").read_text(encoding="utf-8")
)

assert extension_form["labels"] == ["triage-must-have"]
assert "extension-submission" not in extension_form["labels"]

for form_name in (
"agent_request.yml",
"bug_report.yml",
"bundle_submission.yml",
"feature_request.yml",
"preset_submission.yml",
):
form = yaml.safe_load((forms_dir / form_name).read_text(encoding="utf-8"))
assert "triage-must-have" not in form["labels"]


@pytest.mark.parametrize("kind", [item[0] for item in COMMUNITY_SUBMISSION_WORKFLOWS])
def test_community_upgrade_uses_established_runtime_defaults(kind):
_, compiled_text, source, compiled = _agentic_workflow(f"add-community-{kind}")
Expand Down
Loading