Releasing Extensions
Once you’ve built an extension, you can share it with others. There are two primary methods for releasing extensions: through a Git repository or via GitHub Releases.Distribution Methods
Git Repository (Recommended)
Pros:- Simple to set up
- Flexible branching strategies
- Easy rollbacks
- Supports any Git hosting service
- Requires full repository clone on install
- All files downloaded (including dev files)
GitHub Releases
Pros:- Faster installation (single archive)
- Can include pre-built binaries
- Platform-specific builds
- Smaller download size
- GitHub-specific
- Requires release workflow
- More complex setup
Releasing Through Git Repository
This is the simplest and most flexible approach.Setup
-
Create a Public Repository
Create a public repository on GitHub, GitLab, or any Git hosting service:
-
Users Install With
Version Management
Update the version inqwen-extension.json when you make changes:
Managing Release Channels
Use branches or tags for different release channels:Option 1: Branch-Based Channels
Option 2: Tag-Based Versions
Recommended Git Flow
For extensions with stable/preview/dev channels:-
Development Branch (
dev)- Active development happens here
- Frequent changes
- May be unstable
-
Preview Branch (
preview)- Merge from
devwhen ready for testing - More stable than
dev - Feature-complete for next release
- Merge from
-
Main Branch (
mainormaster)- Production-ready
- Only merge from
previewafter testing - Default installation target
Auto-Update
Users can enable auto-updates:Releasing Through GitHub Releases
GitHub Releases provide a more optimized installation experience.Creating a Release
-
Tag Your Version
-
Create Release on GitHub
Go to your repository on GitHub:
- Click “Releases” → “Create a new release”
- Select your tag (v1.0.0)
- Add title and description
- Attach assets (if needed)
- Check “Set as the latest release”
- Click “Publish release”
-
Users Install
Qwen Code automatically detects and uses GitHub Releases.
Simple Releases (No Build)
If your extension doesn’t require a build step:- Tag and push
- Create GitHub release
- GitHub automatically creates archive
Custom Pre-Built Archives
For extensions with build steps or platform-specific code:Archive Structure
Archives must contain the complete extension at the root:Platform-Specific Assets
Naming convention for platform-specific archives: Format:{platform}.{arch}.{name}.{extension}
Platform values:
darwin- macOSlinux- Linuxwin32- Windows
x64- x86-64/AMD64arm64- ARM 64-bit
.tar.gz- Recommended for macOS/Linux.zip- Recommended for Windows
Building Platform Archives
Example build script: scripts/build-release.sh:GitHub Actions Workflow
Automate releases with GitHub Actions: .github/workflows/release.yml:Pre-Release Versions
Create pre-releases for testing:Extension README
Include a comprehensive README in your extension: README.md:Best Practices
1. Semantic Versioning
Use Semantic Versioning:1.0.0- Initial release1.0.1- Bug fix1.1.0- New feature (backwards compatible)2.0.0- Breaking change
2. Changelog
Maintain a CHANGELOG.md:3. Git Tags
Tag all releases:4. Clean Repository
Exclude unnecessary files: .gitignore:5. License
Include a LICENSE file:6. Documentation
Provide clear documentation:- README with installation and usage
- Examples for all features
- Configuration instructions
- Troubleshooting section
Testing Before Release
Local Testing
Install from Git (Before Release)
Push to a branch and test installation:Updating Extensions
When users have your extension installed:Git Repository Installs
Users update with:GitHub Release Installs
Users are notified when new releases are available. They can update with:Troubleshooting
”Extension not found”
Ensure:- Repository is public
qwen-extension.jsonis in root- Repository URL is correct
”Invalid extension structure”
Verify:- Archive has extension files at root (no extra nesting)
qwen-extension.jsonis valid JSON- Required files are included
”Build files missing”
For extensions with build steps:- Include built files in archives
- Don’t rely on users building
- Test archive contents before release
Next Steps
- Best Practices - Extension development guidelines
- Creating Extensions - Build an extension
- MCP Servers - Add custom tools
