Install
$ agentstack add skill-mattbaconz-signal-signal-commit ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
⚡ signal-commit — Instant Commit
Zero-confirmation commit. Reads the diff, generates a conventional commit message, stages everything, commits. One command. Done.
Invocation Triggers
Activate when user says any of:
/signal-commit"commit everything","just commit","signal commit""commit my changes","commit this","commit and push"- Asks to commit without providing a message
Slash command behavior
If the user's message is only /signal-commit (optionally with flags like --dry, --draft, or --split), treat that as execute now.
- Do not stop after acknowledging the skill.
- Do not ask for confirmation unless the user explicitly requested review mode.
- Immediately follow the ordered steps below in the same turn.
- Respect
--dryand--draftexactly as defined in this file.
Host notes (Gemini CLI, Antigravity, and similar)
- Activation is not a commit. The UI may show that this skill loaded (e.g. “Skill signal-commit activated”). That only brings this file into context. A real commit happens only when you run the workflow: either follow the git steps below or invoke
scripts/commit.ps1/scripts/commit.shwith current working directory = the git repository root and the generated message (see Script). - Same turn as
/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. - Later messages are new turns. A follow-up like
hidoes not mean “run signal-commit now”; answer that message. If the user wants a commit after chatting, they must invoke/signal-commitagain or ask explicitly to commit.
Behavior (Ordered Steps)
- Get the full diff
``bash 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)- Mix of unrelated paths → omit scope
- 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 commit
If multiple logical changes detected:
- Without
--splitflag: warn once, then split anyway - With
--splitflag: split silently
Agent 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
- Max 72 chars total
- Imperative mood:
addnotadded,fixnotfixes,removenotremoved - No period at end
- No emoji
- No ticket numbers unless branch name contains one (e.g.
feat/PROJ-123-thing→feat(scope): description PROJ-123)
- Execute (unless
--draftor--dry)
``bash git add -A git commit -m "{generated_message}" ``
- Report
`` ✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12] ``
Flags
| 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)
Commit Message Rules (Non-Negotiable)
These do not change. There is no config for them.
- Conventional Commits format always:
type(scope): description - Types:
featfixrefactorchoredocsteststyleperf - Max 72 chars — truncate description if needed, never truncate type or scope
- Imperative mood:
addnotadded,fixnotfixes - No period at end
- No emoji
- No "WIP" — if genuinely incomplete, user should use
--draftfirst
Why 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.
Output Format
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
Edge Cases
| 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. |
Script
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.
Eat Your Own Cooking
This skill's own output must comply with SIGNAL compression rules if SIGNAL is active:
- No preamble before the commit line
- No explanation after the commit line
- One line per commit
- If something goes wrong: one line, TMPL:bug format
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: mattbaconz
- Source: mattbaconz/signal
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.