gh-contribution-planner · git:20260831.856ee57 · 2026-08-31 · sha256 dc7ae8e23af35653
gh-contribution-planner git:20260831.856ee57A
Immutable. This exact content is served forever at /api/v1/blob/dc7ae8e23af35653.
---
name: gh-contribution-planner
description: Daily GitHub contribution planner — analyzes the gh-logged-in user's non-archived repos (owned
+ forks) and recent contributions, produces a prioritized plan, halts for approval, then dispatches
parallel sub-agents to execute approved items via existing PR/CI/review skills.
origin:
type: first-party
---
# GitHub Contribution Planner
Discover what to work on across **your** GitHub footprint, propose a prioritized
daily plan, and — on approval — fan out parallel sub-agents to open draft PRs.
The skill infers the current user from the authenticated `gh` CLI, so no
manual configuration is required.
## When to use
- "Plan my GitHub contributions for today" / "what should I work on across my
repos" / "give me a daily contribution plan".
- You want to maintain your own repositories and forks without manually
scanning each one.
- You want to find low-friction openings (good first issues, stale PRs,
outdated forks) in projects you have already contributed to.
Do **not** use this skill to operate on a specific PR you already picked — use
`gh-fix-ci`, `gh-address-comments`, or `github-cli-workflow` directly.
## Prerequisites
- `gh` installed and authenticated (`gh auth status` exits 0). Scopes
typically required: `repo`, `read:org`. `doctor` reports this under
Integrations.
- `python3` for the bundled analyzer.
- Network access to `api.github.com` (or the host configured via `GH_HOST`).
- A host that supports parallel sub-agent dispatch (Claude Code's `Task` tool,
OpenCode's subagent fan-out, etc.). Hosts without that primitive fall back
to sequential execution.
## Workflow
1. **Verify auth.** Run `gh auth status`. If unauthenticated, ask the user to
run `gh auth login` and stop. Do not prompt for tokens.
2. **Resolve the current user.** `gh api user --jq .login` — never ask the
user; always infer from `gh`.
3. **Run the analyzer.**
```bash
python3 ~/.local/share/agent-toolkit/skills/gh-contribution-planner/scripts/inspect_contributions.py \
--since 90d --max-per-bucket 5
```
Useful flags:
- `--json` — machine-readable output (recommended when composing with
another agent).
- `--user <login>` — override the inferred login (useful for testing or
planning for an organization the user maintains).
- `--dry-run` — print the `gh` calls the analyzer would make and exit;
useful for sanity-checking before a live run.
- `--max-per-bucket <n>` — cap items per bucket (default 5).
- `--since <window>` — lookback window for recent contributions. Accepts
`30d`, `90d`, `180d`, or an ISO date.
The script:
- Calls `gh api user` to resolve the login.
- Calls `gh api graphql` to batch-fetch viewer repos (non-archived,
forks + sources), open PRs authored by the user, and recent
contributions across GitHub.
- For each fork, compares the default branch with the parent's default
branch to compute `behind/ahead` counts.
- For each owned repo, fetches open issues labeled `good first issue` or
`help wanted`, plus unassigned issues older than the lookback window.
- Scores and buckets every item.
4. **Present the plan in English** grouped into these buckets (each item must
show repo `owner/name`, a one-line summary, an effort estimate, and a
suggested delegate skill):
- **Quick wins (~15 min)** — README/typo/doc fixes, dependency bumps,
missing CI badges in your own repos.
- **In-flight PRs** — open PRs authored by you that need attention
(red CI → `gh-fix-ci`; rebase needed → `github-cli-workflow`).
- **Review feedback** — PRs with unresolved review comments → delegate to
`gh-address-comments`.
- **Forks needing sync** — forks lagging upstream by ≥ N commits; propose a
sync via `gh repo sync` or a merge-from-upstream PR.
- **Maintenance** — own non-archived repos with stale unanswered issues,
security alerts, or abandoned PRs from contributors awaiting your review.
- **External contributions** — repos where you contributed in the lookback
window with open `good first issue` / `help wanted` issues that are
currently unassigned.
5. **Halt for approval.** Ask the user which buckets and which specific items
to execute. Do **not** open PRs or push commits before approval.
6. **Dispatch parallel sub-agents** for the approved items. One sub-agent per
item, capped at **5 concurrent** by default. Each sub-agent receives:
- Target `owner/name` and (when relevant) issue / PR number.
- A one-line goal extracted from the plan.
- A directive to start with `dev-assistant` for repo discovery, then route
to the right execution skill:
- PR push / draft PR creation → `github-cli-workflow`.
- Red CI on an existing PR → `gh-fix-ci`.
- Open review comments → `gh-address-comments`.
- Fork drift → `gh repo sync` (delegate the sync step; never force).
- An explicit instruction to open the PR as **draft** unless the user
marks the item as ready-for-review in the approval step.
On hosts without parallel sub-agent dispatch, execute items sequentially in
the same order and report progress between items.
7. **Aggregate the run.** When the parallel batch completes, summarize:
- Draft PRs opened (`owner/repo#NN` + URL).
- Items skipped or blocked (with reason).
- Follow-ups that need the user's direct attention.
## Parallel execution contract
- **Concurrency cap:** 5 sub-agents at a time. Raise only on explicit user
request.
- **Isolation:** each sub-agent works in its own git worktree or a fresh clone
under `~/.cache/agent-toolkit/contribution-planner/<owner>-<repo>/`. Never reuse
the host repo working tree.
- **Idempotency:** before opening a new PR, the sub-agent must check for an
existing open PR with the same intent (label or title heuristic) and skip
duplicates.
- **Drafts by default:** every PR is opened as draft. The user marks ready
separately.
- **No force pushes** to branches that already exist on `origin` unless the
user explicitly opts in.
## Boundaries
- Read-only on GitHub during planning; writes only after explicit user
approval, and only on approved items.
- Do not author commits or PRs from this skill directly — delegate every push
to `github-cli-workflow`.
- Do not act on repos owned by other users beyond the **external
contributions** bucket, and even there only via PRs (never direct pushes).
- Do not interact with non-GitHub forges; for GitLab, route to
`gitlab-cli-workflow` instead.
## Bundled resources
- `scripts/inspect_contributions.py` — stdlib-only analyzer. Defaults to
Markdown output; `--json` for machine-readable output.
## Validation
- `skills check` reports the `gh` and `python3` requirements.
- `doctor` shows `gh auth status` under Integrations.
- Smoke test:
```bash
python3 ~/.local/share/agent-toolkit/skills/gh-contribution-planner/scripts/inspect_contributions.py --dry-run
```