Back to skills
SkillHub ClubShip Full StackFull Stack

my-prs

List PRs opened today that are assigned to me or the move-destinations team, excluding external contributors

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
20,904
Hot score
99
Updated
March 20, 2026
Overall rating
C4.0
Composite score
4.0
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install airbytehq-airbyte-my-prs

Repository

airbytehq/airbyte

Skill path: .claude/skills/my-prs

List PRs opened today that are assigned to me or the move-destinations team, excluding external contributors

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: airbytehq.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install my-prs into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/airbytehq/airbyte before adding my-prs to shared team environments
  • Use my-prs for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: my-prs
description: List PRs opened today that are assigned to me or the move-destinations team, excluding external contributors
disable-model-invocation: true
allowed-tools: Bash(gh:*), Bash(date:*), Read
argument-hint: [days-back]
---

# My PRs - Daily PR Review Dashboard

This skill fetches and displays PRs that need your attention:

1. **PRs assigned directly to you** (@frifriSF59)
2. **PRs with review requested from the move-destinations team**

All results are filtered to:
- Only show PRs opened today (or within `$ARGUMENTS` days if specified)
- Exclude PRs from users who are not members of the airbytehq organization

## Execution

Run the fetch script to get the PR list:

```bash
bash .claude/skills/my-prs/scripts/fetch-prs.sh
```

If an argument is provided (number of days), modify the date filter accordingly:
- `$ARGUMENTS` = number of days to look back (default: 0 = today only)
- Example: `/my-prs 3` looks at PRs from the last 3 days

For custom date ranges, use:
```bash
gh pr list --repo airbytehq/airbyte --assignee @me --search "created:>=YYYY-MM-DD" --json number,title,author,url
```

## After Fetching

After displaying the PRs, offer to:
1. Open a specific PR in the browser (`gh pr view <number> --web`)
2. Show details of a specific PR (`gh pr view <number>`)
3. Show the diff of a specific PR (`gh pr diff <number>`)
4. Check CI status (`gh pr checks <number>`)

## Quick Actions

The user may want to:
- **Review a PR**: Use `/review <pr-number>` if available
- **Check PR comments**: `gh pr view <number> --comments`
- **See who approved**: `gh pr view <number> --json reviews --jq '.reviews[] | select(.state=="APPROVED") | .author.login'`


---

## Skill Companion Files

> Additional files collected from the skill directory layout.

### scripts/fetch-prs.sh

```bash
#!/bin/bash
# Fetch PRs opened today (or N days back) that are assigned to user or move-destinations team
# Excludes PRs from non-airbytehq org members

set -e

# Days to look back (default: 0 = today only)
DAYS_BACK=${1:-0}

# Calculate the start date
if [[ "$OSTYPE" == "darwin"* ]]; then
    START_DATE=$(date -v-${DAYS_BACK}d +%Y-%m-%d)
else
    START_DATE=$(date -d "-${DAYS_BACK} days" +%Y-%m-%d)
fi

echo "=== PRs Since ${START_DATE} ==="
echo ""

# Get org members (cached for performance)
echo "Fetching airbytehq org members..."
ORG_MEMBERS=$(gh api orgs/airbytehq/members --paginate --jq '.[].login' 2>/dev/null | sort -u)

if [ -z "$ORG_MEMBERS" ]; then
    echo "Error: Could not fetch org members. Check your GitHub authentication." >&2
    exit 1
fi

# Convert to regex pattern for matching (include known bots)
# Note: gh CLI returns bot authors as "app/bot-name" format
KNOWN_BOTS="app/devin-ai-integration|app/dependabot|app/github-actions|devin-ai-integration\[bot\]|dependabot\[bot\]|github-actions\[bot\]"
ORG_MEMBERS_PATTERN=$(echo "$ORG_MEMBERS" | tr '\n' '|' | sed 's/|$//')
ORG_MEMBERS_PATTERN="${ORG_MEMBERS_PATTERN}|${KNOWN_BOTS}"

echo "Found $(echo "$ORG_MEMBERS" | wc -l | tr -d ' ') org members (+ known bots)."
echo ""

# Function to filter and display PRs
filter_and_display_prs() {
    local prs_json="$1"

    if [ -z "$prs_json" ] || [ "$prs_json" = "[]" ]; then
        echo "(none)"
        return
    fi

    # Get count of PRs from org members
    local count=$(echo "$prs_json" | jq -c '.[]' 2>/dev/null | while read -r pr; do
        author=$(echo "$pr" | jq -r '.author.login')
        if echo "$author" | grep -qE "^($ORG_MEMBERS_PATTERN)$"; then
            echo "1"
        fi
    done | wc -l | tr -d ' ')

    if [ "$count" -eq 0 ]; then
        echo "(none from org members)"
        return
    fi

    # Display PRs from org members
    echo "$prs_json" | jq -c '.[]' 2>/dev/null | while read -r pr; do
        author=$(echo "$pr" | jq -r '.author.login')

        # Check if author is org member
        if echo "$author" | grep -qE "^($ORG_MEMBERS_PATTERN)$"; then
            number=$(echo "$pr" | jq -r '.number')
            title=$(echo "$pr" | jq -r '.title')
            url=$(echo "$pr" | jq -r '.url')
            created=$(echo "$pr" | jq -r '.createdAt' | cut -d'T' -f1)

            echo "- **#${number}**: ${title}"
            echo "  - Author: @${author} | Created: ${created}"
            echo "  - ${url}"
            echo ""
        fi
    done
}

echo "## PRs Assigned to you:"
echo ""

ASSIGNED_PRS=$(gh pr list \
    --repo airbytehq/airbyte \
    --assignee @me \
    --search "created:>=${START_DATE}" \
    --json number,title,author,url,createdAt \
    --limit 100 2>/dev/null || echo "[]")

filter_and_display_prs "$ASSIGNED_PRS"

echo ""
echo "## PRs with review requested from move-destinations team:"
echo ""

# Get move-destinations team members for individual reviewer search
TEAM_MEMBERS=$(gh api orgs/airbytehq/teams/move-destinations/members --jq '.[].login' 2>/dev/null)

# Build search query for team OR any team member as reviewer
REVIEWER_SEARCH="team-review-requested:airbytehq/move-destinations"
while IFS= read -r member; do
    [ -n "$member" ] && REVIEWER_SEARCH="${REVIEWER_SEARCH} OR review-requested:${member}"
done <<< "$TEAM_MEMBERS"

TEAM_PRS=$(gh pr list \
    --repo airbytehq/airbyte \
    --search "created:>=${START_DATE} (${REVIEWER_SEARCH})" \
    --json number,title,author,url,createdAt \
    --limit 100 2>/dev/null || echo "[]")

filter_and_display_prs "$TEAM_PRS"

echo ""
echo "---"
echo "PRs from non-airbytehq members have been excluded."
echo "Tip: Run '/my-prs 7' to see the last week's PRs."

```

my-prs | SkillHub