You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Tag protection: use actual GitHub Ruleset rule names (Restrict updates/deletions) instead of made-up terms, show all available rules
- SKIP description: cover both "already correct" and "plan limitation" meanings
- --from/--local workflows: fix step ordering to match code (branch/tag protection runs after code push, not before)
- Remove redundant "Dependabot and secret scanning are configured" step
- Fix "silently skipped" claim (settings show as SKIP rows, not silent)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|**Restrict deletions**|**Yes**| Prevents `git push --delete` of tags |
98
+
| Require linear history | No ||
99
+
| Require deployments to succeed | No ||
100
+
| Require signed commits | No ||
101
+
| Require status checks to pass | No ||
102
+
| Block force pushes | No ||
97
103
98
-
Tag protection uses the Rulesets API exclusively — there is no "classic" tag protection equivalent. This only works on public repos or paid GitHub plans (same restriction as branch protection). Free-plan private repos will see this skipped in the plan output.
104
+
Repository admins are on the bypass list (consistent with the branch protection `enforce_admins = false` default). Only works on public repos or paid GitHub plans (same restriction as branch protection). Free-plan private repos will see this skipped in the plan output.
|`UPDATE` (yellow) | Existing setting being changed (audit mode) |
270
276
|`DELETE` (red) | Setting being removed |
271
-
|`SKIP` (dim) |Feature unavailable on your plan/visibility combination |
277
+
|`SKIP` (dim) |No action needed — already at the desired value, or feature unavailable on your plan/visibility combination |
272
278
273
279
**JSON output** (`--json`):
274
280
@@ -308,7 +314,7 @@ Fix mode:
308
314
3. Shows a plan table with `UPDATE` for changed settings and `SKIP` for settings already at the desired value (no-op detection — it never makes API calls that would change nothing)
309
315
4. Prompts for confirmation before applying (skip with `--yes`)
310
316
311
-
Settings that are already correct are silently skipped. Only real changes are shown and applied.
317
+
Only real changes are applied — settings already at the desired value are shown as `SKIP`and generate no API calls.
1. The [pre-flight security scanner](#pre-flight-security-scanner) runs on the local directory directly (no clone needed)
355
361
2. You review findings and confirm (or abort)
356
-
3. A new repo is created with safe defaults applied
357
-
4. Branch protection is applied **before any code is pushed** (when `--public`)
358
-
5. Code is pushed:
362
+
3. A new repo is created, and actions permissions and security settings are applied
363
+
4. Code is pushed:
359
364
- If `PATH` is a git repo: the full history is cloned locally and pushed with `push --all --tags` (all branches and tags)
360
365
- If `PATH` is a plain directory: files are staged in a fresh repo and pushed as an initial commit
361
366
- If `PATH` is an empty directory: nothing is pushed (silently skipped)
367
+
5. Branch and tag protection are applied (after code push, so the target branch exists)
362
368
6. If `PATH` is a git repo, `origin` is added to the **original** local repo pointing at the new GitHub URL, and the current branch's upstream tracking is configured — so `git push` and `git pull` work immediately without extra setup.
363
369
364
370
Both `--local` and `--from` work for private and public repos. They are mutually exclusive.
0 commit comments