
How to Use
About
Design efficient CI/CD workflows with GitHub Actions including matrix builds, caching, reusable workflows, and secrets management.
name: github-ops description: "GitHub remote operations — repo creation, metadata (description/homepage/topics), releases, README 'Recent Updates' enforcement. Companion to git-ops (local) and push-gate (pre-push safety). Three modes: new (first publish), update (subsequent release), audit (read-only checklist). Triggers on: push to github, publish repo, ship release, cut release, gh release, set topics, repo description, github metadata, recent updates section, audit github repo, repo visibility, make repo public, gh repo create." license: MIT allowed-tools: "Read Write Edit Bash Glob Grep" metadata: author: claude-mods related-skills: git-ops, push-gate, ci-cd-ops
GitHub Ops
GitHub-side operations skill. Owns everything that talks to api.github.com via gh CLI: repo creation, metadata configuration, releases, and the conventions that govern how 0xDarkMatter repos present on GitHub.
Sits alongside two related skills:
LOCAL BRIDGE REMOTE (GitHub)
───── ────── ───────────────
git-ops push-gate github-ops (this skill)
| Concern | Owner |
|---|---|
| Commits, branches, local tags, rebases, worktrees, stash | git-ops |
| Pre-push secret scan + dirty-tree refusal + confirm | push-gate |
| gh repo create, push to remote, tag push | github-ops |
| Repo description / homepage / topics / visibility | github-ops |
| gh release create + release notes | github-ops |
| README "Recent Updates" section maintenance | github-ops |
| Package metadata audit (pyproject/package.json ↔ GH topics ↔ tag ↔ version) | github-ops |
| Issues / PRs / Actions / secrets | github-ops (future) |
Hard rules
- Visibility defaults to private. Pass
--privatetogh repo createunless the user has explicitly said "public" / "make it public" for this specific repo. Seereferences/repo-visibility.md. - Major version bumps require explicit approval. Default to minor; patch for fix-only ranges. Never auto-suggest a 1.0.0 from
BREAKING CHANGE:markers — surface and ask. Seereferences/release-strategy.md. - Always run
push-gatebefore any push to a remote. No exceptions. If push-gate refuses, do not proceed — fix the cause and re-run. - Delegate local git operations to
git-ops. Don't reimplement commit/tag/push logic. github-ops orchestrates the GitHub-side calls (gh) and the README/CHANGELOG edits; git-ops handles git itself. - README "Recent Updates" updates on every release. This is the one README touch that always happens, regardless of how minor the release. See
references/readme-recent-updates.mdfor the canonical claude-mods style. - Never push without confirming visibility decision. When creating a new repo, surface visibility as a flippable line in the plan ("creating as private — say 'public' to flip"), not buried in flag soup.
- No local-machine paths in committed content. Never bake
C:\Users\<name>\…,/home/<name>/…,/Users/<name>/…,/tmp/<one-off-test-dir>, or any other machine-specific path into README entries, Recent Updates bullets, CHANGELOG entries, release notes, tag annotations, or commit messages. Public release artefacts have to read the same on someone else's machine. Use generic placeholders (~/Temp/,<temp-dir>, "a temp directory") or describe the file's purpose abstractly instead. If a path genuinely is part of the project's public API (install location, config path), state it canonically ($HOME/.claude/skills/...), not as a literal absolute that includes a user name.
Three modes
Mode new — first publish of a repo
Triggered by: "publish to github", "create repo on github", "push to github" (when no origin remote exists), "ship this repo".
1. Audit (run mode `audit` checklist; abort on critical fail)
- LICENSE present?
- README has tagline + install + quickstart?
- pyproject.toml / package.json has description, keywords, license, repository URL?
- At least one tag exists (typically v0.1.0)?
- CHANGELOG.md has an entry for the latest tag?
2. Draft / refine README intro (2–3 paragraphs) — see references/readme-description.md
- If the README intro is just a tagline or < 80 words, draft a proper 2–3 paragraph
description: what it is, why it exists, who it's for. Read package metadata, CHANGELOG,
and the primary entry point first; do not fabricate.
- Voice: developer-to-developer, concrete, occasional dry wit (earned, never sprayed).
Anti-patterns ("blazing fast", emoji walls, marketing fluff) listed in the reference.
- Surface the draft to the user for approval before committing — this is the repo's
first impression and shouldn't be a one-shot.
- Commit via git-ops with: docs: Expand README intro
3. Add "Recent Updates" section to README if missing
- Use claude-mods style by default (see references/readme


