Contributing
September 4, 2026 ยท View on GitHub
Contribute a focused correction, clarification, or proposal for a recurring requirement. Before you start, read the standards contribution requirements and confirm that an existing standard does not already cover the concern.
Propose a change
- Search existing issues and standards for the same concern.
- Open an issue that describes the recurring decision or risk, affected readers, and expected outcome.
- For a new standard, start with
templates/standard.md. For a new task profile, start withtemplates/profile.md. - Update
catalog.yamlwhen you add, move, or retire a governed document or profile. - Run the checks below from the repository root.
- Before a versioned release, set
release_statustoreadyand runruby scripts/validate_catalog.rb --release. - Open a pull request that explains what changed, why it is needed, and what you verified.
Run the checks
The validators use only the Ruby standard library. You do not need to install a bundle.
ruby scripts/validate_catalog.rb
ruby scripts/validate_integrations.rb
ruby scripts/validate_testing_reference.rb
ruby scripts/test_route_profile.rb
ruby scripts/test_schema_drift.rb
ruby scripts/test_workflows.rb
ruby scripts/test_standards_lib.rb
ruby scripts/test_validate_catalog.rb
ruby scripts/test_validate_integrations.rb
ruby scripts/test_validate_testing_reference.rb
ruby scripts/test_project_readme.rb
Continuous integration runs this list in the order shown. Each command returns:
0when it passes1when it finds a problem2when the command is invalid
The validators reject unrecognized options.
They also reject more than 2,048 Markdown, YAML, or JSON input files, any one input over 2 MiB, more than 32 MiB in total, escaped symlinks, YAML deeper than 100 levels, and YAML over 100,000 syntax nodes. These limits are well above the current repository baseline and bound pull-request-controlled work before parsing. Split an intentionally larger corpus or propose a reviewed limit change with measurements and tests.
Changing the workflow
This repository restricts GitHub Actions to an allowlist. Every action must also be
pinned to a full commit SHA. An action outside the allowlist does not fail a step. The
whole run ends in startup_failure without logs, which can look like an unrelated
outage.
Local linting cannot detect this failure because the allowlist belongs to the GitHub repository settings, not the workflow file.
Before adding an action, check the policy and add the action to ALLOWED_NON_GITHUB_ACTIONS in scripts/test_workflows.rb:
gh api repos/raintree-technology/raintree.standards/actions/permissions/selected-actions
ruby scripts/test_workflows.rb also checks that the commands listed above match the ones the workflow runs, so a new suite cannot be added to one without the other.
Ruby version
The supported Ruby version is pinned in .ruby-version and
.tool-versions. Both files must name the same version.
.ruby-version supports rbenv, chruby, and tools that follow the Ruby convention.
.tool-versions supports mise, which continuous integration uses to install Ruby.
ruby scripts/test_standards_lib.rb fails if the files disagree.
The validators require Ruby 3.1 or newer. The macOS system Ruby is too old. From the
repository root, run mise install or install the pinned version with another version
manager.
Keep changes focused. Preserve existing rule IDs and unknown YAML front-matter fields. Do not include confidential information, personal data, credentials, or material that you do not have permission to publish.
By contributing, you represent that you created the contribution or otherwise have the right to submit it. You agree that it may be distributed under the licenses described in LICENSE.md.
Review
Maintainers review proposals for technical correctness, operational feasibility, unintended incentives, and conflicts with existing rules. A qualified human owner must review high-impact security, legal, privacy, financial, or regulatory standards.
Material public-documentation changes must follow the documentation accessibility and reader-review policy. Use the comprehension review and independent review records when their governing rules apply.
All participation must follow the Code of Conduct.