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.11.tar.gz (2.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.11-py3-none-any.whl (153.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: requirements_as_code-0.8.11.tar.gz
  • Upload date:
  • Size: 2.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.11.tar.gz
Algorithm Hash digest
SHA256 09e96ba5f428ab530312c15e3aa6b63aea329622d7324c91c7c28230f8e7c5bc
MD5 d6da64bae89216f2f8362eb22b66e384
BLAKE2b-256 bf83c1e585184d9ad3f07b39e6946f22c2ceee1405db6a64bb456e2cd1a4628d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for requirements_as_code-0.8.11-py3-none-any.whl
Algorithm Hash digest
SHA256 38a4435494ffb402c2f7a5cc0e2611a8da425e1334be2508fc312cfaab9aaa1b
MD5 189a0cf31543e5731a9f6a9ca97213c6
BLAKE2b-256 918fa2b5a1cde1273405810b863a5835ed1d4ac759a9abe522802c0406b07b1f

See more details on using hashes here.

Provenance

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