Rules and skills that teach AI agents how to contribute to open source projects without being the villain.
94
93%
Does it follow best practices?
Impact
95%
4.13xAverage score across 7 eval scenarios
Advisory
Suggest reviewing before use
Determine the right venue for a proposed change and draft the proposal. This skill assumes recon has been done — if it hasn't, run recon first. Only applies to contributions to external open source projects — skip for internal or personal projects.
Before proposing anything, run these checks:
Read the issue AND its comments:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh issue-comments OWNER/REPO NUMBERCheck for:
If the issue is claimed or restricted, immediately list alternatives:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh issues-open OWNER/REPOPresent the open, unclaimed issues to the contributor. Note any restrictions (good-first-issue labels, etc.) and include the project's AI disclosure format if one exists.
Search BOTH closed PRs AND closed issues for prior attempts at the same or similar change. This is critical — many bad AI PRs repeat mistakes that were already rejected.
Search closed PRs:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh prs-closed OWNER/REPOA related PR is one that touches the same file paths, the same function/class names, references the same issue number, or has a title mentioning the same component. For any related PR, read its comments to get the maintainer's rejection reason:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh pr-comments OWNER/REPO NUMBERSearch closed issues:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh issues-closed OWNER/REPOIssues closed as "not planned" are explicit rejections. Check the close comment and labels for the reason — look for phrases like "not part of", "out of scope", "not aligned with", "we've decided against."
If similar work was rejected before, report:
Based on the project's governance docs and recon findings, determine the right venue:
PR — appropriate when:
CONTRIBUTING.md says PRs are welcome for this type of changeIssue — appropriate when:
Discussion — appropriate when:
RFC / KEP / Change Proposal — appropriate when:
If unsure, default to opening an issue or discussion first. A premature PR is worse than a slightly delayed one.
Depending on the selected venue:
Example of a well-framed issue:
Problem:
Config.load()silently ignores unrecognised keys, making misconfiguration hard to debug.Proposed approach: Emit a warning (not an error) for each unrecognised key, with the key name and source file. This preserves backward compatibility while surfacing mistakes early.
Does this direction sound acceptable before I open a PR?
You are NOT done when you tell the contributor they can't work on an issue. Redirecting IS the job — you must help them find what they CAN do. This is mandatory, not a nice-to-have.
Step A — List every open issue in the repo:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh issues-open OWNER/REPOPresent each open issue with its number, title, and any restrictions (assigned? good-first-issue label?).
Step B — For each viable alternative, include the AI disclosure format: If AI_POLICY.md defines a disclosure template, copy-paste it verbatim so the contributor has it ready. Example: "For your PR, you'll need this section:" followed by the exact template from the policy file.
Step C — If the restriction is "no AI on this issue" (e.g., good-first-issue): Help the contributor succeed WITHOUT AI on the restricted issue:
Remind the contributor that trust is socially accumulated in OSS. If they are new to this project, their first contribution has to work harder to earn trust. Suggest: