Help us improve
Share bugs, ideas, or general feedback.
From plugins-dev-tools
Stage and commit changes using conventional commits format. Use when the user asks to commit, save changes, make a commit, or says "commit this", "commit my changes", or "commit what I have".
npx claudepluginhub pcollinsonline/claude-asana --plugin plugins-dev-toolsHow this skill is triggered — by the user, by Claude, or both
Slash command
/plugins-dev-tools:commit [dir-or-files][dir-or-files]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Stage and commit changes using conventional commits format, with contextual analysis to generate an accurate commit message.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Stage and commit changes using conventional commits format, with contextual analysis to generate an accurate commit message.
allowed-tools. No Bash, no Read..env files, even if explicitly asked.Call commit_prepare with optional scope from $ARGUMENTS:
The tool returns: repoRoot, branch, files (flat array with diffStat per file), filesByWorkspace (files pre-grouped by workspace directory), inferredScope (deterministic scope suggestion or null), recentCommits, config (allowedTypes, headerMaxLength), and warnings.
From the returned filesByWorkspace and per-file diffStat:
If the change is non-trivial and diffStat alone isn't enough to understand the intent, call commit_diff with specific file paths to inspect the actual changes. Skip for trivial changes (dependency bumps, renames, single-file edits with clear diffStat). Lock files are always excluded from the diff output.
Using the config and inferredScope returned by commit_prepare:
type from config.allowedTypes. See conventional-commits.md for type descriptions. When a domain-specific type (e.g., ai) matches the purpose of the changes, prefer it over structural types (refactor, docs, chore, style) that only describe the form of the change.scope:
inferredScope is non-null, use it as the commit scope. Override only when a domain-specific type (e.g., ai) makes a different scope more meaningful.inferredScope is null, determine scope from filesByWorkspace keys. If changes span multiple packages, identify the primary package where the intentional change was made (other packages may just have ripple effects). If truly root-level only, omit scope.api, cli, ci, url, db, ui, sdk must be lowercase), no trailing period, concise.type(scope): subject) does not exceed config.headerMaxLength. If too long, shorten the subject or move detail to the body.Call commit_execute with:
files: absolute paths (prefix each files[].path with repoRoot + "/")header: the drafted conventional commit headerbody: optional body textcoAuthor: the model name (e.g., "Claude Sonnet 4.6")The tool stages, pre-validates, commits, and verifies in a single call.
On failure: the response includes stage (validation, staging, or commit) and errors. Fix the identified issue and call commit_execute again — re-staging is idempotent.
On success, display:
remainingChanges)