Rules for any agent (human or AI) working in this repository.
- Branch from
mainfor all changes - PRs always target
main - Always add
@guy-shahineas reviewer — he is the code owner for all files (CODEOWNERS: * @guy-shahine) - Check
gh pr listbefore creating a new PR — never duplicate an open PR
Conventional Commits with a required scope, enforced by check_pr_title_style.yml:
type(scope): lowercase subject
- Scope is mandatory —
feat: missing scopewill fail CI - Disallowed scope:
core - Allowed types:
build,chore,ci,docs,feat,fix,perf,refactor,revert,style,test
Examples:
✅ feat(helpers): add string truncation utility
✅ fix(api): handle empty response body
✅ chore(deps): upgrade dependencies to latest
❌ feat: missing scope
❌ feat(core): disallowed scope
- All commits must be signed — use SSH or GPG signing (
git config commit.gpgsign true) - Use conventional commit messages matching the PR title format
- Always start from a freshly synced branch — run
git fetch origin && git checkout -b your-branch origin/mainbefore creating any branch. Never branch from a stale local checkout.
Before every push, run all three and fix any failures:
npm run lint
npm test
npm run buildNever use --no-verify. No exceptions.
Releases are handled automatically by semantic-release on push to main:
feat(...)commits → minor version bumpfix(...)commits → patch version bumpBREAKING CHANGEin commit body → major version bump- Release is published to npm as
@akadenia/<package>
Do not manually bump versions in package.json.
- Keep TypeScript at
^5.x— do not upgrade to TypeScript 6.x untilts-jestadds support - Build with
npm run build(compiles todist/)
- Tests live in
__tests__/, run withjest - All tests must pass before pushing