PUBLISHING_CHECKLIST.md•5.52 kB
# PyPI Publishing Checklist - mcp-skillset v0.1.0
## Pre-Publication Status ✅
All tasks completed and ready for PyPI publication!
### Files Updated/Created
- [x] **pyproject.toml** - Updated with real GitHub URLs (bobmatnyc/mcp-skillset)
- [x] **CHANGELOG.md** - Created comprehensive v0.1.0 release notes
- [x] **docs/publishing.md** - Complete PyPI publishing guide
- [x] **README.md** - Added PyPI badges and updated status to "Production Ready"
- [x] **MANIFEST.in** - Created to manage distribution file inclusion
- [x] **setup.py** - Removed (not needed with pyproject.toml)
### Package Verification
```bash
✅ Package builds successfully
✅ Source distribution: dist/mcp_skills-0.1.0.tar.gz (52K)
✅ Wheel distribution: dist/mcp_skills-0.1.0-py3-none-any.whl (55K)
✅ Twine check: PASSED for both distributions
✅ All necessary files included in distribution
```
## Next Steps for Publishing
### 1. Pre-Flight Checks
Run these commands to ensure everything is ready:
```bash
# Clean and rebuild
make clean
python3 -m build
# Verify package quality
python3 -m twine check dist/*
# Run all tests
make quality
```
### 2. Test with TestPyPI (RECOMMENDED)
Before publishing to production PyPI, test with TestPyPI:
```bash
# Upload to TestPyPI
twine upload --repository testpypi dist/*
# Test installation in clean environment
python3 -m venv test-env
source test-env/bin/activate
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ mcp-skillset
# Verify functionality
mcp-skillset --version
mcp-skillset health
# Clean up
deactivate
rm -rf test-env
```
### 3. Publish to PyPI
Once TestPyPI installation works:
```bash
# Upload to production PyPI
twine upload dist/*
```
**Note**: This action cannot be undone. You cannot re-upload the same version.
### 4. Post-Publication Tasks
```bash
# Create git tag
git tag -a v0.1.0 -m "Release version 0.1.0"
git push origin v0.1.0
# Create GitHub Release
# Go to: https://github.com/bobmatnyc/mcp-skillset/releases/new
# - Tag: v0.1.0
# - Title: v0.1.0 - Initial Release
# - Description: Copy from CHANGELOG.md
# - Attach: dist/mcp_skills-0.1.0.tar.gz and dist/mcp_skills-0.1.0-py3-none-any.whl
```
### 5. Update Development Version
```bash
# Update pyproject.toml version to next dev version
# Change: version = "0.1.0" -> version = "0.2.0-dev"
git add pyproject.toml
git commit -m "chore: bump version to 0.2.0-dev"
git push origin main
```
## Package Contents Verification
### Source Distribution Contents
```
✅ CHANGELOG.md
✅ LICENSE
✅ MANIFEST.in
✅ PKG-INFO
✅ README.md
✅ pyproject.toml
✅ src/mcp_skills/ (all Python files)
✅ src/mcp_skills/VERSION
✅ src/mcp_skills/py.typed
```
### Metadata Verification
- **Name**: mcp-skillset (package name on PyPI)
- **CLI Command**: mcp-skillset (command line interface)
- **Version**: 0.1.0
- **Homepage**: https://github.com/bobmatnyc/mcp-skillset
- **Repository**: https://github.com/bobmatnyc/mcp-skillset.git
- **Issues**: https://github.com/bobmatnyc/mcp-skillset/issues
- **License**: MIT
- **Python Versions**: >=3.11
- **Author**: MCP Skills Contributors
### Entry Point Verification
```bash
# CLI entry point configured:
mcp-skillset = "mcp_skills.cli.main:cli"
```
## Quality Metrics
- **Test Coverage**: 85-96%
- **Total Tests**: 48 (37 unit + 11 integration)
- **Integration Test Time**: <10 seconds
- **Code Quality**: All linting and type checks passing
## Documentation Links
- **Publishing Guide**: [docs/publishing.md](docs/publishing.md)
- **Changelog**: [CHANGELOG.md](CHANGELOG.md)
- **README**: [README.md](README.md)
- **Architecture**: [docs/architecture/README.md](docs/architecture/README.md)
## Important Notes
### API Token Setup Required
Before publishing, you must configure PyPI API tokens:
1. Create accounts on PyPI and TestPyPI
2. Generate API tokens
3. Configure `~/.pypirc` (see docs/publishing.md)
### One-Time Actions
These have been completed and don't need to be repeated:
- ✅ GitHub URLs updated from placeholders
- ✅ Package structure verified
- ✅ Documentation created
- ✅ MANIFEST.in configured
- ✅ Unnecessary setup.py removed
### Can Be Repeated
These actions are safe to run multiple times:
- Building the package (`python3 -m build`)
- Running tests (`make quality`)
- Checking with twine (`twine check dist/*`)
- Testing with TestPyPI
### Cannot Be Undone
These actions are permanent:
- Publishing to production PyPI
- Creating git tags (can be deleted but not recommended)
- GitHub releases (can be deleted but not recommended)
## Troubleshooting
If issues occur during publishing, see the comprehensive troubleshooting section in [docs/publishing.md](docs/publishing.md).
Common issues covered:
- File already exists error
- README not rendering
- Missing dependencies
- Import errors
- Authentication failures
## Success Criteria
- [x] Package builds without errors
- [x] Twine check passes
- [x] All necessary files included
- [x] Documentation complete
- [x] Version set correctly (0.1.0)
- [x] GitHub URLs correct
- [x] Badges added to README
- [ ] TestPyPI installation successful (pending user action)
- [ ] Production PyPI publication (pending user action)
- [ ] GitHub release created (pending user action)
---
**Status**: Ready for Publication ✅
**Last Updated**: 2025-11-23
**Package Version**: 0.1.0
**Next Action**: Follow steps in [docs/publishing.md](docs/publishing.md) to publish to TestPyPI first, then production PyPI.