bulk-github-star
Star all repositories from a GitHub user automatically. Use when: (1) Supporting open source creators, (2) Bulk discovery of useful projects, or (3) Automating GitHub engagement.
git clone --depth 1 https://github.com/besoeasy/open-skills /tmp/bulk-github-star && cp -r /tmp/bulk-github-star/skills/bulk-github-star ~/.claude/skills/bulk-github-starSKILL.md
# Bulk GitHub Repository Starring
Automate starring all public repositories from any GitHub user with a single command.
## When to use
- User asks to star all repos from a specific GitHub user
- Bulk appreciation for open source contributors
- Discovering and saving all projects from a creator
- Automation workflows for GitHub engagement
## Required tools / APIs
- GitHub CLI (`gh`) with authentication
- No external API keys required (uses GitHub CLI token)
Install GitHub CLI:
```bash
# Ubuntu/Debian
sudo apt-get install -y gh
# macOS
brew install gh
# Alpine (Docker)
apk add github-cli
# Login required
gh auth login
```
## Skills
### star_all_user_repos
Star all public repositories from a GitHub user.
```bash
# Star all repos from a user
USER="besoeasy"
repos=$(gh repo list $USER --limit 100 | grep "^$USER/" | cut -f1)
for repo in $repos; do
echo "Starring: $repo"
gh api -X PUT /user/starred/$repo
done
echo "Starred $(echo "$repos" | wc -l) repositories"
```
**Node.js:**
```javascript
async function starAllUserRepos(username) {
const { execSync } = require('child_process');
// Get all repos for user
const output = execSync(`gh repo list ${username} --limit 100 --json nameWithOwner`, { encoding: 'utf8' });
const repos = JSON.parse(output);
let starred = 0;
for (const repo of repos) {
const [owner, name] = repo.nameWithOwner.split('/');
try {
execSync(`gh api -X PUT /user/starred/${owner}/${name}`, { stdio: 'inherit' });
console.log(`✓ Starred: ${repo.nameWithOwner}`);
starred++;
} catch (err) {
console.error(`✗ Failed to star ${repo.nameWithOwner}:`, err.message);
}
}
console.log(`\nCompleted: ${starred}/${repos.length} repositories starred`);
return starred;
}
// Usage
// starAllUserRepos('besoeasy');
```
### star_with_filter
Star repos matching specific criteria (e.g., stars threshold, topic).
```bash
# Star only repos with >100 stars
USER="besoeasy"
MIN_STARS=100
gh repo list $USER --limit 100 --json nameWithOwner,stargazerCount | \
jq -r ".[] | select(.stargazerCount >= $MIN_STARS) | .nameWithOwner" | \
while read repo; do
echo "Starring: $repo ($(gh api /repos/$repo | jq -r '.stargazers_count') stars)"
gh api -X PUT /user/starred/$repo
done
```
## Rate limits / Best practices
- GitHub API: 5000 requests/hour for authenticated users
- Add delays between requests: `sleep 0.5` to avoid rate limits
- Respect GitHub ToS - don't use for spam or manipulation
- Consider starring selectively rather than bulk for better curation
## Agent prompt
```text
You can bulk star GitHub repositories. When a user asks to star all repos from a GitHub user:
1. Verify GitHub CLI is authenticated: gh auth status
2. Get the list: gh repo list <username> --limit 100
3. Star each using: gh api -X PUT /user/starred/<owner>/<repo>
4. Report count of starred repositories
Always confirm the exact username before executing.
Never star private repos (not accessible via public API anyway).
```
## Troubleshooting
**Error: "gh: command not found"**
- Install GitHub CLI first using package manager
**Error: "not logged in"**
- Run `gh auth login` and follow browser authentication
**Error: "API rate limit exceeded"**
- Wait 1 hour for rate limit reset
- Use `sleep 1` between requests to slow down
**Error: "Not Found"**
- Verify the username is correct
- Check if user exists: `gh user view <username>`
## See also
- [random-contributor](../random-contributor/SKILL.md) — find contributors to appreciate
- [file-tracker](../file-tracker/SKILL.md) — track file changes in starred reposEncrypt and decrypt files or streams using age — a simple, modern, and secure encryption tool with small explicit keys, passphrase support, SSH key support, post-quantum hybrid keys, and UNIX-style composability. No config options, no footguns.
Upload and host files anonymously using decentralized storage with Originless and IPFS.
Automate web browsers for AI agents using agent-browser CLI with deterministic element selection.
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Log all chat messages to a SQLite database for searchable history and audit. Use when: (1) Building chat history, (2) Auditing conversations, (3) Searching past messages, or (4) User asks to log chats.
Check cryptocurrency wallet balances across multiple blockchains using free public APIs.
Calculate line-of-sight and road distances between two cities using free OpenStreetMap services.
Research and create modern, animated tourism websites for cities with historical facts, places to visit, and colorful designs.