Back to Git & Version Control

open-source-contributions

open-sourcepull-requestcontributionsgit-workflowcode-qualitydeveloper-toolsbest-practicesmaintainability
⭐ 860πŸ“„ MITπŸ•’ 2026-06-11Source β†—

Install this skill

npx skills add jezweb/claude-skills

Works across Claude Code, Cursor, Codex, Copilot & Antigravity

The open-source-contributions skill provides a structured framework for submitting high-quality pull requests to external repositories. It focuses on maintaining repository hygiene by strictly separating production-ready code from local development artifacts. The skill automates the detection and removal of project-irrelevant filesβ€”such as personal scratchpads, temporary debug logs, IDE configuration files, and environment secretsβ€”that often clutter contributor branches. By enforcing a standardized pre-submission audit, it ensures that only essential source changes, relevant test suites, and documentation updates are included in your submission. This tool minimizes the friction typically associated with maintainer reviews by checking for common mistakes, such as uncleaned build artifacts or unauthorized configuration files, before you commit your work, thereby increasing the likelihood that your contribution is accepted on its first attempt.

When to Use This Skill

  • β€’Submitting feature implementations to public open-source projects
  • β€’Cleaning up a development branch before opening a pull request
  • β€’Verifying that sensitive environment or credential files are not accidentally included
  • β€’Removing ad-hoc test scripts or temporary visual debugging assets from a commit

How to Invoke This Skill

Example prompts that trigger this skill in Claude Code, Cursor, or Antigravity:

  • β€œsubmit a pull request for this change
  • β€œclean my branch for an open source contribution
  • β€œprepare these files for a PR
  • β€œcontribute this fix to the upstream repo
  • β€œcheck my branch for unwanted files before PR

Pro Tips

  • πŸ’‘**Pre-flight Check:** Always run the skill *before* committing to identify and rectify common PR pitfalls, especially regarding temporary files or debugging artifacts.
  • πŸ’‘**Incremental Contributions:** For larger features, break down your work into smaller, focused pull requests. The skill can help ensure each PR is clean and self-contained.
  • πŸ’‘**Read the Project's CONTRIBUTING.md:** While this skill provides general best practices, always prioritize and cross-reference with the specific guidelines outlined in the target repository's contribution document.

What this skill does

  • β€’Scans branches for personal notes, temporary scratch files, and debug logs
  • β€’Automates the exclusion of IDE-specific settings and system metadata
  • β€’Validates repository contents against established maintainer standards
  • β€’Provides a cleaning workflow to remove uncommitted development artifacts
  • β€’Ensures PRs strictly contain code, tests, and documentation updates

When not to use it

  • βœ•When working in a personal repository with no intention of public submission
  • βœ•If the project maintainers require non-standard file structures that conflict with the cleanup script

Example workflow

  1. Draft feature or fix within the repository
  2. Execute the pre-PR check script to identify excluded artifacts
  3. Review git status and diffs for extraneous personal files
  4. Apply the cleanup command to purge scratch notes and local logs
  5. Finalize the commit and push for submission

Prerequisites

  • –Existing repository integration
  • –Local shell access to run cleanup scripts

Pitfalls & limitations

  • !Automated cleanup may remove custom local test fixtures if they are not explicitly ignored
  • !Requires manual intervention if the branch contains complex merge conflicts
  • !Does not replace the need for clear communication in the PR description

FAQ

Why is my .env file flagged?
The skill identifies environment files as security risks to prevent the accidental exposure of sensitive keys or credentials in public repositories.
Can I keep my personal notes in the repo?
You should add them to your local .git/info/exclude file, which prevents them from being tracked or included in PRs while keeping them on your machine.
Does this tool automatically submit the PR?
No, it focuses on cleaning and preparing your branch so you can submit a high-quality, maintainer-friendly PR manually.

How it compares

Unlike standard git commands that only track file states, this skill actively filters development noise and enforces repository-specific hygiene policies to meet professional maintainer expectations.

Source & trust

⭐ 860 starsπŸ“„ MITπŸ•’ Updated 2026-06-11
πŸ“„ Full skill instructions β€” original source: jezweb/claude-skills
# Open Source Contributions Skill

**Version**: 1.2.0 | **Last Verified**: 2026-01-09 | **Production Tested**: βœ…

---

## When to Use This Skill

**Auto-triggers**: "submit PR to", "contribute to", "pull request for", "open source contribution"

Create maintainer-friendly PRs while avoiding the 16 common mistakes that cause rejection.

---

## What NOT to Include in Pull Requests

### Personal Development Artifacts (NEVER Include)

**Planning & Notes Documents:**
❌ SESSION.md              # Session tracking notes
❌ NOTES.md # Personal development notes
❌ TODO.md # Personal todo lists
❌ planning/* # Planning documents directory
❌ IMPLEMENTATION_PHASES.md # Project planning
❌ DATABASE_SCHEMA.md # Unless adding new schema to project
❌ ARCHITECTURE.md # Unless documenting new architecture
❌ SCRATCH.md # Temporary notes
❌ DEBUGGING.md # Debugging notes
❌ research-logs/* # Research notes


**Screenshots & Visual Assets:**
❌ screenshots/debug-*.png     # Debugging screenshots
❌ screenshots/test-*.png # Testing screenshots
❌ screenshot-*.png # Ad-hoc screenshots
❌ screen-recording-*.mp4 # Screen recordings
❌ before-after-local.png # Local comparison images

βœ… screenshots/feature-demo.png # IF demonstrating feature in PR description
βœ… docs/assets/ui-example.png # IF part of documentation update


**Test Files (Situational):**
❌ test-manual.js          # Manual testing scripts
❌ test-debug.ts # Debugging test files
❌ quick-test.py # Quick validation scripts
❌ scratch-test.sh # Temporary test scripts
❌ example-local.json # Local test data

βœ… tests/feature.test.js # Proper test suite additions
βœ… tests/fixtures/data.json # Required test fixtures
βœ… __tests__/component.tsx # Component tests


**Build & Dependencies:**
❌ node_modules/           # Dependencies (in .gitignore)
❌ dist/ # Build output (in .gitignore)
❌ build/ # Build artifacts (in .gitignore)
❌ .cache/ # Cache files (in .gitignore)
❌ package-lock.json # Unless explicitly required by project
❌ yarn.lock # Unless explicitly required by project


**IDE & OS Files:**
❌ .vscode/                # VS Code settings
❌ .idea/ # IntelliJ settings
❌ .DS_Store # macOS file system
❌ Thumbs.db # Windows thumbnails
❌ *.swp, *.swo # Vim swap files
❌ *~ # Editor backup files


**Secrets & Sensitive Data:**
❌ .env                    # Environment variables (NEVER!)
❌ .env.local # Local environment config
❌ config/local.json # Local configuration
❌ credentials.json # Credentials (NEVER!)
❌ *.key, *.pem # Private keys (NEVER!)
❌ secrets/* # Secrets directory (NEVER!)


**Temporary & Debug Files:**
❌ temp/*                  # Temporary files
❌ tmp/* # Temporary directory
❌ debug.log # Debug logs
❌ *.log # Log files
❌ dump.sql # Database dumps
❌ core # Core dumps
❌ *.prof # Profiling output


### What SHOULD Be Included

βœ… Source code changes      # The actual feature/fix
βœ… Tests for changes # Required tests for new code
βœ… Documentation updates # README, API docs, inline comments
βœ… Configuration changes # If part of the feature
βœ… Migration scripts # If needed for the feature
βœ… Package.json updates # If adding/removing dependencies
βœ… Schema changes # If part of feature (with migrations)
βœ… CI/CD updates # If needed for new workflows


---

## Pre-PR Cleanup Process

### Step 1: Run Pre-PR Check Script

Use the bundled scripts/pre-pr-check.sh to scan for artifacts:

./scripts/pre-pr-check.sh


**What it checks:**
- Personal documents (SESSION.md, planning/*, NOTES.md)
- Screenshots not referenced in PR description
- Temporary test files
- Large files (>1MB)
- Potential secrets in file content
- PR size (warns if >400 lines)
- Uncommitted changes

### Step 2: Review Git Status

git status
git diff --stat


**Ask yourself:**
- Is every file change necessary for THIS feature/fix?
- Are there any unrelated changes?
- Are there files I added during development but don't need?

### Step 3: Clean Personal Artifacts

**Manual removal:**
git rm --cached SESSION.md
git rm --cached -r planning/
git rm --cached screenshots/debug-*.png
git rm --cached test-manual.js


**Or use the clean script:**
./scripts/clean-branch.sh


### Step 4: Update .gitignore

Add personal patterns to .git/info/exclude (affects only YOUR checkout):
# Personal development artifacts
SESSION.md
NOTES.md
TODO.md
planning/
screenshots/debug-*.png
test-manual.*
scratch.*


---

## Writing Effective PR Descriptions

### Use the What/Why/How Structure

**Template** (see references/pr-template.md):

## What?
[Brief description of what this PR does]

## Why?
[Explain the reasoning, business value, or problem being solved]

## How?
[Describe the implementation approach and key decisions]

## Testing
[Step-by-step instructions for reviewers to test]

## Checklist
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] CI passing
- [ ] Breaking changes documented

## Related Issues
Closes #123
Relates to #456



### Commit Message Format

**Conventional Commits**: <type>(<scope>): <subject>

Types: feat, fix, docs, refactor, test, ci, chore

Example: feat(auth): add OAuth2 support for Google and GitHub

See references/commit-message-guide.md for complete guide.

---

## PR Sizing Best Practices

**Research-backed guidelines:**
- **Ideal**: 50 lines
- **Good**: <200 lines
- **Maximum**: 400 lines
- **Beyond 400**: Defect detection drops significantly

**Keep PRs small:**
- One change per PR
- Use feature flags for incomplete work:
if (featureFlags.newAuth) {
// New OAuth flow (incomplete but behind flag)
} else {
// Existing flow
}

- Break by layer: schema β†’ API β†’ frontend β†’ tests

---

## Following Project Conventions

**Before contributing:**
1. Read CONTRIBUTING.md (check /, /.github/, /docs/)
2. Run formatters: npm run lint, npm run format
3. Match existing patterns (review recent merged PRs)
4. Test before submitting:
npm test && npm run lint && npm run build


---

## Communication Best Practices

**Response templates:**
- Implemented: "Good idea! Implemented in [commit hash]"
- Disagreement: "I see your point. I went with X because Y. Open to alternatives."
- Clarification: "Could you help me understand what you mean by Z?"
- Ping (after 1-2 weeks): "Gently pinging this PR. Happy to make changes!"

---

## Common Mistakes That Annoy Maintainers (16 Errors Prevented)

**See Critical Workflow Rules section for detailed guidance on Rules 1-3**

1. **Not Reading CONTRIBUTING.md** - ALWAYS read first, follow exactly
2. **Including Personal Artifacts** - SESSION.md, planning/*, screenshots, temp tests (use pre-PR check script)
3. **Massive Pull Requests** - Break into <200 lines ideal, <400 max
4. **Not Testing Before Submitting** - Run full test suite, test manually, capture evidence (violates RULE 2)
5. **Working on Assigned Issues** - Check assignments, comment to claim work
6. **Not Discussing Large Changes First** - Open issue or comment before coding
7. **Being Impatient/Unresponsive** - Be responsive, ping after 1-2 weeks
8. **Not Updating Documentation** - Update README, API docs, inline comments
9. **Ignoring Code Style** - Use project's linters/formatters
10. **Ignoring CI Failures** - Fix immediately, ask for help if stuck
11. **Including Unrelated Changes** - One PR = One Feature (violates RULE 3)
12. **Not Linking Issues** - Use "Closes #123" or "Fixes #456"
13. **Committing Secrets** - Never commit .env, scan for secrets
14. **Force-Pushing Without Warning** - Avoid after review starts
15. **Not Running Build/Tests Locally** - Always run before pushing
16. **Working on main/master** - ALWAYS use feature branches (violates RULE 1)

---

## GitHub-Specific Best Practices

### Critical Workflow Rules (NEVER SKIP)

**RULE 1: ALWAYS Work on a Feature Branch**

# βœ… CORRECT
git checkout main
git pull upstream main
git checkout -b feature/add-oauth-support
# make changes on feature branch
git commit -m "feat(auth): add OAuth support"


**Branch naming**: feature/name, fix/issue-123, docs/update-readme, refactor/utils, test/add-tests

---

**RULE 2: Test Thoroughly BEFORE Submitting PR**

Never submit without:
1. Running full test suite: npm test && npm run lint && npm run build
2. Testing manually (run app, test feature, edge cases)
3. Capturing evidence (screenshots/videos for visual changes - add to PR description, NOT commits)
4. Checking CI will pass

**Testing checklist template:**
## Testing Performed
### Automated Tests
- βœ… All existing tests pass
- βœ… Added 12 new tests for OAuth flow
- βœ… Coverage increased from 85% to 87%

### Manual Testing
- βœ… Tested Google/GitHub OAuth flows end-to-end
- βœ… Verified error handling
- βœ… Tested on Chrome, Firefox, Safari


---

**RULE 3: Keep PRs Focused and Cohesive**

**One PR = One Feature/Fix**

- Ideal: <200 lines
- Acceptable: 200-400 lines
- Large: 400-800 lines (needs justification)
- Too large: >800 lines (split it)

**Keep focused:**
- Plan: What ONE thing does this PR do?
- During dev: Unrelated bug? Separate branch
- Before commit: git diff - Is every change necessary for THIS feature?

**Break large features into phases:**
PR #1: Database schema and models
PR #2: API endpoints
PR #3: Frontend components
PR #4: Integration and tests


---

### Using Draft PRs

**Create**: gh pr create --draft
**Mark ready**: gh pr ready (when code complete, tests passing, CI passing)

### Linking Issues

**Auto-closing keywords** (in PR description):
Closes #123
Fixes #456
Resolves #789

# Multiple: Fixes #10, closes #20, resolves #30
# Cross-repo: Fixes owner/repo#123


### GitHub CLI Essentials

gh pr create --fill                    # Auto-fill from commits
gh pr create --draft # Draft PR
gh pr status # See your PRs
gh pr checks # View CI status
gh pr ready # Mark draft as ready


---

## Pre-Submission Checklist

See references/pr-checklist.md for complete version.

**Pre-Contribution:**
- [ ] Read CONTRIBUTING.md, CODE_OF_CONDUCT.md
- [ ] Commented on issue to claim work
- [ ] Created feature branch (NEVER work on main)

**Development:**
- [ ] **RULE 1**: Working on feature branch
- [ ] **RULE 2**: Tested thoroughly with evidence
- [ ] **RULE 3**: PR focused on single feature
- [ ] All tests pass: npm test && npm run lint && npm run build
- [ ] Updated documentation

**Cleanup:**
- [ ] Ran ./scripts/pre-pr-check.sh
- [ ] No personal artifacts (SESSION.md, planning/*, debug screenshots, temp tests)
- [ ] No secrets (.env, credentials)

**PR Quality:**
- [ ] Focused on one change (<200 lines ideal, <400 max)
- [ ] Title: Conventional Commits format
- [ ] Description: What/Why/How structure
- [ ] Links to issues (Closes #123)
- [ ] Screenshots for visual changes (in PR description)

**Post-Submission:**
- [ ] Monitor CI, fix failures immediately
- [ ] Respond to feedback promptly

---

## Bundled Resources

See bundled examples and scripts:
- scripts/pre-pr-check.sh - Scan for artifacts before submission
- scripts/clean-branch.sh - Remove common personal artifacts
- references/pr-template.md - PR description template
- references/pr-checklist.md - Complete checklist
- references/commit-message-guide.md - Conventional commits guide
- assets/good-pr-example.md - Well-structured PR example
- assets/bad-pr-example.md - Common mistakes to avoid

---

## Key Takeaways

1. **RULE 1**: ALWAYS use feature branches (never main)
2. **RULE 2**: Test thoroughly before submitting (automated + manual + evidence)
3. **RULE 3**: Keep PRs focused (<200 lines ideal, one change per PR)
4. **Clean PRs**: Remove personal artifacts (SESSION.md, planning/*, debug screenshots)
5. **Read CONTRIBUTING.md**: Always read first, follow exactly
6. **Link Issues**: Use "Closes #123" to auto-close
7. **Use ./scripts/pre-pr-check.sh**: Scan for artifacts before submission

---

**Production Tested**: Real-world open source contributions and maintainer feedback

**Token Efficiency**: ~70% savings vs trial-and-error

**Errors Prevented**: 16 common mistakes

**Last Verified**: 2026-01-09

How to Use This Skill Unit

Option A: Project-Specific (Recommended)

  1. Click "Download" above
  2. In your project, create the directory: .agent/skills/open-source-contributions/
  3. Save the file as SKILL.md
  4. The agent will automatically discover the skill based on its description.

Option B: Global Installation (All Agents)

Save the file to these locations to make it available across all projects:

  • Claude Code: ~/.claude/skills/jezweb/claude-skills/open-source-contributions/SKILL.md
  • Cursor: ~/.cursor/skills/jezweb/claude-skills/open-source-contributions/SKILL.md
  • Antigravity: ~/.gemini/antigravity/skills/jezweb/claude-skills/open-source-contributions/SKILL.md

πŸš€ Install with CLI:
npx skills add jezweb/claude-skills

Read the Master Guide: Mastering Agent Skills β†’

Recommended Rules

View more rules β†’

Recommended Workflows

View more workflows β†’

Recommended MCP Servers

View more MCP servers β†’

Take It Further

Maximize your productivity with these powerful resources

πŸ“‹

Define Your Standards

Set up coding standards to ensure this workflow produces consistent, high-quality results.

Browse Rules Library
πŸ“–

Master Workflows

Learn how to create custom workflows, use Turbo Mode, and build your automation library.

Complete Guide

How to use this Skill in Claude Code & Cursor

For Claude Code (CLI)

To use this skill in Claude Code, copy the rule content into your project's custom instructions or follow our Add-Skill CLI guide. This ensures Claude follows your standards during every code generation.

For Cursor & Windsurf

For Cursor or Windsurf, individual skills are best used in the "Rules for AI" section. This specific unit helps the agent avoid git & version control issues, leading to cleaner, more efficient code.

Why the skill format matters: the standardized Agent Skills format lets your AI agent load detailed instructions only when they are relevant, keeping your prompt clean while improving results.

Source & attribution

This skill is categorized under Git & Version Control and is published by JezWeb, maintained in jezweb/claude-skills.

← Browse All Agent Skills
Sponsored AI assistant. Recommendations may be paid.