First off, thank you for considering contributing to this OpenCode configuration repository! It's people like you that make the open source community such a great place to learn, inspire, and create.
We welcome any type of contribution, not just code. You can help with:
- Reporting bugs in configurations or scripts
- Discussing the current state of agents, skills, or MCP servers
- Submitting fixes for broken configurations
- Proposing new agents, skills, or themes
- Improving documentation
- Sharing your custom configurations
- Becoming a maintainer
- Code of Conduct
- How Can I Contribute?
- Development Process
- Pull Request Process
- Coding Standards
- Project Structure
- Testing Your Changes
- License
This project adheres to a code of conduct that we expect all contributors to follow:
- Be respectful and inclusive
- Welcome newcomers and encourage diverse perspectives
- Focus on what is best for the community
- Show empathy towards other community members
We use GitHub Issues to track bugs. Report a bug by opening a new issue.
Great Bug Reports include:
-
Quick summary - One-line description of the issue
-
Steps to reproduce - Be specific!
1. Run `make install` 2. Open OpenCode 3. See error... -
Expected behavior - What you expected to happen
-
Actual behavior - What actually happened
-
Environment details:
- OS: [e.g., macOS 14.0, Ubuntu 22.04]
- OpenCode version: [e.g., 1.2.3]
- Stow version (if applicable): [e.g., 2.3.1]
-
Additional context - Screenshots, logs, or error messages
-
Possible fix - If you have ideas (optional)
Enhancement suggestions are tracked as GitHub Issues. When creating an enhancement suggestion, please include:
- Clear title - Descriptive and specific
- Detailed description - What you want to happen and why
- Use cases - Real-world scenarios where this would be useful
- Examples - Mock-ups, code samples, or references to similar features
- Alternatives considered - Other solutions you've thought about
We love receiving new agents, skills, MCP servers, or themes! Here's how:
-
Create a new file in the appropriate category:
opencode/agent/XX-category/your-agent-name.md
-
Follow the existing agent structure:
# Agent Name Brief description of what this agent does. ## Capabilities - What it can do - Key features ## Usage How to use this agent ## Examples Example use cases
-
Test the agent in OpenCode
-
Submit a pull request
-
Create a directory under
opencode/skill/:opencode/skill/your-skill-name/ ├── SKILL.md # Main skill definition ├── examples/ # Example usage (optional) └── reference/ # Reference materials (optional)
-
Follow the SKILL.md template used in existing skills
-
Document prerequisites and usage
-
Submit a pull request
- Add configuration to
opencode/mcp/ - Document setup instructions
- Include example usage
- Test the MCP server integration
- Submit a pull request
We use GitHub to host code, track issues and feature requests, and accept pull requests.
We Use GitHub Flow
All code changes happen through pull requests:
-
Fork the repository and create your branch from
maingit clone https://github.com/YOUR_USERNAME/opencode.git cd opencode git checkout -b feature/your-feature-name -
Set up your development environment
make install make install-hooks # Install pre-commit hooks -
Make your changes
- Add your configurations
- Update documentation if needed
- Follow the coding standards (see below)
-
Test your changes
make restow # Refresh symlinks make run-hooks # Run pre-commit checks make status # Verify installation
-
Commit your changes
git add . git commit -m "feat: add new AI agent for X"
Follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Formatting changesrefactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
-
Push to your fork
git push origin feature/your-feature-name
-
Open a Pull Request
- Update documentation - README.md, configuration docs, etc.
- Follow the style guide - Run
make run-hooksto check - Write clear PR description:
- What changes you made
- Why you made them
- How to test them
- Screenshots (if applicable)
- Link related issues - Use
Fixes #123orCloses #456 - Wait for review - Maintainers will review your PR
- Address feedback - Make requested changes if needed
- Squash commits - Clean up commit history if requested
Use conventional commit format:
feat(agent): add payment integration agent
fix(skill): correct MCP builder syntax
docs(readme): update installation instructions
- Use markdownlint-compliant formatting
- Run
make run-hooksbefore committing - Configuration is in
.markdownlint.yaml
- Use comments to explain complex configurations
- Validate with
pre-commit run validate-jsonc - Keep formatting consistent
- Use shellcheck for validation
- Follow POSIX standards where possible
- Add comments for complex logic
- Be descriptive - Clear names for files and variables
- Document everything - Explain what and why
- Keep it simple - Avoid over-engineering
- Test thoroughly - Verify changes work as expected
- Stay consistent - Follow existing patterns
All contributions must pass pre-commit hooks:
# Install hooks
make install-hooks
# Run manually
make run-hooks
# What gets checked:
# - Trailing whitespace
# - File endings
# - YAML/JSON syntax
# - Markdown formatting
# - Makefile syntax
# - Superpowers exclusionUnderstanding the structure helps you contribute effectively:
opencode/
├── agent/ # AI agent definitions by category
├── command/ # Custom commands
├── mcp/ # MCP server configurations
├── rules/ # Coding rules and best practices
├── skill/ # Reusable skills with examples
└── themes/ # UI themes
Repository root:
├── .pre-commit-config.yaml # Pre-commit hook configuration
├── .markdownlint.yaml # Markdown linting rules
├── .stowrc # Stow configuration
├── Makefile # Automation scripts
├── README.md # Main documentation
└── CONTRIBUTING.md # This file
- Use kebab-case for file names:
payment-integration.md - Use descriptive names:
customer-success-manager.mdnotcsm.md - Add category prefixes where applicable:
01-core/
Before submitting a PR, test your changes:
# 1. Install your changes
make uninstall
make install
# 2. Verify symlinks
make status
# 3. Test in OpenCode
opencode .
# 4. Check for errors
make run-hooks
# 5. Verify clean state
make clean- Open OpenCode
- Navigate to the agent/skill you added/modified
- Test functionality with real use cases
- Verify documentation is clear and accurate
- Check for edge cases
# Test all targets
make help
make check
make install
make status
make list
make uninstallBy contributing, you agree that your contributions will be licensed under the same MIT License that covers the project.
When you submit code changes, your submissions are understood to be under the MIT License. Feel free to contact maintainers if that's a concern.
Feel free to:
- Open an issue for questions
- Start a discussion
- Reach out to maintainers directly
All contributors will be recognized in our README. Thank you for making this project better!
Happy contributing! 🎉