vm0-ai

github-automation

Automate GitHub operations using gh CLI - manage repositories, issues, pull requests, releases, and workflows. Use when working with GitHub, managing repos, creating issues/PRs, or when users mention GitHub operations, gh CLI, or repository management.

vm0-ai 63 15 Updated 5mo ago
GitHub

Install

npx skillscat add vm0-ai/vm0-skills/github-automation

Install via the SkillsCat registry.

SKILL.md

GitHub Automation

This Skill helps you manage GitHub operations using the gh CLI, including repositories, issues, pull requests, releases, and GitHub Actions workflows.

Capabilities

  • Repositories: Create, clone, fork, view, and manage repos
  • Issues: Create, list, view, close, comment, and label issues
  • Pull Requests: Create, review, merge, list, and comment on PRs
  • Releases: Create releases and manage tags
  • Workflows: View and manage GitHub Actions
  • Gists: Create and manage gists
  • Search: Search repos, issues, PRs, code, and users

Authentication

The GITHUB_TOKEN environment variable is pre-configured. Verify with:

gh auth status

Instructions

Phase 1: Understand the Request

  1. Clarify what GitHub operation the user needs
  2. Identify the target repository (if not specified, ask)
  3. Confirm any destructive operations before executing

Phase 2: Execute the Operation

Use gh CLI commands. Common patterns:

Repository Operations

gh repo view <owner>/<repo>
gh repo clone <owner>/<repo>
gh repo create <name> --public/--private
gh repo list <owner>

Issue Operations

gh issue list --repo <owner>/<repo>
gh issue create --repo <owner>/<repo> --title "Title" --body "Body"
gh issue view <number> --repo <owner>/<repo>
gh issue close <number> --repo <owner>/<repo>
gh issue comment <number> --repo <owner>/<repo> --body "Comment"

Pull Request Operations

gh pr list --repo <owner>/<repo>
gh pr create --repo <owner>/<repo> --title "Title" --body "Body"
gh pr view <number> --repo <owner>/<repo>
gh pr merge <number> --repo <owner>/<repo>
gh pr review <number> --repo <owner>/<repo> --approve/--comment/--request-changes
gh pr checks <number> --repo <owner>/<repo>

Search Operations

gh search repos <query>
gh search issues <query>
gh search prs <query>
gh search code <query>

GitHub Actions

gh run list --repo <owner>/<repo>
gh run view <run-id> --repo <owner>/<repo>
gh workflow list --repo <owner>/<repo>

Releases

gh release list --repo <owner>/<repo>
gh release create <tag> --repo <owner>/<repo> --title "Title" --notes "Notes"

Guidelines

  • Always specify --repo <owner>/<repo> when not in a cloned repository
  • For destructive operations (delete, close, merge), confirm with user first
  • Use --json flag when you need to parse output programmatically
  • Handle errors gracefully and suggest fixes
  • When creating issues/PRs, use clear titles and descriptive bodies

Phase 3: Report Results

  • Summarize what was done
  • Provide relevant links (PR URLs, issue numbers, etc.)
  • Suggest next steps if applicable

Output Format

When listing items, format clearly:

#123 - Issue title (open/closed) - @author
#456 - PR title (open/merged/closed) - @author

When creating items, always report:

  • The created item's number/ID
  • Direct URL to the item
  • Any relevant status information

Examples

Create an issue:

gh issue create --repo <owner>/<repo> --title "Bug: Login fails" --body "Steps to reproduce..."

List open PRs awaiting review:

gh pr list --repo <owner>/<repo> --state open --search "review:required"

Get PR details as JSON:

gh pr view <number> --repo <owner>/<repo> --json title,state,reviews,checks

Prerequisites

This Skill requires the GitHub CLI (gh) to be installed and authenticated:

gh auth status

If not authenticated, run:

gh auth login

Alternatively, set the GITHUB_TOKEN environment variable with a personal access token.

Important: When using environment variables in commands with pipes, wrap the command in bash -c '...' to avoid variable substitution issues:

bash -c 'gh pr view <number> --repo $OWNER/$REPO --json title,state' | jq '.title'

Without environment variables, the pipe is fine:

gh pr view <number> --repo <owner>/<repo> --json title,state | jq '.title'