A Claude Code skill that takes you from "I want to contribute to GSSoC" to a Draft Pull Request, in five steps. No clicking around, no copy-pasting between tabs — Claude does the work.
GSSoC = GirlScript Summer of Code, an open-source program with hundreds of projects looking for contributors.
- scout — picks a project from the official GSSoC list
- hunt — finds an issue you can actually solve (not "rewrite the whole thing", not "fix this typo")
- engage — drafts and posts a "please assign me" comment that doesn't sound like spam
- solve — clones the repo, reads the codebase, plans the fix, writes the code, runs tests, commits
- pr — pushes to your fork and opens a Draft PR
You stay in the driver's seat. The skill never posts comments, pushes branches, or opens PRs without you typing yes first.
- Claude Code installed
gh(GitHub CLI) installed and authenticatedgitinstalled and configured with your name + emailjqinstalled
The skill checks all of this on first run and tells you exactly what to install if anything is missing.
git clone https://github.com/NachiketPatil26/gssoc-ops.git
cd gssoc-ops
claudeThat's it. The skill is self-contained in this folder.
Inside Claude Code, run:
/gssoc-ops
You'll see a menu. Then walk through the modes in order:
/gssoc-ops scout → opens PROJECTS.md, you pick a project number
/gssoc-ops hunt → shortlist of medium-difficulty issues, you pick one
/gssoc-ops engage → drafts an assignment comment, you say "yes" to post
/gssoc-ops solve → clones, plans, codes, tests, commits — autonomously
/gssoc-ops pr → forks, pushes, drafts the PR, you say "yes" to open
Each mode saves its state to state/active/, so you can quit Claude Code and pick up later. Just run /gssoc-ops and it'll tell you where you left off.
$ claude
❯ /gssoc-ops scout
Generated PROJECTS.md — 313 projects ready to browse.
Which project would you like to contribute to? Enter the number.
❯ 47
Got it — you've selected InternHack (sachinchaurasiya360/internhack).
Run `/gssoc-ops hunt` to find a tractable issue.
❯ /gssoc-ops hunt
Scanned 119 open issues — 12 medium, 8 unassigned or stalled.
[shortlist table]
Which issue would you like to work on?
❯ 3
Locked in on sachinchaurasiya360/internhack#214: Add CSV export.
Run `/gssoc-ops engage` to draft your assignment comment.
❯ /gssoc-ops engage
[shows draft comment]
Post this comment? (yes / edit / cancel)
❯ yes
Comment posted: https://github.com/...
❯ /gssoc-ops solve
[clones, reads codebase, prints plan, writes code, runs tests, commits]
Implemented #214 on branch gssoc/issue-214-csv-export.
Run `/gssoc-ops pr` to push and open a Draft PR.
❯ /gssoc-ops pr
About to push branch to your fork. Proceed? (yes / cancel)
❯ yes
[shows full PR draft]
Create as Draft PR on sachinchaurasiya360/internhack? (yes / edit / cancel)
❯ yes
Draft PR opened: https://github.com/...
You then review the PR on GitHub and click "Ready for review" when you're happy with it.
projects.json— the GSSoC project list, fetched from the official site. Refresh instructions below.PROJECTS.md— human-readable table generated fromprojects.json. Open it to browse projects.state/active/— your current contribution-in-progress (project + issue + branch + PR URL).state/history/— past contributions, archived automatically when you start a new one.repos/{repo-name}/— local clones of the repos you contribute to. One per upstream; branches per issue.- All work happens on a fork. The skill never tries to push directly to a maintainer's repo.
projects.json ships with the latest snapshot of GSSoC projects, but the official list updates over the season. To refresh:
- Open https://gssoc.girlscript.org/projects in your browser.
- Open DevTools → Network tab.
- Reload the page.
- Find the XHR request named
projects. Click it. - Copy the response JSON (the full body, including
{ "projects": [...], "total": ... }). - Save it to
projects.jsonat the repo root, replacing the existing file. - Delete
PROJECTS.mdso it gets regenerated next scout. - Run
/gssoc-ops scoutagain — it'll write a freshPROJECTS.md.
The skill is paranoid by design about anything that touches the public internet:
- Posting an issue comment → requires explicit
yesfrom you. - Pushing a branch → requires explicit
yes. - Opening a PR → requires explicit
yes. - Adding reviewers → never. Reviewer assignment is the maintainer's job after you mark the PR ready.
- Force-pushing,
--no-verify, modifying your git config → never, unless you explicitly ask.
The autonomous parts (cloning, branching, code writing, testing, local commits) are all reversible. Anything irreversible has a confirmation gate.
"Skill produces no output." Check that you're running Claude Code from inside this repo. The skill is project-local. If pwd isn't the gssoc-ops folder, the slash command won't be discovered.
"Preflight failed: gh not authenticated." Run gh auth login in your terminal (it requires interactive input Claude can't provide), then re-run /gssoc-ops.
"Preflight failed: git identity not set." Run:
git config --global user.name "Your Name"
git config --global user.email "you@example.com""projects.json not found." Either the file got deleted, or you cloned without LFS / a partial clone. Re-fetch using the steps in "Refreshing the project list" above.
"hunt comes back empty." The project's open issues may all be too small (typo fixes), too large (architectural rewrites), or already actively assigned. Try a different project, or ask the skill to widen the filter.
"solve fails on tests." The skill won't bypass pre-commit hooks or fudge test results. If pre-existing tests are broken in the upstream repo (not your fault), it'll commit anyway and flag it loudly in the summary so you can mention it in the PR.
This skill is itself open source. Bug reports, mode improvements, and new modes are welcome. The skill files are in .claude/skills/gssoc-ops/:
SKILL.md— entrypoint and routing_shared.md— global rules loaded by every modescout.md/hunt.md/engage.md/solve.md/pr.md— one file per mode
Each mode file is plain Markdown — read them like a runbook. To extend the skill, modify one of these files or add a new mode.
MIT. See LICENSE.