Sync Features
Sync repository feature toggles to GitHub from nova.config.json.
Summary
The sync-features recipe pushes repository feature enable/disable settings from nova.config.json to GitHub. It uses gh repo edit for Issues, Wiki, Projects, and Discussions, and GitHub GraphQL for Sponsorships.
If the github.features block is missing entirely, or all five feature fields are undefined, the recipe no-ops and emits a warning.
Why Use This Command?
- Keeps repository feature switches aligned with reviewed configuration instead of one-off web UI changes.
- Applies Issues, Wiki, Projects, Discussions, and Sponsorships settings together so partial updates do not drift.
- Makes the intended GitHub surface reproducible for maintainers and automation.
Requirements
ghCLI ≥ 2.40.0 — The GitHub CLI must be installed and authenticated.- Repository write access — The authenticated user must have write access to the target repository.
github.ownerandgithub.repo— Both fields must be set innova.config.jsonto identify the target repository.
Behavior
Each feature field is independently optional. A missing field preserves GitHub's current value.
| Field | What it controls |
|---|---|
issues | The repository Issues tab. |
wiki | The repository Wiki tab. |
projects | Repository Projects. |
discussions | The repository Discussions tab. |
sponsorships | The repository Sponsor button through GitHub's updateRepository. |
For Sponsorships, Nova first performs a read-only lookup for the repository's GraphQL ID. During --dry-run, it prints the intended mutation but does not send it. GitHub still decides whether the repository and owner are eligible to enable Sponsorships.
Settings
Declare only the feature values you want Nova to own, then enable the project-scoped recipe under recipes.github:
{
"github": {
"features": {
"issues": true,
"wiki": false,
"projects": false,
"discussions": true,
"sponsorships": true
}
},
"recipes": {
"github": {
"sync-features": {
"enabled": true
}
}
}
}
Usage
Options
| Flag | Description |
|---|---|
-d, --dry-run | Run read-only checks without changing any GitHub settings. |