Documentation pipeline for embedded projects: validates requirements and design documents, generates PDFs, and produces a traceability matrix.
Project description
project-documentation
Documentation pipeline for embedded projects — CI-friendly, framework-agnostic.
project-documentation is a GitHub composite action and Python package that covers the full documentation lifecycle for embedded software projects:
- Validate requirements — check YAML requirement files against a JSON schema
- Validate documents — enforce frontmatter fields and required sections in Markdown architecture/design/theory documents
- Generate requirements PDF — render YAML requirements to a versioned PDF via a Markdown template
- Build documentation PDFs — convert Markdown documentation directories and YAML requirements to PDFs using Pandoc
- Traceability matrix — map requirements to Gherkin scenarios (with optional JUnit pass/fail status), output Markdown and optionally PDF
✨ Features
| Capability | Description |
|---|---|
| Requirements validation | JSON schema validation for YAML requirement files |
| Document validation | Frontmatter fields, required H2 sections, no code blocks in design docs |
| Requirements PDF | Template-driven PDF from YAML requirements |
| Documentation PDFs | Per-directory Markdown → PDF + combined requirements PDF |
| Traceability matrix | Requirements ↔ scenarios mapping with coverage statistics |
| PR comment | Idempotent PR comments (traceability matrix) |
| GitHub Action | Composite action with feature flags for each capability |
🚀 Quickstart
1. Install
pip install project-documentation
2. Use in GitHub Actions
- uses: embedded-pro/project-documentation@v0
with:
run-validate-requirements: 'true'
run-validate-documents: 'true'
run-generate-requirements-pdf: 'true'
run-build-documentation-pdfs: 'true'
run-traceability-matrix: 'true'
version: ${{ github.ref_name }}
See docs/usage.md for the full input/output reference.
3. Run from the command line
# Validate requirements against a JSON schema
project-documentation-validate-requirements \
--schema documentation/tools/requirement.schema.json \
--requirements-dir documentation/requirements
# Validate Markdown documentation
project-documentation-validate-documents \
--documents-dir documentation \
--doc-type architecture
# Generate requirements PDF
project-documentation-generate-requirements-pdf \
--requirements-dir documentation/requirements \
--template documentation/templates/requirements.md \
--output documentation/output/requirements.pdf
# Build all documentation PDFs
project-documentation-build-pdfs \
--version v1.2.3 \
--output-dir docs-pdf \
--docs-dirs documentation/architecture documentation/design documentation/theory \
--requirements-dir documentation/requirements
# Generate traceability matrix
project-documentation-traceability-matrix \
--requirements-dir documentation/requirements \
--features-dir integration_tests/software_in_the_loop/features \
--output docs-pdf/traceability-matrix.md \
--junit-xml sil-test-report.xml
📚 Documentation
| File | Contents |
|---|---|
| docs/usage.md | CLI flags, action inputs/outputs, examples |
| CONTRIBUTING.md | Dev setup, testing, release process |
| CHANGELOG.md | Version history |
⚠️ System dependencies
The PDF-generating capabilities require:
pandoc— document converterpdflatex(viatexlive-latex-recommended,texlive-latex-extra,texlive-fonts-recommended)
The GitHub Action installs these automatically when any PDF feature flag is enabled.
📄 License
Apache-2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file project_documentation-0.2.0.tar.gz.
File metadata
- Download URL: project_documentation-0.2.0.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f0c2e7816621b873ded4549789d6fb12f688ad98fa5922804a36d037344d97a
|
|
| MD5 |
6e5da01e53b5cc54be693396fbade969
|
|
| BLAKE2b-256 |
6f7608e672896318de8cf4389bf07425896b86c6da42c3131ad8810f5a9456dd
|
Provenance
The following attestation bundles were made for project_documentation-0.2.0.tar.gz:
Publisher:
release.yml on embedded-pro/project-documentation
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
project_documentation-0.2.0.tar.gz -
Subject digest:
4f0c2e7816621b873ded4549789d6fb12f688ad98fa5922804a36d037344d97a - Sigstore transparency entry: 1621140615
- Sigstore integration time:
-
Permalink:
embedded-pro/project-documentation@4b61de3b41661df6d7ee69f5091c27be8b557ee9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/embedded-pro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4b61de3b41661df6d7ee69f5091c27be8b557ee9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file project_documentation-0.2.0-py3-none-any.whl.
File metadata
- Download URL: project_documentation-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f7210b01ae0347ec1aceab36ff7bb2f364e72d4fa83edb8d3aa83ec9f3a7f29
|
|
| MD5 |
c51e654967e400448a7de5d099af162b
|
|
| BLAKE2b-256 |
52d40af96beef3af41f55c731119575b2e4f7e0e64c117ab05b5a8a89cac6d0e
|
Provenance
The following attestation bundles were made for project_documentation-0.2.0-py3-none-any.whl:
Publisher:
release.yml on embedded-pro/project-documentation
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
project_documentation-0.2.0-py3-none-any.whl -
Subject digest:
4f7210b01ae0347ec1aceab36ff7bb2f364e72d4fa83edb8d3aa83ec9f3a7f29 - Sigstore transparency entry: 1621140799
- Sigstore integration time:
-
Permalink:
embedded-pro/project-documentation@4b61de3b41661df6d7ee69f5091c27be8b557ee9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/embedded-pro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4b61de3b41661df6d7ee69f5091c27be8b557ee9 -
Trigger Event:
push
-
Statement type: