Repository navigation
chore: add issue forms, SECURITY.md, CODEOWNERS and labels - #841
Open
aryanjasala wants to merge 7 commits into
Open
aryanjasala wants to merge 7 commits into
aryanjasala wants to merge 7 commits into
Conversation
Bug report and feature request forms replace the Markdown bug template and blank issues for outside contributors; config.yml sends security reports to private vulnerability reporting. The internal task and epic templates stay.
labels.yml records the label set shared across the rtCamp framework repositories, a proposed Scope set for the starter, and the existing unprefixed labels as legacy until issues are relabelled. release.yml keeps excluding Dependabot and now groups generated release notes by those labels.
composer create-project installs the Packagist dist archive, so a new .gitattributes export-ignores CODEOWNERS, SECURITY.md, the issue forms, labels.yml and release.yml. The same files join cleanup.targets so npm run init removes them from a git clone. The task and epic templates, the PR template, dependabot.yml and workflows still ship.
Feature requests set the org issue type but carried no label, and release notes filed features under BC: Additive only. Add Type: Feature to the shared label set, apply it from the feature form, and list it first under Features in release.yml.
release-please writes each GitHub release's notes from the merged pull request titles, so .github/release.yml, which only shapes GitHub's generated notes, is never read here. The labels stay for triage.
There was a problem hiding this comment.
🔵 Needs a closer look
Cleanup on --reinit and --clean can delete project-owned replacements for starter files, including customized repository configuration and security policies.
No open issues 🎉
What changed in this PR
This PR prepares Theme Elementary for outside contributors and separates starter-specific repository files from generated themes.
Changes:
- Adds structured bug and feature forms, private security-reporting guidance, code owners and a shared label catalog.
- Excludes starter-only files from distribution archives and adds them to initialization cleanup.
- Updates cleanup documentation and removes the unused GitHub release-notes configuration following the release-please migration.
| File | Description |
|---|---|
SECURITY.md |
Defines supported versions and private vulnerability reporting. |
README.md |
Clarifies which repository files initialization removes. |
docs/internal/maintenance.md |
Updates archive and cleanup verification guidance. |
docs/initialization.md |
Documents removed and retained repository files. |
bin/scaffold.config.js |
Adds starter-specific files to cleanup targets. |
.github/release.yml |
Removes unused generated-release-notes configuration. |
.github/labels.yml |
Defines shared, proposed scope and legacy labels. |
.github/ISSUE_TEMPLATE/feature.yml |
Adds a structured feature-request form. |
.github/ISSUE_TEMPLATE/config.yml |
Disables blank issues and links private security reporting. |
.github/ISSUE_TEMPLATE/bug.yml |
Adds a structured bug-report form. |
.github/ISSUE_TEMPLATE/bug.md |
Removes the superseded Markdown bug template. |
.github/CODEOWNERS |
Assigns repository-wide code owners. |
.gitattributes |
Excludes starter-only files from distribution archives. |
.claude/skills/README.md |
Updates the documented cleanup behavior. |
Review effort: Balanced
Init cleanup also runs on --reinit, "Re-run full setup" and --clean, and deletes each target. A project's own CODEOWNERS, SECURITY.md, .gitattributes or issue forms live at the same paths as the starter's, so the next re-run would delete them. Those targets now apply only before init writes .wp-scaffold.json; the starter-named release paths stay unconditional. Also adds tests/js/starter-files.test.js, which fails when an export-ignore path in .gitattributes is missing from the cleanup targets (and is itself starter-only), and lists release-please's autorelease labels in labels.yml so a later prune can't remove the label it tags releases by.
Adi-ty
approved these changes
Nov 9, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Gets the starter ready for outside contributors, as the Q3 plan asks for all five public framework repositories: issue forms instead of a Markdown bug template and blank issues, a security policy, code owners, the shared label set and grouped release notes. None of these files end up in a theme created from the starter.
Technical Details
bug.ymlreplacesbug.mdand asks for the starter version or commit, where it happens (editor, front end, build, init), the area, WordPress, PHP and Node versions, the environment, what happened, what was expected, steps and logs.feature.ymlasks for the area, the problem, the proposal and alternatives.config.ymlturns off blank issues and points security reports to private vulnerability reporting. The internaltask.mdandepic.mdtemplates stay.SECURITY.md, modelled on wp-primitives': the latest 2.x release andmainare supported, 1.x gets no further releases..github/CODEOWNERS:* @aryanjasala @AnuragVasanwala @Adi-ty..github/labels.yml: the shared set (Type: *includingType: Feature,Priority: P0-P3,Status: *,BC: *,dependencies,good first issue,help wanted), a proposedScope: *set for the starter, and the 50 existing unprefixed labels listed as "legacy, keep until relabelled", so nothing in use disappears..github/release.ymlis removed. Since ci: release the starter with release-please #835 release-please writes each release's notes from the merged PR titles, so GitHub's generated-notes config is never read. The labels are for triage.composer create-projectinstalls the Packagist dist archive, so a new.gitattributesexport-ignores CODEOWNERS,SECURITY.md, the issue forms andlabels.yml(and itself). The same files joincleanup.targetsinbin/scaffold.config.js, sonpm run initremoves them from a git clone too. The task and epic templates, the PR template,dependabot.ymland the workflows still ship..gitattributesalso export-ignores main's.github/release-starter/and.github/workflows/release-starter.yml, so its list matchescleanup.targetsagain.Critical: blocks milestone). The live labels still have dashes, so the next label sync updates their descriptions.release.ymlsurvive init are corrected (README.md,docs/initialization.md,docs/internal/maintenance.md,.claude/skills/README.md).Checklist
bug.mdand blank issuesSECURITY.mdpoints to private vulnerability reporting (on for this repository)labels.ymladded;release.ymlremovedgit archive HEAD(what create-project installs) contains none of the new files.github/release-starter/andrelease-starter.yml) and keeps the task and epic templates, PR template,dependabot.ymland workflowsyamllintScreenshots
N/A
To-do
labels.ymlto the repository withgh label create --forceafter merge (it is data; merging changes no label).Fixes/Covers issue
N/A. Q3 plan, Workstream 7 (public repo basics).