The pull request explainer now runs inside claude-code-action

21 hours ago

Version 1.9.0 moves the pull request explainer into the Claude Code step you already run. The maintainers put it this way: it runs inside claude-code-action, on the Claude plan the repository already uses.

Ask about this presentation

Chapters

  1. 0:00The explainer runs in claude-code-action
  2. 0:15One secret, no Bisque account
  3. 0:27Claude writes, a second job publishes
  4. 0:49Publishing is one new input
  5. 1:07The present skill gains narrate
  6. 1:24Workflows that skip the input run as before
  7. 1:38Publish fails inside Claude, and audio keeps its voice
  8. 1:54Copy the example workflow
Show transcript
  1. Version 1.9.0 moves the pull request explainer into the Claude Code step you already run. The maintainers put it this way: it runs inside claude-code-action, on the Claude plan the repository already uses.

    Slide text
    bisque-cloud/presenter · v1.9.0

    The pull request explainer now runs inside claude-code-action

    On the Claude plan your repository already uses.

    write job publish job
  2. The setup needs one secret. It's the Claude Code OAuth token, the one a repository already has when it runs claude-code-action on a Claude plan. You don't need a Bisque account.

    Slide text
    setup

    One secret is all it needs.

    CLAUDE_CODE_OAUTH_TOKEN

    No Bisque account.

    write job publish job
  3. Claude's session inside claude-code-action can't publish, because that action takes away the means to mint the run's GitHub identity. So the work splits in two. In the first job, Claude writes the explainer, checks it and narrates it, so it can still fix a word the voice gets wrong. A second job only publishes that folder, audio included, and comments the watch link.

    Slide text
    how it fits together

    Claude writes in one job. A second job publishes.

    write

    Claude writes the explainer, checks it and narrates it.

    claude-code-action
    explainer/ → + audio/

    publish

    Publishes that folder and comments the watch link.

    presentation: explainer
    write job publish job
  4. Publishing takes one new input, called presentation. Here is the second job. Only this job asks for the permission to publish. It downloads the folder the first job uploaded. Then presenter publishes that folder. No model runs in this job, and nothing is narrated again.

    Slide text
    publish job

    Publishing takes one new input: presentation

    publish:
      needs: write
      permissions:
        id-token: write
      steps:
        - uses: actions/download-artifact@v4
          with: { name: explainer, path: explainer }
        - uses: bisque-cloud/presenter@v1
          with:
            source: pull-request
            presentation: explainer
    examples/claude-code-action-pull-request-explainer.yml (trimmed)
    write job publish job
  5. The present skill gains a command, narrate. It narrates every slide without signing in. It reports each slide's length and any pronunciation warnings, so Claude can mark a word and run it again. And publish now reuses that audio instead of narrating again.

    Slide text
    write job · present skill
    $ node present.mjs narrate --html index.html --voice kokoro:af_heart
    durationMs how long each slide runs
    pronunciationWarnings words to mark, then narrate again
    publish reuses that audio instead of narrating again
    write job publish job
  6. Nothing you run today has to change. The new input defaults to an empty string, and the steps that already existed run only when you leave it empty. The release notes list no breaking changes, so there's no migration to do.

    Slide text
    what could break

    Workflows that skip the new input run as before.

    action.ymlpresentation:
    default: ""

    The release notes list no breaking changes, so there is no migration.

    write job publish job
  7. Inside claude-code-action, publish stops with an error, so end your prompt after narrate and leave the audio folder in place. And the publishing job uses the voice and speed that audio was made in. It narrates only the slides that have no audio.

    Slide text
    what to plan for

    Publish fails inside Claude's session, and the audio keeps its voice.

    End before publish

    Inside claude-code-action, publish stops with an error. Run narrate and leave audio/ in the folder.

    Same voice, same speed

    The publish job uses the voice and speed the audio was made in, and narrates only slides that lack audio.

    write job publish job
  8. To upgrade, copy the example workflow into your repository. One limit: pull requests from forks run without secrets, so the explainer covers branches in your own repository. Claude writes in the first job, a second job publishes, and the full notes are on the release page.

    Slide text
    what to do

    Upgrade to v1.9.0 and copy one workflow.

    examples/claude-code-action-pull-request-explainer.yml

    Pull requests from forks run without secrets, so it explains branches in your own repository.

    github.com/bisque-cloud/presenter/releases/tag/v1.9.0
    write job publish job

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️