Goal
- •Turn current changes into clean commit(s) with clear messages and minimal scope.
Inputs (ask only if missing)
- •Commit intent/topic (one sentence).
- •Whether to split into multiple commits (if unclear).
- •Required checks (if the user is specific).
Non-goals / Guardrails
- •Do not rewrite history (no amend/rebase/force-push) unless explicitly requested.
- •Do not touch unrelated files.
- •Do not discard local changes unless explicitly requested.
Steps
- •Inspect state
- •
git status --porcelain - •
git diff --stat - •If no changes: report and stop.
- •Ensure a feature branch
- •
git branch --show-current - •If on default branch, create:
git switch -c codex/<topic>-<YYYYMMDD>.
- •Decide commit granularity (default: 1)
- •Split only when there is a clear separation (refactor/feature/tests/docs).
- •Explain the split briefly before staging.
- •Stage and commit
- •Stage only relevant paths (use
git add -pif partial staging is needed). - •Compose Conventional Commit message:
type(scope): summary. - •Commit with
git commit -m "<subject>" -m "<optional body>".
- •Verify and report
- •
git log -1 --oneline - •
git status --porcelain - •If checks are required by the repo, run the smallest relevant set:
- •Prefer
yarn lintfor quick validation. - •If behavior changed, add
yarn build(andyarn build:firefoxif relevant).
- •Prefer
Output format
- •Commit(s) created: hash + subject.
- •Files included per commit (short list).
- •Checks run (or explicitly skipped).
- •Remaining dirty files, if any.
Edge cases
- •Untracked files: confirm whether to include.
- •Mixed concerns in one file: use partial staging if requested.
Trigger examples
- •"良い粒度でコミットして"
- •"Conventional Commits でコミット作って"
- •"この変更をコミットして"