Skip to main content

Settings

Repository settings live in .agents/agent-workflow.yml. Ask your agent to configure the repository or edit the file in a PR. Settings take authority from the default branch; a PR cannot weaken the rules used to review itself.

merge.preference

Required. Values: ask or auto. Setup defaults to ask.

merge:
preference: ask

With ask, the agent brings back a ready PR for you to merge on GitHub. With auto, it merges after required checks, reviews, and approvals. Set a task's preference in the prompt: Use merge policy auto. Repository restrictions and required human approvals still apply. See merge policy.

review.required

Required. Values: meaningful_changes, always, or none.

This controls when configured CI review reports are required:

  • meaningful_changes: implementation changes; trivial prose can skip with a reason.
  • always: every PR, including trivial changes.
  • none: no configured CI review backstop. Omit ci_review_jobs with this setting.

Meaningful implementation still receives a local adversarial review before push. That step is an agent instruction; Ruby does not prove it happened. A review needs fresh context, and can use the implementation model if another reviewer is unavailable.

review.ci_review_jobs

Required unless review.required is none. List the GitHub job names that produce review reports, such as:

review:
required: meaningful_changes
ci_review_jobs:
- claude-review
ci_review_wait: one

The agent reads their reports and waits according to ci_review_wait. A green job alone does not prove a review completed. These names are separate from GitHub's required merge checks.

review.ci_review_wait

Optional. Default: one. Values: none, one, or all.

ValueWait before merging
noneNo CI review report; local review still applies
oneAt least one configured reviewer reports on the current commit
allEvery configured reviewer reports on the current commit

Local review does not waive one or all. With review.required: none, there are no configured review jobs to wait for. GitHub's required checks and approvals apply in every mode. A task can request more waiting, but cannot weaken the trusted repository setting.

The agent verifies and counts reports. The merge helper checks GitHub conditions; it permits an optional pending check (UNSTABLE) for none and one, but requires CLEAN for all.

review.local_review_agents

Optional. Ordered reviewer preferences. Without a list, selection falls back to a fresh review context using the implementation identity.

review:
required: meaningful_changes
ci_review_jobs: [claude-review]
local_review_agents:
- provider: anthropic
model_family: claude
- provider: openai
model_family: codex

These are stable provider/family names, not model releases. An Opus or GPT update does not require changing this list. The agent prefers a different provider when available and chooses the concrete model and effort for the review. These entries do not set either one.

Put custom review criteria in trusted AGENTS.md. The agent can include them in the reviewer prompt. For invocation and supported CLIs, see the skill procedure.

Standard command scripts

These fixed paths connect Shaka to your project's existing tools:

ScriptRequired?Purpose
.agents/bin/setupYesInstall dependencies
.agents/bin/testYesRun tests; accept focused arguments
.agents/bin/validateYesComplete checks before publishing
.agents/bin/validate-localNoFaster checks before local review
.agents/bin/trigger-hosted-ciNoStart deferred CI after local fixes; requires validate-local

A wrapper can call an existing command. For example:

#!/bin/sh
set -eu
cd "$(dirname "$0")/../.."
exec bundle exec rake test "$@"

exec replaces the wrapper process, preserving the command's exit status and signals. A symlink to a tracked executable inside the repository also works if the working directory, environment, and arguments already match.

Scripts must exist, be executable, and stay within the repository so the reviewed commit determines what runs. .agents and .agents/bin must be real directories. An optional check already present on the default branch cannot disappear just because a PR deletes it. Removing one requires an explicit policy change approved by the maintainer.

base_branch

Optional. Default: the repository's default branch.

Use base_branch: develop when tasks normally start from and target develop. An explicit task choice or an existing PR's target takes precedence. A different base needs confirmation and uses Ask for that task. Policy still comes from the default branch, regardless of where the PR targets.

branches.name

Optional. Default: '{login}-{host}/{issue}-{description}'.

branches:
name: '{login}-{host}/{issue}-{description}'
PlaceholderMeaning
{login}Authenticated GitHub login
{host}Coding-agent slug, such as codex or claude
{issue}Issue, PR, or work-item number; required in the template
{description}Short task description

For example: alex-codex/42-fix-search. Shaka currently supports GitHub PR delivery; this setting does not add GitLab support.

wip.include_locations

Optional. Default: true.

wip:
include_locations: false

Controls whether WIP Details in an unfinished PR include the checkout path and agent-session link. With false, both are shown as UNKNOWN; ownership, state, and next action remain available.

These locations can reveal local names or identifiers. The agent must inspect what it publishes; Ruby does not guarantee that the information is nonconfidential. Expandable PR sections are public whenever the PR is public.

repo_prefix

Optional. Default: a label derived from the repository name.

Use a short uppercase label, such as repo_prefix: SHOP. It helps distinguish chat titles such as SHOP PR #42 · Fix checkout. Configured prefixes are 1–6 uppercase ASCII letters or digits.

The repository catalog helps find duplicate prefixes across your projects.

version

Required. Currently 1. This identifies the configuration format, not the installed Shaka release.

The file is validated YAML: unknown keys and invalid values produce an error. For requirements or a design plan, point to the document from AGENTS.md; no separate plan setting is needed.