Templates and guidance for creating community health files (README, CONTRIBUTING, LICENSE, CODE_OF_CONDUCT, SECURITY, CITATION.cff, issue/PR templates) for open-source research software projects in any language.
From project-managementnpx claudepluginhub uw-ssec/rse-plugins --plugin project-managementThis skill uses the workspace's default tool permissions.
assets/citation-template.cffassets/code-of-conduct-template.mdassets/contributing-template.mdassets/readme-template.mdassets/security-template.mdreferences/citation-format.mdreferences/github-templates.mdreferences/license-guide.mdEnables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
A comprehensive guide to creating and maintaining community health files for open-source research software projects. Community health files define how contributors interact with your project, set expectations for behavior, and establish processes for contributions, security reporting, and citation. This skill follows GitHub community standards and adds specific guidance for scientific software and research engineering contexts.
Community Health Files Checklist:
| File | Purpose | Priority | Location |
|---|---|---|---|
README.md | Project overview, installation, usage | Required | Root |
LICENSE | Legal terms for use and distribution | Required | Root |
CONTRIBUTING.md | How to contribute to the project | Required | Root or .github/ |
CODE_OF_CONDUCT.md | Community behavior standards | Required | Root or .github/ |
SECURITY.md | How to report vulnerabilities | Recommended | Root or .github/ |
SUPPORT.md | How to get help | Recommended | Root or .github/ |
CITATION.cff | How to cite the software | Recommended | Root |
FUNDING.yml | Sponsorship and funding links | Optional | .github/ |
.github/ISSUE_TEMPLATE/ | Structured issue reporting | Recommended | .github/ |
.github/PULL_REQUEST_TEMPLATE.md | PR checklist and guidelines | Recommended | .github/ |
CHANGELOG.md | Record of notable changes | Recommended | Root |
GOVERNANCE.md | Decision-making and leadership | Optional | Root or .github/ |
Quick Setup Commands:
# Create standard community files from templates
mkdir -p .github/ISSUE_TEMPLATE
# Files in project root
touch README.md LICENSE CONTRIBUTING.md CODE_OF_CONDUCT.md
touch SECURITY.md SUPPORT.md CITATION.cff CHANGELOG.md
# Files in .github/
touch .github/FUNDING.yml
touch .github/PULL_REQUEST_TEMPLATE.md
touch .github/ISSUE_TEMPLATE/bug_report.yml
touch .github/ISSUE_TEMPLATE/feature_request.yml
touch .github/ISSUE_TEMPLATE/config.yml
GitHub Community Profile:
GitHub automatically detects these files and shows a "Community Standards" checklist at https://github.com/<owner>/<repo>/community. Completing all recommended files earns a full community profile score.
.github repositoryThe README is the front door of your project. It is the first file most visitors read and serves as the primary documentation entry point.
What it should contain:
Best practices for scientific software:
See assets/readme-template.md for a complete template.
The LICENSE file defines the legal terms under which others can use, modify, and distribute your software. Choosing the right license is critical for scientific software because it affects whether others can use your code in their research.
Common licenses for research software projects:
| License | Type | Key Feature | Used By |
|---|---|---|---|
| BSD 3-Clause | Permissive | Simple, allows commercial use | NumPy, SciPy, scikit-learn |
| MIT | Permissive | Very simple, minimal restrictions | Many Node.js and small projects |
| Apache 2.0 | Permissive | Patent protection clause | TensorFlow, Arrow, many Rust/Go projects |
| GPL 3.0 | Copyleft | Derivative works must be open source | Some research tools |
| LGPL 3.0 | Weak copyleft | Libraries can be used in proprietary code | Some scientific libraries |
Recommendations for research software:
pyproject.toml, Cargo.toml, package.json, etc.)The CONTRIBUTING file tells potential contributors how to participate in your project. Clear contribution guidelines reduce friction and encourage community involvement.
Key sections:
Best practices for scientific software:
See assets/contributing-template.md for a complete template.
The Code of Conduct establishes community behavior standards and provides a framework for addressing unacceptable behavior. It signals that your project is welcoming and inclusive.
Recommended standard: Contributor Covenant v2.1
The Contributor Covenant is the most widely adopted code of conduct in open source. It is used by thousands of projects across many language ecosystems including Python, Rust, Go, and JavaScript.
Key elements:
Best practices for scientific software:
See assets/code-of-conduct-template.md for a complete template.
The SECURITY policy tells users and researchers how to responsibly disclose security vulnerabilities. Even scientific software can have security implications, particularly tools that handle data, run on shared infrastructure, or interact with external services.
Key sections:
Best practices for scientific software:
See assets/security-template.md for a complete template.
The SUPPORT file tells users where and how to get help. It reduces noise in issue trackers by directing questions to appropriate channels.
Recommended contents:
# Getting Help
## Documentation
- Full documentation: https://my-project.readthedocs.io
- API reference: https://my-project.readthedocs.io/en/latest/api/
- Tutorials: https://my-project.readthedocs.io/en/latest/tutorials/
## Asking Questions
- **GitHub Discussions**: For general questions and community discussion
- **Stack Overflow**: Tag your question with `my-project`
- **Mailing list**: dev@my-project.org
## Reporting Bugs
- Use the [bug report template](https://github.com/org/repo/issues/new?template=bug_report.yml)
- Include a minimal reproducible example
- Include your environment details (OS, Python version, package versions)
## Feature Requests
- Use the [feature request template](https://github.com/org/repo/issues/new?template=feature_request.yml)
## Security Issues
- See [SECURITY.md](SECURITY.md) for reporting vulnerabilities
- Do NOT file security issues as public GitHub issues
The FUNDING file enables the "Sponsor" button on your GitHub repository. Place it at .github/FUNDING.yml.
Example for scientific projects:
# .github/FUNDING.yml
github: [maintainer-username]
open_collective: project-name
custom:
- https://numfocus.org/donate-to-project
- https://your-institution.edu/donate
Supported platforms:
github - GitHub Sponsorsopen_collective - Open Collectiveko_fi - Ko-fitidelift - Tideliftcommunity_bridge - LFX Mentorshipcustom - Up to 4 custom URLsA changelog records all notable changes to the project, organized by version. It helps users understand what changed between releases and whether they need to update.
Recommended format (Keep a Changelog):
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/),
and this project adheres to [Semantic Versioning](https://semver.org/).
## [Unreleased]
### Added
- New spectral analysis function `compute_power_spectrum()`
### Changed
- Improved performance of `fit_model()` by 3x
### Fixed
- Fixed incorrect unit conversion in `transform_coordinates()`
## [1.0.0] - 2025-01-15
### Added
- Initial release with core analysis functions
- Documentation and tutorials
- Full test coverage
Categories: Added, Changed, Deprecated, Removed, Fixed, Security
GitHub supports organization-level default community health files. When a repository does not have its own version of a file, GitHub falls back to the organization's .github repository.
How it works:
.github in your organization (e.g., org-name/.github)profile/ directorySupported files for organization defaults:
CODE_OF_CONDUCT.mdCONTRIBUTING.mdFUNDING.yml (in .github/ directory)GOVERNANCE.mdSECURITY.mdSUPPORT.mdISSUE_TEMPLATE/ and PULL_REQUEST_TEMPLATE.mdFiles NOT supported as organization defaults:
README.md (must be per-repository)LICENSE (must be per-repository)CITATION.cff (must be per-repository)Directory structure for an organization .github repo:
.github/
├── profile/
│ └── README.md # Organization profile (shown on org page)
├── CODE_OF_CONDUCT.md # Default for all repos
├── CONTRIBUTING.md # Default for all repos
├── SECURITY.md # Default for all repos
├── SUPPORT.md # Default for all repos
├── FUNDING.yml # Default funding links
├── GOVERNANCE.md # Default governance
├── ISSUE_TEMPLATE/
│ ├── bug_report.yml # Default bug report template
│ ├── feature_request.yml # Default feature request template
│ └── config.yml # Issue template chooser config
└── PULL_REQUEST_TEMPLATE.md
Best practice: Define common standards at the organization level and override only when a specific project has unique requirements.
Note: The GitHub plugin provides deeper guidance on organization-level defaults and platform mechanics.
The Citation File Format (CFF) is a human- and machine-readable file format that provides citation metadata for software. GitHub natively parses CITATION.cff and displays a "Cite this repository" button.
Why it matters for scientific software:
Required fields:
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "My Scientific Package"
authors:
- family-names: "Smith"
given-names: "Jane"
orcid: "https://orcid.org/0000-0000-0000-0000"
type: software
Recommended additional fields:
version: "1.0.0"
date-released: "2025-01-15"
doi: "10.5281/zenodo.1234567"
license: "BSD-3-Clause"
url: "https://github.com/org/my-package"
repository-code: "https://github.com/org/my-package"
keywords:
- "scientific computing"
- "data analysis"
- "astronomy"
abstract: "A one-paragraph description of the software."
Citing a related publication:
preferred-citation:
type: article
title: "My Package: A Tool for Scientific Analysis"
authors:
- family-names: "Smith"
given-names: "Jane"
journal: "Journal of Open Source Software"
year: 2025
volume: 10
issue: 100
start: 1234
doi: "10.21105/joss.01234"
Validation: Use the cffconvert tool to validate your CITATION.cff:
pip install cffconvert
cffconvert --validate
See assets/citation-template.cff for a complete template.
GitHub supports YAML-based issue forms that provide structured fields for reporters. Place these in .github/ISSUE_TEMPLATE/.
# .github/ISSUE_TEMPLATE/bug_report.yml
name: Bug Report
description: Report a bug or unexpected behavior
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
Thank you for reporting a bug. Please fill out the sections below
to help us reproduce and fix the issue.
- type: textarea
id: description
attributes:
label: Bug Description
description: A clear description of the bug
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to Reproduce
description: Minimal code example or steps to reproduce the bug
placeholder: |
```
# Minimal code or steps that trigger the bug
```
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What you expected to happen
- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happened (include error messages and tracebacks)
- type: textarea
id: environment
attributes:
label: Environment
description: Your environment details
placeholder: |
- OS: [e.g., Ubuntu 22.04, macOS 14, Windows 11]
- Language/runtime version: [e.g., Python 3.12, Rust 1.75, Node 20]
- Package version: [e.g., 1.2.3]
- Installation method: [e.g., pip, conda, cargo, npm, source]
validations:
required: true
# .github/ISSUE_TEMPLATE/feature_request.yml
name: Feature Request
description: Suggest a new feature or enhancement
labels: ["enhancement"]
body:
- type: textarea
id: description
attributes:
label: Feature Description
description: A clear description of the feature you would like
validations:
required: true
- type: textarea
id: motivation
attributes:
label: Motivation
description: Why is this feature needed? What problem does it solve?
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Any alternative solutions or workarounds you have considered
- type: textarea
id: context
attributes:
label: Additional Context
description: Any other context, references, or screenshots
# .github/ISSUE_TEMPLATE/config.yml
blank_issues_enabled: false
contact_links:
- name: Questions and Discussion
url: https://github.com/org/repo/discussions
about: Ask questions and discuss ideas here
- name: Security Vulnerabilities
url: https://github.com/org/repo/security/advisories/new
about: Report security vulnerabilities privately
Place at .github/PULL_REQUEST_TEMPLATE.md:
## Description
<!-- Briefly describe the changes in this PR -->
## Related Issues
<!-- Link to related issues: Fixes #123, Closes #456 -->
## Type of Change
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
- [ ] Refactoring (no functional changes)
- [ ] CI/CD or infrastructure change
## Checklist
- [ ] I have read the [CONTRIBUTING](CONTRIBUTING.md) guidelines
- [ ] My code follows the project's code style
- [ ] I have added tests that prove my fix/feature works
- [ ] All new and existing tests pass
- [ ] I have updated the documentation as needed
- [ ] I have added an entry to the changelog (if applicable)
- [ ] My changes do not introduce new warnings
## Testing
<!-- Describe the tests you ran and how to reproduce them -->
## Screenshots (if applicable)
<!-- Add screenshots to help explain your changes -->
good first issue, help wanted)Ready-to-use templates are available in the assets/ directory:
Detailed reference documentation for complex topics. Agents should consult the table of contents in each file and read specific sections as needed.
Use this checklist when setting up or auditing a project: