diff --git a/.github/ISSUE_TEMPLATE/extension_submission.yml b/.github/ISSUE_TEMPLATE/extension_submission.yml index eae85a4340..da7bf12a85 100644 --- a/.github/ISSUE_TEMPLATE/extension_submission.yml +++ b/.github/ISSUE_TEMPLATE/extension_submission.yml @@ -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: @@ -14,7 +14,7 @@ body: - Create a GitHub release with a version tag (e.g., v1.0.0) - Test installation: `specify extension add --from ` - **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 diff --git a/extensions/EXTENSION-PUBLISHING-GUIDE.md b/extensions/EXTENSION-PUBLISHING-GUIDE.md index 0cbe93aae6..72562f3ad7 100644 --- a/extensions/EXTENSION-PUBLISHING-GUIDE.md +++ b/extensions/EXTENSION-PUBLISHING-GUIDE.md @@ -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 diff --git a/tests/test_github_workflows.py b/tests/test_github_workflows.py index 34a6f04211..ac45915c31 100644 --- a/tests/test_github_workflows.py +++ b/tests/test_github_workflows.py @@ -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}")