From quiver
Generates a Conventional Commits commit message from staged changes, then commits and optionally pushes. Useful when the user explicitly requests a commit.
How this skill is triggered — by the user, by Claude, or both
Slash command
/quiver:commit [--push] (auto commit & push without prompting)When to use
user wants to commit changes or write a commit message -- '/commit', 'commit this', 'make a commit', 'git commit', 'commit my changes'
[--push] (auto commit & push without prompting)The summary Claude sees in its skill listing — used to decide when to auto-load this skill
```
!`git rev-parse --is-inside-work-tree 2>/dev/null || echo "NO_GIT"`
!`git status --short 2>/dev/null || echo "NO_GIT"`
!`git diff --cached 2>/dev/null || echo "NO_GIT"`
!`git log --oneline -10 2>/dev/null || echo "NO_GIT"`
If any gather-context block above returned NO_GIT, this directory is not a git repository.
Print: > No git repository detected. /commit requires a git repo.
Stop here.
Silently determine which case applies — do not show the case label or decision logic to the user:
git status is empty → tell the user and stop.git diff --cached is empty but git status shows changes → tell the user to stage files and run /quiver:commit again, then stop.Analyze git diff --cached and the recent log. Generate a Conventional Commits message following these rules:
Type — Select one based on primary intent:
| Type | When to Use |
|---|---|
feat | New feature or capability visible to users |
fix | Bug fix |
docs | Documentation only (README, comments, JSDoc) |
style | Formatting, whitespace, semicolons — no logic change |
refactor | Code restructuring with no behavior change |
perf | Performance improvement |
test | Adding or fixing tests |
build | Build system or external dependencies (npm, Makefile) |
ci | CI/CD configuration (GitHub Actions, CircleCI) |
chore | Maintenance tasks (version bumps, tooling config) |
revert | Reverting a previous commit |
Scope — From file paths: single directory → its name, single file → domain name, cross-cutting → omit.
Breaking changes — If the change removes/renames public APIs, changes signatures, alters data formats, or removes CLI flags/commands, add ! after type/scope and a BREAKING CHANGE: footer.
Subject line — Imperative mood, lowercase after colon, no period, ≤72 chars total, describe what not how.
Body — Almost never. Only for breaking changes or when the subject alone would be misleading. Wrap at 72 chars. Never include file lists — git log --stat shows this.
Footers — BREAKING CHANGE: if applicable. Refs: #issue if relevant.
Important: Do NOT output the commit message as separate text. Embed it directly inside the AskUserQuestion tool call so the user always sees the message alongside the options.
Include a body or footers only for breaking changes or multi-type changes where the subject alone is genuinely ambiguous. Default to subject-only. Don't add Co-authored-by or attribution footers unless explicitly requested.
--pushIf $ARGUMENTS contains "push" (e.g., /quiver:commit --push), skip the AskUserQuestion step entirely. Instead, show the generated commit message, then immediately execute Commit & Push (commit + push to remote) without prompting.
Use the AskUserQuestion tool with the commit message embedded in the question field:
"\x1b[2mCommit Message:\x1b[0m\n\n{type}({scope}): {subject}\n\nProceed?"
If the message has a body, append body lines after the subject separated by newlines.
On commit or commit & push:
git commit -m "$(cat <<'EOF'
{full commit message}
EOF
)"
git log --oneline -1 and git status --short.If commit & push, also:
git branch --show-currentgit rev-parse --abbrev-ref @{upstream} 2>/dev/null succeeds → git push, otherwise → git push -u origin {branch}Output:
Committed:
{short hash}{subject} Branch:{branch name}Pushed to:origin/{branch}(only if pushed)
On edit: Ask what to change, revise, re-present, and ask again.
On cancel:
Commit cancelled. Staged changes are intact.
Stop here.
If git commit fails, show the error verbatim and suggest the user fix the issue and re-run /quiver:commit. Never retry automatically or use --no-verify.
Trigger: /commit or /commit --push (and /quiver:commit should also work)
Setup:
git diff --cached is non-empty).Expected behavior:
> No git repository detected. /commit requires a git repo. and stops.AskUserQuestion with Commit / Commit & Push / Edit / Cancel.--push argument, skill skips the prompt and runs commit then push (git push if upstream exists, git push -u origin <branch> otherwise).--no-verify.Verification checklist:
/commit.feat, fix, docs, etc.) and a subject ≤72 chars.Co-authored-by or AI-attribution footers appear in the commit.AskUserQuestion with the message embedded in the question, not plain text.--push path commits and pushes without prompting.Known gotchas:
\x1b[2m ANSI dim escape inside the question string assumes the user's terminal renders ANSI; non-ANSI terminals will see literal escape codes but the message remains readable.git push -u origin <branch>; do not silently fall back to git push when no upstream is configured.Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub yagizdo/quiver --plugin quiver