commitlisted
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