Skip to main content
The smartcloud command checks configs and converts v1 configs, without running the action. The CLI is not published to a registry yet. Run it from a checkout of this repository:
The examples below write smartcloud for node apps/cli/dist/main.js.

validate

Checks a config and every preset it extends, merges them under the locked preset rules, and prints where the config was built from and any migration warnings. Without a path, it uses the first of .github/smartcloud.yml, .github/smartcloud.yaml and .github/config.json in the current directory.
A config that fails prints one line starting smartcloud: and exits with code 1.

migrate

Converts a v1 JSON config (default .github/config.json) to v2 YAML, and prints a warning for every v1 key it does not carry over. The output starts with a schema hint for editors, and is proven to decode before it is written. A v2 file given to migrate is rewritten unchanged. See Migrating from v1 for worked examples.

check-commit

Checks a commit message against the DCO sign-off and AI attribution rules before the commit exists, and exits with code 1 when any rule is broken. The author defaults to git’s own, and the config to the repository’s in the working directory, or smartcloud’s defaults when there is none. Comment lines are ignored, as git ignores them. Use it as a git commit-msg hook, so a commit that would fail the pull request check is stopped locally:
.git/hooks/commit-msg

dry-run

Runs every feature against a real pull request, issue or repository event, through the dry-run layer. It reads GitHub as the action would, then prints the job summary and every write the run would make. It never writes. Give exactly one of --pr, --issue or --event.

plan settings

Prints every repository settings step the config would apply, with its request, without applying any of them.

sync

Renders the files the sync feature would write to the repository into a local directory, with each file’s status (added, updated, made executable or unchanged), and lists any conflicts. Nothing is sent to GitHub. Every file is checked before any is written: one that would land outside the directory, or be written through a symlink inside it, stops the command with nothing written.

Tokens

dry-run, plan settings and sync always read GitHub. validate needs a token only to read presets named in extends, so validating a config without presets works offline. When it does need one, it uses GITHUB_TOKEN if set, and otherwise the token of the signed-in GitHub CLI (gh auth token). The token is never printed.
Last modified on September 26, 2026