chore(submodule): bump macros from 8ce5d0c to a63f1a0
#158
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Automatic Claude Code review of pull requests -- thin caller. | |
| # | |
| # The reusable workflow in Morrison-Lab/gha runs the `code-review` plugin, | |
| # posts inline findings, ends every review with an explicit `### Verdict` | |
| # line, and already skips drafts, Dependabot bumps, fork PRs, and PRs that | |
| # edit this workflow file itself (the action can't review its own diff -- | |
| # see gha's own comments on the App-token validation 401). This caller only | |
| # supplies qwt's Quarto/R-specific review guidance on top. | |
| # See https://github.com/Morrison-Lab/gha for inputs and versioning. | |
| # | |
| # Secrets are passed explicitly rather than via `secrets: inherit`: GitHub | |
| # only inherits secrets into a reusable workflow owned by the same org/user, | |
| # and Morrison-Lab/gha is a different owner than this repo. | |
| name: Claude Code Review | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, ready_for_review, reopened] | |
| # Allow claude.yml to dispatch a fresh review (e.g. after an @claude run | |
| # pushes commits, or on an `@claude review` comment). GITHUB_TOKEN pushes | |
| # don't fire `synchronize`, so an explicit dispatch path is needed. | |
| workflow_dispatch: | |
| inputs: | |
| pr_number: | |
| description: 'Pull request number to review' | |
| required: true | |
| type: string | |
| # NOTE: no top-level `concurrency:` block here. The reusable workflow's own | |
| # `claude-review` job already declares `concurrency: group: | |
| # claude-review-<pr-number>, cancel-in-progress: true` internally -- a | |
| # caller-level block with the same group name deadlocks the run ("Canceling | |
| # since a deadlock was detected for concurrency group ... between a top | |
| # level workflow and 'review / claude-review'"), so the per-PR dedup this | |
| # used to provide is already handled inside the called workflow. | |
| jobs: | |
| review: | |
| permissions: | |
| contents: read | |
| pull-requests: write # post review + inline comments | |
| issues: write | |
| id-token: write # required by claude-code-action for the App-token exchange | |
| actions: read # lets the reviewer read CI status | |
| uses: Morrison-Lab/gha/.github/workflows/claude-code-review.yml@v2 | |
| secrets: | |
| CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} # Max-plan OAuth; empty when using API key | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} # direct API key; empty when using OAuth | |
| SUBMODULES_TOKEN: ${{ secrets.SUBMODULES_TOKEN }} # optional; macros/ is public, so unset is fine | |
| with: | |
| pr-number: ${{ inputs.pr_number }} | |
| checkout-submodules: true # macros/ so the reviewer can read it, not report it "not initialized" | |
| # `claude` is included because a remote Claude session pushing a | |
| # commit directly to a PR fires `synchronize` with `claude` as the | |
| # actor, and a dispatched review's actor is `github-actions[bot]` | |
| # (the default) -- without both, the action rejects the run as a | |
| # "non-human actor". | |
| allowed-bots: 'github-actions[bot],claude' | |
| prompt-addendum: | | |
| In addition to the standard checks above, this is the qwt Quarto | |
| website template -- small, prose-heavy, and re-used as a template | |
| for downstream books -- so also prioritize: | |
| 1. **Quarto / prose correctness** | |
| - `.qmd` syntax: chunk options use `#|` directives, fenced | |
| blocks are balanced, cross-refs (`@fig-`, `@tbl-`, `@sec-`) | |
| resolve to defined labels. | |
| - Bullet-list rule: 3+ items use bullets with a blank line above. | |
| - `code-fold: true` is used on chunks where the output (not the | |
| code) is the point, and avoided on tutorial code. | |
| 2. **R code** | |
| - Conforms to `.lintr.R` settings (snake_case, line length, etc.). | |
| - No new package dependencies without justification -- every | |
| dependency added here lands in every downstream book. | |
| 3. **Build hygiene** | |
| - No accidental commits of `_site/`, `_freeze/`, or `.quarto/`. | |
| - `README.md` is generated; edits should go to `README.Rmd`. | |
| - Bibliography entries in `references.bib` are well-formed BibTeX. | |
| 4. **CI / template impact** | |
| - Workflow changes don't break the `copilot-setup-steps.yml` | |
| contract or the publish/preview pipelines. | |
| - Spell-check / link-check failures are fixed at the source | |
| (wordlist or content) rather than suppressed. | |
| When you post findings, end the top-level summary with a | |
| ready-to-paste draft of the PR comment the author would send to | |
| kick off another `@claude` run on those findings. Wrap the draft in | |
| a fenced code block (GitHub renders a copy button on code blocks, | |
| so one click puts it on the clipboard) and embed a markdown link | |
| back to your review summary so the next `@claude` run can find it. | |
| The draft should read like: | |
| ``` | |
| @claude address review comments in [this review](https://github.com/${{ github.repository }}/pull/${{ inputs.pr_number || github.event.pull_request.number }}) | |
| ``` | |
| Use the PR conversation URL above as the link target (you won't | |
| know your own summary comment's anchor before posting it, and the | |
| PR conversation is where the latest review lands anyway). Omit this | |
| draft when the PR is clean (nothing to fix). |