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 ships alongside the CLI — browse the artifact tree, read documents with their references as navigable links, assess repository health, and reach anything from the / command palette:

RAC Explorer reading an artifact: the sidebar, tabbed context panel, and status line under the rac-lantern theme

pip install 'requirements-as-code[explorer]'
rac explorer

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.8.9.tar.gz (1.1 MB 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.8.9-py3-none-any.whl (148.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: requirements_as_code-0.8.9.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • 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.8.9.tar.gz
Algorithm Hash digest
SHA256 ca8f661319305f0e07d4c42f12375fd300d388f6f342276dac1f155de664ba40
MD5 f46a70c5be27c3721e2535d7dcbf4d9c
BLAKE2b-256 04cf09bfc7ca53aafaa238330c42b7044a03f50e5cf8df58e0dd871ecfdc071c

See more details on using hashes here.

Provenance

The following attestation bundles were made for requirements_as_code-0.8.9.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.8.9-py3-none-any.whl.

File metadata

File hashes

Hashes for requirements_as_code-0.8.9-py3-none-any.whl
Algorithm Hash digest
SHA256 1150d1f34339782e2275ec09ec6bb8bdd6e356c364d25d72f03e8ddd56a04dc6
MD5 22ddd1fb93fa39d571409e0699aca289
BLAKE2b-256 8c976da08c5f09fb7748913ef36625511bea4f2c58dd36855235962bf53e3ab5

See more details on using hashes here.

Provenance

The following attestation bundles were made for requirements_as_code-0.8.9-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