davila7/claude-code-templates1 file

Github Workflow Automation

Automate GitHub workflows with AI assistance. Includes PR reviews, issue triage, CI/CD integration, and Git operations. Use when automating GitHub workflows, setting up PR review automation, creating GitHub Actions, or triaging issues.

Specification
Skill ID
davila7/claude-code-templates/github-workflow-automation
Publisher
davila7
Repository
claude-code-templates
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

davila7/claude-code-templates/github-workflow-automationInstalls these files
  • SKILL.md

What this skill tells the agent

🔧 GitHub Workflow Automation

Patterns for automating GitHub workflows with AI assistance, inspired by Gemini CLI and modern DevOps practices.

When to Use This Skill

Use this skill when:

  • Automating PR reviews with AI
  • Setting up issue triage automation
  • Creating GitHub Actions workflows
  • Integrating AI into CI/CD pipelines
  • Automating Git operations (rebases, cherry-picks)

1. Automated PR Review

1.1 PR Review Action

# .github/workflows/ai-review.yml
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Get changed files
        id: changed
        run: |
          files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
          echo "files<<EOF" >> $GITHUB_OUTPUT
          echo "$files" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Get diff
        id: diff
        run: |
          diff=$(git diff origin/${{ github.base_ref }}...HEAD)
          echo "diff<<EOF" >> $GITHUB_OUTPUT
          echo "$diff" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: AI Review
        uses: actions/github-script@v7
        with:
          script: |
            const { Anthropic } = require('@anthropic-ai/sdk');
            const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

            const response = await client.messages.create({
              model: "claude-sonnet-4-6",
              max_tokens: 4096,
              messages: [{
                role: "user",
                content: `Review this PR diff and provide feedback:
                
                Changed files: ${{ steps.changed.outputs.files }}
                
                Diff:
                ${{ steps.diff.outputs.diff }}
                
                Provide:
                1. Summary of changes
                2. Potential issues or bugs
                3. Suggestions for improvement
                4. Security concerns if any
                
                Format as GitHub markdown.`
              }]
            });

            await github.rest.pulls.createReview({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number,
              body: response.content[0].text,
              event: 'COMMENT'
            });
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

1.2 Review Comment Patterns

# AI Review Structure

## 📋 Summary

Brief description of what this PR does.

## ✅ What looks good

- Well-structured code
- Good test coverage
- Clear naming conventions

## ⚠️ Potential Issues

1. **Line 42**: Possible null pointer exception

// Current user.profile.name; // Suggested user?.profile?.name ?? "Unknown";

  1. Line 78: Consider error handling ``javascript // Add try-catch or .catch() ``

💡 Suggestions

  • Consider extracting the validation logic into a separate function
  • Add JSDoc comments for public methods

🔒 Security Notes

  • No sensitive data exposure detected
  • API key handling looks correct

### 1.3 Focused Reviews

Review only specific file types

  • name: Filter code files run: | files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | \ grep -E '\.(ts|tsx|js|jsx|py|go)$' || true) echo "code_files=$files" >> $GITHUB_OUTPUT

Review with context

  • name: AI Review with context run: | # Include relevant context files context="" for file in ${{ steps.changed.outputs.files }}; do if [[ -f "$file" ]]; then context+="=== $file ===\n$(cat $file)\n\n" fi done

# Send to AI with full file context


---

## 2. Issue Triage Automation

### 2.1 Auto-label Issues

.github/workflows/issue-triage.yml

name: Issue Triage

on: issues: types: [opened]

jobs: triage: runs-on: ubuntu-latest permissions: issues: write

steps:

  • name: Analyze issue uses: actions/github-script@v7 with: script: | const issue = context.payload.issue;

// Call AI to analyze const analysis = await analyzeIssue(issue.title, issue.body);

// Apply labels const labels = [];

if (analysis.type === 'bug') { labels.push('bug'); if (analysis.severity === 'high') labels.push('priority: high'); } else if (analysis.type === 'feature') { labels.push('enhancement'); } else if (analysis.type === 'question') { labels.push('question'); }

if (analysis.area) { labels.push(area: ${analysis.area}); }

await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, labels: labels });

// Add initial response if (analysis.type === 'bug' && !analysis.hasReproSteps) { await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, body: `Thanks for reporting this issue!

To help us investigate, could you please provide:

  • Steps to reproduce the issue
  • Expected behavior
  • Actual behavior
  • Environment (OS, version, etc.)

This will help us resolve your issue faster. 🙏` }); }


### 2.2 Issue Analysis Prompt

const TRIAGE_PROMPT = ` Analyze this GitHub issue and classify it:

Title: {title} Body: {body}

Return JSON with: { "type": "bug" | "feature" | "question" | "docs" | "other", "severity": "low" | "medium" | "high" | "critical", "area": "frontend" | "backend" | "api" | "docs" | "ci" | "other", "summary": "one-line summary", "hasReproSteps": boolean, "isFirstContribution": boolean, "suggestedLabels": ["label1", "label2"], "suggestedAssignees": ["username"] // based on area expertise } `;


### 2.3 Stale Issue Management

.github/workflows/stale.yml

name: Manage Stale Issues

on: schedule:

  • cron: "0 0 *" # Daily

jobs: stale: runs-on: ubuntu-latest steps:

  • uses: actions/stale@v9 with: stale-issue-message: | This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs.

If this issue is still relevant:

  • Add a comment with an update
  • Remove the stale label

Thank you for your contributions! 🙏

stale-pr-message: | This PR has been automatically marked as stale. Please update it or it will be closed in 14 days.

days-before-stale: 60 days-before-close: 14 stale-issue-label: "stale" stale-pr-label: "stale" exempt-issue-labels: "pinned,security,in-progress" exempt-pr-labels: "pinned,security"


---

## 3. CI/CD Integration

### 3.1 Smart Test Selection

.github/workflows/smart-tests.yml

name: Smart Test Selection

on: pull_request:

jobs: analyze: runs-on: ubuntu-latest outputs: test_suites: ${{ steps.analyze.outputs.suites }}

steps:

  • uses: actions/checkout@v4 with: fetch-depth: 0
  • name: Analyze changes id: analyze run: | # Get changed files changed=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)

# Determine which test suites to run

Use this skill in a project

Open any RiverX project, search the Skills panel for davila7/claude-code-templates/github-workflow-automation, and install it in one click.

Use this skill