Agent skill

Contributor

by majiayu000 in majiayu000/spellbook

End-to-end open source contribution workflow: from scanning issues to submitting PRs.

MITAuto-check passedDevelopment

Install Contributor

skills CLI
$ npx skills add majiayu000/spellbook --skill contributor -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install majiayu000/spellbook contributor --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/contributor .claude/skills/contributor && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
contributor
GitHub stars
287
Token cost
~2.5k tokens
SKILL.md length
1,032 words
Files
1
Skills in repo
97
Repo updated
First seen
Licence
MIT

At a glance

End-to-end open source contribution workflow: from scanning issues to submitting PRs.

  • Works in 6 steps: Reconnaissance → Pre-communication → Repository Setup → …
  • The user wants to contribute to an open source project
  • SKILL.md covers Why this skill exists, Phase 1: Reconnaissance, Phase 2: Pre-communication and Phase 3: Repository Setup, plus 4 more sections
  • Calls gh, git and cargo

What it does

Contributor is an agent skill from majiayu000/spellbook. End-to-end open source contribution workflow: from scanning issues to submitting PRs. Use this skill whenever the user wants to contribute to an open source project, find issues to fix, submit a pull request, fork a repo to contribute, fix a GitHub issue, or mentions 'open source contribution'. Also trigger when they provide a GitHub repo URL and ask about contributing, say things like 'help me submit a PR', 'find good first issues', 'I want to contribute to X', or mention fixing bugs in someone else's project.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Pull requests. It works with GitHub. The repository describes itself as: Cross-runtime skills for Claude Code, Codex, and multi-agent workflows. The licence is MIT.

When your agent uses it

  • The user wants to contribute to an open source project
  • Find issues to fix
  • Submit a pull request
  • Fork a repo to contribute

Example prompts

  • “open source contribution”
  • “help me submit a PR”
  • “find good first issues”
  • “/contributor”

Requirements

  • Node.js

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Reconnaissance
  2. Pre-communication
  3. Repository Setup
  4. Code Fix
  5. Commit and Submit
  6. After Submission

What it can do on your machine

Read from SKILL.md and the folder at commit ed52af7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • git
    • cargo
    • go
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, git and npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Contributor loads about 2.5k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 1,032 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~132
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from majiayu000/spellbook at commit ed52af7, republished under its MIT licence (© majiayu000). 1,032 words, ~2,459 tokens.

Download SKILL.mdSave it as .claude/skills/contributor/SKILL.md (or your agent's skills folder).
name
contributor
description
End-to-end open source contribution workflow: from scanning issues to submitting PRs. Use this skill whenever the user wants to contribute to an open source project, find issues to fix, submit a pull request, fork a repo to contribute, fix a GitHub issue, or mentions 'open source contribution'. Also trigger when they provide a GitHub repo URL and ask about contributing, say things like 'help me submit a PR', 'find good first issues', 'I want to contribute to X', or mention fixing bugs in someone else's project.

Contributor

Automated open source contribution workflow that takes you from a GitHub repo URL to merged PRs, with built-in safeguards against common contribution failures.

Why this skill exists

Open source contributions fail for predictable reasons: fixing in the wrong layer (your PR gets closed because the maintainer preferred an upstream fix), colliding with other contributors, not following project conventions, or over-engineering a simple fix. This workflow prevents each of those failures through systematic pre-checks.

Phase 1: Reconnaissance

Before writing any code, gather intelligence about the project and its contribution landscape.

1.1 Identify the target

Ask the user for:

  • The GitHub repo URL (e.g., pydantic/pydantic-ai)
  • Their GitHub username and email for commits
  • Any specific issue they want to work on (or ask to scan for available ones)
1.2 Scan for available issues

Use gh CLI to find issues worth contributing to:

bash
# Get open issues with metadata
gh issue list -R <owner>/<repo> --state open --limit 50 \
  --json number,title,labels,assignees,comments

# Check for competing PRs on each candidate
gh pr list -R <owner>/<repo> --state open \
  --search "<issue_number> in:title,body"

Filter criteria (apply in order):

  1. No assignee
  2. No open PR already fixing it (check both linked PRs and title/body search)
  3. Fewer than 5 competing PRs
  4. Prefer labels: bug, good first issue, help wanted
  5. Prefer issues with maintainer comments suggesting a fix direction
1.3 Deep-read issue comments

For each candidate issue, read the full comment thread:

bash
gh issue view <number> -R <owner>/<repo> --json body,comments

Extract:

  • Maintainer fix direction: Do they prefer fixing here or in an upstream dependency?
  • Suggested approach: Any code pointers, file references, or architectural guidance?
  • Blockers: Is this waiting on another PR or release?
  • Who's working on it: Even without assignment, someone might have commented "I'll take this"
1.4 Check for upstream redirection

This is the single most common failure mode. Before committing to any fix:

bash
# Check if maintainers reference another repo
gh issue view <number> -R <owner>/<repo> --json comments \
  | grep -i "upstream\|genai-prices\|separate repo\|other repo"

# Check related repos for recent PRs mentioning this issue
gh pr list -R <owner>/<related-repo> --state open --limit 10 \
  --json title,body | grep -i "<issue_number>\|<issue_keywords>"

If there's any signal the fix belongs elsewhere, stop and ask the user before proceeding.

Phase 2: Pre-communication

Never submit a PR cold. Always communicate your intent first.

2.1 Post a solution outline on the issue

Before writing code, leave a comment on the issue with your proposed approach. This serves two purposes: it claims the work (politely), and it gives maintainers a chance to redirect you before you waste effort.

Template:

Hi, I've been looking into this and traced the root cause to <X>.

Before I open a PR, I wanted to confirm the preferred approach:
A) <approach A — e.g., fix in this repo by modifying X>
B) <approach B — e.g., upstream fix in related-repo>

I can implement either direction. Happy to adjust based on your preference.

Wait for maintainer response before proceeding to code. If no response after 24-48 hours on an active project, proceed with the most conservative approach (smallest scope fix in the current repo).

2.2 Draft PR strategy

Plan to open as a Draft PR first. Convert to ready-for-review only after:

  • CI passes
  • Maintainer acknowledges the approach (via issue comment or PR review)

Phase 3: Repository Setup

3.1 Fork and clone
bash
gh repo fork <owner>/<repo> --clone --remote
cd <repo>
3.2 Determine the development branch

Don't assume main. Check what recent merged PRs target:

bash
gh pr list -R <owner>/<repo> --state merged --limit 10 \
  --json baseRefName,mergedAt

Use the most common baseRefName from recent merges.

3.3 Read contribution guidelines

Check these files in order (read whichever exist):

CONTRIBUTING.md
.github/CONTRIBUTING.md
.github/PULL_REQUEST_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE/

Extract:

  • Required commit message format
  • Test requirements
  • Pre-commit hooks or linting requirements
  • DCO/CLA requirements
  • Branch naming conventions
3.4 Understand CI
bash
ls .github/workflows/

Read the CI config to know what checks will run on your PR. Identify the commands for:

  • Linting / formatting
  • Type checking
  • Unit tests
  • Integration tests
  • Pre-commit hooks
3.5 Set up the environment

Follow the project's documented setup process. Run the full test suite once to establish a passing baseline before making any changes.

Phase 4: Code Fix

4.1 Branch per issue
bash
git checkout -b fix/issue-<number>-<short-desc> <base-branch>
4.2 Implementation principles
  • Adopt the maintainer's suggested approach if one exists in the issue comments
  • Minimal fix: change only what's necessary to fix the issue. Don't refactor surrounding code, add features, or "improve" things along the way
  • Match project style: follow the existing code patterns, naming conventions, and architecture
  • No hardcoding: avoid hardcoded values unless the project already uses them in the same context
  • Add tests: every fix needs a corresponding test that would have caught the bug. Follow the project's existing test patterns
Show full SKILL.md (428 more words)Show less
4.3 Test your changes

Run the project's test suite. All existing tests must pass. Your new test must also pass. If the project has type checking or linting, run those too.

Language-specific verification:

  • Python: pytest, mypy, ruff (or whatever the project uses)
  • TypeScript: npx tsc --noEmit, project test command
  • Rust: cargo check && cargo test
  • Go: go build ./... && go test ./...

Phase 5: Commit and Submit

5.1 Pre-commit checks

If the project uses pre-commit hooks:

bash
pre-commit run --all-files

Fix any issues before committing.

5.2 Commit conventions
bash
# Configure author
git config user.name "<user's name>"
git config user.email "<user's email>"

# Commit with DCO sign-off
git commit -s -m "<type>: <description>

Fixes #<issue-number>"

Rules:

  • Follow the project's commit message format (check recent commits for examples)
  • Include Fixes #<number> or Closes #<number> to auto-link
  • No Generated by Claude, Co-Authored-By: claude, or any AI attribution
  • Use rebase to keep history clean, never force push
5.3 Push and create PR
bash
git push -u origin fix/issue-<number>-<short-desc>

Create a Draft PR following the project's template:

bash
gh pr create --draft --title "<type>: <short description>" \
  --body "$(cat <<'EOF'
## Summary
<1-2 sentences describing the fix>

Fixes #<issue-number>

## Changes
- <bullet points of what changed>

## Test plan
- <how this was tested>
EOF
)"
5.4 Handle CI results
  • CI passes: Comment on PR that it's ready for review, convert from draft
  • CI fails due to your code: Fix it, push new commit, don't amend
  • CI fails due to infrastructure (network timeouts, flaky tests, service outages): Comment explaining the failure is unrelated to your changes and request a rerun

Phase 6: After Submission

6.1 If PR is closed without merge

Don't panic. Common reasons and responses:

ReasonResponse
Fix moved upstreamAsk to contribute to the upstream repo instead
Approach rejectedAsk what approach they'd prefer, offer to redo
DuplicateAcknowledge, offer to help review the other PR
Scope too largeOffer to split into smaller PRs

Template for closed PRs:

Thanks for the feedback. I understand the fix direction has shifted to <X>.
Would it be helpful if I submitted a PR to <upstream-repo> instead?
Happy to contribute wherever it's most useful.
6.2 If changes are requested

Address review feedback promptly. Make each revision a new commit (don't squash during review — the maintainer may want to see the evolution). Only squash if the maintainer asks.

Anti-patterns to avoid

These are real failure modes from production contributions:

  1. Fixing in the wrong layer: You fix in repo A, but the maintainer creates a PR in repo B minutes before closing yours. Prevention: Phase 1.4 upstream check + Phase 2 pre-communication.

  2. PR pile-up: 5 people submit PRs for the same issue. Prevention: Phase 1.2 competing PR check + Phase 2 claiming the work.

  3. Over-engineering: Adding error handling, type annotations, refactoring, or "improvements" beyond the fix. Prevention: Phase 4.2 minimal fix principle.

  4. CI infrastructure confusion: A flaky test or network timeout in CI gets mistaken for a code problem. Prevention: Phase 5.4 explicit CI failure triage.

  5. Silent submission: Submitting a PR without any prior communication on the issue. Prevention: Phase 2 pre-communication is mandatory.

  6. Wrong base branch: PRing against main when the project develops on dev. Prevention: Phase 3.2 branch detection.

© majiayu000, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/contributor of majiayu000/spellbook.

Open the folder on GitHubat commit ed52af7

Compare with similar skills

Contributor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Contributor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Contributor this skillmajiayu000/spellbook287—~2.5kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Check PRonyx-dot-app/onyx32k2 repos~2.3kAutomated safety check: PassMIT
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Create Pull Requestcline/cline70k1 repos~1.6kAutomated safety check: PassApache-2.0
Pull Request Title and Body Writeropeninterpreter/openinterpreter69k2 repos~1.1kAutomated safety check: PassApache-2.0

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Check PR

    onyx-dot-app/onyx

    Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.

    32k GitHub starsUsed in 2 repos~2.3k tokens
    DevelopmentAuto-check passed
  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Pull Request Title and Body Writer

    openinterpreter/openinterpreter

    Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.

    69k GitHub starsUsed in 2 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    Runs a loop on a GitHub pull request: fetch review state, triage comments into actions, implement them and resolve threads, repeating until nothing actionable is left.

    48k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed

More from majiayu000/spellbook

All 97 skills in this repo
  • Skill Ecosystem Doctor

    majiayu000/spellbook

    Audits and repairs how coding-agent Skills are owned, copied and exposed across runtimes, from canonical sources to quarantine and retirement.

    287 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • AGENTS.md Scaffold

    majiayu000/spellbook

    Scans a repository for real evidence and proposes, or on request writes, a small stack of root and scoped AGENTS.md files with validation commands and generated-file boundaries.

    287 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Product Demo Builder

    majiayu000/spellbook

    Plans, produces or diagnoses evidence-backed product demo videos: script, capture plan, pacing checks and verified final media built on real product behavior.

    287 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Flowguard Task Guard

    majiayu000/spellbook

    Single entry point that routes long or ambiguous agent tasks, checks live state, bounds autonomous loops and leaves a resumable handoff.

    287 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • npm Supply Chain Check

    majiayu000/spellbook

    Scans a repository, its lockfiles and node_modules for known malicious npm package versions and install-time indicators, using a read-only Python scanner.

    287 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Product Manager Toolkit

    majiayu000/spellbook

    Product management helpers: a RICE scoring script, an interview transcript analyzer and PRD templates for prioritizing features, synthesizing research and writing requirements.

    287 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Contributor

What does Contributor do?

End-to-end open source contribution workflow: from scanning issues to submitting PRs. Contributor is an agent skill from majiayu000/spellbook. End-to-end open source contribution workflow: from scanning issues to submitting PRs.

When should I use Contributor?

Contributor fits situations like: the user wants to contribute to an open source project; find issues to fix; submit a pull request; fork a repo to contribute.

How do I install Contributor in Claude Code?

Run `npx skills add majiayu000/spellbook --skill contributor -a claude-code`. Or copy the skill folder (skills/contributor in majiayu000/spellbook) into .claude/skills/contributor in your project. Claude Code loads it when a task matches its description.

How do I install Contributor in Codex?

Run `npx skills add majiayu000/spellbook --skill contributor -a codex`. Or copy the skill folder (skills/contributor in majiayu000/spellbook) into .agents/skills/contributor in your project. Codex loads it when a task matches its description.

Can I use Contributor in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add majiayu000/spellbook --skill contributor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/contributor, .gemini/skills/contributor, .github/skills/contributor and .opencode/skills/contributor in your project.

What does Contributor need to run?

Going by SKILL.md and its folder, Contributor needs the command-line tools its instructions call (gh, git, cargo, go and npx). Our summary lists: Node.js.

Does Contributor access the network?

SKILL.md contains no URLs. Its commands use gh, git and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Contributor safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Contributor use?

Contributor is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Contributor use?

About 2.5k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Contributor?

Skills that share tags, products or a category with Contributor: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Create Pull Request (cline/cline, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Contributor?

majiayu000 (a GitHub user) maintains it in majiayu000/spellbook, which has 287 GitHub stars. The repository holds 97 skills in this directory. The repository was last updated on October 8, 2026.

Source: majiayu000/spellbook on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.