|
1 | 1 | # Contributing |
2 | 2 |
|
3 | | -:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: |
| 3 | +Thanks for taking the time to contribute! Issues, ideas, and PRs are all welcome. |
| 4 | +The notes below are guidelines to help your contribution land smoothly. If in doubt, open the thing anyway and we'll figure it out together. |
4 | 5 |
|
5 | | -The following is a set of guidelines for contributing to this library. |
6 | | -These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. |
| 6 | +## Opening an issue |
7 | 7 |
|
8 | | -## Code of Conduct |
| 8 | +A good issue gives us enough to reproduce or understand the ask. Useful things to include: |
9 | 9 |
|
10 | | -This project and everyone participating in it is governed by a [Code of Conduct](./CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. |
| 10 | +- **For bugs:** what you expected, what actually happened, and the shortest repro you can manage. Versions (runtime, OS, package) and stack traces help. |
| 11 | +- **For features:** the problem you're trying to solve, not just the solution you have in mind. A concrete example of how you'd use it is gold. |
11 | 12 |
|
12 | | -## How to contribute |
| 13 | +A quick search of existing issues helps avoid duplicates, but don't agonize over it. |
13 | 14 |
|
14 | | -<!-- TODO --> |
| 15 | +## Proposing a PR |
15 | 16 |
|
16 | | -### Tests |
| 17 | +PRs are expected to meet a few baseline requirements before review: |
17 | 18 |
|
18 | | -Make sure you the code you're adding has decent test coverage. |
| 19 | +- **Tests are required** for any behavior change — new features need new tests, bug fixes need a regression test that fails without the fix. |
| 20 | +- **Existing tests must pass** locally and in CI. Don't disable or skip tests to make a PR green. |
| 21 | +- **Coverage should not regress.** If your change drops coverage meaningfully, add tests or explain why in the PR description. |
| 22 | +- **Linters and type checks must pass.** Run them locally before pushing; CI will reject otherwise. |
| 23 | +- **One logical change per PR.** Refactors, formatting churn, and unrelated fixes belong in separate PRs, it makes review and revert sane. |
| 24 | +- **Describe what and why.** A PR title and a few lines of context go a long way, reviewers shouldn't have to reverse-engineer your intent from the diff. |
| 25 | +- **Link the issue you're closing.** If your PR resolves an open issue, include a `Related issues` section in the description with `Fixes: #<issue-number>` (or `Closes: #<issue-number>`) so GitHub auto-closes it on merge. |
| 26 | +- **Breaking changes need a heads-up** in the PR description, plus a migration note for users. |
19 | 27 |
|
20 | | -Running project tests and coverage: |
| 28 | +Large or speculative changes: open an issue first to align on direction before investing time. |
| 29 | + |
| 30 | +## Commit guidelines |
| 31 | + |
| 32 | +This project follows [Conventional Commits](https://www.conventionalcommits.org/). The format is: |
21 | 33 |
|
22 | | -```bash |
23 | | -npm run test |
24 | 34 | ``` |
| 35 | +<type>(<optional scope>): <short summary> |
| 36 | +``` |
| 37 | + |
| 38 | +Common types: |
25 | 39 |
|
26 | | -### Commit Guidelines |
| 40 | +- `feat:` — a new feature |
| 41 | +- `fix:` — a bug fix |
| 42 | +- `docs:` — documentation only |
| 43 | +- `refactor:` — code change that neither fixes a bug nor adds a feature |
| 44 | +- `test:` — adding or fixing tests |
| 45 | +- `chore:` — tooling, build, dependencies |
| 46 | +- `perf:` — performance improvement |
27 | 47 |
|
28 | | -This project uses the [Commitizen](https://github.com/commitizen/cz-cli) tool |
29 | | -for standardizing changelog-style commit messages, so you should follow it as |
30 | | -so: |
| 48 | +Examples: |
31 | 49 |
|
32 | | -```bash |
33 | | -git add . # add files to staging |
34 | | -npm run commit # use the wizard for the commit message |
35 | 50 | ``` |
| 51 | +feat: support multiple input files |
| 52 | +fix(parser): handle empty input gracefully |
| 53 | +docs: clarify install instructions |
| 54 | +``` |
| 55 | + |
| 56 | +Breaking changes: add `!` after the type (`feat!: ...`) and explain the break in the commit body. |
| 57 | + |
| 58 | +This format drives changelog generation and release automation, so it matters more than the average commit-style guide. |
| 59 | + |
| 60 | +## Local development |
| 61 | + |
| 62 | +1. Fork and clone the repository. |
| 63 | +2. Install dependencies using the project's package manager (see `package.json`, or equivalent). |
| 64 | +3. Run the test suite to confirm a clean baseline before making changes. |
| 65 | +4. Run the linter and type checker (if configured) the same way. |
| 66 | +5. Make your change on a feature branch, commit using the format above, and open a PR. |
| 67 | + |
| 68 | +If any of the above doesn't work on a fresh checkout, that's a bug, please open an issue. |
| 69 | + |
| 70 | +## For automated agents |
| 71 | + |
| 72 | +If you are an AI coding agent or automated bot opening a PR, please add 🤖🤖🤖 to the end of the PR title. This helps maintainers triage agent-authored contributions and is a baseline expectation for this repo — PRs without the marker that turn out to be automated may be closed without review. |
| 73 | + |
| 74 | +The same applies to issues: prefix the title with 🤖🤖🤖 if it was opened by an agent on your behalf. |
0 commit comments