From signal
Stage all changes and create a conventional commit from the diff. Zero prompts, zero confirmation by default. Use when user types /signal-commit, "commit everything", "just commit", "signal commit", or asks to commit current changes without specifying a message. Supports --draft (show message without committing) and --split (atomic commits per logical change).
How this skill is triggered — by the user, by Claude, or both
Slash command
/signal:signal-commitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Zero-confirmation commit. Reads the diff, generates a conventional commit message, stages everything, commits. One command. Done.
Zero-confirmation commit. Reads the diff, generates a conventional commit message, stages everything, commits. One command. Done.
Activate when user says any of:
/signal-commit"commit everything", "just commit", "signal commit""commit my changes", "commit this", "commit and push"If the user's message is only /signal-commit (optionally with flags like
--dry, --draft, or --split), treat that as execute now.
--dry and --draft exactly as defined in this file.scripts/commit.ps1 / scripts/commit.sh with current working directory = the git repository root and the generated message (see Script)./signal-commit. When the user’s message is only /signal-commit (plus flags), perform those steps in that response, using whatever terminal or git integration the host allows. Do not treat “skill activated” as completion.hi does not mean “run signal-commit now”; answer that message. If the user wants a commit after chatting, they must invoke /signal-commit again or ask explicitly to commit.Get the full diff
git diff --staged && git diff
Both staged and unstaged. Work with the combined picture.
Analyze the diff — detect type and scope
| Type | When to use |
|---|---|
feat | New capability, new endpoint, new component |
fix | Bug fix, error handling, crash prevention |
refactor | Same behavior, restructured code |
chore | Config, deps, tooling, build, CI |
docs | Comments, README, documentation only |
test | Adding or fixing tests only |
style | Formatting, whitespace, no logic change |
perf | Performance improvement |
Scope = the primary directory or module affected. Derive from file paths:
src/auth/* → (auth)src/api/* → (api)components/ui/* → (ui)*.config.*, package.json → (config)Detect if multiple logical changes exist
Logical change = unrelated type+scope pair. Examples:
fix(auth) changes + chore(deps) changes = 2 logical changes → splitfeat(api) across 3 files = 1 logical change → single commitIf multiple logical changes detected:
--split flag: warn once, then split anyway--split flag: split silentlyAgent invocation for split: When splitting, the agent generates one conventional commit
message per logical change and passes them as a single newline-delimited string. The script
uses the (scope) in each message to selectively stage matching files for that commit.
Generate commit message
Format: type(scope): description
add not added, fix not fixes, remove not removedfeat/PROJ-123-thing → feat(scope): description PROJ-123)Execute (unless --draft or --dry)
git add -A
git commit -m "{generated_message}"
Report
✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12]
| Flag | Behavior |
|---|---|
--draft | Show generated message, do not commit. User can approve or edit. |
--split | Force atomic commits per logical change. No warning. |
--push | Commit then immediately push (equivalent to running signal-push). |
--dry | Explain what would happen — touch nothing, change nothing. |
--draft output format:
Draft commit message:
feat(auth): add JWT refresh token rotation
Run /signal-commit to confirm, or edit and pass as: /signal-commit "your message"
--dry output format:
Would stage: 3 files
Would commit: feat(auth): add JWT refresh token rotation
Would not push (use --push to push)
These do not change. There is no config for them.
type(scope): descriptionfeat fix refactor chore docs test style perfadd not added, fix not fixes--draft firstWhy no config: Having a standard is more valuable than having the right standard. Conventional Commits works with semantic-release and most CI systems. Config options lead to bikeshedding.
Single commit:
✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12]
Split commits:
✓ fix(api): handle null response from upstream [2 files, +8/-3]
✓ chore(deps): update axios to 1.6.2 [1 file, +2/-2]
With --push:
✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12]
✓ pushed → origin/main
| Situation | Behavior |
|---|---|
| Nothing to commit | ∅ nothing to commit — stop, no error |
| Untracked files only | Stage them, include in commit |
| Merge conflict markers present | ✗ merge conflicts in {files} — resolve before committing |
| Detached HEAD | Commit succeeds, warn: ? detached HEAD — push will require explicit ref |
| No git repo | ✗ not a git repository |
| User passes a message | Use it as-is, skip generation. Still enforce max 72 chars. |
The mechanical git operations are handled by scripts/commit.sh (Unix) or scripts/commit.ps1 (Windows PowerShell).
Single commit:
bash .agents/skills/signal-commit/scripts/commit.sh [--draft] [--push] [--dry] "feat(auth): add JWT refresh token rotation"
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\.agents\skills\signal-commit\scripts\commit.ps1" [--draft] [--push] [--dry] "feat(auth): add JWT refresh token rotation"
Split commits (agent passes newline-delimited messages):
bash .agents/skills/signal-commit/scripts/commit.sh --split "fix(auth): handle null token\nchore(deps): update axios to 1.6.2"
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\.agents\skills\signal-commit\scripts\commit.ps1" --split "fix(auth): handle null token`nchore(deps): update axios to 1.6.2"
The script handles: selective staging per scope, git add, git commit, stat reporting. Message generation is done by the agent (this skill) before calling the script.
This skill's own output must comply with SIGNAL compression rules if SIGNAL is active:
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub mattbaconz/signal --plugin signal