Skip to main content

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?

  1. Keeps repository feature switches aligned with reviewed configuration instead of one-off web UI changes.
  2. Applies Issues, Wiki, Projects, Discussions, and Sponsorships settings together so partial updates do not drift.
  3. Makes the intended GitHub surface reproducible for maintainers and automation.

Requirements

  • gh CLI ≥ 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.owner and github.repo — Both fields must be set in nova.config.json to identify the target repository.

Behavior

Each feature field is independently optional. A missing field preserves GitHub's current value.

FieldWhat it controls
issuesThe repository Issues tab.
wikiThe repository Wiki tab.
projectsRepository Projects.
discussionsThe repository Discussions tab.
sponsorshipsThe 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:

json
{
  "github": {
    "features": {
      "issues": true,
      "wiki": false,
      "projects": false,
      "discussions": true,
      "sponsorships": true
    }
  },
  "recipes": {
    "github": {
      "sync-features": {
        "enabled": true
      }
    }
  }
}

Usage

Options

FlagDescription
-d, --dry-runRun read-only checks without changing any GitHub settings.