Skip to main content
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 with schedule: 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:
Permission shape varies per workflow — 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 from automation/, 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 pin ai-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:
Callers inside the same organization can use secrets: inherit. If a caller maps secrets explicitly, forward both credentials:
OAuth tokens are prohibited in unattended CI. A Claude Code subscription token (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.
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.

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 changing GH_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.