Skip to content

Contribution conventions

Conventions to respect so a PR is accepted.

Complementary document to the root CONTRIBUTING.md.


Conventional commits with arka-deck scope:

<type>(arka-deck): <short imperative lowercase description>
<optional body — focus on WHY, short paragraphs>
Signed-off-by: <First Last> <email>
Co-Authored-By: <co-author if applicable>
TypeUsage
featNew feature
fixBug fix
docsDocumentation only
refactorReorganization with no behavior change
testTest addition or fix
ciCI/CD, gates, workflows
styleFormat, prettier, lint
choreMaintenance, release, deps
perfPerf optimization
  • Imperative verb, lowercase: add, fix, remove, update
  • Focus on WHY, not just WHAT.
  • ≤ 70 chars for the title line.
  • Optional body for details, in short paragraphs.

Required on each commit (git commit -s). Without sign-off, the CI blocks the PR.

Signed-off-by: First Last <email@example.com>

If forgotten on the last commit: git commit --amend -s.

If forgotten on multiple: git rebase -i HEAD~N --signoff.


PrefixUsage
feat/<short-name>New feature
fix/<short-name>Bug fix
docs/<short-name>Documentation
refactor/<short-name>Refactor
chore/<short-name>Maintenance
hotfix/<X.Y.Z+1>Urgent hotfix (from a tag)

Examples: feat/mission-guardian-evidence, fix/cortex-actions-favorites-leak, docs/refonte-bilingue.

  1. Branch from up-to-date main.
  2. Work locally, small signed commits.
  3. Push to your fork.
  4. PR to main of the arka-squad/arka-deck repository.
  5. CI must be green before review.

Same format as commits: <type>(arka-deck): <description>.

## Summary
- 1-3 bullets of what changes.
## Test plan
- [ ] How to verify it works.
- [ ] Edge cases to cover.
- [ ] Anti-regressions.
## Links
- Issue: #N
- ADR: ../../adr/000X-...

Prefer one PR per intent. If it exceeds ~500 lines of “interesting” diff (excluding generated), consider splitting.


  • Strict: tsc --noEmit must pass (npm run typecheck).
  • No any unless explicitly justified (comment).
  • Interfaces > types for outbound ports.
  • Relative imports with .js extension (ESM TypeScript).

eslint --max-warnings=0 → no warning tolerated. No eslint-disable directives without commented justification.

prettier --write (configured). Run npm run format before commit if needed.

For any code change:

  • Add or update adjacent tests.
  • npm test must pass.
  • For HTTP routes: server test under adapters/inbound/web/server/src/__tests__/.
  • For security (URL, secrets): direct unit test on the policy.

Update:

  • The corresponding addon-firstparty sheet (if addon).
  • The provider sheet (if provider).
  • The docs/dev/README.md index if new subfolder.
  • CHANGELOG.md ([Unreleased] section).
  • Minimal frontmatter (bilingual header with EN/FR link + back-to-index).
  • ## Contents if > 4 sections.
  • Fenced code with language ( ```ts, ```bash).
  • Tables for structured lists.

Active guides have a FR version (*.md) and EN (*.en.md). Any modification touches both. No divergence.


  • No API key in commits (gitleaks blocks).
  • No secret in logs.
  • No modification of .claude/settings.json (user settings).
  • No reference to .input/ (internal, gitignored).
  • No SSRF override by default (ARKA_DECK_CORTEX_ALLOW_UNSAFE_URL reserved for dev).

Report a vulnerability via the SECURITY.md procedure.