Skip to content

Setup

Prerequisites

  • Python 3.13 (GIL only) or 3.14+ — see Supported runtimes
  • mise — installs the pinned dev toolchain and runs tasks
  • uv — dependency and environment manager

First steps

git clone https://github.com/jr2804/parsecraft.git
cd parsecraft
mise dev        # uv sync -U --dev --all-extras --all-groups
mise test       # pytest with the 100% coverage gate

mise dev is idempotent; re-run it after dependency changes. mise install provisions the dev toolchain (ruff, ty, rumdl, codespell, clean-sort, and the optional AI tooling). See Tech stack.

Tasks

Task Runs Purpose
mise dev uv sync -U --dev --all-extras --all-groups Install dependencies
mise test uv run pytest --cov=parsecraft Tests with the 100% coverage gate
mise lint ruff check src/ tests/ --fix Lint and autofix
mise typecheck ty check src/ tests/ Static type checking
mise spell codespell src/ tests/ Spell check
mise format clean-sort + ruff format + import sort Format Python
mise format-md rumdl fmt Lint and format Markdown
mise docs uv run --link-mode=copy zensical build Build the docs site
mise all test + lint + spell + format + format-md + docs Full quality gate
mise clean remove build artifacts Clean build/, dist/, caches

mise lint and mise format-md rewrite files in place. Run them before committing; a clean tree is expected after a full mise all.

Project layout

parsecraft/
├── src/parsecraft/
│   ├── adapters/      # input adapters (Markdown → IR)
│   ├── assets/        # pinned model-asset cache and downloads
│   ├── backends/      # backend protocol and registry
│   ├── cli/           # Typer app and commands
│   ├── config/        # layered configuration engine
│   └── ir/            # canonical IR and Markdown projection
├── tests/             # pytest suite (100% coverage gate)
├── docs/              # Zensical documentation site
├── examples/
│   └── third_party_backend/
├── scripts/
├── .config/mise/      # task and tool configuration
└── .github/workflows/ # CI and release

Pre-commit

pre-commit install
pre-commit run --all-files

The hooks run a subset of the quality gate on every commit.

Template

The repository is generated from copier-uv-plus; answers live in .copier-answers.yml. Run copier update to pull template changes.