| name | contributor-setup |
| description | Analyzes a repo's contributor experience and creates or updates what's missing: GitHub issue-form templates (bug/feature/refactor), an open-source target-group-focused README, CONTRIBUTING.md, and the remaining community-health files (PR template, CODE_OF_CONDUCT, SECURITY, LICENSE, CODEOWNERS). Use when asked to make a repo contributor-friendly, open-source ready, or to set up issue templates / README / CONTRIBUTING. |
| allowed-tools | Bash, Read, Write, Edit, Grep, Glob, WebFetch, AskUserQuestion |
Skill: contributor-setup
Audits everything a first-time visitor or contributor touches — README, issue templates, CONTRIBUTING.md, and the surrounding community-health files — then creates what's missing and upgrades what falls short. Analysis always comes first: never overwrite an existing file without showing the user what's wrong with it.
Run this when asked to "make this repo contributor-friendly", prepare a project for open-sourcing, set up issue templates, or as the community slice of a repo maturity audit.
Phase 1 — Analyze
Start from GitHub's own community-profile scoring, then inspect each file locally:
gh api repos/{owner}/{repo}/community/profile --jq '{health_percentage, files}'
ls .github/ISSUE_TEMPLATE/ 2>/dev/null
ls .github/PULL_REQUEST_TEMPLATE.md .github/CODEOWNERS CONTRIBUTING.md CODE_OF_CONDUCT.md SECURITY.md LICENSE README.md 2>/dev/null
Then judge quality, not just existence. Before writing anything, understand the project well enough to describe it accurately: read the manifest (package.json / pom.xml / …), the entry points, and any existing docs — the README must reflect what the project actually does, not a generic template.
README — evaluate against the target group (the developer who lands on the repo knowing nothing):
Issue templates — issue forms (.yml with a body: of typed fields), not legacy .md templates:
CONTRIBUTING.md — must let a stranger go from clone to merged PR without asking anything:
Everything else that matters:
Phase 2 — Report
Summarize as a table before touching anything:
| Item | Status | Finding |
|---|
| README | ✅ / ⚠️ needs work / ❌ missing | e.g. "no quickstart; assumes internal context" |
| Issue templates | … | e.g. "legacy .md templates; no required fields" |
| CONTRIBUTING.md | … | |
| LICENSE / CoC / SECURITY / PR template / CODEOWNERS | … | |
Propose a prioritized fix list and confirm scope with the user (AskUserQuestion) — especially: license choice, blank issues yes/no, CoC contact address, and who owns CODEOWNERS.
Phase 3 — Create or update
Work through the confirmed list. Rules:
- Update > replace. For existing files, fix the specific gaps from Phase 1; keep the author's voice and any project-specific content.
- Ground every claim. Commands in README/CONTRIBUTING must be the repo's real scripts (read
package.json scripts, Makefile, CI workflow) — run the quickstart yourself if possible; never invent commands.
- Write for the target group. README sells the project to a potential user first, contributor second. CONTRIBUTING is all mechanics. Don't duplicate content between them — link.
Issue templates — ready-to-use forms ship with this skill in its reference/ folder (next to this SKILL.md):
reference/fix.yml — bug report (label bug)
reference/feat.yml — feature request (label enhancement)
reference/refactor.yml — refactoring proposal (label refactor)
reference/config.yml — issue chooser config (blank-issues toggle, optional contact links)
Copy them to .github/ISSUE_TEMPLATE/, replace the <project>/<owner> placeholders with the real repo, and adjust fields only where the project genuinely differs. For config.yml, settle blank_issues_enabled and any contact_links with the user per the Phase 1 checklist.
Ensure the labels exist — a form that references a missing label opens the issue silently unlabeled. Check and create what's missing:
gh label list --json name --jq '.[].name'
gh label create refactor --description "Code refactoring or structural improvement" --color 6f42c1
Phase 4 — Verify
- Issue forms: valid YAML and valid schema — GitHub silently falls back to a blank issue on schema errors, so check field types against the syntax reference
- Every command written into README/CONTRIBUTING was executed or verified against the repo's actual scripts
- Re-run
gh api repos/{owner}/{repo}/community/profile after pushing to confirm the health percentage improved
- Internal links resolve (CONTRIBUTING ↔ README ↔ LICENSE)
Sources