Rules and skills that teach AI agents how to contribute to open source projects without being the villain.
82
90%
Does it follow best practices?
Impact
78%
5.20xAverage score across 7 eval scenarios
Critical
Do not install without reviewing
Analyze an open source project to understand its contribution norms before any code is written. This skill produces a report for the contributor — not a PR, not code, just intelligence.
Helper script path: bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh
Confirm the task involves contributing to an external open source project (GitHub URL, "submit a PR", "contribute a fix", etc.). If internal or personal project — skip this skill entirely.
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh repo-scan OWNER/REPOParse output. Note every FOUND and NOT FOUND file. Proceed to Step 2.
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh ai-policy OWNER/REPOThe script returns the full text of AI_POLICY.md, CODE_OF_CONDUCT.md, and CONTRIBUTING.md (if they exist). Read them and determine the project's AI stance. Look for explicit negatives alongside "AI": "do not", "cannot", "banned", "prohibited", "not allowed", "not accepted." Check for hard-stop consequences: "PRs will be closed", "contributions rejected", "account suspended." If you find these, that's a ban. Look for disclosure language: "must disclose", "required to disclose", "include what tool." Check for conditional restrictions: "AI not allowed on good-first-issue", "AI only with full human review." Absence of any AI mention means no policy — NOT a ban. Then act:
Run ALL three commands — these are not optional:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh issue OWNER/REPO ISSUE_NUMBERbash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh issue-comments OWNER/REPO ISSUE_NUMBERbash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh related-prs OWNER/REPO ISSUE_NUMBERAfter running issue-comments, answer this question before anything else: Is this issue claimed by another contributor? A claim is any comment where someone expresses intent to work on the issue: "I'd like to work on this", "I'll take this", "claiming this", "I'm working on this", "I can take this", "let me handle this", "I've started a branch for this", "assigned to me", mentioning having a PR ready, or any equivalent in any language.
If ANYONE has claimed it: STOP — do NOT proceed to later steps or write code. Tell the contributor who claimed it (username and date), warn that competing PRs are bad etiquette and will likely be rejected, then run issues-open to list alternatives and run disclosure-format OWNER/REPO so you can include the exact AI disclosure template for those alternatives. If the project has no AI policy, include the voluntary disclosure template instead. This is a hard stop.
If NOT claimed, continue with remaining checks:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh disclosure-format OWNER/REPOSave the exact template for the PR description. If no policy, recommend voluntary disclosure.
Run ALL commands:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh conventions-config OWNER/REPObash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh contributing-requirements OWNER/REPObash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh commit-conventions OWNER/REPObash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh branch-conventions OWNER/REPObash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh pr-stats OWNER/REPObash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh codeowners OWNER/REPObash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh legal OWNER/REPOThe contributing-requirements script returns the full CONTRIBUTING.md text. Read it and extract requirements. Look for imperative language: "you must", "required", "must include", "always", "do not." These indicate hard requirements. Softer language ("we recommend", "we appreciate", "consider") indicates preferences, not requirements. Then note action items:
git commit -s to add Signed-off-by. The agent cannot sign for you — this is a legal attestation."make lint, npm run lint), add this to the action items. Both tests AND linters must pass before submission.Read these FOUND files using the file command:
bash .tessl/tiles/tessl-labs/good-oss-citizen/skills/recon/scripts/bash/github.sh file OWNER/REPO <path>Specifically read and act on:
If the contributor needs alternatives (claimed issue, restricted issue, or rejected direction):
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, labels, and assignment status.
Compile ALL script outputs into a structured report:
## Recon Report: <project-name>
### 1. AI Policy Stance
<paste ai-policy output>
### 2. Issue Status
<paste issue + issue-comments output>
<paste related-prs output>
### 3. Disclosure Format
<paste disclosure-format output>
### 4. Legal Requirements
<paste legal output>
### 5. Contribution Process
<paste contributing-requirements output>
### 6. Style and Conventions
<paste conventions-config output>
<paste commit-conventions output>
<paste branch-conventions output>
### 7. PR Norms
<paste pr-stats output>
<from PR template file output>
### 8. Red Flags
<from issue-comments, related-prs, ai-policy outputs>
### 9. Who Reviews What
<paste codeowners output>
### 10. Action Items for Contributor
<list every action the contributor must take: DCO sign-off, changelog update, disclosure section, specific test fixtures to use, etc.>If the AI policy is a ban, the report should say so and not proceed to other skills.