
Git Platform
Run issues and pull requests the same way across GitHub, GitLab, and Bitbucket using gh, glab, and REST equivalents.
Overview
Git Platform is an agent skill most often used in Build (also Ship review) that maps GitHub, GitLab, and Bitbucket issue and PR/MR commands so agents use the right CLI or REST call per host.
Install
npx skills add https://github.com/athola/claude-night-market --skill git-platformWhat is this skill?
- Side-by-side issue ops: view, list, create, close, comment, search for gh vs glab vs Bitbucket REST
- PR/MR create, view, and list mappings between GitHub and GitLab CLIs
- Copy-paste curl patterns for Bitbucket where no first-class CLI is assumed
- Cross-platform vocabulary so agents do not hallucinate GitHub-only flags on GitLab
- Complete command mapping reference for forge automation scripts
- Issue operations table covers six operations across three platforms
- PR/MR section documents paired GitHub and GitLab CLI flows
Adoption & trust: 1 installs on skills.sh; 304 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
Your agent only knows `gh` syntax and breaks when the repo lives on GitLab or Bitbucket.
Who is it for?
Indie maintainers and polyglot teams who switch between GitHub, GitLab, and Bitbucket in one week.
Skip if: Pure local git history rewriting with no remote API, or shops standardized on a single host with no cross-forge need.
When should I use this skill?
When automating or instructing agents to perform remote issue or PR/MR actions and the repository may be on GitHub, GitLab, or Bitbucket.
What do I get? / Deliverables
You run equivalent forge operations on the correct platform with aligned flags, endpoints, and JSON fields for issues and merge requests.
- Correct per-platform CLI or curl commands for the requested forge operation
- Cross-host mapping notes when translating scripts between GitHub and GitLab
- Issue or PR/MR action outcomes (created, closed, commented) per host semantics
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Build/pm is the canonical shelf because issue and MR/PR workflows are daily project coordination while feature work is in flight. Pm covers tracking, triage, comments, and merge-request lifecycle—not writing application code but keeping delivery unblocked on the forge.
Where it fits
Create a GitLab MR with the same title/body shape you used on GitHub last sprint.
View open PR JSON fields on GitHub vs GitLab before approving an agent-generated patch.
Resolve a Bitbucket issue via REST when your on-call playbook is host-agnostic.
How it compares
Cross-forge command cheat sheet—not a replacement for `git` porcelain or a full code-review methodology skill.
Common Questions / FAQ
Who is git-platform for?
Solo builders and small teams who automate or agent-drive issues and PRs across more than one Git hosting provider.
When should I use git-platform?
During Build pm when creating or triaging issues and MRs; during Ship review when listing or inspecting PRs before merge; whenever an agent must pick gh vs glab vs Bitbucket REST.
Is git-platform safe to install?
Review the Security Audits panel on this page; invoking mapped commands uses network and API tokens you must scope and rotate yourself.
SKILL.md
READMESKILL.md - Git Platform
# Complete Command Mapping Full cross-platform command equivalents for forge operations. ## Issue Operations | Operation | GitHub (`gh`) | GitLab (`glab`) | Bitbucket (REST API) | |-----------|---------------|-----------------|----------------------| | View | `gh issue view N --json title,body,labels,assignees,comments` | `glab issue view N` | `curl -s "https://api.bitbucket.org/2.0/repositories/OWNER/REPO/issues/N"` | | List | `gh issue list --json number,title` | `glab issue list` | `curl -s "https://api.bitbucket.org/2.0/repositories/OWNER/REPO/issues"` | | Create | `gh issue create --title "T" --body "B"` | `glab issue create --title "T" --description "B"` | `curl -X POST -d '{"title":"T","content":{"raw":"B"}}' "https://api.bitbucket.org/2.0/repositories/OWNER/REPO/issues"` | | Close | `gh issue close N --comment "reason"` | `glab issue close N` | `curl -X PUT -d '{"state":"resolved"}' ".../issues/N"` | | Comment | `gh issue comment N --body "msg"` | `glab issue note N --message "msg"` | `curl -X POST -d '{"content":{"raw":"msg"}}' ".../issues/N/comments"` | | Search | `gh issue list --search "query"` | `glab issue list --search "query"` | N/A (filter client-side) | ## PR/MR Operations | Operation | GitHub (`gh`) | GitLab (`glab`) | |-----------|---------------|-----------------| | Create | `gh pr create --title "T" --body "B"` | `glab mr create --title "T" --description "B"` | | View | `gh pr view N --json number,title,body,state` | `glab mr view N` | | List | `gh pr list` | `glab mr list` | | Diff | `gh pr diff N` | `glab mr diff N` | | Merge | `gh pr merge N` | `glab mr merge N` | | Close | `gh pr close N` | `glab mr close N` | | Review | `gh pr review N --approve` | `glab mr approve N` | | Comments | `gh api repos/O/R/pulls/N/comments` | `glab api projects/ID/merge_requests/N/notes` | | Current | `gh pr view --json number,url -q '.number'` | `glab mr view --json iid -q '.iid'` | ## GraphQL Operations ### GitHub ```bash gh api graphql -f query=' query { repository(owner: "OWNER", name: "REPO") { pullRequest(number: N) { reviewThreads(first: 100) { nodes { id isResolved path } } } } }' ``` ### GitLab ```bash glab api graphql -f query=' query { project(fullPath: "OWNER/REPO") { mergeRequest(iid: "N") { discussions { nodes { id resolved notes { nodes { body } } } } } } }' ``` ## CI/CD Configuration | Feature | GitHub Actions | GitLab CI | Bitbucket Pipelines | |---------|---------------|-----------|---------------------| | Config file | `.github/workflows/*.yml` | `.gitlab-ci.yml` | `bitbucket-pipelines.yml` | | Trigger syntax | `on: push` | `rules: - if:` | `pipelines: branches:` | | Secret access | `${{ secrets.NAME }}` | `$NAME` (CI variable) | `$NAME` (repository variable) | | Artifact upload | `actions/upload-artifact` | `artifacts: paths:` | `artifacts:` | ## Repo Metadata | Operation | GitHub | GitLab | |-----------|--------|--------| | Owner/name | `gh repo view --json owner,name -q '"\(.owner.login)/\(.name)"'` | `glab repo view --json path_with_namespace -q '.path_with_namespace'` | | Default branch | `gh repo view --json defaultBranchRef -q '.defaultBranchRef.name'` | `glab repo view --json default_branch -q '.default_branch'` | | Labels | `gh label list` | `glab label list` | ## Discussion Operations > **Platform support**: GitHub only (via GraphQL API). GitLab and Bitbucket do not have equivalent Discussion features. All operations below will be skipped with a warning on non-GitHub platforms. ### Prerequisites Before running any Discussion operation, resolve the repository ID and verify Discussions are enabled: ```bash # Get repository node ID (required for createDiscussion) gh api graphql -f query=' query($owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { id hasDiscussionsEnabled } }' -f owner="OWNER" -f repo="REPO" ``` ### Category Resolution Discussion mutations require a category `nodeId`. Resolve fro