dashore-incubator/Documentation/commit-messages.md
Nicholai 2e051e4bef feat: complete project setup with auth and contributor docs
- add WorkOS AuthKit authentication with middleware protection
- add dashboard with sidebar layout (shadcn/ui components)
- add contributor documentation (CONTRIBUTING, CODE_OF_CONDUCT,
  SECURITY, START-HERE, Documentation/)
- add CI workflow for lint and build on PRs
- switch from pnpm to bun
- add CLAUDE.md and AGENTS.md for AI assistant context
2026-01-21 23:02:18 -07:00

3.2 KiB

Commit Message Guidelines

this guide covers the commit message format for dashore incubator contributions.

format

<type>(<scope>): <description>

[optional body]

[optional footer(s)]

subject line

  • 50 characters maximum (72 hard limit)
  • use imperative mood: "add feature" not "added feature"
  • no period at the end
  • include scope in parentheses when relevant

types

Type Description Example
feat new feature feat(dashboard): add usage metrics chart
fix bug fix fix(auth): resolve redirect loop on logout
docs documentation only docs(readme): update installation steps
style formatting, whitespace style(ui): fix button alignment
refactor code change (no feature/fix) refactor(api): simplify auth middleware
perf performance improvement perf(dashboard): lazy load charts
test adding or updating tests test(auth): add login flow tests
build build system or dependencies build(deps): update next.js to 15.1
ci CI configuration ci(github): add lint workflow
chore maintenance tasks chore: clean up unused imports
revert reverting a previous commit revert: feat(dashboard): add metrics

scopes

common scopes for this project:

Scope Area
auth authentication system
dashboard dashboard pages
ui UI components
api API routes
middleware middleware
deps dependencies

scope is optional but helpful for larger changes.

examples

simple commit

feat(dashboard): add settings page

commit with body

fix(auth): resolve session timeout on idle

the session was expiring after 15 minutes of inactivity even when
the tab was open. increased timeout to 24 hours and added a
heartbeat to keep the session alive while the page is visible.

Fixes #42

breaking change

refactor(api)!: change auth callback response format

BREAKING CHANGE: the /api/auth/callback endpoint now returns
a redirect instead of JSON. update any code that parses the
response body.

body guidelines

when you need more detail:

  • wrap at 72 characters for readability
  • explain why the change was made, not what (the diff shows what)
  • reference related issues: Fixes #123, Relates to #456

why imperative mood?

git itself uses imperative mood:

  • "Merge branch..."
  • "Revert..."

your commits complete the sentence:

"If applied, this commit will... [your subject line]"

examples:

  • "If applied, this commit will add user settings page"
  • "If applied, this commit will fix login redirect bug"

atomic commits

each commit should:

  1. represent ONE logical change
  2. leave the project in a working state
  3. be independently revertible

bad

commit: "fix bug, add feature, update docs"

good

commit 1: "fix(auth): prevent redirect loop on logout"
commit 2: "feat(dashboard): add settings page"
commit 3: "docs(readme): update auth setup instructions"

next steps