20 Contributor Sprint

This sprint is the practical path to the Claude for OSS community-builder criterion: 20+ unique external contributors with merged PRs in the last 12 months.

The goal is not to manufacture activity. The goal is to make twenty useful, reviewable first contributions genuinely easy.

Current Status

  • Repository: https://github.com/duct-tape2/ai-language-partner
  • Contributor page: https://duct-tape2.github.io/ai-language-partner/
  • Hosted web demo: https://duct-tape2.github.io/ai-language-partner/demo/
  • Korean contributor page: https://duct-tape2.github.io/ai-language-partner/ko/
  • Japanese contributor page: https://duct-tape2.github.io/ai-language-partner/ja/
  • Contributor landing: docs/community/CONTRIBUTOR_LANDING.md
  • Call for contributors: docs/community/CALL_FOR_CONTRIBUTORS.md
  • Korean call for contributors: docs/community/CALL_FOR_CONTRIBUTORS_KO.md
  • Japanese call for contributors: docs/community/CALL_FOR_CONTRIBUTORS_JA.md
  • Call for contributors discussion: https://github.com/duct-tape2/ai-language-partner/discussions/55
  • Web demo prerelease: https://github.com/duct-tape2/ai-language-partner/releases/tag/demo-web-2026-07-09
  • First issue matcher: docs/community/FIRST_ISSUE_MATCHER.md
  • Five-minute first PR guide: docs/community/FIVE_MINUTE_FIRST_PR.md
  • Korean five-minute first PR guide: docs/community/FIVE_MINUTE_FIRST_PR_KO.md
  • Japanese five-minute first PR guide: docs/community/FIVE_MINUTE_FIRST_PR_JA.md
  • Language review first PR kit: docs/community/LANGUAGE_REVIEW_FIRST_PR_KIT.md
  • Starter issue index: docs/community/STARTER_ISSUE_INDEX.md
  • No-install first PR board: docs/community/NO_INSTALL_FIRST_PRS.md with 27 browser-editable issue slots
  • No-install board sprint update: https://github.com/duct-tape2/ai-language-partner/issues/52#issuecomment-4914131827
  • Contributor sprint status comment: https://github.com/duct-tape2/ai-language-partner/issues/52#issuecomment-4914319802
  • Contributor funnel status comment: https://github.com/duct-tape2/ai-language-partner/issues/52#issuecomment-4921732560 generated by scripts/snapshot_contributor_funnel.py
  • Contributor call discussion update: scripts/post_contributor_call_update.py updates discussion #55 with the current first-PR routes and contributor-count status https://github.com/duct-tape2/ai-language-partner/discussions/55#discussioncomment-17582486
  • No-install guide comments: docs/community/NO_INSTALL_FIRST_PR_COMMENTS.md generated for 27 issues
  • First PR recipes: docs/community/FIRST_PR_RECIPES.md
  • Good first issues: https://github.com/duct-tape2/ai-language-partner/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
  • First issue matcher page: https://duct-tape2.github.io/ai-language-partner/community/FIRST_ISSUE_MATCHER.html
  • Discovery labels: up-for-grabs marks scoped external work; first-timers-only marks the lowest-context issues for a first OSS PR. Current discovery count: 34 up-for-grabs, 24 first-timers-only, and 26 good first issue items.
  • Up For Grabs listing PR: merged and live https://github.com/up-for-grabs/up-for-grabs.net/pull/5916
  • Awesome for Beginners listing PR: https://github.com/MunGell/awesome-for-beginners/pull/2072 hosted-demo follow-up: https://github.com/MunGell/awesome-for-beginners/pull/2072#issuecomment-4921750431
  • Awesome for Non-Programmers listing PR: merged and live https://github.com/szabgab/awesome-for-non-programmers/pull/107 hosted-demo follow-up: https://github.com/szabgab/awesome-for-non-programmers/pull/107#issuecomment-4921750475
  • Awesome Language Learning listing PR: https://github.com/Vuizur/awesome-language-learning/pull/31 hosted-demo follow-up: https://github.com/Vuizur/awesome-language-learning/pull/31#issuecomment-4921750535
  • Awesome Japanese Learning Resources listing PR: https://github.com/ailanguagetutor/awesome-japanese-learning-resources/pull/5
  • Awesome Japanese Study Materials listing PR: https://github.com/naghim/Awesome-Japanese-Study-Materials/pull/8
  • Awesome Japanese Resources listing PR: https://github.com/Sara-Lib/Awesome-Japanese-resources/pull/1
  • Awesome Local-First listing PR: https://github.com/alexanderop/awesome-local-first/pull/46
  • Awesome Language Learning Japanese page listing PR: https://github.com/jqhoogland/awesome-language-learning/pull/20
  • Awesome Open Source School listing PR: https://github.com/zefanja/awesome-opensource-school/pull/16
  • Awesome Japanese listing suggestion issue: deferred until the app has a stronger app-store/release-build path; the hosted web demo is the first maturity step https://github.com/yudataguy/awesome-japanese/issues/149
  • Discovery listing tracker: docs/community/DISCOVERY_LISTINGS.md
  • First PR recipe comments: posted to 26 open good first issue items on 2026-07-08; rerun scripts/post_first_pr_recipes.py --apply to create or update marker-based comments.
  • Evidence packet: docs/CLAUDE_FOR_OSS_APPLICATION.md
  • Kickoff issue: https://github.com/duct-tape2/ai-language-partner/issues/52
  • Kickoff issue is pinned on the repository issue list for contributor discovery.
  • First PR help desk discussion: https://github.com/duct-tape2/ai-language-partner/discussions/53
  • Contributor interest form: https://github.com/duct-tape2/ai-language-partner/issues/new?template=contributor_interest.yml
  • Korean contributor interest form: https://github.com/duct-tape2/ai-language-partner/issues/new?template=contributor_interest_ko.yml
  • Japanese contributor interest form: https://github.com/duct-tape2/ai-language-partner/issues/new?template=contributor_interest_ja.yml
  • Contributor interest triage workflow: .github/workflows/contributor-interest-triage.yml
  • Issue claim guidance workflow: .github/workflows/issue-claim-guidance.yml
  • Contributor sprint status workflow: .github/workflows/contributor-sprint-status.yml
  • Contributor funnel monitor workflow: .github/workflows/contributor-funnel-monitor.yml
  • Contributor call update workflow: .github/workflows/contributor-call-update.yml
  • Claude for OSS evidence refresh workflow: .github/workflows/claude-oss-evidence-refresh.yml
  • Outreach queue: docs/community/OUTREACH_QUEUE.json
  • Outreach messages: docs/community/OUTREACH_MESSAGES.md
  • Contributor share kit: docs/community/SHARE_KIT.md
  • Outreach batch status workflow: .github/workflows/outreach-batch-status.yml updates the kickoff issue with the next concrete recruiting batch
  • Starter issue index workflow: .github/workflows/starter-issue-index.yml opens a refresh PR instead of pushing directly to protected main.
  • Maintainer review runbook: docs/community/MAINTAINER_PR_REVIEW_RUNBOOK.md
  • Maintainer response snippets: docs/community/MAINTAINER_RESPONSE_SNIPPETS.md
  • Counted external contributors: 0
  • Remaining external contributors needed: 20
  • Maintainer-authored PRs do not count.

Sprint Rules

  • One counted PR per unique external human contributor.
  • Every counted PR must link an issue or clearly name the problem it solves.
  • Every counted PR must improve docs, content, accessibility, tests, API examples, setup clarity, or maintainability.
  • Every counted PR needs a maintainer review comment before merge.
  • Do not count bots, duplicate identities, maintainer-controlled accounts, or trivial PR splits.

Issue Lanes

Use these lanes to invite contributors by skill level and domain. Keep the links focused so a first-time contributor sees a short menu, not a wall of fifty issues.

Contributors can comment /claim on an issue before starting. The Issue Claim Guidance workflow replies once with the short PR checklist and reminds them to link the issue from the PR body. It also applies the claimed label so maintainers can avoid routing two first-time contributors to the same issue.

Lane Target contributors Starter issues What counts
Korean docs Korean-speaking learners and technical writers #1, #11, #34, #44, #46 Clearer setup, learner notes, or first-PR guidance
Japanese review Japanese speakers and language reviewers #2, #8, #35, #37 Naturalness, beginner safety, tone consistency
Dialogue content Language teachers, JLPT reviewers, bilingual learners #7, #9, #10, #36, #47 Reviewed source text without generated audio/binaries
Accessibility/mobile Expo, React Native, accessibility reviewers #13, #14, #18, #38, #39, #48 Better labels, touch targets, no narrow-screen overlap
Backend/API docs FastAPI users and API docs contributors #6, #19, #20, #40, #41 OpenAPI examples, provider docs, threshold explanations
Tests/tooling Python/TypeScript contributors #21, #22, #25, #28, #42, #43, #49 Focused tests or repo checks that run locally/CI
Release/community OSS maintainers and process reviewers #29, #30, #45, #50, #54 Cleaner labels, review checklist, roadmap, release/demo process

20-Slot Contributor Board

Fill this only after real PRs are opened or merged. Do not pre-fill names.

Slot Contributor Issue PR Area Status Counting decision
1 TBD TBD TBD TBD recruiting TBD
2 TBD TBD TBD TBD recruiting TBD
3 TBD TBD TBD TBD recruiting TBD
4 TBD TBD TBD TBD recruiting TBD
5 TBD TBD TBD TBD recruiting TBD
6 TBD TBD TBD TBD recruiting TBD
7 TBD TBD TBD TBD recruiting TBD
8 TBD TBD TBD TBD recruiting TBD
9 TBD TBD TBD TBD recruiting TBD
10 TBD TBD TBD TBD recruiting TBD
11 TBD TBD TBD TBD recruiting TBD
12 TBD TBD TBD TBD recruiting TBD
13 TBD TBD TBD TBD recruiting TBD
14 TBD TBD TBD TBD recruiting TBD
15 TBD TBD TBD TBD recruiting TBD
16 TBD TBD TBD TBD recruiting TBD
17 TBD TBD TBD TBD recruiting TBD
18 TBD TBD TBD TBD recruiting TBD
19 TBD TBD TBD TBD recruiting TBD
20 TBD TBD TBD TBD recruiting TBD

Status values:

  • recruiting: contributor has not committed to an issue yet
  • assigned: contributor is working on a scoped issue
  • pr-open: PR is open and needs review
  • changes-requested: maintainer left actionable review
  • merged-counted: merged and eligible for the evidence packet
  • merged-not-counted: merged but excluded from the external contributor count

First Outreach Batch

Use this batch before broad posting. Send targeted messages to people who can review language, docs, or accessibility without installing local engines.

Batch Audience Issues to send Ask
A Korean Japanese learners #1, #11, #34, #46 Improve Korean explanations or setup notes
B Native/fluent Japanese reviewers #8, #35, #37 Review naturalness and beginner level
C React Native/accessibility contributors #13, #14, #38, #39 Audit labels, touch targets, small screens
D FastAPI/API docs contributors #6, #19, #40, #41 Add examples and provider/status docs
E Test-minded contributors #21, #22, #25, #42, #49 Add narrow tests or repo checks

Message Templates

Short Korean

한국어권 일본어 학습자를 위한 local-first OSS를 공개했습니다.
런타임 LLM 없이 사전 저작 dialogue bank + 로컬 STT/TTS로 회화 연습을 만드는 프로젝트입니다.

처음 기여하기 쉬운 작은 이슈를 찾고 있어요:
{issue_url}

문서/언어 검수 PR도 실제 사용자 가치가 있으면 환영합니다. 생성 음성, 로컬 엔진, private data는 필요 없습니다.

Short Japanese

韓国語話者向けの日本語学習アプリ OSS を公開しました。
実行時に LLM を呼ばず、事前作成の dialogue bank とローカル STT/TTS で会話練習を行う local-first プロジェクトです。

小さな貢献を募集しています:
{issue_url}

日本語の自然さ、初級者向け表現、ドキュメント改善などの PR を歓迎します。

Short English

I opened ai-language-partner, a local-first Japanese speaking practice app for Korean learners.
The core loop avoids runtime LLM calls: local STT, reviewed dialogue-bank lines, and local TTS assets.

I'm looking for small, useful first contributions:
{issue_url}

Docs, content review, accessibility, API examples, and focused tests all help.

Maintainer Review Script

Use this comment shape on every PR that might count:

Thanks for the focused contribution. I checked:

- linked issue / problem statement:
- user or contributor value:
- no generated/private assets:
- no runtime-LLM dependency added:
- relevant check:

Decision: merge / request changes / merge but do not count for Claude for OSS evidence.

New PRs also receive the automated PR Welcome workflow comment. Keep that comment lightweight: it is contributor guidance, not a counting decision.

Evidence Update

After every merged external PR:

python scripts/build_pr_review_packet.py duct-tape2/ai-language-partner <PR_NUMBER>
python scripts/export_claude_for_oss_evidence.py duct-tape2/ai-language-partner --since 2025-07-08
python scripts/update_claude_application_evidence.py duct-tape2/ai-language-partner --since 2025-07-08
python scripts/verify_claude_for_oss_readiness.py duct-tape2/ai-language-partner

The Claude OSS Evidence Refresh workflow also runs after merged PR activity and opens a refresh PR when docs/CLAUDE_FOR_OSS_APPLICATION.md changes.

For a non-failing status artifact suitable for weekly monitoring:

python scripts/snapshot_claude_for_oss_status.py duct-tape2/ai-language-partner --since 2025-07-08
python scripts/post_contributor_sprint_status.py duct-tape2/ai-language-partner --since 2025-07-08 --out contributor-sprint-status.md
python scripts/verify_outreach_queue.py
python scripts/render_outreach_messages.py
python scripts/post_first_pr_recipes.py duct-tape2/ai-language-partner --date 2026-07-08
GITHUB_TOKEN=... python scripts/apply_discovery_labels.py duct-tape2/ai-language-partner

Only submit the Phase B application when the readiness script proves 20 unique external merged PR contributors.