# 贡献指南 (Contributing Guide)

感谢你对 **OpenWebUI Extras** 感兴趣！我们非常欢迎社区贡献更多的插件、提示词和创意。

## 🤝 如何贡献

### 1. 分享提示词 (Prompts)

如果你有一个好用的提示词：
1. 在 `prompts/` 目录下找到合适的分类（如 `coding/`, `writing/`）。如果没有合适的，可以新建一个文件夹。
2. 创建一个新的 `.md` 或 `.json` 文件。
3. 提交 Pull Request (PR)。

### 2. 开发插件 (Plugins)

如果你开发了一个新的 OpenWebUI 插件 (Function/Tool)：
1. 确保你的插件代码包含完整的元数据（Frontmatter）：
   ```python
   """
   title: 插件名称
   author: 你的名字
   version: 0.1.0
   description: 简短描述插件的功能
   """
   ```
2. 将插件文件放入 `plugins/` 目录下的合适位置：
   - `plugins/actions/`: 用于添加按钮或修改消息的 Action 插件。
   - `plugins/filters/`: 用于拦截请求或响应的 Filter 插件。
   - `plugins/pipes/`: 用于自定义模型或 API 的 Pipe 插件。
   - `plugins/tools/`: 用于 LLM 调用的 Tool 插件。
3. 建议在 `docs/` 下添加一个简单的使用说明。

### 3. 改进文档

如果你发现文档有错误或可以改进的地方，直接提交 PR 即可。

## 🛠️ 开发规范

- **代码风格**：Python 代码请遵循 PEP 8 规范。
- **注释**：关键逻辑请添加注释，方便他人理解。
- **测试**：提交前请在本地 OpenWebUI 环境中测试通过。

## 📝 提交 PR

1. Fork 本仓库。
2. 创建一个新的分支 (`git checkout -b feature/AmazingFeature`)。
3. 提交你的修改 (`git commit -m 'Add some AmazingFeature'`)。
4. 推送到分支 (`git push origin feature/AmazingFeature`)。
5. 开启一个 Pull Request。

## 📦 版本更新与发布

当你更新插件时，请遵循以下流程：

### 1. 更新版本号

在插件文件的 docstring 中更新版本号（遵循[语义化版本](https://semver.org/lang/zh-CN/)）：

```python
"""
title: 我的插件
version: 0.2.0  # 更新此处
...
"""
```

### 2. 更新更新日志

在 `CHANGELOG.md` 的 `[Unreleased]` 部分添加你的更改：

```markdown
### Added / 新增
- 新功能描述

### Fixed / 修复
- Bug 修复描述
```

### 3. 发布流程

维护者会通过以下方式发布新版本：
- 手动触发 GitHub Actions 中的 "Plugin Release" 工作流
- 或创建版本标签 (`v*`)

详细说明请参阅 [发布工作流文档](docs/release-workflow.zh.md)。

再次感谢你的贡献！🚀
