git clone https://github.com/dacrystal/scriptcast.git
cd scriptcast
pip install -e ".[dev]"make test # pytest with coverage
make lint # ruff
make typecheck # mypy
make all # all threeAll three must pass before opening a PR. CI enforces this.
Use conventional commits — the changelog is generated from them:
feat: add SC highlight directivefix: expect session drops last output linedocs: clarify filter-add chainingchore: bump ruff version
See DIRECTIVES.md for the full guide.
- Tests pass locally (
make all) - New behaviour is covered by tests
- CHANGELOG.md has an entry (or the auto-PR from CI will add one)
- DIRECTIVES.md updated if you added or changed a directive
- Ensure
CHANGELOG.mdis up to date - Bump version in
pyproject.toml git tag v0.X.0 && git push --tags- The
release.ymlworkflow publishes to PyPI and creates a GitHub Release
PyPI uses Trusted Publisher (OIDC) — no API key needed. Configure at:
pypi.org → your project → Publishing → Add publisher (environment: release)