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.
Validation is strict: an unknown key or invalid value in the config or any preset is an error, where a run only drops it with a warning. 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:
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