Skip to main content

RAC — lint and diff product requirements written in Markdown.

Project description

Requirements as Code

CI PyPI

Treat product knowledge like source code.

RAC is a command-line tool for managing requirements, decisions, roadmaps, prompts, and design artifacts as plain Markdown, right inside your Git repository.

pip install requirements-as-code

What is RAC?

The code is structured, the tests are automated, the infrastructure is versioned — but the reasoning behind what you build is scattered across documents, tickets, chats, and AI conversations. RAC brings that knowledge back into the repository.

You write product thinking in Markdown; RAC validates it, inspects it, and connects it — so it stays durable, reviewable, and usable as context for both humans and AI. No proprietary formats, no hosted platform, no lock-in.

Who is it for?

  • Software and product teams who want the why behind their software versioned alongside the code.
  • AI-native teams who need structured, durable context instead of more scattered chat history.

Install

Requires Python 3.11+.

pip install requirements-as-code
# or
uv tool install requirements-as-code

Quick Start

rac validate requirement.md   # check one artifact
rac validate rac/             # check every artifact in a directory
rac inspect requirement.md    # see its type and completeness
rac stats rac/                # summarize a directory of artifacts
rac review rac/               # full repository review, worst problems first

New to RAC? Walk through your first artifact in five minutes: docs/quickstart.md.

Supported Artifact Types

  • Requirements — what needs to exist
  • Decisions — why choices were made (ADRs)
  • Roadmaps — where the product is heading
  • Prompts — reusable AI collaboration patterns
  • Designs — product experience thinking

Everything stays plain Markdown — see docs/artifacts.md.

Documentation

How RAC earns trust

RAC asks you to trust it with your product knowledge, so it holds itself to the same standard it applies to your repository:

  • It dogfoods itself. RAC's own planning corpus under rac/ is validated by RAC in CI (rac validate rac/, rac relationships rac/ --validate, rac review rac/) — if the tool's rules break the tool's own artifacts, the build fails.
  • Output is a contract. Golden tests pin the CLI's human and JSON output byte-for-byte; any change to what RAC prints is reviewed as a product change.
  • JSON is versioned. Machine-readable output carries a schema_version and only changes additively.

Project Status

RAC is early and evolving quickly. A terminal Explorer for browsing your knowledge base is planned. Contributions, ideas, and experiments are welcome — see CONTRIBUTING.md.

License

MIT

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

requirements_as_code-0.7.13.tar.gz (968.0 kB view details)

Uploaded Source

Built Distribution

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

requirements_as_code-0.7.13-py3-none-any.whl (91.0 kB view details)

Uploaded Python 3

File details

Details for the file requirements_as_code-0.7.13.tar.gz.

File metadata

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

File hashes

Hashes for requirements_as_code-0.7.13.tar.gz
Algorithm Hash digest
SHA256 a641355d2c6a60dc4f109ae0c72b0b4c82f1f90dc0df0c7ef8905610a6c952c0
MD5 daaaa210540d110a4b387cd6cf952fc6
BLAKE2b-256 ebef9c492ff495ba59147da99ccbb765758db8a5008575b907f5a3228e6bc18f

See more details on using hashes here.

Provenance

The following attestation bundles were made for requirements_as_code-0.7.13.tar.gz:

Publisher: python-publish.yml on tcballard/requirements-as-code

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

File details

Details for the file requirements_as_code-0.7.13-py3-none-any.whl.

File metadata

File hashes

Hashes for requirements_as_code-0.7.13-py3-none-any.whl
Algorithm Hash digest
SHA256 2856496362ae901c2684a4951e53d83bcfa47ea8e844898df36f7f63bd4b2dd6
MD5 07de124dedfb1df88cf36d3a3b3565c8
BLAKE2b-256 b88328291fbb064d6d577bfb8e26d664f0a15bcaa87c51cd87963e9c5f09d0e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for requirements_as_code-0.7.13-py3-none-any.whl:

Publisher: python-publish.yml on tcballard/requirements-as-code

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