mirror of
https://github.com/github/spec-kit.git
synced 2026-07-03 12:28:06 +08:00
* Require preset-usage README with Spec Kit CLI syntax in submissions Tighten the community preset submission workflow so it validates the README referenced by the documentation field rather than merely checking for a root README. The workflow now fails submissions whose linked README lacks a valid 'specify preset add ...' command and flags monorepo submissions that point documentation at a generic root README. - Add a required Documentation URL field to the preset issue template - Add validation step 2d (documentation README + CLI-syntax check) to .github/workflows/add-community-preset.md and recompile the lock file - Document the stricter usage-README requirement and reviewer content check in presets/PUBLISHING.md Closes #3103 Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Align preset README docs with workflow's actual enforcement Address PR review feedback on #3104: - PUBLISHING.md: clarify that only README resolution + a valid 'specify preset add ...' command are mechanically enforced; the preset-scoped-README and minimum-structure items are reviewer expectations, not automated checks. - PUBLISHING.md: state that a missing 'specify preset add ...' command is a hard validation failure (check 2d), not just 'flagged for changes'. - preset_submission.yml: require 'specify preset add ...' (not the looser 'specify preset ...') to match the workflow validation. Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Tighten preset README validation and docs per PR review Address PR review feedback on #3104: - Workflow Step 2c: drop the generic repo-root README.md check so the README requirement is enforced exactly once, in Step 2d, against the file the documentation field points to (avoids monorepo false-positive). - Workflow Step 2d: restrict the documentation URL to GitHub-hosted README URLs (github.com/.../blob/... or raw.githubusercontent.com/...) before fetching user-provided input. - PUBLISHING.md: add the required 'id' field to the example catalog entry. - preset_submission.yml: fix the Documentation URL placeholder to match the recommended monorepo presets/<id>/README.md pattern. - Recompile add-community-preset.lock.yml (body hash only). Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refine preset README validation rules per PR review Address PR review feedback on #3104: - Workflow Step 2d: broaden the documentation URL allowlist to also accept github.com/.../raw/... URLs; strip any fragment/query before fetching so the target is deterministic; clarify that a 'specify preset add --from <url>' command only counts when its URL matches the submitted Download URL (a different --from URL does not satisfy the requirement, though other accepted forms still can). - PUBLISHING.md: show both accepted download URL shapes (tag archive and release asset) in the README install example instead of implying only the releases/download form. - preset_submission.yml: remove the ambiguous generic 'README.md with description and usage instructions' checkbox; the linked-README requirement is the single source of truth. - Recompile add-community-preset.lock.yml (body hash only). Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clarify install-command requirement wording per PR review Address PR review feedback on #3104: the previous 'matching the download URL' wording overstated the requirement. Only the 'specify preset add --from <url>' form needs an exact download-URL match; other accepted forms ('specify preset add <id>' / '--dev <path>') don't reference the download URL at all. - preset_submission.yml: reword the Documentation URL description and the Submission Requirements checkbox to reflect what's enforced vs preferred. - PUBLISHING.md: clarify the reviewer note so the exact-match rule is scoped to the --from form. Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Require README.md target and fix release-ZIP wording per PR review Address PR review feedback on #3104: - Workflow Step 2d: add an explicit check that the documentation URL path ends with README.md (case-insensitive) after stripping fragment/query, so a non-README markdown file is rejected before fetching. - PUBLISHING.md: reword the release-ZIP note, which conflicted with the earlier preset structure guidance. The real requirement is that the README is reachable at the documentation URL before download; it's fine for the same file to also ship inside the release ZIP. - Recompile add-community-preset.lock.yml (body hash only). Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use stable unnumbered anchor for Usage README Requirements Address PR review feedback on #3104: drop the '6.' prefix from the 'Usage README Requirements' heading so its GitHub anchor isn't tied to a section number (brittle under renumbering, and avoids confusion with the top-level 'Best Practices' TOC item). Update the Prerequisites cross-link to the new #usage-readme-requirements anchor. Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Align README requirement wording with enforced checks per PR review Address PR review feedback on #3104: - PUBLISHING.md: the 'mechanically enforces' summary now lists all Step 2d checks (GitHub-hosted URL, path ends with README.md, resolves, contains a valid 'specify preset add ...' command), instead of only two. - PUBLISHING.md: reword the PR checklist item so a usage README + install command is the requirement, with preset-scoped README recommended for monorepos (matches the workflow's flag-not-fail behavior). - preset_submission.yml: include the full 'specify preset add' prefix on the --dev and --from forms in the field description and checklist so submitters copy the exact syntax. Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix grammar in Usage README Requirements intro Address PR review feedback on #3104: remove the incorrect colon after 'the linked README' so the sentence reads naturally. Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Avoid lossy raw URL rewrite for slash-containing refs per PR review Address PR review feedback on #3104: rewriting documentation URLs into the raw.githubusercontent.com/<owner>/<repo>/<ref>/<path> form can't reliably represent refs that contain slashes (e.g. a feature/foo branch). Step 2d now fetches github.com blob URLs by swapping only /blob/ -> /raw/, and fetches github.com/.../raw/... and raw.githubusercontent.com/... URLs as-is, instead of reconstructing the raw host form. Recompile add-community-preset.lock.yml (body hash only). Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
198 lines
6.5 KiB
YAML
198 lines
6.5 KiB
YAML
name: Preset Submission
|
|
description: Submit your preset to the Spec Kit preset catalog
|
|
title: "[Preset]: Add "
|
|
labels: ["enhancement", "needs-triage"]
|
|
body:
|
|
- type: markdown
|
|
attributes:
|
|
value: |
|
|
Thanks for contributing a preset! This template helps you submit your preset to the community catalog.
|
|
|
|
**Before submitting:**
|
|
- Review the [Preset Publishing Guide](https://github.com/github/spec-kit/blob/main/presets/PUBLISHING.md)
|
|
- Ensure your preset has a valid `preset.yml` manifest
|
|
- Create a GitHub release with a version tag (e.g., v1.0.0)
|
|
- Test installation from the release archive: `specify preset add --from <download-url>`
|
|
|
|
- type: input
|
|
id: preset-id
|
|
attributes:
|
|
label: Preset ID
|
|
description: Unique preset identifier (lowercase with hyphens only)
|
|
placeholder: "e.g., healthcare-compliance"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: preset-name
|
|
attributes:
|
|
label: Preset Name
|
|
description: Human-readable preset name
|
|
placeholder: "e.g., Healthcare Compliance"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: version
|
|
attributes:
|
|
label: Version
|
|
description: Semantic version number
|
|
placeholder: "e.g., 1.0.0"
|
|
validations:
|
|
required: true
|
|
|
|
- type: textarea
|
|
id: description
|
|
attributes:
|
|
label: Description
|
|
description: Brief description of what your preset does (under 200 characters)
|
|
placeholder: Enforces HIPAA-compliant spec workflows with audit templates and compliance checklists
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: author
|
|
attributes:
|
|
label: Author
|
|
description: Your name or organization
|
|
placeholder: "e.g., John Doe or Acme Corp"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: repository
|
|
attributes:
|
|
label: Repository URL
|
|
description: GitHub repository URL for your preset
|
|
placeholder: "https://github.com/your-org/spec-kit-your-preset"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: download-url
|
|
attributes:
|
|
label: Download URL
|
|
description: URL to the GitHub release archive for your preset (e.g., https://github.com/your-org/spec-kit-preset-your-preset/archive/refs/tags/v1.0.0.zip)
|
|
placeholder: "https://github.com/your-org/spec-kit-preset-your-preset/archive/refs/tags/v1.0.0.zip"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: documentation
|
|
attributes:
|
|
label: Documentation URL
|
|
description: |
|
|
Link to the README that explains how to use **this preset** (not a general product/framework pitch).
|
|
Prefer the preset-scoped README (e.g. `presets/<id>/README.md` in a monorepo) over the repository root README.
|
|
It must contain at least one valid `specify preset add ...` install command — ideally `specify preset add --from <download-url>` using the exact Download URL above (other forms such as `specify preset add <preset-id>` or `specify preset add --dev <path>` are also accepted).
|
|
placeholder: "https://github.com/your-org/spec-kit-presets/blob/main/presets/your-preset/README.md"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: license
|
|
attributes:
|
|
label: License
|
|
description: Open source license type
|
|
placeholder: "e.g., MIT, Apache-2.0"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: speckit-version
|
|
attributes:
|
|
label: Required Spec Kit Version
|
|
description: Minimum Spec Kit version required
|
|
placeholder: "e.g., >=0.3.0"
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: required-extensions
|
|
attributes:
|
|
label: Required Extensions (optional)
|
|
description: Comma-separated list of required extension IDs (e.g., aide)
|
|
placeholder: "e.g., aide, canon"
|
|
|
|
- type: textarea
|
|
id: templates-provided
|
|
attributes:
|
|
label: Templates Provided
|
|
description: List the template overrides your preset provides (enter "None" if command-only)
|
|
placeholder: |
|
|
- spec-template.md — adds compliance section
|
|
- plan-template.md — includes audit checkpoints
|
|
- checklist-template.md — HIPAA compliance checklist
|
|
validations:
|
|
required: true
|
|
|
|
- type: textarea
|
|
id: commands-provided
|
|
attributes:
|
|
label: Commands Provided
|
|
description: List the command overrides your preset provides (enter "None" if template-only)
|
|
placeholder: |
|
|
- speckit.specify.md — customized for compliance workflows
|
|
validations:
|
|
required: true
|
|
|
|
- type: input
|
|
id: scripts-count
|
|
attributes:
|
|
label: Number of Scripts (optional)
|
|
description: How many scripts does your preset provide? (leave empty if none)
|
|
placeholder: "e.g., 1"
|
|
|
|
- type: textarea
|
|
id: tags
|
|
attributes:
|
|
label: Tags
|
|
description: 2-5 relevant tags (lowercase, separated by commas)
|
|
placeholder: "compliance, healthcare, hipaa, audit"
|
|
validations:
|
|
required: true
|
|
|
|
- type: textarea
|
|
id: features
|
|
attributes:
|
|
label: Key Features
|
|
description: List the main features and capabilities of your preset
|
|
placeholder: |
|
|
- HIPAA-compliant spec templates
|
|
- Audit trail checklists
|
|
- Compliance review workflow
|
|
validations:
|
|
required: true
|
|
|
|
- type: checkboxes
|
|
id: testing
|
|
attributes:
|
|
label: Testing Checklist
|
|
description: Confirm that your preset has been tested
|
|
options:
|
|
- label: Preset installs successfully via `specify preset add`
|
|
required: true
|
|
- label: Template resolution works correctly after installation
|
|
required: true
|
|
- label: Documentation is complete and accurate
|
|
required: true
|
|
- label: Tested on at least one real project
|
|
required: true
|
|
|
|
- type: checkboxes
|
|
id: requirements
|
|
attributes:
|
|
label: Submission Requirements
|
|
description: Verify your preset meets all requirements
|
|
options:
|
|
- label: Valid `preset.yml` manifest included
|
|
required: true
|
|
- label: Linked README (Documentation URL) explains how to use this preset and includes a valid `specify preset add ...` command (preferably `specify preset add --from <download-url>` using the exact download URL)
|
|
required: true
|
|
- label: LICENSE file included
|
|
required: true
|
|
- label: GitHub release created with version tag
|
|
required: true
|
|
- label: Preset ID follows naming conventions (lowercase-with-hyphens)
|
|
required: true
|