Skip to main content

Documentation pipeline for embedded projects: validates requirements and design documents, generates PDFs, and produces a traceability matrix.

Project description

project-documentation

CI PyPI Python License

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 converter
  • pdflatex (via texlive-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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project_documentation-0.2.0.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_documentation-0.2.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

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

Hashes for project_documentation-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4f0c2e7816621b873ded4549789d6fb12f688ad98fa5922804a36d037344d97a
MD5 6e5da01e53b5cc54be693396fbade969
BLAKE2b-256 6f7608e672896318de8cf4389bf07425896b86c6da42c3131ad8810f5a9456dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for project_documentation-0.2.0.tar.gz:

Publisher: release.yml on embedded-pro/project-documentation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file project_documentation-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for project_documentation-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f7210b01ae0347ec1aceab36ff7bb2f364e72d4fa83edb8d3aa83ec9f3a7f29
MD5 c51e654967e400448a7de5d099af162b
BLAKE2b-256 52d40af96beef3af41f55c731119575b2e4f7e0e64c117ab05b5a8a89cac6d0e

See more details on using hashes here.

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

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