# Signal Pr

> >

- **Type:** Skill
- **Install:** `agentstack add skill-mattbaconz-signal-signal-pr`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [mattbaconz](https://agentstack.voostack.com/s/mattbaconz)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [mattbaconz](https://github.com/mattbaconz)
- **Source:** https://github.com/mattbaconz/signal/tree/main/kiro-signal/skills/signal-pr

## Install

```sh
agentstack add skill-mattbaconz-signal-signal-pr
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# ⚡ signal-pr — Commit + Push + PR

One command. Stages, commits, pushes, opens a PR. Done.

---

## Invocation Triggers

Activate when user says any of:
- `/signal-pr`
- `"open a PR"`, `"create pull request"`, `"ship a PR"`, `"make a PR"`
- `"commit push and PR"`, `"PR this"`

## Slash command behavior

If the user's message is **only** `/signal-pr` (optionally with flags like
`--dry`, `--draft`, or `--pr-draft`), 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 `--dry`, `--draft`, and `--pr-draft` exactly as defined in this file.

---

## Behavior (Ordered Steps)

1. **Run signal-push logic** — stages, commits, pushes.
   See `signal-push/SKILL.md` for complete push behavior.

2. **Generate PR title**
   - Derived from commit message(s)
   - Single commit: use commit message as-is
   - Multiple commits: synthesize a title covering the change set
   - Max 72 chars, same rules as commit messages

3. **Generate PR body** using this exact template:
   ```
   ## Changes
   - {change 1}
   - {change 2}

   ## Type
   {feat|fix|refactor|chore|docs|test|style|perf}

   Closes #{issue_number}
   ```
   - Changes: bullet list derived from diff, grouped by type. No fluff.
   - Issue number: extracted from branch name if present (e.g. `feat/PROJ-123-thing` → `Closes #123`)
   - Omit `Closes #` line if no issue number detectable

4. **Open the PR**
   ```bash
   gh pr create --title "{title}" --body "{body}"
   ```

5. **Report**
   ```
   ✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12]
   ✓ pushed → origin/feat/jwt-refresh
   ✓ PR opened → https://github.com/org/repo/pull/142
   ```

---

## PR Body Template

```markdown
## Changes
- {change 1}
- {change 2}

## Type
{feat|fix|refactor|...}

Closes #{issue_number if detectable from branch name}
```

**Rules:**
- Changes are imperative phrases, max 80 chars each: "add JWT refresh token rotation"
- Group by type if multiple types present (feat changes, then fix changes, etc.)
- No prose, no explanation, no "this PR introduces"
- No emoji

---

## Flags

| Flag | Behavior |
|---|---|
| `--draft` | Show generated commit message and PR body, **do not commit, push, or create PR** |
| `--dry` | Explain what would happen — touch nothing |
| `--pr-draft` | Create the PR in GitHub draft state (passes `--draft` to `gh pr create`) |

**`--draft` output:**
```
Draft commit message:
  feat(auth): add JWT refresh token rotation

Draft PR title:
  feat(auth): add JWT refresh token rotation

Draft PR body:
  ## Changes
  - add refresh token endpoint
  - add token rotation logic

  ## Type
  feat

  Closes #47

Run /signal-pr to confirm.
```

---

## Output Format

```
✓ feat(auth): add JWT refresh token rotation [3 files, +47/-12]
✓ pushed → origin/feat/jwt-refresh
✓ PR opened → https://github.com/org/repo/pull/142
```

---

## Edge Cases

| Situation | Behavior |
|---|---|
| `gh` not installed | `✗ gh CLI required — install from cli.github.com` |
| Not authenticated with `gh` | `✗ gh not authenticated — run: gh auth login` |
| PR already exists for branch | `✗ PR already open for this branch → {url}` |
| Push fails | Stop at push error, do not attempt PR creation |
| Nothing to commit | `∅ nothing to commit` — stop |
| Detached HEAD | `✗ cannot push in detached HEAD — checkout a branch first` |

---

## Script

```bash
bash .agents/skills/signal-pr/scripts/pr.sh [--draft] [--dry] [--pr-draft] ["custom message"]
```
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\.agents\skills\signal-pr\scripts\pr.ps1" [--draft] [--dry] [--pr-draft] ["custom message"]
```

The script wraps `push` (`push.sh` / `push.ps1`) and adds the `gh pr create` step. PR title and body are generated by the agent and passed as arguments or via heredoc.

---

## Eat Your Own Cooking

Output must comply with SIGNAL compression rules if SIGNAL is active:
- No preamble before the commit/push/PR lines
- One line per action
- 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](https://github.com/mattbaconz)
- **Source:** [mattbaconz/signal](https://github.com/mattbaconz/signal)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-mattbaconz-signal-signal-pr
- Seller: https://agentstack.voostack.com/s/mattbaconz
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
