GitHub Agentic Workflows ใจ้€šๅธธใฎ workflow ใ‚’้€ฃๆบใ•ใ›ใŸใ„

๐Ÿ–Š
note

Agentic Workflows ใงไฝ•ใ‹ใ—ใ‚‰ใฎๅ‡ฆ็†ใ‚’ใ—ใŸๅพŒใซใ€ใใฎๆˆๆžœ็‰ฉใซๅฏพใ—ใฆใ•ใ‚‰ใซ GHA ใ‚’ๅ‹•ใ‹ใ—ใŸใ„ใ‚ˆใ†ใชใ‚ฑใƒผใ‚นใŒใ‚ใ‚‹ใ€‚ใ‚ใ‹ใ‚Šใ‚„ใ™ใ„ใจใ“ใ‚ใง่จ€ใˆใฐใ€Agentic Workflows ใงใ‚ณใƒผใƒ‰ใ‚’ๅค‰ๆ›ดใ—ใŸใ‚‰ใƒ†ใ‚นใƒˆใŒๅ‹•ใ„ใฆใปใ—ใ„ใŒใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏ Bot ใซใชใ‚‹ใฎใงใ€push ใ‚’ใƒˆใƒชใ‚ฌใƒผใซใ™ใ‚‹ GHA (ใ‚„ๅค–้ƒจใ‚ตใƒผใƒ“ใ‚น) ใŒ่ตทๅ‹•ใ—ใชใ„ใ€‚

ๅ…ˆใซใ‚ชใƒใ‚’ๆ›ธใ„ใฆใŠใใจใ€2026/03/08 ๆ™‚็‚นใงใฏ็”จ้€”ใซใƒใƒžใ‚‹ใ‚‚ใฎใŒใชใใฆๅฐ‚็”จใฎใƒฆใƒผใ‚ถใƒผใฎ PAT ใ‚’ไฝฟใ„ใ€้€šๅธธใฎใƒฆใƒผใ‚ถใƒผใจใ—ใฆๅ„็จฎ Workflow ใชใฉใŒใƒˆใƒชใ‚ฌใƒผใ•ใ‚Œใ‚‹ใ‚ˆใ†ใซใ—ใŸใ€‚

safe-outputs.dispatch-workflow

safe-outputs ใซๆฌกใฎใ‚ˆใ†ใซใ™ใ‚‹ใจใ€ๆŒ‡ๅฎšใ—ใŸ workflow ใŒใƒˆใƒชใ‚ฌใƒผใงใใ‚‹ใ‚ˆใ†ใซใชใ‚‹:

safe-outputs:
  dispatch-workflow:
    workflows: [test, lint]
    max: 2

prompt ใ‹ใ‚‰ๅฟ…่ฆใซๅˆใ‚ใ›ใฆๅ‘ผใณๅ‡บใ™ใ€safe-outputs ใฏ่จฑๅฏใƒชใ‚นใƒˆใงใ€ๆŒ‡ๅฎšใ—ใŸใ‚‰ๅฟ…ใšๅ‘ผใณๅ‡บใ•ใ›ใ‚‹ใ‚ˆใ†ใชใ‚‚ใฎใงใฏใชใ„ใฎใงๆณจๆ„ใ€‚

Dispatch both `test` and `lint` workflows using the `dispatch-workflow` safe output,
passing the PR branch name as `ref` input.

ref ใจใ—ใฆใƒ–ใƒฉใƒณใƒๅใ‚’ๆธกใ—ใฆใ„ใ‚‹ใŒใ€ create-pull-request ใฎๅ ดๅˆใซ safe-outputs ใฎๅ‡ฆ็†ๅ†…ใง branch ใซใƒฉใƒณใƒ€ใƒ ใช suffix ใŒ่ฟฝๅŠ ใ•ใ‚Œใ‚‹ใŸใ‚ใ€ใ“ใฎๅๅ‰ใฏใใฎใพใพไฝฟใˆใšใ“ใ‚Œใ‚’ใƒ’ใƒณใƒˆใซใƒ–ใƒฉใƒณใƒใ‚’็‰นๅฎšใ—ใŸใ‚Šใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใฃใŸใ€‚

reusable workflow

workflow_on ใ‚’ไฝฟใฃใฆ reusable workflow ใจใ—ใฆ็ตฑๅˆใ™ใ‚‹ๅฝขๅผใงใ€ไปŠๅ›žใ‚„ใ‚ŠใŸใ„ใ“ใจใซใฏใƒžใƒƒใƒใ—ใฆใ„ใใ†ใ€‚ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’่ชญใ‚€้™ใ‚Šใงใฏ needs.[job].outputs ใ‹ใ‚‰ issue ใ‚„ pr ใฎๆƒ…ๅ ฑใŒๅ–ใ‚Œใใ†ใชใฎใ ใŒใ€็พ็Šถใ“ใ‚ŒใŒๅ–ใ‚Œใชใใฆใƒฏใƒผใ‚ฏใ‚ขใƒฉใ‚ฆใƒณใƒ‰็š„ใซ้€”ไธญใซ็‰นๅฎšใ™ใ‚‹ job ใ‚’ๆŒŸใ‚“ใงใ„ใ‚‹ใ€‚

name: Orchestrator

on:
  push:
    branches: [main]

jobs:
  run-agent:
    uses: ./.github/workflows/agent-task.lock.yml
    secrets: inherit

  find-pr:
    needs: run-agent
    runs-on: ubuntu-latest
    outputs:
      ref: ${{ steps.find.outputs.ref }}
    steps:
      - id: find
        run: |
          ref=$(gh pr list --repo "$GITHUB_REPOSITORY" --label documentation --state open --json headRefName --jq '.[0].headRefName // empty')
          echo "ref=$ref" >> $GITHUB_OUTPUT
        env:
          GH_TOKEN: ${{ github.token }}

  test:
    needs: find-pr
    if: needs.find-pr.outputs.ref != ''
    uses: ./.github/workflows/test.yml
    with:
      ref: ${{ needs.find-pr.outputs.ref }}

  lint:
    needs: find-pr
    if: needs.find-pr.outputs.ref != ''
    uses: ./.github/workflows/lint.yml
    with:
      ref: ${{ needs.find-pr.outputs.ref }}

Claude Code ใซใ‚ณใƒผใƒ‰ใ‚’่ชญใ‚“ใงใ‚‚ใ‚‰ใฃใŸๆ„Ÿใ˜ใฏไปฅไธ‹ใฎ PR ใงๅฏพๅฟœใŒๅ…ฅใฃใฆใ„ใ‚‹ใŒใ€ๅ‡บๅŠ›ใ•ใ‚Œใ‚‹ lock ใŒใใ‚Œใ‚’ไฝฟใ†ใ‚ˆใ†ใซใชใฃใฆใ„ใชใ„ใ‚“ใ ใจใ‹ใ€ไธ€ๆ—ฆใงใใ‚‹ใ“ใจใŒใชใ•ใใ†ใงไฟฎๆญฃๅพ…ใกใ‹ใจใ„ใ†ๆ„Ÿใ˜ใ€‚

ใ“ใฎๆ–นๆณ•ใง branch ใซๅฏพใ—ใฆใƒ†ใ‚นใƒˆใ‚’่ตฐใ‚‰ใ›ใŸใ‚Šใ™ใ‚‹ใ“ใจใŒใงใใ‚‹ใŒใ€workflow ใŒๅฎŸ่กŒใ•ใ‚Œใ‚‹ใฎใฏใ“ใฎๅ ดๅˆใฏ main ใƒ–ใƒฉใƒณใƒใงใชใฎใงใ€ commit ใ‚„ PR ใงใƒ†ใ‚นใƒˆใ‚’ pass ใ—ใŸใ“ใจใซใฏใชใ‚‰ใชใ„ใ€‚

safe-outputs.github-token

ใใ‚‚ใใ‚‚ Bot ใซใ—ใชใ„ใจใ„ใ†ใ‚ขใƒ—ใƒญใƒผใƒใงใ€ใƒฆใƒผใ‚ถใƒผใŒไฝœใ‚‹ใ“ใจใซใชใ‚‹ใฎใงๅ…ƒใ€…่จญๅฎšใ•ใ‚Œใฆใ„ใ‚‹ workflow ใŒๅ…จ้ƒจใใฎใพใพๅ‹•ใใ€‚

safe-outputs:
  github-token: ${{ secrets.USER_GH_TOKEN }}

output ๆฏŽใซๅ€‹ๅˆฅใซ่จญๅฎšใ™ใ‚‹ใ“ใจใ‚‚ใงใใ‚‹ใŒใ€่‡ชๅˆ†ใŒ่ฉฆใ—ใŸใจใใฏใ†ใพใใ„ใ‹ใชใใฆๅ…จไฝ“ใซ่จญๅฎšใ—ใฆใ—ใพใฃใŸใ€‚CodeRabbit ใŒ Bot ใ ใจใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงใฏๅ‹•ใ‹ใชใ„ใฟใŸใ„ใช่ฉฑใ‚‚ใ‚ใฃใฆใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒชใƒใ‚ธใƒˆใƒชใซ้–ขใ—ใฆใ ใ‘ใ„ใˆใฐใ“ใ‚Œใงไธ€ๆ—ฆ่‰ฏใ„ใ‹ใชใจใชใฃใŸใ€‚

yaakai.to