Awesome-omni-skill create-pr

Create a pull request or update an existing one following project conventions.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/create-pr-ahoym" ~/.claude/skills/diegosouzapw-awesome-omni-skill-create-pr-e67360 && rm -rf "$T"
manifest: skills/tools/create-pr-ahoym/SKILL.md
source content

Context

  • Current branch: !
    git branch --show-current 2>/dev/null
  • Commits on branch: !
    git log origin/main..HEAD --oneline 2>/dev/null | head -20

Create Pull Request

Create a pull request or update an existing one following project conventions.

Usage

  • /git:create-pr
    - Create PR to main
  • /git:create-pr <base-branch>
    - Create PR to specified base branch

Reference Files (conditional — read when creating PR)

  • pr-body-template.md - PR body structure template

Reference Files (conditional — read only when needed)

  • @~/.claude/skill-references/platform-detection.md - Platform detection for GitHub/GitLab

Pre-PR Checklist

Before creating the PR, verify these items are complete:

  • All tests pass locally
  • Code formatted with linter
  • No sensitive data in code or logs
  • Metrics added for new operations (if applicable)
  • Error handling implemented
  • Documentation updated (if needed)

Instructions

  1. Detect platform — follow

    @~/.claude/skill-references/platform-detection.md
    to determine GitHub vs GitLab. Set
    CLI
    ,
    REVIEW_UNIT
    , and API command patterns accordingly. All commands below use GitHub (
    gh
    ) syntax; substitute GitLab equivalents if on GitLab.

  2. Gather context (run in parallel):

    • git status
      - Check for uncommitted changes
    • git branch --show-current
      - Get current branch name
    • git log origin/main..HEAD --oneline
      - See commits to include (adjust base as needed)
    • git diff origin/main..HEAD --stat
      - See files changed
  3. Check for uncommitted changes:

    • If there are uncommitted changes, ask user if they want to commit first
    • Do not proceed with PR creation if there are uncommitted changes
  4. Run formatter on changed files:

    • Detect project formatter: check for
      .prettierrc*
      ,
      biome.json
      , or formatter config in
      package.json
    • Run the formatter in check mode on changed files: e.g.,
      npx prettier --check $(git diff --name-only origin/main -- '*.ts' '*.tsx' '*.js' '*.json' '*.css')
    • If formatting issues found, fix them (
      npx prettier --write <files>
      ), stage, and commit before proceeding
    • If no formatter config found, skip this step
  5. Check for existing PR:

    gh pr list --head <current-branch>
    
    • If a PR already exists, ask user: "PR #N already exists for this branch. Update its description instead of creating new?"
    • If yes, use
      gh pr edit <number> --body "..."
      instead of
      gh pr create
  6. Infer Jira ticket (if applicable):

    • Extract Jira ticket ID from the branch name (common patterns:
      feature/PROJ-123
      ,
      bugfix/PROJ-456
      ,
      PROJ-789-description
      )
    • Look for Jira ticket references in commit messages
    • If no ticket can be inferred, leave the URL incomplete for the user to fill in
  7. Determine base branch:

    • If
      $ARGUMENTS
      provided, use that as base
    • If branch name suggests a parent (e.g.,
      feature/foo-part2
      might be based on
      feature/foo
      ), ask user
    • Default to
      main
  8. Check if push needed:

    • If local is ahead of remote, push first:
      git push -u origin <branch>
  9. Create or update PR using the template from pr-body-template.md

  10. Run the gh command:

For new PR:

gh pr create --base <base-branch> --title "<title>" --body "$(cat <<'EOF'
<body content>
EOF
)"

For existing PR:

gh pr edit <number> --body "$(cat <<'EOF'
<body content>
EOF
)"
  1. Return the PR URL to the user.