1. Check staged changes using `git diff --cached --stat` to determine commit scope.
2. Identify changes with existing session context (produced, discussed, or observed).
3. Identify changes lacking session context (prior session, other agent, manual edits).
4. Determine relevant action types (intent, decision, rejected, constraint, learned).
5. Write action lines for changes with context, capturing reasoning.
6. For changes without context, infer decisions from the diff.
7. Compose the commit message with a conventional commit subject and action lines in the body.