docs(harnesses): summarize the 2026 landscape of AI agent harnesses (closes #95) #325
Workflow file for this run
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
| # Thin caller for the shared reusable workflow in Morrison-Lab/gha. | |
| # | |
| # This used to be a hand-rolled copy of the review job (the "qwt" Quarto | |
| # website template's original version, before gha's reusable workflow was | |
| # ported FROM it -- see gha's own claude-code-review.yml header). That copy | |
| # never got migrated to consume its own canonical port, so it carried two | |
| # config gaps the gha version has since fixed centrally: the plugin's own | |
| # `/code-review` command needs `gh pr list`/`gh issue view`/`gh issue list`/ | |
| # `gh search` (its declared `allowed-tools`, not just view/diff/comment) or | |
| # its 4 parallel sub-agents rack up permission denials; and having the AGENT | |
| # itself call `gh pr comment` is fragile -- gha's version denies that tool | |
| # outright and has the WORKFLOW post the review from the agent's final | |
| # message instead, plus a same-run retry when a stub (no verdict) is | |
| # detected. Both were root causes of the repeated stub reviews on #48/#49. | |
| # | |
| # See https://github.com/Morrison-Lab/gha for inputs and versioning. | |
| 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: number | |
| jobs: | |
| # Keep the job id (claude-review) matching the previous standalone workflow | |
| # so the status-check context doesn't change, per this repo's own | |
| # convention (see check-links.yml, check-bibliography-dois.yml, | |
| # check-non-standard-chars.yaml). | |
| claude-review: | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| issues: write | |
| id-token: write # required by claude-code-action for the App-token | |
| # exchange it performs even with OAuth auth | |
| actions: read # lets the reviewer read CI/check-run status | |
| uses: Morrison-Lab/gha/.github/workflows/claude-code-review.yml@v2 | |
| secrets: | |
| CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} # empty; this repo uses OAuth | |
| SUBMODULES_TOKEN: ${{ secrets.SUBMODULES_TOKEN }} # empty; the macros submodule is public | |
| with: | |
| # Wires the workflow_dispatch input through so claude.yml can re-dispatch | |
| # a review on Claude's own commits; empty (and ignored) on pull_request | |
| # runs. | |
| pr-number: ${{ inputs.pr_number }} | |
| # This repo vendors the macros submodule; the previous standalone | |
| # workflow checked it out (`submodules: recursive`) so the reviewer | |
| # could read its contents instead of reporting it as uninitialized. | |
| checkout-submodules: true | |
| 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. |