CmdForge-Registry/CONTRIBUTING.md

116 lines
2.5 KiB
Markdown

# Contributing to SmartTools Registry
Thank you for contributing to the SmartTools ecosystem!
## Publishing a Tool
### Prerequisites
1. Install SmartTools: `pip install smarttools`
2. Create an account at the registry website
3. Generate an API token from your dashboard
4. Configure your token: `smarttools config set-token YOUR_TOKEN`
### Tool Structure
Your tool directory should contain:
```
my-tool/
├── config.yaml # Required: Tool definition
└── README.md # Recommended: Documentation
```
### config.yaml Format
```yaml
name: my-tool
version: "1.0.0"
description: A brief description of what your tool does
category: text-processing # See categories below
tags:
- ai
- productivity
arguments:
- flag: --max-length
variable: max_length
default: "500"
description: Maximum output length
steps:
- type: prompt
prompt: |
Summarize the following text in {max_length} characters or less:
{input}
provider: claude
output_var: response
output: "{response}"
```
### Categories
Choose one of these categories:
- `text-processing` - Text manipulation and analysis
- `code` - Code review, generation, analysis
- `data` - Data transformation and analysis
- `media` - Image, audio, video processing
- `productivity` - General productivity tools
- `writing` - Writing assistance and editing
- `translation` - Language translation
- `research` - Research and information gathering
### Publishing
```bash
cd my-tool/
smarttools registry publish
```
Use `--dry-run` to validate without publishing:
```bash
smarttools registry publish --dry-run
```
## Guidelines
### Do's
- Write clear, concise descriptions
- Include usage examples in your README
- Use semantic versioning (MAJOR.MINOR.PATCH)
- Test your tool before publishing
- Choose an appropriate category
### Don'ts
- Don't include secrets or API keys in prompts
- Don't publish tools that duplicate existing official tools
- Don't use misleading names or descriptions
- Don't publish empty or non-functional tools
## Versioning
Once a version is published, it cannot be modified. To make changes:
1. Update your tool locally
2. Bump the version in config.yaml
3. Run `smarttools registry publish`
## Deprecation
To deprecate a tool version, add to your config.yaml:
```yaml
deprecated: true
deprecated_message: "Use v2.0.0 instead - security fix"
replacement: "username/toolname@2.0.0"
```
## Questions?
Open an issue on the [SmartTools repository](https://gitea.brrd.tech/rob/SmartTools/issues).