Plugin Registry Submission
This guide explains how to submit your plugin to the FinFocus plugin registry.
Prerequisites
Section titled “Prerequisites”Before submitting, ensure your plugin:
- Implements the FinFocus plugin protocol - Uses gRPC with the finfocus-spec protobuf definitions
- Has GitHub releases - Uses GoReleaser or similar to create releases with platform-specific binaries
- Follows naming conventions - Binary naming must match GoReleaser v2 format
Binary Naming Convention
Section titled “Binary Naming Convention”Your release assets must follow this naming pattern:
{plugin-name}_{version}_{os}_{arch}.{format}Examples:
kubecost_v1.0.0_linux_amd64.tar.gzkubecost_v1.0.0_darwin_arm64.tar.gzkubecost_v1.0.0_windows_amd64.zip
Supported platforms:
- Linux: amd64, arm64
- macOS (darwin): amd64, arm64
- Windows: amd64 (zip format required)
Registry Entry Format
Section titled “Registry Entry Format”Add your plugin to internal/registry/registry.json:
{ "schema_version": "1.0.0", "plugins": { "your-plugin": { "name": "your-plugin", "description": "Brief description of what your plugin does", "repository": "owner/repo-name", "author": "Your Name or Organization", "license": "Apache-2.0", "homepage": "https://github.com/owner/repo-name", "supported_providers": ["aws", "gcp", "azure"], "capabilities": ["projected", "actual"], "security_level": "community", "min_spec_version": "0.1.0" } }}Required Fields
Section titled “Required Fields”| Field | Description |
|---|---|
name | Plugin name (used in plugin install <name>) |
description | Brief description (shown in plugin list --available) |
repository | GitHub repository in owner/repo format |
Optional Fields
Section titled “Optional Fields”| Field | Description |
|---|---|
author | Plugin author or organization |
license | SPDX license identifier (e.g., “Apache-2.0”, “MIT”) |
homepage | URL to documentation or homepage |
supported_providers | Cloud providers supported (aws, gcp, azure, kubernetes) |
capabilities | Features: “projected” (cost estimates), “actual” (historical costs) |
security_level | Trust level (see below) |
min_spec_version | Minimum finfocus-spec version required |
Security Levels
Section titled “Security Levels”| Level | Description |
|---|---|
official | Maintained by the FinFocus team, fully reviewed |
community | Community-maintained, basic review completed |
experimental | New or untested, use with caution |
Submission Process
Section titled “Submission Process”1. Prepare Your Plugin
Section titled “1. Prepare Your Plugin”Ensure your plugin repository has:
- Working GitHub releases with proper binary naming
- README with usage instructions
- LICENSE file
- At least one release tag (e.g.,
v0.1.0)
2. Test Installation
Section titled “2. Test Installation”Test that your plugin installs correctly:
# Test direct URL installationfinfocus plugin install github.com/your-org/your-plugin
# Verify it worksfinfocus plugin listfinfocus plugin validate3. Submit Pull Request
Section titled “3. Submit Pull Request”- Fork the
finfocusrepository - Add your plugin entry to
internal/registry/registry.json - Submit a pull request with:
- Plugin entry in registry.json
- Brief description of the plugin’s purpose
- Link to plugin repository
4. Review Process
Section titled “4. Review Process”The FinFocus team will:
- Verify the plugin builds and installs correctly
- Review basic security considerations
- Test plugin functionality
- Assign appropriate security level
GoReleaser Configuration
Section titled “GoReleaser Configuration”Example .goreleaser.yml for proper binary naming:
{% raw %}
version: 2
builds: - id: plugin main: ./cmd/plugin binary: your-plugin goos: - linux - darwin - windows goarch: - amd64 - arm64 ignore: - goos: windows goarch: arm64
archives: - id: plugin builds: - plugin name_template: '{{ .ProjectName }}_{{ .Tag }}_{{ .Os }}_{{ .Arch }}' format_overrides: - goos: windows format: zip
checksum: name_template: 'checksums.txt'
release: github: owner: your-org name: your-plugin{% endraw %}
Example Plugins
Section titled “Example Plugins”Reference these existing plugins:
- kubecost - Kubernetes cost analysis via Kubecost API
- aws-public - AWS public pricing data
Questions?
Section titled “Questions?”- Open an issue on the finfocus repository
- Check existing plugins for implementation examples