Commit gnadd
Git-Native Agent-Driven Development — a GitHub-native workflow for coding agents (Cursor, Claude Code, and more), enforced by tested Agent Skills
npx -y skills add AlexHagemeister/gnadd --skill commit-gnaddAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Make atomic git commits during active development. Use when the user invokes /commit-gnadd or asks to commit, save progress, checkpoint work, or create a git commit; reviews changes, confirms staging, writes a conventional commit message, creates the commit, and reports the result.
SKILL.md
4.7 KB, as published. Nobody here has run it
Commit
Make an atomic git commit during active development. Work with the current branch and integrate with issue branches when applicable.
Do not stage files, amend, push, stash, or clean up without user approval where required below.
GNADD Invariants
- Commits are visible save points during issue work; keep them atomic and recoverable.
commit-gnaddcan trigger from casual phrasing, so it must guard against accidental commits onmain,master, or detached HEAD.- Do not cross-check issue completion here; drift and acceptance criteria verification belong to
resolve-issue-gnadd. - For broader workflow or file-hygiene guidance, use
help-gnadd.
1. Branch Guard (before anything else)
Run the guard from the bundled script (gnadd.sh in this skill's directory; if missing, stop and have the user reinstall the GNADD skills per help-gnadd's Install & Update guidance — npx skills update -y in the scope used at install, or scripts/sync.sh for local-checkout installs):
bash "<skill-dir>/gnadd.sh" guard-commit
state=ON_MAIN: stop. This workflow routes work through issue branches; committing to localmaincreates the exact local-ahead divergence the other skills halt on as dangerous. Say so plainly, and offer: switch to or start an issue branch (suggest/start-issue-gnadd— it can carry uncommitted changes onto the new branch safely), or — only with the user's explicit confirmation — commit tomainanyway with raw git.state=DETACHED_HEAD: stop. Commits made in detached HEAD belong to no branch and are easy to lose permanently. Recommend creating a branch first (git switch -c <name>); proceed only on explicit confirmation.- Success: the output includes
issue=<N>when on an issue branch — use it for the message convention below.
This guard matters because commit-gnadd is the one skill that can auto-trigger from casual phrasing ("commit this") — it must not be an unguarded path onto main.
2. Review Changes
git status --porcelain
git diff HEAD
Summarize: staged files, modified unstaged files, untracked files, deleted or renamed files.
Flag files that may not belong in the commit:
.envfiles or credentials*.log- Scratch, temp, or generated files
- Lockfile-only changes
- Files outside the project's typical source, docs, config, or test directories
Do not silently stage everything.
If there are no changes, say so and stop.
3. Confirm What To Stage
Present the file list and recommended inclusion set.
- Default assumption: include everything that looks intentional.
- Ask before including flagged files.
- If the user says "all" or "everything," stage all current changes without further questions.
- Respect explicit include/exclude instructions.
Stage only confirmed files.
4. Choose Commit Message
Use conventional commits:
<type>: <concise summary>
<optional body>
Allowed types: feat, fix, chore, docs, refactor, test, style, perf.
Choose the type from the actual change, not from filenames alone. Include a body only when the change needs context beyond the summary.
Issue Branch Integration
If on an issue branch (issue=<N> from the guard), include Re #<N> in the commit body.
- Use
Re #<N>for mid-session commits. - Do not use
Closes #<N>orFixes #<N>; those are reserved for the final PR.
If not on an issue branch, omit issue references.
5. Commit
git add <confirmed-files>
git commit -m "$(cat <<'EOF'
<commit message>
EOF
)"
Report the short hash and summary:
git log -1 --format="%h %s"
Closing Guidance
Offer a brief next-step nudge only after the commit succeeds and the hash is reported — not when the branch guard stopped the flow or there were no changes.
After reporting the commit, check whether work remains:
git status --porcelain
Still dirty: nudge toward continuing implementation or /commit-gnadd again — not /resolve-issue-gnadd.
Clean on an issue branch: nudge toward continuing work; offer /resolve-issue-gnadd only as a secondary option ("when you feel done"), never as the primary suggestion.
Clean, not on an issue branch: suggest /start-issue-gnadd if appropriate.
Keep it to a sentence or two with invitational options. Do not verify acceptance criteria here — that belongs to resolve-issue-gnadd.