← ClaudeAtlas

commitlisted

Create commits using conventional commits (title + bullet description), handling submodules with pending changes first and then the main repository. Use when the user asks to commit, save changes in git, generate a commit message, or use /commit. Push to the remote only when the `push`/`--push` argument is supplied.
dougcunha/TokenHound · ★ 3 · AI & Automation · score 79
Install: claude install-skill dougcunha/TokenHound
# Commit (submodules first) Commit pending changes: each dirty submodule first, then the main repository. Enable **push mode** whenever the invoking message contains `push`, `--push`, `send`, or `--send`, whether as a slash-command argument (`/commit --push`) or free text. Text after `/commit` is context attached to the message, so read the user's own message to decide. In push mode, send to the remote after committing (step 7). Without these words, stop after local commits. ## Inviolable rules - Network access is allowed only in **push mode**, and only with `git push`, `git fetch`, and `git pull --rebase` (never `git merge` or pull with merge). Outside push mode, use no network. - **NEVER** use `--no-verify` or `--no-gpg-sign`. If a hook fails, investigate and report; do not bypass it. - Prefer a new commit to `--amend`. - Do not create a branch, check out, or alter working-tree state beyond the agreed `git add`. ## Procedure ### 1. Inspect state ```bash git submodule status git status --porcelain git symbolic-ref -q --short HEAD # empty/error = detached HEAD ``` Without `.gitmodules`/submodules, skip directly to step 4 (main repository). ### 2. For each submodule with pending changes Detect dirtiness in `<sub>` with `git -C <sub> status --porcelain`. Empty = skip. For each dirty submodule, execute steps 3 and 4 **inside it** (`git -C <sub> ...`) before touching the main repository. ### 3. Decide what enters the stage Compare `git status --porcelain` (column 1