PureXML/docs/rules/rules-swift/CONTRIBUTING.md

32 lines
2.4 KiB
Markdown

# Contributing
This is the **Swift domain** rule set. The language- and platform-specific craft lives at the repository root; the cross-cutting engineering discipline it builds on is vendored in `core/`.
> **This is the canonical home for the Swift domain rules.** Edit them here. The one exception is `core/`: it is a vendored copy of the shared engineering-discipline spine, so propose changes to those files upstream in the engineering-discipline repo, not in this repo's `core/`.
## Where a change belongs
- **Swift-specific rules** (architecture, concurrency, packages, views, formatting and linting, and so on): propose them here.
- **Cross-cutting discipline** (the engineering ethic, proof discipline, commits, git, testing discipline, and the rest of `core/`): `core/` is a synced copy of the `rules-engineering-discipline` repository. Do not edit it here. Propose those changes upstream so every domain inherits them.
## How to propose a change
1. Open an issue describing the rule and why it generalizes beyond a single project.
2. Keep each rule a single, self-contained document: state the rule, show how to apply it, and give a way to check conformance.
3. A new rule earns its place only by a recurring, transferable need. See `core/self-improve.md` for the threshold.
## The shipped kit
This repository ships drop-in starting configuration: `.gitignore`, `.swiftformat`, `.swiftlint.yml`, and `.githooks/` (a `pre-commit` hook that formats and lints, and a `commit-msg` hook that rejects tool attribution and em dashes). Install the hooks per clone with `git config core.hooksPath .githooks`. Tune the configs to your project, but keep them committed.
## House conventions (this repo follows its own rules)
- **Commits** follow Conventional Commits and `core/commits.md`. Committed text names human contributors only and carries no tool attribution of any kind.
- **No em dashes** in any committed text. Use commas, colons, periods, or restructure.
- **Format and lint** before committing (the pre-commit hook does both); see `formatting-and-linting.md`.
- **Prose** contributions are licensed under CC BY 4.0; any code under MIT. By opening a pull request you agree to license your contribution under those terms.
## Style
Match the existing register: clean prose, a short framing of what the rule governs, concrete DO and DON'T guidance, and an acceptance check the reader can run. No provenance footers, no first person.