Skip to content

improve(development-codebase-tools): tune agent refactorer #790

improve(development-codebase-tools): tune agent refactorer

improve(development-codebase-tools): tune agent refactorer #790

name: "Claude: Generate PR Title & Description"
# Consumer workflow that generates PR titles and descriptions using Claude AI
#
# This workflow automatically generates:
# - Conventional commit-style PR titles based on repository patterns
# - Comprehensive PR descriptions based on recent merged PR templates
#
# Triggers:
# - When a PR is opened (draft or ready)
# - When a PR is marked as ready for review
# - When a PR is synchronized (new commits pushed) with actual code changes
#
# Features:
# - Skips rebases (uses patch-ID to detect actual code changes)
# - Learns title patterns from recent commits
# - Learns description templates from recent merged PRs
# - Conventional commit format enforcement
on:
pull_request:
types: [opened, synchronize, ready_for_review]
# Concurrency: Cancel in-flight runs for the same PR
concurrency:
group: pr-metadata-${{ github.event.pull_request.number }}
cancel-in-progress: true
permissions:
contents: read
pull-requests: write
id-token: write
jobs:
generate-metadata:
# Skip conditions:
# - Merge queue PRs (handled separately)
# - Dependabot PRs (already have proper titles)
# - Release PRs (have their own format)
# - Production promotion PRs (have their own format)
if: |
!contains(github.head_ref, 'gh-readonly-queue/') &&
!contains(github.head_ref, 'dependabot/') &&
!contains(github.head_ref, 'release/') &&
!startsWith(github.event.pull_request.title, 'chore(release):')
uses: ./.github/workflows/_generate-pr-metadata.yml
with:
generation_mode: "title,description"
pr_number: ${{ github.event.pull_request.number }}
base_ref: ${{ github.base_ref }}
# Use default model (claude-sonnet-4-6)
# Use default timeout (15 minutes)
# Use default prompt from ai-toolkit
commit_history_count: 30
pr_history_count: 10
secrets:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
WORKFLOW_PAT: ${{ secrets.WORKFLOW_PAT }}