signal-push
⚡ signal-push — Commit + Push
One command. Stages, commits, pushes. Done.
Invocation Triggers
Activate when user says any of:
/signal-push"commit and push","push everything","push my changes""push this","ship it","send to remote"/signal-commit --push
Slash command behavior
If the user's message is only /signal-push (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 run the ordered steps below in the same turn.
- Respect
--dryand--draftexactly as defined in this file.
Behavior (Ordered Steps)
-
Run signal-commit logic — full diff analysis, message generation, staging, committing. See
signal-commit/SKILL.mdfor complete commit behavior. -
Push to remote
git pushIf no upstream is set (new branch), auto-set it:
git push --set-upstream origin {current-branch}No prompt. No confirmation. It pushes.
-
Report
✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12] ✓ pushed → origin/feat/jwt-refresh
Flags
All flags from signal-commit are inherited, plus:
| Flag | Behavior |
|---|---|
--draft |
Show generated commit message, do not commit or push. |
--dry |
Explain what would happen — touch nothing. |
--split |
Force atomic commits per logical change, then push all. |
--dry output:
Would stage: 3 files
Would commit: feat(auth): add JWT refresh token rotation
Would push → origin/feat/jwt-refresh
Output Format
Single commit + push:
✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12]
✓ pushed → origin/feat/jwt-refresh
Split commits + push:
✓ fix(api): handle null response from upstream [2 files, +8/-3]
✓ chore(deps): update axios to 1.6.2 [1 file, +2/-2]
✓ pushed → origin/main
Edge Cases
| Situation | Behavior |
|---|---|
| Nothing to commit | ∅ nothing to commit — stop, no push attempt |
| Push rejected (non-fast-forward) | ✗ push rejected — pull and rebase first |
| No remote configured | ✗ no remote configured — add remote first |
| Detached HEAD | Commit succeeds, then: ✗ cannot push in detached HEAD — checkout a branch first |
| Merge conflicts | ✗ merge conflicts in {files} — resolve before committing |
| No git repo | ✗ not a git repository |
Script
bash .agents/skills/signal-push/scripts/push.sh [--draft] [--split] [--dry] ["custom message"]
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\.agents\skills\signal-push\scripts\push.ps1" [--draft] [--split] [--dry] ["custom message"]
The script wraps commit (commit.sh / commit.ps1) and adds the push step. Message generation is done by the agent before calling the script.
Eat Your Own Cooking
Output must comply with SIGNAL compression rules if SIGNAL is active:
- No preamble before the commit/push lines
- One line per action
- If something goes wrong: one line, TMPL:bug format