Git platform detection and cross-platform command mapping for GitHub, GitLab, and Bitbucket. git platform, forge, github, gitlab, bitbucket, cross-platform Use when: executing forge operations (issues, PRs/MRs, CI, API calls) in any skill or command Do not use directly: consumed by sanctum and other plugins as infrastructure.
Detects git platforms and maps CLI commands for GitHub, GitLab, and Bitbucket operations.
/plugin marketplace add athola/claude-night-market/plugin install leyline@claude-night-marketThis skill inherits all available tools. When active, it can use any tool Claude has access to.
modules/command-mapping.mdCross-platform abstraction for git forge operations. Detects whether the current project uses GitHub, GitLab, or Bitbucket, and provides equivalent CLI commands for each platform.
The SessionStart hook (detect-git-platform.sh) automatically injects the detected platform into session context. This skill provides the command reference for translating operations across platforms.
gh, glab, or forge API commandsgit commit, git branch, etc.)Detection is automatic via the SessionStart hook. The session context will contain:
git_platform: github|gitlab|bitbucket, cli: gh|glab, mr_term: pull request|merge request
If you need to re-detect manually:
# Check remote URL
git remote get-url origin 2>/dev/null
# Check file markers
ls -d .github/ .gitlab-ci.yml bitbucket-pipelines.yml 2>/dev/null
# Check CLI availability
command -v gh && echo "GitHub CLI available"
command -v glab && echo "GitLab CLI available"
| Operation | GitHub (gh) | GitLab (glab) |
|---|---|---|
| View issue | gh issue view N --json title,body,labels | glab issue view N |
| List issues | gh issue list --json number,title | glab issue list |
| Create issue | gh issue create --title "T" --body "B" | glab issue create --title "T" --description "B" |
| Close issue | gh issue close N | glab issue close N |
| Comment on issue | gh issue comment N --body "msg" | glab issue note N --message "msg" |
| View PR/MR | gh pr view N | glab mr view N |
| Create PR/MR | gh pr create --title "T" --body "B" | glab mr create --title "T" --description "B" |
| List PR/MR comments | gh api repos/O/R/pulls/N/comments | glab mr note list N |
| Current PR/MR | gh pr view --json number | glab mr view --json iid |
| Resolve threads | gh api graphql | glab api graphql |
| Repo info | gh repo view --json owner,name | glab repo view |
For Bitbucket: No standard CLI exists. Use REST API (curl) or the web interface. See command-mapping module for API equivalents.
| Concept | GitHub | GitLab | Bitbucket |
|---|---|---|---|
| Code review unit | Pull Request (PR) | Merge Request (MR) | Pull Request (PR) |
| CI configuration | .github/workflows/*.yml | .gitlab-ci.yml | bitbucket-pipelines.yml |
| Default branch | main | main | main |
| Review comments | PR review comments | MR discussion notes | PR comments |
Important: When the platform is GitLab, always say "merge request" (not "pull request") in user-facing output, commit messages, and comments.
Skills that perform forge operations should:
dependencies: [leyline:git-platform]git_platform:# Example skill instruction pattern:
## Step N: Create PR/MR
Use the detected platform CLI (check session context for `git_platform`):
- **GitHub**: `gh pr create --title "..." --body "..."`
- **GitLab**: `glab mr create --title "..." --description "..."`
- **Bitbucket**: Create via web interface
Skill(leyline:authentication-patterns) for ensure_auth github|gitlabExpert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.