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 under construction — browse artifacts, open them in context, and search or run commands from /:

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.6.tar.gz (1.0 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.6-py3-none-any.whl (132.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: requirements_as_code-0.8.6.tar.gz
  • Upload date:
  • Size: 1.0 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.6.tar.gz
Algorithm Hash digest
SHA256 bbfb1fca6c9b641e5dae9499dcc6758d16f8f2ade0063fa9a2c41ba09ef0b3ae
MD5 4ece706f7e933444e69ead3966b72e03
BLAKE2b-256 91b925ce424c478bd128fe0d9afc35f118209072ddb6de56a717aaf293b1e113

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for requirements_as_code-0.8.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6734f7e35cb51e4acf54903a17ca91e2ffe2d9505248c6504adb0e4d91bf0796
MD5 ce0c457b0f8532153ad44340c1447979
BLAKE2b-256 4f9a2f84d1c91721d68ae8d0e375bc0b974219c2185adbd124aee5430485d047

See more details on using hashes here.

Provenance

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