Publishing Plugins
Once your plugin is working, you can share it with others by publishing to GitHub and adding it to the plugin registry.
Preparing for Release
Section titled “Preparing for Release”Before publishing, verify your plugin is ready:
1. Update manifest.json
Section titled “1. Update manifest.json”Ensure all fields are accurate:
{ "id": "my-plugin", "name": "My Plugin", "version": "0.1.0", "description": "Clear, concise description of what it does", "author": "Your Name", "main": "index.js", "permissions": { "read": ["transactions", "accounts"], "schemaName": "plugin_my_plugin" }}2. Test Thoroughly
Section titled “2. Test Thoroughly”- Build the plugin:
npm run build - Install locally:
tl plugin install . - Test all features in the desktop app
- Verify it works with both light and dark themes
- Test with real data (not just demo mode)
3. Clean Up
Section titled “3. Clean Up”- Remove debug
console.log()statements - Handle errors gracefully with
sdk.toast.error() - Ensure subscriptions are cleaned up in
onDestroy()
Releasing a Version
Section titled “Releasing a Version”The template includes automation for releasing. When you push a tag, GitHub Actions builds and publishes your plugin.
Using the Release Script
Section titled “Using the Release Script”./scripts/release.sh 0.1.0This script:
- Updates the version in
manifest.json - Builds the plugin
- Commits the version bump
- Creates a git tag
- Pushes to GitHub
The GitHub Actions workflow then:
- Checks out the code
- Installs dependencies
- Builds the plugin
- Creates a GitHub release with
manifest.jsonanddist/index.js
Version Management
Section titled “Version Management”Semantic Versioning
Section titled “Semantic Versioning”Follow semver for version numbers:
- MAJOR (1.0.0) - Breaking changes
- MINOR (0.1.0) - New features, backwards compatible
- PATCH (0.0.1) - Bug fixes
Version Consistency
Section titled “Version Consistency”Keep versions in sync across:
manifest.json-versionfieldpackage.json-versionfield (optional but recommended)- Git tags -
v0.1.0format
Adding to the Plugin Registry
Section titled “Adding to the Plugin Registry”Once you have a GitHub release, submit your plugin to the plugin registry.
1. Fork the Treeline Repository
Section titled “1. Fork the Treeline Repository”Fork treeline-money/treeline on GitHub.
2. Edit plugins.json
Section titled “2. Edit plugins.json”Add your plugin to plugins.json:
{ "id": "my-plugin", "name": "My Plugin", "description": "Clear description of what it does", "author": "Your Name", "repo": "https://github.com/yourusername/my-plugin"}Fields:
| Field | Required | Description |
|---|---|---|
id | Yes | Must match your manifest.json |
name | Yes | Display name |
description | Yes | Brief description (under 100 chars) |
author | Yes | Your name or organization |
repo | Yes | GitHub repository URL |
featured | No | Set by maintainers only |
3. Submit a Pull Request
Section titled “3. Submit a Pull Request”Create a PR with:
- Title:
Add [plugin-name] plugin - Description: Brief explanation of what your plugin does
- Link to your repository
4. Review Process
Section titled “4. Review Process”Maintainers will review your PR for:
- Working GitHub release
- Accurate manifest.json
- Reasonable permissions (not requesting more than needed)
- No malicious code
Plugin Guidelines
Section titled “Plugin Guidelines”- Make plugins that solve real problems
- Document your plugin’s features
- Respond to issues and PRs
- Keep dependencies minimal
- Test with the latest Treeline version
- Request unnecessary permissions
- Include tracking or analytics
- Bundle large dependencies
- Copy other plugins without attribution
- Include offensive content
Security
Section titled “Security”- Never log or transmit user financial data
- Only access tables declared in permissions
- Don’t make network requests without user consent
Updating Your Plugin
Section titled “Updating Your Plugin”When you release a new version:
- Update
manifest.jsonwith the new version - Run
./scripts/release.sh <version> - The new version appears automatically for users
The registry pulls from your latest GitHub release. No PR needed for updates.
Support
Section titled “Support”If you need help:
- Check existing plugins for examples
- Join Discord and post in #feedback
- Open an issue on GitHub for bugs
PLUGIN_PREVIEW.md
Section titled “PLUGIN_PREVIEW.md”All plugins should include a PLUGIN_PREVIEW.md file in their GitHub repository. This file is used to display plugin information on the treeline.money landing page and in the desktop app’s plugin browser.
See these plugins for examples of how to structure your PLUGIN_PREVIEW.md:
Example Plugins
Section titled “Example Plugins”Study these plugins for inspiration:
| Plugin | Description | Repo |
|---|---|---|
| Budget | Tag-based budget tracking | plugin-budget |
| Goals | Savings goal tracking | plugin-goals |
| Cash Flow | Income/expense planning | plugin-cashflow |
| Subscriptions | Recurring charge detection | plugin-subscriptions |
| Emergency Fund | Fund runway calculator | plugin-emergency-fund |