From prove
Semantic commit assistant. Reads scopes from .claude/.prove.json, detects scope gaps and offers to register new ones, groups changes into logical units, and creates conventional commits.
How this skill is triggered — by the user, by Claude, or both
Slash command
/prove:commitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Never force push or amend existing commits. Instead, create new commits.
.claude/.prove.json or directory structure.declined_scope_<name>.md memory file). Instead, silently use directory-derived scope.AskUserQuestion per references/interaction-patterns.md.Run in parallel:
.claude/.prove.json -- extract the "scopes" key if presentgit status, git diff, git diff --cachedIf no changes exist, inform the user and stop.
With configured scopes (.claude/.prove.json has "scopes"):
Match each changed file to the scope whose path prefix is the longest match.
{ "scopes": { "api": "src/api/", "auth": "src/auth/", "db": "src/models/" } }
Without configured scopes: derive from the most meaningful path segment (e.g., src/api/handler.go -> api).
Built-in scopes (always available, override nothing):
| Scope | Matches |
|---|---|
docs | README, LICENSE, top-level documentation |
repo | .gitignore, CI/CD, repo infrastructure |
config | .claude/.prove.json, project config files |
Skip if .claude/.prove.json has no "scopes" key.
If changed files fall outside ALL configured scope prefixes AND do not match a built-in scope:
~/.claude/projects/*/memory/ for declined_scope_<name>.md for this projectAskUserQuestion:AskUserQuestion:
question: "Files under `<path>` don't match any configured scope. Add `<name>: <prefix>` to .claude/.prove.json?"
header: "New Scope"
options:
- label: "Add Scope"
description: "Register in .claude/.prove.json and use it for this commit"
- label: "Skip"
description: "Use directory-derived scope; never ask about this scope again"
Add Scope: add the entry to .claude/.prove.json "scopes" and use it for the current commit.
Skip: save a memory file at ~/.claude/projects/<project-dir>/memory/declined_scope_<name>.md:
---
name: declined-scope-<name>
description: User declined adding scope "<name>" (<prefix>) to .claude/.prove.json
type: feedback
---
Do not suggest adding scope "<name>" with prefix "<prefix>" to .claude/.prove.json. Declined on <date>.
Update MEMORY.md in the same directory to include the new entry.
Group changed files into logical commit units -- one per coherent change. Each group maps to one conventional commit type.
When grouping is ambiguous with 2-4 discrete options, use AskUserQuestion. Use free-form for ambiguity that needs open-ended discussion.
For each group:
git add <files> -- stage only files for that group<type>(<scope>): <description>
[optional body]
Co-Authored-By: Claude <noreply@anthropic.com>
git status -- verify before next groupTypes: feat, fix, refactor, docs, test, chore, style, perf, ci, migrate
After all commits: git log --oneline -n <count> and report any remaining uncommitted changes.
npx claudepluginhub mjmorales/claude-prove --plugin proveCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.