Provision GitHub
Create a GitHub repository + production Environment via Terraform, then drive the Soleur App install to the human consent screen.
Art. 32 Pre-condition
MUST run on the operator's local machine. MUST NOT run in CI. The GitHub PAT is accepted via read -s (interactive terminal only) and never persisted to disk, env exports, or CLI args.
Usage
soleur:provision-github <tenant-slug> <tenant-org> <reviewer-github-username> [--dry-run]
| Argument | Required | Description | |----------|----------|-------------| | tenant-slug | Yes | Canonical tenant identifier (kebab-case) | | tenant-org | Yes | GitHub organization owning the tenant repo | | reviewer-github-username | Yes | GitHub username for required deployment reviewer | | --dry-run | No | Print TF plan + install URL without executing |
Execution
bash "${CLAUDE_PLUGIN_ROOT}/skills/provision-github/scripts/provision-github.sh" <slug> <org> <reviewer> [--dry-run]
The script:
- Validates prerequisites (DPA gate, slug format,
ghauth,terraform) - Checks idempotency (warns if repo already exists via
gh repo view) - Resolves numeric org-id for the App install URL
- Generates
provisioning/<slug>/github.tf(repo + Environment + deployment policy + reviewer) - Emits a copy-pasteable
terraform applycompound command with credential re-entry - After TF apply, presents the human consent gate for App installation (per ToS B.3)
- Verifies App install permissions via
gh api - Prints teardown commands including
bypass_actorssweep reminder
Sharp Edges
- GitHub TF provider requires explicit
tokenauth — does NOT inherit fromghCLI. - R2 backend has no state locking. Single operator at N=2.
- App install preserves human consent gate per GitHub ToS B.3. Skill does NOT automate the install click.
- After uninstalling the App, sweep
bypass_actorsfor ghost entries (GitHub does NOT auto-prune). - The
productionEnvironment + required reviewers is the security control that capsactions:writeblast radius.