Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Post Pr For Review

ASecurity

Generates a contextual Slack message for posting a PR to the team's review channel. Pulls context from PR diff, Linear ticket, session conversation, and related PRs to write a concise, informative review request. Use when sharing a PR for review, posting to the review channel, or preparing a review request message.

4 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsgobashtestinggitapi

Works with

cliapimcp

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add mostafa-drz/claude-skills --skill post-pr-for-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Post Pr For Review?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Post Pr For Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mostafa-drz-post-pr-for-review/badge)](https://www.skillsdirectory.com/skills/mostafa-drz-post-pr-for-review)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: post-pr-for-review
description: >-
  Generates a contextual Slack message for posting a PR to the team's review channel.
  Pulls context from PR diff, Linear ticket, session conversation, and related PRs to
  write a concise, informative review request. Use when sharing a PR for review, posting
  to the review channel, or preparing a review request message.
argument-hint: <PR number or URL> [repo-name]
disable-model-invocation: true
allowed-tools:
  - Bash
  - Read
  - Glob
  - Grep
  - AskUserQuestion
  - mcp__claude_ai_Linear__get_issue
  - mcp__claude_ai_Linear__list_issues
  - mcp__claude_ai_Linear__list_comments
metadata:
  trigger: "Posting a PR for team review in Slack."
  tags: "slack, github, communication"
---

# Post PR for Review

Generate a contextual Slack message for posting a PR to the team's review channel.

## Preferences

_Read `~/.claude/skills/post-pr-for-review/preferences.md` using the Read tool. If not found, no preferences are set — using defaults._

## Context

_On startup, use Bash to detect: current git branch, repo name, org (`gh repo view --json owner -q .owner.login`), and your open PRs (`gh pr list --author @me --state open --limit 5`). Skip any that fail._

## Command Routing

Check `$ARGUMENTS`:

- **`help`** → display help then stop
- **`config`** → interactive setup then stop
- **`reset`** → delete preferences, confirm, stop
- **anything else** → generate the Slack message

### Help

If `$ARGUMENTS` is "help" (case-insensitive), display:

```
Post PR for Review

Generate a Slack message for posting a PR to the team's review channel.

Usage:
  /post-pr-for-review 393                    PR in current repo
  /post-pr-for-review 393 ai-assemble        PR in specific repo
  /post-pr-for-review <github-url>           PR from full URL
  /post-pr-for-review config                 Configure defaults
  /post-pr-for-review reset                  Clear preferences
  /post-pr-for-review help                   Show this help

Context sources:
  PR          Title, description, diff, files changed
  Linear      Linked ticket objective, project, status
  Session     Current conversation, decisions made, files discussed
  Related     Other open PRs in the same project/initiative

Configurable:
  Detail level    Minimal (1 line) | Standard (1-3 lines) | Detailed (with context)
  Tone            Neutral | Conversational
  Extras          Reviewer tags, related PRs, testing notes, side effects
```

Then stop.

### Config

If `$ARGUMENTS` is "config" or "configure" (case-insensitive), use **`AskUserQuestion`**:

**Q1** — "Default detail level?" (multiSelect: false)
- Standard (1-3 sentences) (Recommended)
- Minimal (1 sentence)
- Detailed (with testing notes, side effects, related PRs)

**Q2** — "Default tone?" (multiSelect: false)
- Conversational (Recommended) — natural, like talking to a teammate
- Neutral — factual, no personality

**Q3** — "What to include by default?" (multiSelect: true)
- Linear ticket link (Recommended)
- Related/dependent PRs
- Reviewer tags
- Testing notes
- Side effects / migration notes

**Q4** — "Default GitHub org?" (multiSelect: false)
- A-Teams-Network (Recommended)
- Detect from git remote
- Always ask

Save to `~/.claude/skills/post-pr-for-review/preferences.md`.

Then stop.

### Reset

If `$ARGUMENTS` is "reset" (case-insensitive), delete `~/.claude/skills/post-pr-for-review/preferences.md`, confirm deletion, stop.

### Default

If `$ARGUMENTS` is anything else, proceed below.

## Step 1: Parse Input

Extract from `$ARGUMENTS`:
- **PR number**: Numeric ID
- **Repository**: Second argument, URL, or detect from current git remote

If only a number is given, detect the repo from `gh repo view --json nameWithOwner`.
If a full GitHub URL, parse org/repo/number from it.
If no number given but current branch has an open PR, use that PR automatically.

## Step 2: Gather Context (parallel where possible)

### PR Context
```bash
gh pr view <number> --repo <org/repo> --json title,body,headRefName,baseRefName,url,files,commits,reviewRequests,labels
```

### Linear Context
Extract issue ID from branch name (pattern: `ais-NNN` or `AIS-NNN`).
If found, fetch via `get_issue` with identifier `AIS-NNN`:
- Issue title and objective
- Project name
- Current status
- Related/blocking issues

### Session Context
Review the current conversation for:
- What was discussed about this PR or related work
- Decisions made, trade-offs considered
- Side effects or caveats mentioned
- Testing done or testing notes
- Other PRs that depend on or relate to this one

### Related PRs
If the Linear ticket has related issues, check if any have open PRs:
```bash
gh pr list --state open --limit 10 --json number,title,headRefName,url
```
Filter for PRs whose branch contains a related ticket ID.

## Step 3: Understand the Changes

Build understanding from richest to thinnest source:

1. **Session context** — if we discussed this PR in the current conversation, use that understanding first (it's the most accurate)
2. **PR description** — if it has a good summary, use it
3. **Linear ticket** — objective and deliverables
4. **Diff** — if description is thin and no session context, scan the diff:
   ```bash
   gh pr diff <number> --repo <org/repo> | head -200
   ```
5. **Files changed** — infer scope from file paths (e.g., "touches bot tools", "updates service layer")

## Step 4: Write the Slack Message

Apply preferences (or defaults: standard detail, conversational tone).

### Format by Detail Level

**Minimal:**
```
[1 sentence: what changed]
<PR URL>
```

**Standard (default):**
```
[1-3 sentences: what changed, why it matters, notable detail]
<PR URL>
```

**Detailed:**
```
[1-3 sentences: what changed, why it matters]

[Optional: side effects, testing notes, or reviewer guidance — 1-2 lines]
[Optional: Related: PR #NNN (description)]
[Optional: Linear: AIS-NNN link]

<PR URL>
```

### Writing Rules

- Lead with the *what*, not the ticket ID or PR number
- Use plain language — describe the change as you'd explain it to a teammate
- Mention business impact or user-facing effect when relevant
- Include technical details only if they help reviewers understand scope or risk
- If there are specific reviewers to tag (from preferences or PR reviewRequests), add `@name` naturally
- End with the bare PR URL (Slack will unfurl it)
- Plain text only — no markdown headers, bold, or bullet points (Slack mrkdwn is OK: `*bold*`, `_italic_`, `<url|text>`)
- No emoji unless preferences say otherwise

### Contextual Extras (when preferences enable them)

**Related PRs:** If there are dependent PRs or PRs in the same project, mention them:
```
This is the second of two PRs — first one is #393 (shared service layer).
```

**Testing notes:** If session context includes testing information:
```
Checked Vercel logs on pilot, looks good. Full e2e testing once in prod.
```

**Side effects:** If session context mentions caveats:
```
Note: artifacts created before this week show null for meeting title/date — only affects old data.
```

**Reviewer guidance:** If specific reviewers are relevant:
```
@Anibal — would appreciate a look at the bot tool changes, no functional changes to responses.
```

### Good Examples

```
Deprecates the meetings Supabase table — all meeting data now comes from artifacts API via a shared service layer. Zero blob fetches for meeting insights.
https://github.com/A-Teams-Network/ai-assemble/pull/393
```

```
Refactors Teams bot MPR tools to use the shared meetings service. Removes raw fetch() with hardcoded API keys, reads metadata from artifact instead of blob. Backward compatible — tool input/output shapes unchanged.
https://github.com/A-Teams-Network/ai-assemble/pull/395
```

```
Adds fast signals metrics (impressions, CPM, clicks) via Clickhouse integration.
https://github.com/A-Teams-Network/ai-assemble/pull/307
```

**Detailed example:**
```
Deprecates the meetings Supabase table — all meeting data now comes from artifacts API via a shared service layer. Zero blob fetches for meeting insights.

Builds on Dade's artifact metadata PR (#318). Artifacts before that PR show null for title/date — low priority, can backfill.
Related: #395 (Teams bot refactor using same service layer)
Linear: https://linear.app/ateam-ai/issue/AIS-921

https://github.com/A-Teams-Network/ai-assemble/pull/393
```

### Bad Examples (avoid these)

```
# PR Review Request
**Ticket:** AIS-921
**Summary:** This PR updates the meeting insights handler...
```
Too formatted, leads with ticket ID, uses markdown headers.

```
Please review this PR when you get a chance. It makes some changes to the meetings code.
```
Too vague, no useful information.

## Step 5: Output

Display the generated message in a copyable code block:

```
[generated message here]
```

Then use **`AskUserQuestion`** to offer:
- "Looks good" — done
- "Shorter" — trim to minimal (1 sentence + URL)
- "More detail" — expand with testing notes, side effects, related PRs
- "Add reviewer tags" — ask who to tag
- "Regenerate" — rewrite with different angle

If the user picks "Looks good", confirm and stop.
For other options, apply the adjustment, show the updated message, and offer the same choices again.

Attribution

mostafa-drzmostafa-drz
View sourceMore from mostafa-drz →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.

1023331 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3331 votes

catchup

Recovers prior coding-agent session context by running `catchup <agent> --since-compact`, which extracts a clean summary of a previous Codex, Claude Code, Antigravity, OpenCode, or Pi Agent session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", or asks to recover/summarize a previous session before continuing. Do NOT use for the current conversation, git history, or any non-agent log.

611 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →