Command reference

Every command and option, briefly. New here? The beginner guide explains when to use each command and what to do with the result. gsoc is a shorter alias for git-into-gsoc.

git-into-gsoc --help                   # commands grouped by journey step
git-into-gsoc issues --help            # one command's options
git-into-gsoc --version
git-into-gsoc --install-completion     # tab completion for your shell

How to read the commands:

Get started

git-into-gsoc            # home: where the program is, your progress, and what to run next
git-into-gsoc start      # four questions, then organizations that fit you
Command Options Result
(no command) none A short home screen: the current GSoC phase and the next date, then a pointer to start the first time, or your progress in six steps (profile, shortlist, repository, issue, weekly note, merged pull request) with the command for what to do now
start --github / -g, --tech / -t, --interests / -i (words, or numbers from the start menu), --hours, --no-input Asks four questions and saves the answers as your profile, then shows the three organizations that fit best with their reasons, lets you shortlist any by number, and prints your next steps with exact commands. Press Enter to skip a question; with options or --no-input it asks nothing. Without a terminal, it prints the options to use, and --output json lists the questions for an assistant to ask

The four questions: your GitHub username (optional; it reads the languages of your public repositories and suggests them), the languages and tools you know, the topics you would enjoy (numbers from a list, or your own words), and hours per week. Run start again whenever your answers change.

Learn and plan

Command Options Result
program --year (default: your target year, see configuration), --size small|medium|large The current phase and what to do in it, the timeline with official or estimated dates, good contributor habits, and your next command. --size picks which evaluation deadlines to show, since they differ by project size
next --year, --no-check What to do right now, with up to six actions and the exact command for each. See below
journey none All ten phases with goals and actions
proposal [FILE] --github, --verify / --no-verify, --ideas-file Without a file: the proposal checklist and a suggested structure. With a draft (proposal check FILE works too): pass, warn, and fail findings. See below
git-into-gsoc proposal draft.md --github YOUR_USERNAME --ideas-file ideas.txt

Notes:

Discover organizations

git-into-gsoc orgs --tech python,javascript --topics education -n 5
git-into-gsoc orgs --query "symbolic math"
git-into-gsoc org "SymPy"
git-into-gsoc ideas "SymPy" --skills python
git-into-gsoc mentors "SymPy"
git-into-gsoc projects "graph neural networks" --since 2024
Command Arguments and options Result
orgs --query / -q, --tech / -t, --topics (or --interests, as start calls it), --category / -c, --year, --limit / -n (default 10) Organizations ranked by fit (strong, good, or partial), with why each matched, years active, and projects per year. With none of the first four options, it ranks by your saved profile and says so; with no profile either, it lists every organization by continuity
org NAME A name or a whole word of it, such as mailman (quote names with spaces); --year; --shortlist saves it to your progress One organization: ideas page, contributor guide, source, website, GitHub organizations, contact channels, projects per year, recent accepted project titles, and what it has said about the coming GSoC. A word that fits several organizations lists them; a misspelling suggests close matches
ideas ORG --skills / -s (default: your profile), --size small|medium|large, --difficulty easy|medium|hard, --limit / -n (default 20), --no-follow The organization's ideas page read into a table: size in hours, difficulty, mentors, skills, expected outcome, and links, ranked by the skills you give
mentors ORG --years (default 3, at least 1), --limit / -n (default 25) Who mentored the organization's completed projects in recent archived years, with years and project counts, how many return, the repositories past projects touched, and their tags
projects [KEYWORDS] --org, --since (earliest year), --limit / -n (default 15) Accepted projects from past years that match the keywords or organization

Notes:

Explore repositories and issues

The repository lookup examples below use SymPy. Replace OWNER/REPO#NUMBER in the last command with the issue you choose.

git-into-gsoc repos "SymPy" --language python
git-into-gsoc repo sympy/sympy
git-into-gsoc issues --language python -n 10
git-into-gsoc issues --repo sympy/sympy
git-into-gsoc issue OWNER/REPO#NUMBER
Command Arguments and options Result
repos ORG GSoC organization name or GitHub login; --language / -l, --limit / -n The organization's active repositories ranked by ideas-page mentions, open beginner issues, activity, stars, and language, with the project's main repository first
repo OWNER/REPO Repository or URL; --track saves it to your progress A grade from A to F with the evidence, warnings, plain notes, where it lost points, setup hints, and the command to run next. A read-only mirror, a fork in a person's account, and a repository with pull requests turned off are not graded; it says where the project really takes changes. A fork owned by an organization is graded and names the original. --track on a person's fork saves the original
issues --language / -l, --org, --repo, --label, --scope gsoc|all, --limit / -n Beginner issues with a verified availability status and, where one applies, a caution
issue REF [NUMBER] owner/repo#123, a URL, or owner/repo plus a number (a number that disagrees with the reference is an error); --track saves it to your progress One issue: linked pull requests, claims with dates, maintainer approvals, caveats, the caution a search would give it, and a before-you-comment checklist
orient OWNER/REPO Repository or URL; --codetour FILE also writes a CodeTour file (a VS Code extension that walks you through files step by step) pinned to the inspected commit; it never replaces a file that already exists A code map with purpose guesses, entry points, the test command CI runs and the environment it sets up, docs to read first including the repository's instruction files for AI assistants (AGENTS.md and similar), the most active commit authors and CODEOWNERS, the rules before a pull request with their sources, policy sentences, channels, an example merged outsider pull request, and a reading plan
pointers REF [NUMBER] Issue reference as for issue; --similar N (default 5, at least 1), --no-search Files the issue names, resolved against the tree with a confidence label; code-search hits or ready-made search links for identifiers; closed issues with the same beginner label and the pull requests that fixed them; how big a typical fix is

Notes on repos and repo:

Notes on issues and issue:

Notes on orient and pointers:

Get recommendations

git-into-gsoc profile --github YOUR_USERNAME --tech python,c++ --interests science --hours 10 --experience new --tz Asia/Kolkata
git-into-gsoc recommend
git-into-gsoc recommend --tech html,css --interests accessibility --experience new --hours 8
Command Options Result
profile --github / -g, --tech / -t, --interests / -i, --hours (1 to 80), --experience / -e (new, some, or experienced), --tz Saves the facts recommendations are built from, or shows what is saved when you give no options
recommend --tech, --interests, --experience, --hours, --github Organizations that fit, with evidence; ideas that fit you; starter issues; and a short path with a command for each step

Notes:

Write and keep evidence

git-into-gsoc contributions --github YOUR_USERNAME --org "SymPy"
git-into-gsoc draft claim --issue OWNER/REPO#NUMBER
git-into-gsoc log --goal "Reproduce #NUMBER" --done "Reproduced on main" --stuck "Flaky test" --next "Ask in Zulip"
Command Arguments and options Result
contributions --github / -g (default: the username saved with profile); --org (GSoC organization name or GitHub organization) or --repo OWNER/REPO Your merged, open, and closed pull requests, issues opened, threads joined, and reviews given in that scope; paste-ready lines for a proposal; a standing from none to strong; honest gaps to close
diagnose FILE A file with the failing output, or - for standard input; --repo OWNER/REPO The likely cause of a failed setup or test run, quoting the line it matched, and what to try. With --repo, what the project's CI sets up: runtime versions, services, install and test commands
pr-check OWNER/REPO#NUMBER A pull request reference or URL Your pull request checked against the repository's own rules before a reviewer sees it, each finding with its source, then the branch rules still ahead
draft KIND intro, question, claim, pr, review-reply, status, or final; --org (a GSoC organization name; an unknown name is an error), --repo, --issue; --check FILE checks a message you wrote instead A skeleton with placeholders, the fields that must hold your own observations, and the rules maintainers and the official guide state, each with its source
log --goal, --done, --links (comma-separated), --learned, --stuck, --next; --limit / -n when listing Saves a weekly note, or lists recent notes when you give no fields

Notes:

Save local progress

git-into-gsoc progress summary
git-into-gsoc progress note --value "Next: read the contribution guide."
Action after progress Required value Effect
summary (default) none The phases as a checklist with the next one marked, your shortlist, tracked repositories and issues, how recent your weekly notes are, and your five newest notes
complete_phase --phase NAME Mark a phase complete. Names: learn, discover, evaluate, orient, community, find_issues, contribute, iterate, proposal, track
shortlist_org --value "NAME" Save an organization name
track_repo --value OWNER/REPO Save a repository as owner/repo, once whatever the spelling. A project link on GitLab or another host is saved as it is; an issue link is refused, use track_issue. next lists new beginner issues in a GitLab project, as it does for a shortlisted organization whose code is on GitLab
track_issue --value URL Save an issue or pull request as one GitHub link; owner/repo#123 works too. An issue link on GitLab or another host is saved as it is; next re-checks a GitLab issue through GitLab's public API, reports when its availability changed, and lists others without re-checking them
note --value "TEXT" Append a note of up to 2,000 characters

-v is short for --value. Saving actions print Saved. and the summary; with --output json, a saving action prints the whole saved state. A value that is not a repository or an issue is refused rather than saved. See keep track of your progress.

Setup and maintenance

Command Options Result
setup --assistant / -a NAME (repeatable), --scope user|project, --project-dir, --no-skill, --no-mcp, --dry-run, --remove Copies the Agent Skill and registers the MCP server with your AI assistants. See below
doctor none Version, Python, cache and data paths, GitHub token source (never the token), remaining API requests, whether each data source (official site, organization archive, commit statistics) answers, the skill source, which assistants have the skill, and where the MCP server is registered. It reports connection errors in its output but may still exit with code zero
cache --prune, --clear The size of the HTTP cache and its limits; --prune deletes old entries now, --clear deletes everything
mcp none Starts the MCP server on standard input and output. It waits for an assistant and shows nothing; press Ctrl+C to stop it
feedback --bug, --no-open Opens the feedback form (or the bug report form with --bug) in your browser with the tool version, Python version, and operating system filled in. Nothing is sent until you press Submit; --no-open only prints the link
git-into-gsoc setup                               # every assistant found, user scope
git-into-gsoc setup --dry-run --assistant all     # preview every assistant
git-into-gsoc setup --scope project --assistant claude-code --assistant cursor
setup option Effect
--assistant / -a NAME claude-code, cursor, codex, gemini, antigravity, windsurf (Devin Desktop), vscode (VS Code and Copilot CLI), or all. Default: every assistant with a config folder or executable on this machine
--scope user (default) One shared skill copy in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Devin Desktop, VS Code, and Copilot CLI all read, plus ~/.claude/skills for Claude Code and ~/.gemini/config/skills for Antigravity. The MCP server goes into each assistant's user config (Claude Code via claude mcp add when available). Copies that older versions left in ~/.cursor/skills, ~/.codex/skills, ~/.gemini/skills, or ~/.codeium/windsurf/skills are removed, so the skill is listed once. An assistant that already has the git-into-gsoc plugin or extension is left to it
--scope project The same inside the current repository (.agents/skills, .claude/skills, .mcp.json, .cursor/mcp.json, .vscode/mcp.json, .codex/config.toml, and so on); --project-dir picks another folder, which must already exist
--no-skill, --no-mcp Do only one of the two jobs
--dry-run Print the plan without writing
--remove Undo: delete the skill copies and remove the MCP registrations for the same scope and assistants, keeping every other entry in those files. The shared .agents/skills copy stays while another assistant found on this machine still reads it

Setup merges into existing JSON and TOML files rather than replacing them. In its own git-into-gsoc entry it changes only the command and the settings it needs, so settings you added there, such as env or disabled, stay. It writes a .bak copy first, refuses to touch a file it cannot parse, and reports unchanged on re-runs. With --scope project, it never follows a symbolic link (a file that points somewhere else) inside the project, so a cloned repository cannot steer it into other folders; that file or folder is reported as skipped. An assistant it cannot configure gets a printed manual command. Use it in your AI assistant covers each assistant; configuration covers tokens and settings.

Use output in a script

git-into-gsoc issues --language rust -n 5 --output json > issues.json
git-into-gsoc repo sympy/sympy --output json | python3 -c "import json,sys; print(json.load(sys.stdin)['health']['grade'])"

Successful JSON goes to standard output. Expected failures print error: ... and usually a hint: ... line to standard error and exit with code 1; these errors are not JSON. Invalid command syntax exits with code 2, and a missing argument shows an example to type. One exception: when org, ideas, mentors, or projects --org cannot find the organization, --output json prints the result with found: false, error, and hint to standard output, and still exits with code 1. A successful command can still return data such as availability unknown, so inspect the result as well as the exit code.

Configuration · Troubleshooting · Guide contents

Source: docs/cli.md on GitHub. Corrections are welcome.