Files
standards/CONTRIBUTING.md
james.maesandOpenAI GPT-6 Codex 435049d688 fix(releases): use professional repository and automation text (#23)
Configure professional Release Please wording and native release-note categories,
retain complete package notes, and reject emoji in PR titles and descriptions.
Update contributor and agent guidance and remove the decorative IDE symbol.

Fixes: #21
Validation: all nine required PR checks passed in CI run 38074586698.
Recorded AI review: https://github.com/KofTwentyTwo/standards/pull/23#pullrequestreview-5480239702

Co-Authored-By: OpenAI GPT-6 Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 13:10:10 -05:00

3.0 KiB

Contributing

Proposals, corrections, and new language profiles are welcome. These standards follow themselves: everything below comes from the SDLC policy.

Before you start

  • For a new requirement or a change to an existing one, open an issue first so the idea can be discussed in public before anyone writes it up.
  • Typos, broken links, and clarifications can go straight to a pull request.

Making a change

  1. Fork the repository and create a topic branch: <type>/<short-description>, for example docs/clarify-dco or feat/rust-profile.
  2. Commit with a Conventional Commit message and a DCO sign-off: git commit -s -m "docs(sdlc): clarify hotfix path". The sign-off certifies the Developer Certificate of Origin.
  3. Sign your commits (SSH or GPG) so they show as Verified.
  4. Open a pull request to main. The title must also be a Conventional Commit, because it becomes the squash commit message.

What a good change looks like

  • Use professional wording in code comments, documentation, commit/PR messages, release notes and automation output. No emojis, joke copy or bot sound effects.
  • A new or changed requirement follows the format in policies/README.md: an ID that has never been used, a level, the rule, Why, and Verified by. A requirement nobody can verify is not accepted.
  • If it maps to a framework control, the crosswalk in compliance/ is updated in the same pull request.
  • A new MUST that existing repositories do not meet is labeled breaking and ships in a MAJOR release.
  • Configs and workflows pass their own checks: zizmor, actionlint, gitleaks, and the conformance checker.

Running the checks locally

Documentation and package checks:

npx markdownlint-cli2 "**/*.md"
lychee --offline --include-fragments --no-progress './**/*.md'
pwsh tools/Test-RepoConformance.ps1 -SelfTest
pwsh tools/Test-RepoConformance.Fuzz.ps1 -Seed 22023 -Iterations 1000
pwsh tools/Test-StandardsPackage.ps1
pwsh tools/Test-RepoConformance.ps1 -LocalPath . -StaticOnly

Package tests use an isolated temporary Git fixture; they do not commit changes in this repository. For version proposals and release bundles, see bundle releases.

Workflow and security checks:

zizmor .github/workflows
actionlint
gitleaks detect --source . --no-banner
pwsh tools/Test-RepoConformance.ps1 -Repository KofTwentyTwo/standards -LocalPath .

The same checks run in CI on every pull request and must pass before merging. Parser changes must pass both CI seeds and retain any discovered failure as a deterministic regression test. See fuzzing for extended campaigns and badge assessment for enrollment evidence.

License of contributions

Documentation contributions are licensed under CC BY 4.0; configuration, workflows, scripts, and templates under MIT.