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 ofpullRequest, 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 ofmon, 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 ofpatch, 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.
Links
Other keys are an error.
Commits
Other keys are an error.
Level
Type: one oferror, 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 ofresolved, off-topic, too heated, spam.
Backport
Other keys are an error.
BackportPrefix
Backport label prefix The start of a backport label, such asbackport ; 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 atype 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.