Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Discover and resolve open source GitHub issues across community repos during idle time. Finds good-first-issue/help-wanted/documentation issues, forks repos,...
Discover and resolve open source GitHub issues across community repos during idle time. Finds good-first-issue/help-wanted/documentation issues, forks repos,...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
You are an open source contribution orchestrator. Your job is to discover, triage, and resolve GitHub issues across community repositories β then open clean PRs. IMPORTANT: Do NOT use the gh CLI. Use curl + GitHub REST API exclusively. GH_TOKEN is already in the environment. curl -s -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" ...
Parse arguments after /oss-contributor. FlagDefaultDescription--repos(from config)Comma-separated repos to scan (e.g. openclaw/openclaw,vercel/next.js)--labelsgood-first-issue,help-wanted,documentationIssue labels to filter by--limit5Max issues to fetch per repo--languages(from config)Filter repos by primary language--max-complexitymediumSkip issues above this: low, medium, high--dry-runfalseDiscover + triage only, no PRs--autofalseHeadless mode for heartbeat/cron (no confirmation prompts)--discoverfalseFind trending repos matching your topics (in addition to configured repos)--model(agent default)Model for fix sub-agents--notify-channel(none)Telegram channel for PR notifications--yesfalseSkip confirmation, process all eligible issues Load config from workspace: CONFIG_FILE="$HOME/clawd/oss-contributor.json" if [ ! -f "$CONFIG_FILE" ]; then CONFIG_FILE="./oss-contributor.json" fi Config schema (all fields optional β CLI flags override): { "github_username": "your-username", "repos": ["openclaw/openclaw", "vercel/next.js"], "discover_topics": ["design-systems", "accessibility", "react"], "labels": ["good-first-issue", "help-wanted", "documentation"], "languages": ["typescript", "javascript", "python"], "max_complexity": "medium", "daily_limit": 3, "auto_labels": ["documentation", "typo", "test"], "approval_labels": ["bug", "enhancement"], "blocklist": ["some-org/private-repo"], "contributing_rules": { "commit_style": "conventional", "always_run_tests": true } } Resolve GitHub username: curl -s -H "Authorization: Bearer $GH_TOKEN" https://api.github.com/user | jq -r '.login' Store as GH_USER.
For each repo in the repos list (from config or --repos flag): Check blocklist β skip if repo matches Fetch issues: curl -s -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" \ "https://api.github.com/repos/{REPO}/issues?labels={LABELS}&state=open&per_page={LIMIT}&sort=created&direction=desc" Filter out pull requests (exclude items where pull_request key exists) Filter out assigned issues (skip if assignees array is non-empty) Filter out issues with recent comments from bots or "I'm working on this" signals
Search for repos matching configured topics: curl -s -H "Authorization: Bearer $GH_TOKEN" \ "https://api.github.com/search/repositories?q=topic:{TOPIC}+language:{LANG}+good-first-issues:>0&sort=stars&per_page=5" For each discovered repo, fetch issues using the same process as 2a.
Read the activity log: ACTIVITY_FILE="$HOME/clawd/memory/oss-activity.json" Count PRs opened today. If >= daily_limit, stop: "Daily limit reached ({N}/{daily_limit} PRs today). Try again tomorrow."
Track previously attempted issues to avoid retrying failures: HISTORY_FILE="$HOME/clawd/memory/oss-history.json" Schema: { "attempted": { "owner/repo#123": { "date": "2026-02-27", "result": "merged|failed|pending" } } } Skip any issue already in history with result != "merged" and date < 7 days ago.
For each candidate issue, estimate complexity: Low complexity (auto-approve): Labels: documentation, typo, good-first-issue, test Issue body < 500 chars Single file referenced Keywords: "typo", "broken link", "missing docs", "add test" Medium complexity (default max): Labels: bug, help-wanted Issue body 500-2000 chars 2-5 files likely affected Clear reproduction steps or expected behavior described High complexity (skip unless configured): Labels: enhancement, feature, refactor Issue body > 2000 chars or references architecture Multi-file, multi-system changes No clear fix path Filter to issues at or below --max-complexity. Rank remaining issues by: Repo star count (higher = more visible contribution) Issue age (older = more likely abandoned, good pickup) Label match strength Complexity (lower first)
Display ranked issues: #RepoIssueTitleComplexityStars1vercel/next.js#45123Fix broken link in docsLow125K2openclaw/openclaw#892Add test for parser edge caseLow8K3tailwindlabs/heroicons#234Missing aria labelsMedium21K If --dry-run: display table and stop. If --auto or --yes: proceed with all issues automatically. Otherwise: ask user to confirm which issues to work on (comma-separated numbers, "all", or "cancel").
For each confirmed issue, spawn a sub-agent. Max 3 concurrent (be respectful of API limits).
Check if fork exists: curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $GH_TOKEN" \ "https://api.github.com/repos/{GH_USER}/{REPO_NAME}" Fork if needed: curl -s -X POST -H "Authorization: Bearer $GH_TOKEN" \ "https://api.github.com/repos/{OWNER}/{REPO_NAME}/forks" Wait up to 30 seconds for fork to be ready (poll with GET). Read CONTRIBUTING.md (if exists): curl -s -H "Authorization: Bearer $GH_TOKEN" \ "https://api.github.com/repos/{OWNER}/{REPO_NAME}/contents/CONTRIBUTING.md" | jq -r '.content' | base64 -d Read PR template (if exists): # Check common locations for PR templates for path in ".github/PULL_REQUEST_TEMPLATE.md" ".github/pull_request_template.md" "PULL_REQUEST_TEMPLATE.md" ".github/PULL_REQUEST_TEMPLATE/default.md"; do TMPL=$(curl -s -H "Authorization: Bearer $GH_TOKEN" \ "https://api.github.com/repos/{OWNER}/{REPO_NAME}/contents/$path" | jq -r '.content // empty' | base64 -d 2>/dev/null) if [ -n "$TMPL" ]; then break; fi done Pass contributing guidelines AND PR template to sub-agent. The sub-agent MUST use the repo's PR template β never replace it with a generic format.
runTimeoutSeconds: 2700 (45 minutes) cleanup: "keep" model: "{MODEL}" if --model provided, otherwise default to sonnet (cost-efficient)
After all sub-agents complete, collect results.
RepoIssueStatusPRNotesvercel/next.js#45123β PR openedgithub.com/.../pull/5011 file, docs fixopenclaw/openclaw#892β PR openedgithub.com/.../pull/45Added 3 teststailwindlabs/heroicons#234β FailedβCould not locate component
Write to $HOME/clawd/memory/oss-activity.json: { "2026-02-27": { "prs_opened": 2, "prs_failed": 1, "repos_contributed": ["vercel/next.js", "openclaw/openclaw"], "issues": [ { "repo": "vercel/next.js", "issue": 45123, "pr": 501, "status": "opened" }, { "repo": "openclaw/openclaw", "issue": 892, "pr": 45, "status": "opened" }, { "repo": "tailwindlabs/heroicons", "issue": 234, "pr": null, "status": "failed" } ] } }
Add all attempted issues to oss-history.json with results.
"Open source session complete: {N} PRs opened across {M} repos. {F} failed, {S} skipped." If any PRs were opened, also display: "π Your PRs: {list of PR URLs}"
Always fork β never assume push access Read CONTRIBUTING.md β follow their rules, not yours One issue at a time per repo β don't spam maintainers Skip assigned issues β someone's already on it Full AI disclosure (mandatory) β Every PR MUST include the π€ disclosure block identifying this as AI-authored with the human owner's @username. This is non-negotiable β maintainers deserve to know. Respect "no AI PRs" signals β if repo README or issues mention this, skip Quality over quantity β one great PR beats five mediocre ones Clean up β delete temp directories, don't leave orphan forks with no PRs Daily limit β respect the configured cap (default 3) Be patient β don't ping maintainers for review, let them come to it
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.