Skip to main content

pprose

Practical Prose tooling: deterministic metrics, rubric scoring, evaluation reports, and comparisons for practical documents.

pprose is the command-line companion to Practical Prose, a reference system and evaluation toolkit for writing that helps a reader understand, decide, do, verify, or maintain something.

Install

The distribution and command are both pprose. After publication, run with no install using uv:

uvx pprose <command> ...

Or install it:

uv tool install pprose

Commands

pprose metrics doc.md                              # deterministic metrics for a document
pprose report from-metrics doc.md --out doc.eval.md  # build an eval report stub
pprose score doc.eval.md --model opus              # LLM rubric scoring (Anthropic, OpenAI, or Google)
pprose compare a.eval.md b.eval.md                 # compare N eval reports
pprose render doc.eval.md                          # render an eval report as static HTML

pprose about                                       # the project narrative (bundled README)
pprose skill                                       # workflow skills overview + routing pointers
pprose list                                        # every bundled guideline, shortcut, runbook, skill
pprose guidelines <name>                           # print one style guide (no name lists them)
pprose install --profile common-docs               # common documentation policy only
pprose install --profile practical-prose           # complete suite (also the default)
pprose install --skill pprose-de-slop               # focused, runtime-free AI-tell cleanup
pprose install --skill pprose-review               # exact selection; repeat --skill as needed
pprose install --global --profile common-docs      # user-wide skills, no instruction files

pprose install runs in one of two scopes:

  • Project (--project, the default when cwd is inside a git repo) writes into <repo>/.agents/skills/ (Codex, Gemini CLI, pi), <repo>/.claude/skills/ (Claude Code), a marker-bounded block in <repo>/AGENTS.md, and a minimal <repo>/CLAUDE.md bridge or managed block so Claude Code sees the standing policy.
  • User-global (--global) writes into ~/.agents/skills/pprose-*/ and ~/.claude/skills/pprose-*/, making the skills available across every project. Skips ~/.codex/AGENTS.md so the global instruction file stays user-authored.

Outside an unambiguous project context ($HOME, a non-git directory), --project or --global must be passed explicitly; there is no silent default. $HOME is always refused under --project; use --global for a user-wide install. Pass --profile=common-docs|practical-prose to select a public skill set, or repeat --skill <name> for an exact custom set. Pass --surfaces=portable,claude,agents-md,claude-md (or --surfaces=all, the default) to select destinations within the chosen scope, or --pin <version> to override the version baked into CLI-backed skill bootstrap lines. Changing the selection removes deselected skill directories only when they carry a pprose-generated format marker; unmarked user content and newer-format artifacts are preserved.

Every generated artifact carries a format=fNN stamp; re-running install is idempotent, and a newer-format artifact is never clobbered by an older pprose. CLI-backed generated skills bake in a pinned, local-first invocation (pprose if on PATH, else uvx pprose@<version>). pprose-common-edit and pprose-de-slop instead bundle their complete guideline references and need no runtime. Cross-scope coexistence is the supported pattern: project-scope skills shadow user-scope skills of the same name in modern agents. Run pprose --help or pprose install --help for full options.

Upgrading: new releases can add guidelines, shortcuts, runbooks, and skills. Because installed skills pin the version that installed them, a repo picks up additions only after you upgrade pprose and re-run install in each installed scope (uvx pprose@latest install, or uv tool upgrade pprose && pprose install); re-running reconciles the scope: artifacts and baked pins refresh, skills new in the release are added, and deselected generated skills are pruned safely. Skills added via the skills CLI refresh by re-running npx skills add jlevy/practical-prose[@skill]. See installation.md for the full upgrade notes.

score requires the API key for the chosen provider (ANTHROPIC_API_KEY, OPENAI_API_KEY, or GOOGLE_API_KEY); the package auto-loads .env and .env.local from the current directory hierarchy and $HOME.

Project Docs

License

The package code is MIT licensed (the license field in package metadata). The wheel also bundles practical-prose content (the guidelines, rubric, runbooks, and other prose under resources/), which is licensed under Creative Commons Attribution 4.0 (CC BY 4.0). See the repository LICENSE.

Metadata

Release files for pprose 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pprose 0.4.0
File Size Uploaded
pprose-0.4.0.tar.gz 438.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pprose 0.4.0
File Interpreter ABI Platform
pprose-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 718.8 kB

Release files / pprose-0.4.0.tar.gz

Download URL pprose-0.4.0.tar.gz
Size 438.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bac3767e3e8537c371a7555b7a57ad0ba1ca65084f06c7f7f706ecc5b3beb34b
BLAKE2b-256 checksum
How to use checksums
d53eb5f585058b4dfca69ef1bd0fe21518d170605bcc92fcd20204e4f97e196b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pprose-0.4.0-py3-none-any.whl

Download URL pprose-0.4.0-py3-none-any.whl
Size 280.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
52e2c921f0c1852d94b66649f0a239f1809b2c0ddf09d84c19721a09babe31ed
BLAKE2b-256 checksum
How to use checksums
c9d0f130d0bf7c9102958680971e9e2190df7049428256ac46055fee69025f61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page