Skip to main content
This page is generated from schema/smartcloud.schema.json, which is generated from the Effect Schema in packages/config. The guides explain what each section does; this page lists every key.

Top level

Declarative repository automation: labels, conventions and policy. Other keys are an error.

Types

ExtendsEntry

A preset to extend, as owner/repo/path@ref. The ref is optional. Pattern: ^(?!\.\.?\/)([A-Za-z0-9_.-]+)\/(?!\.\.?\/)([A-Za-z0-9_.-]+)\/((?!\.\.?(?:\/|@|$))[^/@]+(?:\/(?!\.\.?(?:\/|@|$))[^/@]+)*)(?:@([^@\s]+))?$. Type: string.

Label

Other keys are an error.

Color

Six hex digits, for example 0E8A16, with or without a leading #. An unquoted all-digit colour such as 000123 is read as a number and padded back to six digits. Type: any of string, integer.

RuleId

A label or rule key. Pattern: ^\S[\s\S]*\S$|^\S$|^$. At least 1 character(s). Type: string.

LabelRule

Other keys are an error.

Subjects

The subjects a rule applies to. Omitted means pull requests and issues. Type: list of one of pullRequest, issue.

ConditionGroup

Other keys are an error.

NonNegativeInt

Minimum: 0. Type: integer.

Condition

Type: any of titleMatches, descriptionMatches, creatorMatches, branchMatches, baseBranchMatches, authorAssociation, hasAssignee, assigneeMatches, hasMilestone, milestoneMatches, linksIssue, isOpen, isLocked, isDraft, pendingReview, requestedChanges, reviewerMatches, commitsSignedOff, commitsVerified, hasConflict, checksPass, checkStatus, hasLabel, isStale, isAbandoned, filesMatch, codeownersTouched, changesSize, lockfileChanged, fileCount, binaryFilesAdded, isApproved, commitMessagesMatch, hasTrailer, commentMatches, reactionCount, createdBefore, timeWindow, dependencyUpdateType, and](#and), [or, not](#not), [only.

Pattern

Type: string.

Instant

An ISO 8601 date (2026-01-31, midnight UTC) or date and time with an offset (2026-01-31T09:00:00Z). Pattern: ^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2}))?$. Type: string.

Weekday

A day of the week: mon, tue, wed, thu, fri, sat or sun. Type: one of mon, tue, wed, thu, fri, sat, sun.

TimeZone

An IANA time zone name, such as Europe/London, or UTC. Type: string.

UpdateType

A version update: patch, minor or major. Type: one of patch, minor, major.

NonEmptyTrimmedString

a non empty string Pattern: ^\S[\s\S]*\S$|^\S$|^$. At least 1 character(s). Type: string.

SizeLabels

Built-in Size: XS to Size: XL labels, applied to pull requests by lines added plus deleted. Thresholds are the first line count of each size. Other keys are an error.

Int

Type: integer.

Conventions

Other keys are an error.

ConventionRule

Other keys are an error.

Roles

Other keys are an error. Other keys are an error.

Commits

Other keys are an error.

Level

Type: one of error, warning.

Disclosure

Other keys are an error.

Reviews

Other keys are an error.

RequestApproval

Other keys are an error.

AutomaticApprove

Other keys are an error.

Required

One aggregate check that passes only when every other check on the pull request has passed, so a ruleset requires that one check instead of a list of names. Other keys are an error.

Freeze

A merge freeze, manual or scheduled: while one is in effect the freeze check fails on open pull requests and merge queue entries fail. Other keys are an error.

FreezeWindow

Type: any of FreezeDates, FreezeRecurring.

FreezeDates

Other keys are an error.

FreezeRecurring

Other keys are an error.

Branches

A branch naming policy: the head branch of every pull request must match one of the accepted names. Other keys are an error.

BranchName

One accepted form of branch name: a preset, a pattern, or both, when the name must meet both. Other keys are an error.

CodeOwners

CODEOWNERS: check the file on pull requests that change it, and generate a block of it from rules in the config. Other keys are an error.

CodeOwnersRule

Paths and their owners, written to the generated block of CODEOWNERS. Other keys are an error.

CodeOwnersPath

A path pattern such as .md, /docs/ or apps/**/.ts. GitHub does not support ! or [ ] in CODEOWNERS patterns; write a space as \ followed by a space, as in docs/My\ Files/. Pattern: ^(?:\\ |\\[^\s[\]#]|[^!#\s[\]\\])(?:\\ |\\[^\s[\]]|[^\s[\]\\])*$. Type: string.

CodeOwner

A user as @login, a team as @org/team, or an email address. Pattern: ^(@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\/[A-Za-z0-9][A-Za-z0-9._-]*)?|[^@\s]+@[^@\s]+\.[^@\s]+)$. Type: string.

Trimmed

trimmed a string with no leading or trailing whitespace Pattern: ^\S[\s\S]*\S$|^\S$|^$. Type: string.

Stale

Other keys are an error.

NonNegative

Minimum: 0. Type: number.

Lock

Other keys are an error.

LockReason

Type: one of resolved, off-topic, too heated, spam.

Backport

Other keys are an error.

BackportPrefix

Backport label prefix The start of a backport label, such as backport ; the rest of the label is the branch. At least 1 character(s). Type: string.

AutoMerge

Turns on GitHub auto-merge for a pull request when one of the rules passes, such as a Dependabot patch update. Other keys are an error.

AutoMergeRule

When the conditions pass on an open pull request, smartcloud turns on GitHub auto-merge with the method. Other keys are an error.

Settings

Other keys are an error.

Sync

Other keys are an error.

Notifications

Other keys are an error.

NotificationChannel

Type: any of SlackChannel, DiscordChannel, LinearChannel.

SlackChannel

Other keys are an error.

SecretName

The name of the environment variable holding the secret. Pattern: ^[A-Za-z_][A-Za-z0-9_]*$. Type: string.

DiscordChannel

Other keys are an error.

LinearChannel

Other keys are an error.

Commands

Other keys are an error.

CommandPolicy

Other keys are an error.

Conditions

Each condition is an object with a type naming it. See Conditions for how groups and combinators evaluate.

titleMatches

The title matches a pattern. Other keys are an error.

descriptionMatches

The description matches a pattern. Other keys are an error.

creatorMatches

The author’s login matches a pattern. Other keys are an error.

branchMatches

The pull request’s head branch matches a pattern. Other keys are an error.

baseBranchMatches

The pull request’s base branch, the one it merges into, matches a pattern. Other keys are an error.

authorAssociation

The author’s association with the repository is one of these, or the author is a bot when bot is listed. Other keys are an error.

hasAssignee

Someone is assigned, or nobody is when false. Other keys are an error.

assigneeMatches

An assignee’s login matches a pattern. Other keys are an error.

hasMilestone

The subject is in a milestone, or in none when false. Other keys are an error.

milestoneMatches

The title of the subject’s milestone matches a pattern. Other keys are an error.

linksIssue

The pull request closes an issue in its description, or carries a Linear key in its branch or title; links none when false. Other keys are an error.

isOpen

The subject is open, or closed when false. Other keys are an error.

isLocked

The conversation is locked, or unlocked when false. Other keys are an error.

isDraft

The pull request is a draft, or ready when false. Other keys are an error.

pendingReview

Requested reviewers have not reviewed yet. Other keys are an error.

requestedChanges

A reviewer’s latest review requests changes. Other keys are an error.

reviewerMatches

A requested reviewer’s login or team slug, or a reviewer’s login, matches a pattern. Other keys are an error.

commitsSignedOff

Every non-merge commit has a Signed-off-by trailer matching its author email. Other keys are an error.

commitsVerified

Every commit has a GPG, SSH or S/MIME signature that GitHub verified. Other keys are an error.

hasConflict

The pull request conflicts with its base branch, or does not when false. Unknown mergeability counts as not conflicting. Other keys are an error.

checksPass

Every named check succeeded, or at least one has not when false. A check that has not reported yet has not succeeded. Other keys are an error.

checkStatus

The named check is in this state. A check that has not reported yet is pending. Other keys are an error.

hasLabel

The subject has the label, or lacks it when false. Other keys are an error.

isStale

No activity for at least this many days. Other keys are an error.

isAbandoned

Carries the stale label and has had no activity for at least this many days. Other keys are an error.

filesMatch

At least one changed file matches a glob. Other keys are an error.

codeownersTouched

At least one changed file is owned by this owner in CODEOWNERS. Other keys are an error.

changesSize

Lines added plus deleted are at least min and below max. Other keys are an error.

lockfileChanged

A dependency lockfile changed, or none did when false. Other keys are an error.

fileCount

The number of changed files is at least min and below max. Other keys are an error.

binaryFilesAdded

The pull request adds a binary file, or none when false. Other keys are an error.

isApproved

No reviewer is requesting changes, at least this many approved, and none are pending unless allowPending is set. Other keys are an error.

commitMessagesMatch

Commit messages match a pattern. Other keys are an error.

hasTrailer

Commits carry the trailer, with a value matching the pattern when one is given. Other keys are an error.

commentMatches

At least one comment matches a pattern; comments by bots count only when bots is set. Other keys are an error.

reactionCount

The number of reactions (of one kind, when reaction is set) is at least min and below max. Other keys are an error.

createdBefore

The subject was created at least this many days ago, or before this ISO 8601 date. Other keys are an error.

timeWindow

Now is inside the weekly window of days and hours, or outside it when false. Other keys are an error.

dependencyUpdateType

A Dependabot or Renovate pull request’s largest version change is one of these: patch, minor or major. Other keys are an error.

$and

Every group passes. Other keys are an error.

$or

At least one group passes. Other keys are an error.

$not

The group fails. Other keys are an error.

$only

Exactly this many of the groups pass. Other keys are an error.
Last modified on September 28, 2026