md2reqif
Convert Markdown requirements documents to ReqIF XML and back. A lightweight bridge between plain-text authoring and systems engineering toolchains (IBM DOORS, PTC Integrity, Polarion, etc.).
What it does
- Parses structured Markdown with YAML front matter into an internal requirements model
- Generates standards-compliant ReqIF XML with SPEC-OBJECTs, DATATYPES, and SPECIFICATIONS
- Reverses ReqIF back to Markdown for human review and editing
- Validates ReqIF files for XML well-formedness
Install
# Recommended — isolated tool install
uv tool install md2reqif
# Or with pip
pip install md2reqif
Quick start
Given requirements.md:
# Braking System Requirements
## Functional Requirements
### REQ-BRAKE-001: Emergency Braking Response Time
- Status: Draft
- Priority: High
- Type: Functional
The system SHALL apply emergency braking within 100ms of detecting a collision event.
Convert to ReqIF:
md2reqif convert requirements.md -o requirements.reqif
Convert back to Markdown:
md2reqif reverse requirements.reqif -o recovered.md
Markdown format reference
---
module: Module Name # optional: populates ReqIF TITLE
version: 1.0 # optional
author: Your Name # optional
date: 2024-01-15 # optional
---
# Document Title
## Section Name
### REQ-PREFIX-NNN: Requirement Title
- Status: Draft|Approved|Rejected|Obsolete
- Priority: Critical|High|Medium|Low
- Type: Functional|Performance|Interface|Constraint|Informational|Safety
- CustomKey: any value
Requirement description using SHALL language. Keep it to one or two sentences.
ID format: REQ- followed by alphanumeric segments separated by hyphens. If no matching ID is found, one is auto-generated from the section name.
CLI commands
| Command | Description |
|---|---|
md2reqif convert INPUT [-o OUTPUT] [--pretty/--no-pretty] |
Convert Markdown to ReqIF XML |
md2reqif reverse INPUT [-o OUTPUT] |
Convert ReqIF XML back to Markdown |
md2reqif validate INPUT |
Check ReqIF file for XML well-formedness |
md2reqif --version |
Print version |
Agent usage
See SKILL.md for detailed guidance on using this tool in AI agent pipelines, including the full Markdown format specification, metadata key reference, and writing tips for requirements authoring.
License
MIT
Metadata
Release files for md2reqif 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| md2reqif-0.1.0.tar.gz | 10.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| md2reqif-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.5 kB
Release files / md2reqif-0.1.0.tar.gz
| Download URL | md2reqif-0.1.0.tar.gz |
|---|---|
| Size | 10.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
51dc24198d0312da2cdb473a824cacf47fb6357db9c799825d55037544c1b612
|
|
BLAKE2b-256 checksum How to use checksums |
6baf09a9f2cc7659f9042db902c4ae5345ee3ea7d096e3b94b3294b8e058cc33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / md2reqif-0.1.0-py3-none-any.whl
| Download URL | md2reqif-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c50827d91fe57a72bc662d2953115c682e16d8dd3f26d1d90703f33d9b99d5a2
|
|
BLAKE2b-256 checksum How to use checksums |
fb54a79e4d77cc9f7ea354875b2753b91b11ddee5a6a49d2c1f09b99c53645c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|