| name | github |
| description | Use when gitHub Automation Hub — Actions, Issues, and PR management for CI/CD, project tracking, and code review workflows. Monetize through automation-as-a-service. |
| domain | integrations |
| author | oyi77 |
| license | Apache-2.0 |
| subdomain | integrations |
| tags | ["api","automation","ci-cd","github","integrations","workflow","github-actions","github-issues","github-pr","devops"] |
| version | 1.0.0 |
GitHub Automation Hub
When Not to Use
- Simple or one-off tasks — if the task is straightforward, direct execution is faster than structured methodology.
- Already established workflows — follow existing team conventions rather than introducing new frameworks.
- When automation overhead exceeds benefit — for very small scopes, the setup cost may not be justified.
Dependencies
- Python 3.8+ or Node.js 18+
- Access to relevant APIs/services for your specific use case
- Basic understanding of the domain concepts
Commands
Money-Making Overview
GitHub is the backbone of modern software development. Monetize your GitHub automation skills through these high-value offerings:
| Service | ROI Estimate | Market |
|---|
| CI/CD pipeline setup & optimization | $2K-$10K/client | Dev teams, startups |
| Issue triage automation service | $500-$3K/month retainer | Open-source projects, SaaS teams |
| PR review automation + merge trains | $1K-$5K/setup | Engineering orgs (20+ devs) |
| Custom GitHub Action marketplace listings | $3K-$15K/action | Companies needing internal tools |
| GitHub compliance & audit reporting | $2K-$8K/quarter | Regulated industries (SOC2, HIPAA) |
| Migration automation (GitLab/Bitbucket → GitHub) | $3K-$12K/project | Enterprises migrating platforms |
Combined monthly recurring potential: $5K-$20K/client (as DevOps automation retainer).
Who Pays
- Startups — need CI/CD setup but no DevOps hire yet ($150-250/hr)
- Mid-market SaaS — compliance automation + PR workflow ($3-8K/mo retainer)
- Agencies — white-label CI/CD for client delivery ($500-2K/project markup)
- Open-source maintainers — issue/PR triage bots ($200-500/mo)
- Enterprises — custom internal GH Actions for compliance gates ($10-30K/project)
Combined Capabilities
| Capability | Scope | Output |
|---|
| GitHub Actions | CI/CD pipelines, scheduled jobs, composite actions, matrix builds, Docker/JS actions, OIDC auth, self-hosted runners | Workflow YAML, action repos, runner configs |
| GitHub Issues | CRUD operations, labels, milestones, comments, assignees, templates, webhooks, automation | REST/GraphQL API scripts, issue templates, bot automation |
| GitHub PR | Create/review/merge PRs via CLI (gh) and API, branch protection, required checks, auto-merge, squash/rebase/merge | PR templates, merge policies, automation scripts |
Authentication & Setup
All three sub-skills share the same auth stack:
export GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxx"
gh auth login --with-token < <(echo "$GITHUB_TOKEN")
export GITHUB_APP_ID="123456"
export GITHUB_APP_INSTALL_ID="654321"
export GITHUB_APP_PRIV_KEY=$(cat /path/to/private-key.pem)
curl -X POST \
"https://api.github.com/app/installations/$GITHUB_APP_INSTALL_ID/access_tokens" \
-H "Authorization: Bearer $(jq -r .token < <( \
curl -X POST "https://api.github.com/app/installations/$GITHUB_APP_INSTALL_ID/access_tokens" \
-H "Authorization: Bearer $(echo '{"alg":"RS256"}' | jq -c .)" \
))"
Rate limits: 5,000 requests/hr (authenticated), 60/hr (unauthenticated). Fine-grained tokens give higher org limits.
Concrete Action Flows
Flow 1: CI/CD Pipeline (GitHub Actions)
Automate build-test-deploy for any project in under 30 minutes.
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm run lint
test:
needs: lint
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version:
Flow 2: Issue Triage Automation
Create an issue-triaging Action that auto-labels, assigns, and greets:
name: Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const title = issue.title.toLowerCase();
const body = issue.body?.toLowerCase() || '';
// Auto-label based on content patterns
const labels = [];
if (/bug|error|fail|crash|broken/i.test(title + body)) labels.push('bug');
if (/feature|request|would like|please add/i.test(title + body)) labels.push('enhancement');
if (/help|how|question|guide/i.test(title + body)) labels.push('question');
if (/urgent|critical|blocker|p0/i.test(title + body)) labels.push('priority:high');
{
{
,
,
{}
}
}
Flow 3: Automated PR Merge Train
Safely auto-merge PRs that pass all checks:
#!/usr/bin/env bash
REPO="${1:-owner/repo}"
gh pr list --repo "$REPO" --state open --json number,title,headRefName,reviews,labels \
| jq -c '.[] | select(
.reviews | length > 0 and any(.state == "APPROVED")
)' \
| while read -r pr; do
PR_NUM=$(echo "$pr" | jq -r '.number')
echo "Merging #$PR_NUM: $(echo "$pr" | jq -r '.title')"
gh pr merge "$PR_NUM" --repo "$REPO" --squash --delete-branch
done
Flow 4: Bulk Issue Management via API
Create, update, and close issues at scale:
"""Bulk issue operations via GitHub REST API."""
import os, json, requests
GITHUB_TOKEN = os.environ["GITHUB_TOKEN"]
HEADERS = {
"Authorization": f"Bearer {GITHUB_TOKEN}",
"Accept": "application/vnd.github+json",
}
API = "https://api.github.com"
def create_issue(owner, repo, title, body="", labels=None, assignees=None):
"""Create a GitHub issue."""
resp = requests.post(
f"{API}/repos/{owner}/{repo}/issues",
headers=HEADERS,
json={
"title": title,
"body": body,
"labels": labels or [],
"assignees": assignees or [],
},
)
resp.raise_for_status()
return resp.json()["number"]
def list_issues(owner, repo, state="open", label=None):
"""List issues with optional label filter."""
params = {"state": state, "per_page": 100}
if label:
params["labels"] = label
resp = requests.get(
f"{API}/repos/{owner}/{repo}/issues",
headers=HEADERS,
params=params,
)
resp.raise_for_status()
return resp.json()
():
resp = requests.post(
,
headers=HEADERS,
json={: body},
)
resp.raise_for_status()
():
resp = requests.patch(
,
headers=HEADERS,
json={: },
)
resp.raise_for_status()
issue list_issues(, , label=):
close_issue(, , issue[])
add_comment(, , issue[],
)
()
Flow 5: CI/CD Pipeline Audit & Fix
Audit a repo's CI/CD health and generate fixes:
#!/usr/bin/env bash
set -euo pipefail
REPO="${1?Usage: $0 owner/repo}"
echo "=== CI/CD Audit for $REPO ==="
WORKFLOWS=$(gh api "/repos/$REPO/actions/workflows" --jq '.total_count')
echo "Workflow count: $WORKFLOWS"
gh run list --repo "$REPO" --limit 10 --json conclusion,workflowName,createdAt \
| jq -r '.[] | "\(.createdAt) \(.workflowName): \(.conclusion)"'
BRANCH_PROTECTION=$(gh api "/repos/$REPO/branches/main/protection" --jq '.required_status_checks.contexts // []' 2>/dev/null || echo '[]')
echo "Required CI checks: $(echo "$BRANCH_PROTECTION" | jq -r '.[] // "none"')"
gh actions cache list --repo "$REPO" --json id,key,lastAccessedAt,sizeInBytes \
| jq -r '.[] | select(.lastAccessedAt < (now - 86400*30 | strftime("%Y-%m-%d"))) | "Stale: \(.key) (\(.sizeInBytes) bytes)"'
echo "=== Audit Complete ==="
Flow 6: Release Automation
Create a release with auto-generated changelog:
#!/usr/bin/env bash
set -euo pipefail
REPO="${1?Usage: $0 owner/repo}"
VERSION="${2:-$(date +%Y%m%d.%H%M)}"
git tag "v$VERSION" -m "Release v$VERSION"
git push origin "v$VERSION"
LAST_TAG=$(git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
gh release create "v$VERSION" \
--repo "$REPO" \
--title "Release v$VERSION" \
--notes-start-tag "$LAST_TAG" \
--generate-notes
else
gh release create "v$VERSION" \
--repo "$REPO" \
--title "Release v$VERSION" \
--generate-notes
fi
echo "Released v$VERSION"
First Action in 60 Minutes
00:00-05:00 — Create GitHub PAT with repo, workflow, and actions scopes
05:00-10:00 — Install gh CLI and authenticate: gh auth login
10:00-15:00 — Clone target repo, examine existing workflows
15:00-30:00 — Add a .github/workflows/ci.yml with lint+test
30:00-35:00 — Commit and push, verify the workflow triggers
35:00-45:00 — Set up issue template: .github/ISSUE_TEMPLATE/bug.yml
45:00-50:00 — Create a test issue via API (curl/gh) to verify labels work
50:00-60:00 — Open a test PR, approve and merge it via CLI
By the end of 60 minutes, you have:
- Working CI pipeline
- Issue template + API automation working
- PR merge workflow tested
- Audit script ready to run on any repo
- Proven infrastructure you can sell as a DevOps audit deliverable
Anti-Rationalization Table
| Rationalization | Reality |
|---|
| "I'll set up CI manually per project" | Template-based CI saves 2+ hours per project. Create reusable starter workflows. |
| "Issue labels are not that important" | Proper labeling enables automation. A triage bot pays for itself in maintainer time. |
| "CLI is enough for PRs" | The API unlocks auto-merge trains, cross-repo dependencies, and compliance gates at scale. |
| "GitHub Actions only lives in YAML" | Composite actions, Docker actions, and JavaScript actions are reusable products you can sell. |
| "I don't need webhooks if I poll" | Webhooks are instant; polling burns rate limits. Set up a webhook receiver on day one. |
| "OIDC is too complex for small projects" | OIDC eliminates long-lived secrets entirely. Worth the setup for any team with >1 cloud deployment. |
Output Format
All GitHub automation deliverables follow this structure:
.github/
workflows/
ci.yml # Build, test, lint
release.yml # Tag, changelog, publish
triage.yml # Issue/PR triage automation
ISSUE_TEMPLATE/
bug.yml # Bug report template
feature.yml # Feature request template
dependabot.yml # Dependency update config
scripts/
audit-ci.sh # CI/CD health audit
bulk-issues.py # Bulk issue management
auto-merge.sh # PR merge train
Verification Checklist
When to Use
Use this skill when working with github.
Workflow
See the parent skill for authoritative workflow documentation.