Skip to main content

A minimal placeholder package for the future Ritebook project.

Project description

ritebook

Ritebook is currently a minimal Python package placeholder intended to reserve the package name on PyPI while the project is being designed.

Requirements

  • Python 3.13 or newer
  • uv for dependency management and command execution

Development setup

Install development dependencies:

uv sync --group dev

Run local quality checks:

uv run ruff format .
uv run ruff check .
uv run mypy .
uv run pytest

Build the package distributions:

uv build

Publisher skill index generation

Maintainers can validate skill headers and generate a reviewable skill catalog index from an explicit skills root:

uv run ritebook lint-skills --skills-root <path>

The lint-skills command recursively discovers SKILL.md files under the skills root and validates their required Agent Skill headers without writing an index file.

uv run ritebook publish-index --skills-root <path> --index-name <name>

The --skills-root option is required so the command only scans the intended skills directory. The --index-name option is required and must be a stable index name, either a kebab-case identifier such as company-skills or an owner/repository-style name such as ondrej-winter/ritebook-shelf; it is written to the generated index metadata as the default consumer registry name. The publish-index command reuses the same validation flow as lint-skills and refuses to write or overwrite ritebook-index.json when any discovered skill is invalid. When validation succeeds, Ritebook writes the canonical index file ritebook-index.json in the current working directory.

Review the generated ritebook-index.json before committing it with the related skill changes.

Consumer index registry

Users can register and refresh Git-backed Ritebook skill indexes. Listing and skill installation are not part of this milestone.

Register a Git URL source:

uv run ritebook add-index --source git@github.com:company/internal-skills.git

Register an already-cloned local Git repository without Ritebook mutating it:

uv run ritebook add-index --source ./internal-skills

Override the local effective index name or replace an existing registration:

uv run ritebook add-index \
  --source git@github.com:company/internal-skills.git \
  --name platform-skills \
  --force

Refresh a registered index from its remembered Git source:

uv run ritebook update-index --name platform-skills

By default, Ritebook stores registry metadata and cached index contents under:

~/.config/ritebook/indexes.json
~/.cache/ritebook/indexes/<effective-index-name>/ritebook-index.json
~/.cache/ritebook/git/<source-cache-id>/

When an effective index name includes an owner separator, Ritebook keeps the registry name unchanged but flattens the cache directory by replacing / with _; for example, ondrej-winter/ritebook-shelf is cached under ~/.cache/ritebook/indexes/ondrej-winter_ritebook-shelf/ritebook-index.json.

Tests and automation can override these locations:

uv run ritebook add-index \
  --source <git-url-or-local-git-repo> \
  --registry-path <path-to-indexes.json> \
  --cache-root <cache-directory>

uv run ritebook update-index \
  --name <effective-index-name> \
  --registry-path <path-to-indexes.json> \
  --cache-root <cache-directory>

Consumer registration requires published schema version 1 indexes to include index.name metadata. Legacy ritebook-index.json files without that metadata are rejected instead of guessing a name.

Publishing

The GitHub Actions workflow in .github/workflows/ci-cd.yaml runs formatting, linting, type checking, tests, package builds, patch releases, and PyPI publishing.

During the early project lifecycle, releases stay on the 0.1.x line and every non-bot push to master increments the patch version. The CI/CD workflow uses Python Semantic Release to:

  1. run the quality gate,
  2. bump pyproject.toml from 0.1.x to the next patch version,
  3. commit the version bump,
  4. create the matching v0.1.x tag, and
  5. publish a GitHub release without maintaining a changelog, and
  6. publish the built distributions to PyPI in the same workflow run.

The release job skips commits authored by github-actions[bot] so the automated version-bump commit does not trigger another release. When the project is ready to move beyond patch-only 0.1.x releases, the same Semantic Release tooling can be used for normal commit-derived SemVer releases.

For the current solo-maintainer workflow, master can allow direct pushes and CI/CD verifies changes after each push. Repository rules should allow GitHub Actions to write release bump commits and tags.

Publishing uses PyPI Trusted Publishing through GitHub Actions OIDC. Before the first release, configure a trusted publisher for this repository in the PyPI project settings:

  • Repository owner: ondrej-winter
  • Repository name: ritebook
  • Workflow filename: ci-cd.yaml
  • Environment name: pypi

Architecture direction

Future business capabilities should be implemented as vertical feature slices under src/ritebook/features/, keeping domain, application ports/use cases, and adapters separated according to hexagonal architecture principles.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ritebook-0.1.9.tar.gz (245.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ritebook-0.1.9-py3-none-any.whl (54.9 kB view details)

Uploaded Python 3

File details

Details for the file ritebook-0.1.9.tar.gz.

File metadata

  • Download URL: ritebook-0.1.9.tar.gz
  • Upload date:
  • Size: 245.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ritebook-0.1.9.tar.gz
Algorithm Hash digest
SHA256 cabe7d57c0f76a9297ef3c9a9da2a5fffe5052f9c0db213006c5650d4ee42d41
MD5 c48a623385f7511bd47e8a4ea586c99f
BLAKE2b-256 3a502350176c36f6da22030001a4902533dfaf3c70b61ec97350ecc1b3f664a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ritebook-0.1.9.tar.gz:

Publisher: ci-cd.yaml on ondrej-winter/ritebook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ritebook-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: ritebook-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ritebook-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 f0df9f67252ebad259d3ddd653c067e3d432ccdd931bdabae12b2dd017057d75
MD5 3c5794ff7f742f506fc164c1c3f6357e
BLAKE2b-256 2b3be06f43fe1ace05014ae201524985f0a663972e0fbc62228a1de6c775084c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ritebook-0.1.9-py3-none-any.whl:

Publisher: ci-cd.yaml on ondrej-winter/ritebook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page