Rules for any agent (human or AI) working in this repository.
- Branch from
mainfor all changes - PRs always target
main - Always add
@guy-shahineand@akadenia-leafas reviewers — Guy 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 an optional scope, enforced by check_pr_title_style.yml:
type(optional-scope): lowercase subject
- Scope is optional —
feat: add new featureis valid - 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: add new feature without 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:
pnpm run lint
pnpm test
pnpm 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
pnpm run build(compiles todist/)
- Maximum heading depth is h3 (
###) — never use####or deeper in README.md - The README is mirrored as MDX on akadenia.com, which only supports h1–h3. h4+ headings break the MDX parser and the website build.
- Use bold text instead of h4 for sub-sections under h3.
- Tests live in
__tests__/, run withjest - All tests must pass before pushing
Note: Integration tests require Azurite (local Azure emulator). Use
pnpm test:with-azuritefor full test suite, orpnpm testfor unit tests only.