- Source code & identifiers: English
- User-facing CLI output: English
- Commit messages in this repo: English (consumer repos may use their own language per their own conventions)
Conventional Commits:
type(scope): short description
optional longer body
BREAKING CHANGE: notes (optional)
Types: feat, fix, docs, style, refactor, perf, test, chore, build, ci, revert
Scopes:
eslint/prettier/tsconfig/commitlint— package-specificthemes/ui— design system packages (when they land)cli— theprecisabinarytemplates— files intemplates/docs— documentation updatesci— workflows in.github/deps— dependency updatesrelease— release plumbing
AI attribution: Do not include Co-Authored-By: Claude, Generated with Claude, or similar lines. The commit-msg hook enforces this.
- TypeScript strict mode,
noUncheckedIndexedAccess - ESM modules only
- Prettier-enforced formatting (100 char width, single quotes, semicolons, trailing commas)
- Imports sorted by
eslint-plugin-simple-import-sort - Interfaces, objects, and JSX props sorted by
eslint-plugin-perfectionistwhere applicable
- All public packages are scoped
@precisa-saude/* - Apache-2.0 license
- ESM-only unless there's a concrete reason to dual-publish
- Declare
peerDependencieshonestly — don't bundle things consumers already install
@precisa-saude/eslint-configpeers on ESLint plugins, does not bundle them@precisa-saude/prettier-configships JSON only@precisa-saude/tsconfigships JSON only@precisa-saude/commitlint-configpeers on@commitlint/*@precisa-saude/clibundles its runtime deps viatsup
Ask before adding any new runtime dependency.