Thank you for your interest in contributing to the OpenCode Skills Plugin! This document provides guidelines for contributing to this project.
By participating in this project, you agree to:
- Be respectful and inclusive
- Provide constructive feedback
- Focus on the issue, not the person
- Help create a welcoming environment for all contributors
Before creating a bug report:
- Check the existing issues to see if it's already reported
- If you can't find an existing issue, create a new one
When creating a bug report, include:
- Clear title and description
- Steps to reproduce the bug
- Expected behavior vs actual behavior
- Environment details (OS, Node version, OpenCode version)
- Code samples or screenshots if applicable
Enhancement suggestions are welcome! Before creating an enhancement request:
- Check existing issues for similar suggestions
- Consider if the enhancement fits the project's goals
When suggesting an enhancement, include:
- Clear description of the enhancement
- Use cases - why is this useful?
- Possible implementation approach (optional)
- Examples from other projects (if applicable)
Click the "Fork" button on GitHub to create your own copy of the repository.
git clone git@github.com:YOUR-USERNAME/opencode-skills.git
git clone https://github.com/YOUR-USERNAME/opencode-skills.git cd opencode-skills
git remote add upstream https://github.com/malhashemi/opencode-skills.gitgit checkout main
git checkout -b feature/your-feature-nameBranch naming conventions:
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation updateschore/description- Maintenance tasks
- Write clear, concise code
- Follow existing code style
- Add tests if applicable
- Update documentation as needed
We use Conventional Commits for commit messages:
git commit -m "feat: add new skill discovery feature"
git commit -m "fix: correct path resolution bug"
git commit -m "docs: update installation instructions"Commit types:
feat:- New feature (triggers minor version bump)fix:- Bug fix (triggers patch version bump)docs:- Documentation changes onlychore:- Maintenance tasks (no version bump)refactor:- Code refactoringtest:- Adding or updating testsperf:- Performance improvements
Breaking changes:
git commit -m "feat!: change skill loading API
BREAKING CHANGE: Skills now require a version field in frontmatter"git fetch upstream
git rebase upstream/maingit push origin feature/your-feature-name- Go to your fork on GitHub
- Click "Compare & pull request"
- Ensure base branch is
main - Fill out the PR description:
- What does this PR do?
- Why is this change needed?
- How has it been tested?
- Related issues (if applicable)
- Submit the PR
- Maintainers will review your PR
- Address any feedback or requested changes
- Once approved, your PR will be merged
- Your contribution will be included in the next release!
Note: This section is for project maintainers only. Regular contributors should follow the standard PR process above.
This project uses a dual-branch workflow:
main- Stable release branch- Accepts external contributor PRs
- Triggers Release Please for automated releases
- Published to npm
dev- Integration branch- Used by maintainers for development and testing
- Tested changes promoted to
mainfor release
1. Create feature branch from dev:
git checkout dev
git pull origin dev
git checkout -b feature/your-feature-name2. Develop and commit using conventional commits:
git commit -m "feat: add new feature"
git commit -m "fix: resolve bug"3. Create PR to dev for integration:
gh pr create --base dev --head feature/your-feature-name4. After merge, test on dev:
npm run build
npm run typecheck
# Test in local OpenCode project5. When ready to release, promote dev to main:
See RELEASE.md for detailed release process.
# Create promotion PR
gh pr create \
--base main \
--head dev \
--title "chore: release v0.x.x - description"
# After merge, Release Please creates release PR automatically
# Merge Release Please PR → auto-publishes to npmFor complete release documentation, see RELEASE.md.
- Node.js >= 20.0.0
- npm or pnpm
- TypeScript knowledge
# Clone your fork
git clone git@github.com:YOUR-USERNAME/opencode-skills.git
cd opencode-skills
# Install dependencies
npm install
# Build the project
npm run build
# Run type checking
npm run typecheck-
Build the project:
npm run build
-
Test in a local OpenCode project:
- Link the package locally
- Add to OpenCode config
- Test skill discovery and execution
-
Verify types:
npm run typecheck
We follow Conventional Commits specification.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
- feat: New feature
- fix: Bug fix
- docs: Documentation only changes
- style: Code style changes (formatting, missing semicolons, etc.)
- refactor: Code change that neither fixes a bug nor adds a feature
- perf: Performance improvements
- test: Adding or updating tests
- chore: Changes to build process or auxiliary tools
# Simple feature
feat: add support for nested skill directories
# Bug fix with scope
fix(parser): handle empty frontmatter correctly
# Breaking change
feat!: require Node.js 20+
BREAKING CHANGE: Drops support for Node.js 18 and below- Automated versioning - Commit messages determine version bumps
- Automated changelog - Release notes are generated automatically
- Clear history - Easy to understand what changed and why
- Use TypeScript for all code
- Avoid
anytypes - use proper type definitions - Export types for public APIs
- Add JSDoc comments for public functions/interfaces
- The project uses existing TypeScript compiler settings
- Follow the patterns in existing code
- Use meaningful variable and function names
- Keep functions focused and single-purpose
opencode-skills/
├── index.ts # Main plugin export
├── dist/ # Compiled output (gitignored)
├── .opencode/ # Example skills
└── README.md
If you have questions:
-
Check existing documentation:
-
Search existing issues:
-
Start a discussion:
-
Ask in a PR:
- If you're already working on something, ask questions in your PR
Contributors are recognized in:
- Release notes (automatically via Release Drafter)
- GitHub Contributors page
- Special thanks in major releases
By contributing to opencode-skills, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to OpenCode Skills Plugin! 🎉
Every contribution, no matter how small, helps make this project better for the community.