Contributing
Contributions are welcome. The project follows a small set of conventions so that every change is reviewable, testable, and releasable.
Development setup
Section titled “Development setup”npm cinpm run typechecknpm testBranch and release flow
Section titled “Branch and release flow”The repository uses two long-lived branches:
develop— integration branch; all PRs target it.main— release branch; updated only by semantic-release on publish.
Releases are automated with semantic-release: commits must follow the
Conventional Commits specification.
Every commit to develop lands in the changelog and release notes — write
commit messages for human readers, not for the tool.
What to add a test for
Section titled “What to add a test for”Any behavior change to the parser, validator, or archive handling must ship with fixture-backed tests. The fixture layout follows the source layout:
tests/fixtures/— plain XML and zip.archimatesamples;tests/parser/— parsing behavior, raw vs. semantic values, defaults;tests/validator/— every issue code the validator can emit;tests/archive/— zip handling, including embedded-image archives;examples/— runnable usage samples, each with atests/examples.test.tsharness.
Public API changes
Section titled “Public API changes”src/index.ts and src/archive.ts are the entire public contract (see
Design principles). Changes to them:
- are documented in JSDoc on the source, since the API reference on this site is generated from it;
- bump the version according to semantic-release rules (fix/feat/BREAKING CHANGE);
- never land silently — the PR description must call them out.
Documentation
Section titled “Documentation”Site pages live in website/src/content/docs/; the API reference group is
generated from JSDoc (npm run gen:api inside website/) at build and
deploy time — it is not committed. When a PR changes public API, the JSDoc
on the source is the documentation; the generated pages follow it
automatically.
Before opening a PR
Section titled “Before opening a PR”npm run typechecknpm testnpm run test:published # exercises the archive pipeline end-to-endThen open the PR against develop. If the change is user-visible, the
release notes/changelog entries are produced automatically at publish time
— no manual changelog editing.