Initial commit
This commit is contained in:
221
skills/skill/SKILL.md
Normal file
221
skills/skill/SKILL.md
Normal file
@@ -0,0 +1,221 @@
|
||||
---
|
||||
name: gh-cli
|
||||
description: GitHub CLI for remote repository analysis, file fetching, codebase comparison, and discovering trending code/repos. Use when analyzing repos without cloning, comparing codebases, or searching for popular GitHub projects.
|
||||
---
|
||||
|
||||
# GitHub CLI - Remote Analysis & Discovery
|
||||
|
||||
Remote repository operations, codebase comparison, and code discovery without cloning.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Analyze repositories without cloning
|
||||
- Compare codebases side-by-side
|
||||
- Fetch specific files from any repo
|
||||
- Find trending repositories and code patterns
|
||||
- Search code across GitHub
|
||||
|
||||
## Quick Operations
|
||||
|
||||
### Fetch a file remotely
|
||||
|
||||
```bash
|
||||
gh api repos/OWNER/REPO/contents/path/file.ts | jq -r '.content' | base64 -d
|
||||
```
|
||||
|
||||
### Get directory listing
|
||||
|
||||
```bash
|
||||
gh api repos/OWNER/REPO/contents/PATH
|
||||
```
|
||||
|
||||
### Search code
|
||||
|
||||
```bash
|
||||
gh search code "pattern" --language=typescript
|
||||
```
|
||||
|
||||
### Find trending repos
|
||||
|
||||
```bash
|
||||
gh search repos --language=rust --sort stars --order desc
|
||||
```
|
||||
|
||||
## Compare Two Codebases
|
||||
|
||||
Systematic workflow for comparing repositories to identify similarities and differences.
|
||||
|
||||
**Example use**: "Compare solana-fm/explorer-kit and tenequm/solana-idls"
|
||||
|
||||
### Step 1: Fetch directory structures
|
||||
|
||||
```bash
|
||||
gh api repos/OWNER-A/REPO-A/contents/PATH > repo1.json
|
||||
gh api repos/OWNER-B/REPO-B/contents/PATH > repo2.json
|
||||
```
|
||||
|
||||
If comparing a monorepo package, specify the path (e.g., `packages/explorerkit-idls`).
|
||||
|
||||
### Step 2: Compare file lists
|
||||
|
||||
```bash
|
||||
jq -r '.[].name' repo1.json > repo1-files.txt
|
||||
jq -r '.[].name' repo2.json > repo2-files.txt
|
||||
diff repo1-files.txt repo2-files.txt
|
||||
```
|
||||
|
||||
Shows files unique to each repo and common files.
|
||||
|
||||
### Step 3: Fetch key files for comparison
|
||||
|
||||
Compare package dependencies:
|
||||
|
||||
```bash
|
||||
gh api repos/OWNER-A/REPO-A/contents/package.json | jq -r '.content' | base64 -d > repo1-pkg.json
|
||||
gh api repos/OWNER-B/REPO-B/contents/package.json | jq -r '.content' | base64 -d > repo2-pkg.json
|
||||
```
|
||||
|
||||
Compare main entry points:
|
||||
|
||||
```bash
|
||||
gh api repos/OWNER-A/REPO-A/contents/src/index.ts | jq -r '.content' | base64 -d > repo1-index.ts
|
||||
gh api repos/OWNER-B/REPO-B/contents/src/index.ts | jq -r '.content' | base64 -d > repo2-index.ts
|
||||
```
|
||||
|
||||
### Step 4: Analyze differences
|
||||
|
||||
Compare the fetched files to identify:
|
||||
|
||||
**API Surface**
|
||||
- What functions/classes are exported?
|
||||
- Are the APIs similar or completely different?
|
||||
|
||||
**Dependencies**
|
||||
- Shared dependencies (same approach)
|
||||
- Different dependencies (different implementation)
|
||||
|
||||
**Unique Features**
|
||||
- Features only in repo1
|
||||
- Features only in repo2
|
||||
|
||||
For detailed comparison strategies, see [references/comparison.md](references/comparison.md).
|
||||
|
||||
## Discover Trending Content
|
||||
|
||||
### Find trending repositories
|
||||
|
||||
```bash
|
||||
# Most starred repos
|
||||
gh search repos --sort stars --order desc --limit 20
|
||||
|
||||
# Trending in specific language
|
||||
gh search repos --language=rust --sort stars --order desc
|
||||
|
||||
# Recently popular (created in last month)
|
||||
gh search repos "created:>2024-10-01" --sort stars --order desc
|
||||
|
||||
# Trending in specific topic
|
||||
gh search repos "topic:machine-learning" --sort stars --order desc
|
||||
```
|
||||
|
||||
### Discover popular code patterns
|
||||
|
||||
```bash
|
||||
# Find popular implementations
|
||||
gh search code "function useWallet" --language=typescript --sort indexed
|
||||
|
||||
# Find code in popular repos only
|
||||
gh search code "implementation" "stars:>1000"
|
||||
|
||||
# Search specific organization
|
||||
gh search code "authentication" --owner=anthropics
|
||||
```
|
||||
|
||||
For complete discovery queries and patterns, see [references/discovery.md](references/discovery.md).
|
||||
|
||||
## Search Basics
|
||||
|
||||
### Code search
|
||||
|
||||
```bash
|
||||
# Search across all repositories
|
||||
gh search code "API endpoint" --language=python
|
||||
|
||||
# Search in specific organization
|
||||
gh search code "auth" --owner=anthropics
|
||||
|
||||
# Exclude results with negative qualifiers
|
||||
gh search issues -- "bug report -label:wontfix"
|
||||
```
|
||||
|
||||
### Issue & PR search
|
||||
|
||||
```bash
|
||||
# Find open bugs
|
||||
gh search issues --label=bug --state=open
|
||||
|
||||
# Search assigned issues
|
||||
gh search issues --assignee=@me --state=open
|
||||
```
|
||||
|
||||
For advanced search syntax, see [references/search.md](references/search.md).
|
||||
|
||||
## Special Syntax
|
||||
|
||||
### Field name inconsistencies
|
||||
|
||||
**IMPORTANT:** GitHub CLI uses inconsistent field names across commands:
|
||||
|
||||
| Field | `gh repo view` | `gh search repos` |
|
||||
|-------|----------------|-------------------|
|
||||
| Stars | `stargazerCount` | `stargazersCount` |
|
||||
| Forks | `forkCount` | `forksCount` |
|
||||
|
||||
**Examples:**
|
||||
|
||||
```bash
|
||||
# ✅ Correct for gh repo view
|
||||
gh repo view owner/repo --json stargazerCount,forkCount
|
||||
|
||||
# ✅ Correct for gh search repos
|
||||
gh search repos "query" --json stargazersCount,forksCount
|
||||
```
|
||||
|
||||
### Excluding search results
|
||||
|
||||
When using negative qualifiers (like `-label:bug`), use `--` to prevent the hyphen from being interpreted as a flag:
|
||||
|
||||
```bash
|
||||
gh search issues -- "query -label:bug"
|
||||
```
|
||||
|
||||
For more syntax gotchas, see [references/syntax.md](references/syntax.md).
|
||||
|
||||
## Advanced Workflows
|
||||
|
||||
For detailed documentation on specific workflows:
|
||||
|
||||
**Core Workflows:**
|
||||
- [remote-analysis.md](references/remote-analysis.md) - Advanced file fetching patterns
|
||||
- [comparison.md](references/comparison.md) - Complete codebase comparison guide
|
||||
- [discovery.md](references/discovery.md) - All trending and discovery queries
|
||||
- [search.md](references/search.md) - Advanced search syntax
|
||||
- [syntax.md](references/syntax.md) - Special syntax and command quirks
|
||||
|
||||
**GitHub Operations:**
|
||||
- [repositories.md](references/repositories.md) - Repository operations
|
||||
- [pull_requests.md](references/pull_requests.md) - PR workflows
|
||||
- [issues.md](references/issues.md) - Issue management
|
||||
- [actions.md](references/actions.md) - GitHub Actions
|
||||
- [releases.md](references/releases.md) - Release management
|
||||
|
||||
**Setup & Configuration:**
|
||||
- [getting_started.md](references/getting_started.md) - Installation and auth
|
||||
- [other.md](references/other.md) - Environment variables, aliases, config
|
||||
- [extensions.md](references/extensions.md) - CLI extensions
|
||||
|
||||
## Resources
|
||||
|
||||
- Official docs: https://cli.github.com/manual/
|
||||
- GitHub CLI: https://github.com/cli/cli
|
||||
- Search syntax: https://docs.github.com/en/search-github
|
||||
Reference in New Issue
Block a user