--- name: commit description: Group all pending file changes by conventional type and feature, then commit each group as {type}({scope}): {message}. Message style is full (What/Why/How/Who), brief (one line from git diff), or custom, chosen via decision tree. Use whenever changes must be committed; not for push or PR creation. --- # commit — group and commit file changes ## Steps 1. Track every file change: inspect all changes with `git status --porcelain` first, then `git add` group by group. Never `git add -A` and commit everything at once. 2. Group the changes by same type plus same requirement or feature. One group is one commit. 3. Commit each group with the format `{type}({requirement or feature}): {message}`. ## Type table | Type | Purpose | | --- | --- | | feat | add or change a feature | | fix | fix a bug | | docs | documentation | | style | formatting; no change to how the code runs | | refactor | code change that neither adds a feature nor fixes a bug | | perf | improve performance | | test | add tests | | chore | build process or tooling change | | revert | revert an earlier commit | ## Message format (pick one of three) Ask the user per the `jsc-ask:ask` rules. Skip the question when the question record or this session already holds a convention. 1. **Full**: covers What, Why, How, and Who (which feature). 2. **Brief**: one sentence summarized from `git diff`. 3. **Custom**: the user types the message. ## Rules 1. The grouping and message drafting details **MUST run as a sub agent**. The main agent only confirms the grouping and runs the commits. 2. Write messages in UTF-8 Traditional Chinese (the type and scope stay in English), per the STE100 output rule. 3. Never push. Push and PR belong to `jsc-git:pr`.