Contributing to PaperSeek
June 23, 2026 ยท View on GitHub
PaperSeek is an early-stage literature-search agent. Contributions are welcome, especially around data-source adapters, ranking prompts, diagnostics, tests, and documentation.
Development Setup
git clone https://github.com/MingfengHong/paperseek.git
cd paperseek
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
On Windows PowerShell, activate the environment with:
.\.venv\Scripts\Activate.ps1
Local Checks
Run these before opening a pull request:
python -m compileall -q paperseek skills/paperseek/scripts
python -m unittest discover -s tests
node --check paperseek/static/app.js
python -m pip wheel . -w dist --no-deps
The smoke commands below make live network requests and may be skipped in offline CI:
paperseek smoke --source openalex --query "machine learning"
paperseek smoke --source crossref --query "open innovation"
Package Release
PaperSeek is published on PyPI as paperseek. Do not reuse a released version number; PyPI versions are immutable, so fixes must bump pyproject.toml to the next version such as 0.1.1.
Before uploading:
python -m pip install --upgrade build twine packaging pkginfo
rm -rf dist build paperseek.egg-info
python -m build
python -m twine check dist/*
Install the built wheel in a fresh virtual environment and verify the CLI and Web app:
python -m venv .venv-pkg-test
source .venv-pkg-test/bin/activate
python -m pip install --upgrade pip
python -m pip install dist/paperseek-*.whl
paperseek --help
python -c "import paperseek, paperseek_core"
Publish to TestPyPI first:
TWINE_USERNAME=__token__ TWINE_PASSWORD=$TESTPYPI_TOKEN \
python -m twine upload --disable-progress-bar --repository-url https://test.pypi.org/legacy/ dist/*
When testing TestPyPI, avoid dependency confusion from test packages with the same dependency names. Install PaperSeek from TestPyPI without dependencies, then install dependencies from PyPI:
python -m pip install --index-url https://test.pypi.org/simple/ --no-deps paperseek==<version>
python -m pip install --index-url https://pypi.org/simple/ \
"requests>=2.25" "pydantic>=2" "python-dateutil>=2.5" \
"urllib3>=1.25.3,<3" "typing-extensions>=4.7" "fastapi>=0.100" "uvicorn>=0.23"
After TestPyPI install and smoke tests pass, publish to PyPI:
TWINE_USERNAME=__token__ TWINE_PASSWORD=$PYPI_TOKEN \
python -m twine upload --disable-progress-bar --repository-url https://upload.pypi.org/legacy/ dist/*
Then verify the public package:
python -m venv .venv-pypi-test
source .venv-pypi-test/bin/activate
python -m pip install --upgrade pip
python -m pip install paperseek==<version>
paperseek --help
Scope Guidelines
- Keep API keys, cookies, and private credentials out of commits.
- Keep
skills/paperseek/optional. It should not be installed automatically with the Python package. - Add tests for CLI contracts, result schema changes, provider parsing, and Web API behavior.
- Treat LLM relevance scores as triage signals, not evidence that a literature review is complete.
- Do not add PDF-downloading or paywall-bypass behavior.
Pull Request Notes
Please include:
- What changed and why.
- Which checks were run.
- Whether the change affects CLI, Web UI, Skill behavior, data-source adapters, or result schema.
- Any known limitations or API-provider assumptions.