Skip to content
Development
Skill

/gh-protect

Audit or apply GitHub branch protection, tag rulesets, repo security settings, and signing requirements based on the active profile. TRIGGER when the user says "check branch protection", "audit GitHub protection", "apply branch protection", "enforce branch protection", "set up

From plugin
nyann
741 skills41 commands3 hooks

Claude Code

$ npx -y skills add thettwe/nyann --skill gh-protect --agent claude-code

SKILL.md

gh-protect.SKILL.md
name: gh-protect
description: >
  Audit or apply GitHub branch protection, tag rulesets, repo security
  settings, and signing requirements based on the active profile.
  TRIGGER when the user says "check branch protection", "audit GitHub
  protection", "apply branch protection", "enforce branch protection",
  "set up branch protection", "configure branch rules", "check tag
  protection", "audit repo security", "apply GitHub settings",
  "enable branch protection", "protection audit", "are my branches
  protected", "/nyann:gh-protect".
  Do NOT trigger on "is this repo healthy" — that's `doctor` (which
  includes a protection check among many other signals).
  Do NOT trigger on "bootstrap this project" — bootstrap applies
  protection as one step of the full pipeline.

gh-protect

Standalone GitHub protection management. Wraps `bin/gh-integration.sh` in two modes: `--check` (read-only audit) and apply (write). Lets users manage branch protection, tag rulesets, signing requirements, and repo-level merge settings independently of bootstrap or doctor.

1. Pre-flight

Guard on `gh`:

command -v gh && gh auth status

If either fails, tell the user `gh` is required for this skill and stop. Unlike other skills that soft-skip, protection management has no useful fallback without `gh`.

2. Resolve profile

Load the active profile via `bin/load-profile.sh <name>` (resolves preferences → CLAUDE.md markers → `"default"` fallback).

If the user names a specific profile, use that instead.

3. Audit first (always)

Run the read-only check regardless of whether the user asked to audit or apply — the delta informs what apply would change:

bin/gh-integration.sh --target <cwd> --profile <name> --check

Output conforms to `schemas/protection-audit.schema.json`. Show the user a summary table:

| Area | Expected | Actual | Drift | |---|---|---|---| | Branch protection (`branches[]`) | from profile | from GitHub API | critical / warn / ok | | Tag rulesets | `.github.tag_protection_pattern` | GitHub Rulesets API | critical / warn / ok | | CODEOWNERS gate | `.github.require_code_owner_reviews` | branch protection | critical / warn / ok | | Signing | `.github.require_signed_commits/tags` | branch protection + local git config | critical / warn / ok | | Repo settings | `.github.allow_*_merge`, `delete_branch_on_merge` | repo API | warn / ok | | Security signals | Dependabot, secret scanning, push protection, code scanning | repo API | info |

If everything is `ok`, report "protection matches profile" and stop (no apply needed).

4. Offer to apply (if drift found)

If any drift exists at `critical` or `warn` level, ask:

"Apply protection rules to match the profile? This will update branch protection via the GitHub API."

On confirmation:

bin/gh-integration.sh --target <cwd> --profile <name>

The apply mode never downgrades stricter remote rules — it only tightens. Relay this constraint so the user understands that loosening protection requires manual GitHub UI changes.

Output is a GhIntegrationResult JSON (`schemas/gh-integration-result.schema.json`). Report:

  • `applied[]` — rules that were created or updated.
  • `noop[]` — rules already at or above the expected level.
  • `errors[]` — rules that failed to apply (permission issues, etc.).

5. Report

After audit-only or audit+apply, end with:

  • Protection status per branch (protected / unprotected / partial).
  • Tag ruleset status.
  • Any `errors[]` that need manual attention.

When to hand off

  • "Check overall repo health" → `doctor` skill (includes protection

as one signal among many).

  • "Set up this repo from scratch" → `bootstrap-project` skill (applies

protection as part of the full pipeline).

  • "I changed my profile's GitHub settings" → re-run this skill to

apply the updated expectations.

  • "Loosen a protection rule" → explain that `gh-integration.sh` never

downgrades; the user must change the rule via the GitHub UI or API directly.

Read more
@thettwe
Ships withnyann

ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR

Stars on GitHub

Momentum

stars in total
7
Star history of thettwe/nyann on GitHub, a chart by star-history.com

Other skills on nyann.

add-team-source

add-team-source

Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER…

@thettwe@thettweInstall Skill
bootstrap-project

bootstrap-project

Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow",…

@thettwe@thettweInstall Skill
check-prereqs

check-prereqs

Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for…

@thettwe@thettweInstall Skill
cleanup-branches

cleanup-branches

Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged…

@thettwe@thettweInstall Skill
commit

commit

Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user…

@thettwe@thettweInstall Skill
diagnose

diagnose

Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines…

@thettwe@thettweInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react3d252k
@facebook@facebookInstall Skill

Questions about gh-protect.

Which coding agents can use gh-protect?
gh-protect installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.