npx skills add ...
npx skills add samber/developer-relations-skills --skill oss-contributor-onboarding
Designs and verifies the path a stranger walks to their first merged contribution on an open-source project - the CONTRIBUTING file, the good-first-issue queue, a clone-to-passing-tests command that works cold, and the first-pull-request review and recognition loop, scored against a blocking-plus-weighted rubric. Use whenever someone says "nobody contributes to my project", "write a CONTRIBUTING.md", "our good first issues get no takers", "first-time contributors disappear", "contributor onboarding", "first pull request experience", or "how do we get more open-source contributors" - even if they only complain about a lonely repo. Not triage-system design - use samber/developer-relations-skills@oss-issue-triage. Not governance or CLA choice.
npx skills add samber/developer-relations-skills --skill oss-contributor-onboarding
You are fixing the path between a stranger who wants to help and a merged pull request with their name on it. Projects lose people at every step of that path:
Find the step that leaks, fix it, and prove the fix by walking the path from a clean machine.
Diagnose against a published taxonomy, not intuition. Steinmacher et al.'s systematic review of newcomer barriers (Information and Software Technology 59, 2015, a review over 20 primary studies, not a measurement of any one project) sorts every recorded failure into five categories:
Name the category behind each finding: it stops the audit from becoming a list of wording complaints.
Two failures dominate, and both are invisible from inside the project:
GitHub's Open Source Guides report that contributors reviewed within 48 hours return at a much higher rate (practitioner guidance, with no published dataset behind the figure), and that "it only takes one negative experience to make someone not want to come back". Optimize for those two failures before touching any wording.
Stay inside the first-contribution path. Seven sibling skills own the neighbouring problems, routed one per line in the Reference section; when the user's real problem is one of them, say so and route them.
Typical invocations, and what each one should produce:
| The user says | You run | You return |
|---|---|---|
| "audit why first-time contributors give up" | Steps 1-2, then score | The audit report in ./references/contributor-path-scorecard.md section 5 |
| "write a CONTRIBUTING.md for this repo" | Steps 1-3, then 5 | A drafted file, plus the cold-run log that proves each command in it |
| "our good first issues sit untouched for months" | Step 1 baseline, then step 4 | A rewritten queue, a claiming convention, an expiry rule |
| "someone opened their first PR and I do not know what to reply" | Step 6 only | A reply drafted from the templates, plus the two-clock rule for the next one |
| "we get stars but no pull requests" | Full workflow | Scorecard first - this phrasing usually means step 3 or step 6, not the wording of any file |
Attach evidence to every deliverable:
A recommendation with no evidence attached is an opinion, and a maintainer will discount it correctly.
Ask one question at a time, multiple-choice where possible, and skip anything you can answer yourself by reading the repository. Questions 1-7 gate the work - do not draft any file before they are answered.
Memory: Store a few info about the current task or project context. When memory lives in a file, use devrel-context.md; if a different memory system is in use, rely on that instead. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
Record a blank on question 7 as the audit's first finding, not a blocker.
Carry questions 4, 5 and 6 into every ordering in this skill, and say which answer moved what:
Measure first, so the work has a before and an after that are not both opinion.
scripts/contributor-path-audit.sh <repo-root>. It reports the community-health files and their display precedence, which of ten contributing topics the current file mentions, the setup surface, how many CI workflows use secrets and therefore cannot run on fork pull requests, and the git contributor history - distinct authors, one-commit-only rate, CHAOSS contributor absence factor, new authors per year.The script reports facts, not judgements. Treat the one-commit-only rate as a baseline, not a defect: it becomes a finding only when it fails to move after the path is fixed.
Score the current path with ./references/contributor-path-scorecard.md and show the maintainer the result before proposing changes. A maintainer who disagrees with the diagnosis will reject the treatment, and they are sometimes right - a constraint you cannot see from the repository can justify a check you scored zero.
Follow the cold-run protocol in ./references/contributor-path-scorecard.md §3, both runs - the environment path and the task path - and obey its rule that a setup is never marked working by inspection.
Keep a friction log while you run: a timestamped record of every moment of confusion, with a traffic-light severity per entry. Note, for each entry:
Do not fix anything mid-run. Fixing hides the size of the problem.
Documentation describing a broken setup is worse than no documentation, so this step comes before any writing. Pick a reproducibility tier first, then close the gaps the cold run exposed.
Three tiers, ranked by setup failures removed per unit of maintenance the tier then costs you forever. The cold run picks between them: take the highest-efficiency tier that removes the failures it actually found, and stop there.
bootstrap command > pinned toolchain > container definitioncontainer definition > pinned toolchain > bootstrap commandcontainer definition > pinned toolchain > bootstrap commandmake setup or ./script/bootstrap that installs dependencies, prepares fixtures, and ends by running the test suite. An afternoon to write, works everywhere, still trusts the host toolchain.Adopt the container definition before adopting any hosted workspace vendor: the .devcontainer/ format is portable across editors, cloud workspaces and self-hosted runners, while the hosting choice is not. Vendor-published time savings for these tools are marketing figures with no peer-reviewed measurement behind them; read ./references/published-findings.md §6 for that caveat and the three constraints (who pays for compute, portability before hosting, drift) to raise before recommending one.
Then close the gaps, in this order:
Re-run the cold run from clean after each fix. The step is done when nothing new is discovered.
A beginner label is a promise of mentoring, not a difficulty rating. Kubernetes says so explicitly: their good first issue means members have committed to providing extra assistance, while help wanted is the broader "we would take a patch". GitHub also surfaces the label algorithmically and publishes no criteria for it, so the label pulls in strangers from outside the project entirely - an empty one-line issue behind it converts that attention into a bad first impression.
first-timers-only convention, states the trade: "Could I have finished it quicker and moved on my way if I'd just done it myself? Of course. But that's not what it's all about as an open source contributor." His diagnosis is the one this skill is built on - "the hard part of getting into open source for the first time isn't the implementation of a feature, but figuring out how to actually contribute code".See ./references/first-issue-and-review-examples.md for a weak and a strong issue body side by side.
Draft section by section against ./references/contributing-file-outline.md, and get the maintainer's agreement on each section before moving to the next. A file rewritten in one pass gets rejected in one pass.
Hold four rules while drafting:
git commit -s) costs a contributor nothing, while a signing workflow stops a typo fix - which is why the CNCF encourages projects to use a DCO "as it's easier to setup and use". The choice itself belongs to samber/developer-relations-skills@oss-license-strategy; only its placement in the file is yours.Place the file where the forge surfaces it and keep exactly one copy (outline §1), and link the neighbouring files instead of absorbing them (§4).
Run the finished prose through your preferred humanizer skill. A contributing guide that reads as generated undermines the welcome it extends, and this audience spots it immediately.
Review against the written scope rule and that fixed order, never against an impression of the person - it is the cheapest available control on reviewer bias. Terrell et al. (PeerJ CS 3:e111, 2017) analysed 3,064,667 pull requests and found that on outside contributions - exactly the population this path serves - women's merge rate was 58% against men's 61% where gender was identifiable, while gender-neutral profiles scored highest of all. Gender was inferred and only 35.3% of users were linkable, so treat the direction as robust and the exact percentages as not; caveats in ./references/published-findings.md §5.
Turn items 1-8 into a short written playbook the maintainers actually share, and mirror the response target into the CONTRIBUTING file so contributors and maintainers read the same number. Reply templates for each situation are in ./references/first-issue-and-review-examples.md.
Maintainers reach for a mentorship program, an onboarding event or a bot when the real problem is one of the six steps above. Each is a legitimate accelerator on a working path and a waste on a broken one, so make the call explicitly rather than by enthusiasm.
Rank them only after steps 3-6 hold: on a broken path every one scores zero whatever the ordering says. Effort means maintainer hours committed and how hard the thing is to stop once announced. Value means contributors who return.
efficiency: bot > structured program > onboarding event
value: structured program > bot > onboarding event
effort: structured program > onboarding event > bot
compliance cost: structured program > onboarding event > bot
A bot may absorb mechanical work, never a human moment. Leads the efficiency line on its denominator alone - an hour to install, near-zero afterwards, and reversible in one commit. Keep the first reply, the decline and the stall check-in human (step 6), and treat any wait-state a bot or approval gate introduces as a step 3 gap to document.
A structured program (Google Summer of Code, Outreachy, LFX Mentorship, MLH, Season of Docs) supplies the stipend and the cohort; you supply mentor hours - a standing job for a whole season, and the only item here you cannot abandon halfway without someone's summer attached to it. Host one only once steps 3 to 6 hold, because an under-mentored intern costs more than no intern. Do not promise it fixes retention: the two most-cited studies disagree, and the Mozilla analysis (Labuschagne & Holmes, MSR 2015) found contributors who started on a good-first-bug or mentored bug were less likely to become long-term contributors. Figures and caveats are in ./references/published-findings.md §3-4.
An onboarding event or sprint teaches mechanics well and converts nobody on its own. Last on efficiency because it costs a week of preparation plus the follow-up and buys the least measured return of the three. Kubernetes ran the field's most resourced workshop and retired it because "running the session during the summit never led to any people who weren't already contributing to the project becoming dedicated contributors". Budget the follow-up - a named next issue, an assigned mentor, a second-contribution nudge - or skip the event.
Delete a reward with no quality gate rather than ranking it last, and say you deleted it: it buys volume you cannot review, which is a cost, not a small benefit. Hacktoberfest's 2020 spam wave forced opt-in repositories, a longer grace period and the removal of the T-shirt entirely.
What this order starves: the structured program - highest value of the three, and the only one that brings people who were never going to find the project alone. Promote it when a second reviewer exists (interview question 12) and the maintainer hours in question 4 clear a mentor's weekly commitment for a full season.
Read the compliance line as the obligations each signs you up to:
The deleted reward carries published prize rules - what Hacktoberfest had to rewrite mid-event.
Treat this ordering as a default, not a law: it shifts with the project and with who maintains it. Re-rank against what you know - an employer already funding mentor time, a co-maintainer who has run a cohort, an existing event to attach a sprint to - each moves an item up before the default applies.
Re-run the scorecard and iterate until it clears its threshold - all four blocking checks, plus 12 of 16 scored points. That mark is this skill's own baseline, not a published one; §4 of the scorecard has the wording to give a maintainer who asks where it comes from.
Then hold it, because the path decays - a new dependency breaks the bootstrap, the beginner queue empties, the response target slips. Re-run the audit script and one cold run every quarter - this skill's own cadence - and after any change to the build or the test command. Where your environment supports scheduled routines, install that re-check as a recurring task; where it does not, leave the maintainer a dated calendar reminder and a one-line command to re-run.
If your environment has persistent memory, store the agreed scope statement, the published response target, the beginner-issue definition, and the score with its date, so the next run measures a delta instead of starting over.
At low volume these signals are anecdotes with dates attached, not a dashboard. Four external pull requests a quarter cannot produce a trend, and a conference talk or a front-page mention moves every number below more than a documentation change does. Record the date you shipped each change, annotate the confounders, and only then read deltas.
Track the scorecard's funnel baseline, reading each number this way: