# Release Checklist for Obsidian Community Plugin
This checklist ensures the plugin meets all requirements for Obsidian community plugin submission.
## Pre-Release Preparation
### ✅ **Code Quality & Structure**
- [ ] All TypeScript compilation errors resolved
- [ ] ESLint passes without errors
- [ ] All functionality tested in Obsidian
- [ ] Plugin works on both desktop platforms (Windows, macOS, Linux)
- [ ] No sensitive information (API keys, tokens) in codebase
- [ ] All TODO comments resolved or documented for future releases
### ✅ **Required Files**
- [ ] `manifest.json` - Contains correct plugin metadata
- [ ] `main.js` - Compiled plugin code (generated by build)
- [ ] `styles.css` - Plugin styles (even if empty)
- [ ] `versions.json` - Version compatibility mapping
- [ ] `README.md` - Comprehensive user documentation
- [ ] `LICENSE` - Open source license file
### ✅ **Manifest Validation**
- [ ] `id` is unique and follows naming conventions
- [ ] `name` is descriptive and user-friendly
- [ ] `description` clearly explains plugin functionality
- [ ] `author` and `authorUrl` are correct
- [ ] `version` matches package.json and git tag
- [ ] `minAppVersion` is set appropriately
- [ ] `isDesktopOnly` set to true (this plugin requires desktop features)
### ✅ **Package.json Validation**
- [ ] `author` field matches manifest.json
- [ ] `version` matches manifest.json
- [ ] `description` is clear and matches manifest
- [ ] Dependencies are properly categorized (dev vs runtime)
- [ ] No unnecessary dependencies included
### ✅ **Documentation Quality**
- [ ] README explains what the plugin does clearly
- [ ] Installation instructions are comprehensive
- [ ] Configuration steps are detailed for all supported clients
- [ ] Troubleshooting section addresses common issues
- [ ] Technical concepts (MCP, Claude Code) are explained for general users
- [ ] Screenshots or GIFs demonstrate key features (optional but recommended)
## Build & Testing
### ✅ **Build Process**
- [ ] `bun run build` completes without errors
- [ ] Generated `main.js` file is not too large (< 5MB recommended)
- [ ] All dependencies are properly bundled
- [ ] No external runtime dependencies required
### ✅ **Functionality Testing**
- [ ] Plugin loads successfully in Obsidian
- [ ] All MCP tools work as expected
- [ ] WebSocket server starts and accepts connections
- [ ] HTTP server starts and accepts connections
- [ ] Claude Code integration works
- [ ] Claude Desktop integration works (if applicable)
- [ ] Terminal functionality works (if enabled)
- [ ] Error handling works gracefully
- [ ] Plugin can be disabled and re-enabled without issues
### ✅ **Compatibility Testing**
- [ ] Test on multiple Obsidian versions (minimum supported and latest)
- [ ] Test with different vault configurations
- [ ] Test port conflict scenarios
- [ ] Test with and without other plugins enabled
## Release Creation
### ✅ **Version Management**
- [ ] Update version using `bun run version patch/minor/major`
- [ ] All version files updated consistently:
- `package.json`
- `manifest.json`
- `versions.json`
- [ ] Git tag created with exact version number (no 'v' prefix)
### ✅ **GitHub Release**
- [ ] Create GitHub release with version number as tag
- [ ] Release title follows format: "v1.2.3"
- [ ] Release description includes:
- New features
- Bug fixes
- Breaking changes (if any)
- Installation/update instructions
- [ ] Upload required files as binary attachments:
- `manifest.json`
- `main.js`
- `styles.css`
- [ ] Verify files are correctly attached and downloadable
### ✅ **Release Verification**
- [ ] Download release files and test manual installation
- [ ] Verify plugin works when installed from release files
- [ ] Check that all bundled dependencies work correctly
## Community Submission
### ✅ **Repository Preparation**
- [ ] Repository is public
- [ ] Repository has clear description
- [ ] Repository README matches plugin functionality
- [ ] Repository name is descriptive
- [ ] All sensitive files are properly gitignored
### ✅ **Submission Process**
- [ ] Fork `obsidianmd/obsidian-releases` repository
- [ ] Add plugin entry to `community-plugins.json`:
```json
{
"id": "claude-code-mcp",
"name": "Claude Code MCP",
"author": "iansinnott",
"description": "Connect Claude Code and other AI tools to your notes using Model Context Protocol (MCP).",
"repo": "iansinnott/obsidian-claude-code-mcp"
}
```
- [ ] Verify JSON syntax is valid
- [ ] Plugin entry added to END of the list
- [ ] Submit pull request with proper title and description
- [ ] Follow submission checklist in PR template
### ✅ **Post-Submission**
- [ ] Monitor PR for reviewer feedback
- [ ] Address any requested changes promptly
- [ ] Be prepared to explain technical decisions
- [ ] Update documentation if requested
## Quality Assurance
### ✅ **Security Review**
- [ ] No hardcoded secrets or API keys
- [ ] Network requests are minimal and necessary
- [ ] File operations respect vault boundaries
- [ ] No arbitrary code execution vulnerabilities
- [ ] Dependencies are from trusted sources
### ✅ **Performance Review**
- [ ] Plugin doesn't significantly slow down Obsidian startup
- [ ] Memory usage is reasonable
- [ ] No memory leaks detected
- [ ] CPU usage is minimal when idle
- [ ] Large files handled efficiently
### ✅ **User Experience**
- [ ] Error messages are helpful and actionable
- [ ] Settings UI is intuitive
- [ ] Plugin behavior is predictable
- [ ] Documentation covers edge cases
- [ ] Graceful degradation when dependencies unavailable
## Notes
- **Repository Name vs Plugin ID**: The repository is named `obsidian-claude-code-mcp` while the plugin ID is `claude-code-mcp`. This is intentional and clearly documented.
- **Desktop Only**: This plugin requires desktop-specific features (WebSocket servers, terminal access) and is properly marked as desktop-only.
- **External Dependencies**: The plugin bundles all necessary dependencies and doesn't require users to install additional software beyond Claude Code or Claude Desktop.
- **Multiple Vaults**: The plugin supports multiple vaults by using different ports, with automatic conflict detection and resolution guidance.
## Submission Timeline
Typical Obsidian community plugin review process:
1. **Submission**: Submit PR to obsidian-releases
2. **Initial Review**: 1-2 weeks for initial feedback
3. **Revisions**: Time varies based on required changes
4. **Approval**: Final approval and merge
5. **Availability**: Plugin appears in community plugin directory within 24 hours
## Support After Release
- Monitor GitHub issues for user reports
- Respond to community questions promptly
- Keep documentation updated
- Plan regular maintenance releases
- Consider feedback for future features