One repo of reusable workflows. Consumer repos write thin callers, choose Claude or Codex once, and inherit workflow updates.
dryvist/ai-workflows ships reusable GitHub Actions workflows (on: workflow_call:). The workflow
orchestration, provider routing, and rate guards live there. Prompt text comes from the pinned
dryvist/ai-llm-prompts catalog. Consumers declare triggers, permissions, and secret forwarding.
Event-triggered workflows
These run on GitHub events. Wire one caller per workflow you want.Scheduled workflows
These run on cron — typically called withschedule: and a manual workflow_dispatch:.
How a reusable caller looks
A reusable-workflow caller is the smallest YAML that declares a trigger, sets permissions, and forwards to the upstream:issue-resolver needs pull-requests: write, ci-fix needs actions: read, post-merge-* needs actions: write for the re-dispatch. The canonical caller templates list the exact permission block for each.
How prompts are loaded
The reusable workflows check out the catalog at its pinned release commit, select an asset fromautomation/, and remove its OKF frontmatter before
passing the prompt to the selected model. Local workflow YAML still owns triggers, permissions, publishing, and provider configuration.
Versioning
Per Dependency automation, consumers pinai-workflows — and every dryvist/* reusable workflow — at @main, never a SHA or version pin. The SemVer tags still exist (@v0.15.1) and release-please keeps bumping them for the changelog and the per-run resolved-SHA audit trail, but callers ride @main so upstream fixes land immediately with no per-repo Renovate PR (the first-party immediate-propagation model). Every org scanner is configured to allow @main — see scanner posture.
Authentication
Reusable.yml workflows select the AI agent through one organization variable:
GH_ACTION_AI_AGENT=claude|codex. The default is claude, so existing
callers keep their current behavior. Set it to codex once at the organization,
repository, or environment level to switch every inherited workflow.
Each agent keeps its own credential. Pre-provision both secrets so switching the
selector does not require caller edits.
Set them at org level with the GitHub CLI:
secrets: inherit. If a caller
maps secrets explicitly, forward both credentials:
OAuth tokens are prohibited in unattended CI. A Claude Code subscription token (GitHub Agentic Workflows are retired. The catalog keeps one dormant reference template, but no active repository compiles or runs GH-AW Markdown. Provider details and model configuration live in AUTHENTICATION.md.CLAUDE_CODE_OAUTH_TOKEN) used inside a GitHub Actions workflow violates the Claude Code Terms of Service and risks an account ban — the subscription is intended for interactive sessions only. Use a standard API key (GH_ACTION_AI_API_KEY) instead; it is purpose-built for programmatic access with no ToS concerns.
Security boundary
The model job does not receive a privileged GitHub App token. It checks out code without persisted credentials and returns structured output or a workspace change. A separate publisher job validates that handoff, mints the short-lived App token, and performs the requested GitHub write. This boundary keeps repository comments, labels, branches, commits, and pull requests deterministic. It also applies to both agents, so changingGH_ACTION_AI_AGENT does not change the workflow’s GitHub permissions.
Existing GitHub App secret names remain supported for inherited callers.
The GH_APP_CLAUDE_BOT_PRIVATE_KEY and GH_APP_CLAUDE_BOT_ID secrets are
distributed through the _github_app_repos anchor, not _claude_bot_repos, so
reusable workflows can mint App tokens from consumer repositories.
Where to go next
Getting started
Caller templates for every workflow, with the correct permission blocks.
Patterns
The post-merge dispatch pattern, bot guards, and other recurring shapes.
Authentication
Full
GH_ACTION_AI_* reference, provider routing, and model variables.Prompt catalog
Versioned OKF prompt assets and the immutable consumer pin.
Verification
The e2e runbook for checking a freshly-wired repo end to end.
Issue → PR pipeline on this repo
Exactly which six callers are wired on
JacobPEvans/docs and why.Secret distribution
How
GH_ACTION_AI_API_KEY and the App credentials land on each consumer repo.