Skip to main content

MkDocs plugin that renders process timeline shortcode content from YAML.

Project description

mkdocs-process-timeline

mkdocs-process-timeline renders a process timeline from YAML with a Markdown shortcode.

It is an MkDocs plugin that:

  • finds ::process-timeline{file="..."} in page Markdown
  • loads a YAML file relative to docs_dir
  • validates the YAML structure
  • replaces the shortcode with rendered HTML
  • automatically includes the bundled process-timeline.css asset

The rendered output contains:

  • a summary header with counts
  • a dark clickable timeline journey
  • anchor links to detailed milestone sections
  • responsive milestone detail cards
  • no JavaScript

Install

pip install mkdocs-process-timeline

For local development:

pip install -e ".[dev]"

MkDocs configuration

Enable the plugin in mkdocs.yml:

plugins:
  - search
  - mkdocs-process-timeline

No extra CSS or JavaScript setup is required. The plugin injects its stylesheet automatically.

Usage

Add the shortcode to a page:

::process-timeline{file="processes/delivery.yml"}

Whitespace around file= is also supported:

::process-timeline{ file = "processes/delivery.yml" }

The YAML file path is resolved relative to docs_dir, not relative to the current Markdown file.

Example:

  • if docs_dir is docs
  • and the shortcode is ::process-timeline{file="processes/delivery.yml"}

then the plugin reads:

  • docs/processes/delivery.yml

Minimal example

Markdown page:

# Delivery Process

::process-timeline{file="processes/delivery.yml"}

YAML file:

title: Delivery Process
description: A simple example showing how to define a delivery workflow in YAML.
milestones:
  - id: intake
    title: Intake
    summary: Capture the incoming request and verify completeness.
    description: Review the request, collect missing inputs, and log the work item.
    duration_weeks: 1
    contact:
      name: Jordan Smith
      role: Intake Coordinator
      email: jordan@example.com
      support:
        label: Open intake support request
        url: https://example.com/support/intake
    references:
      - label: Intake checklist
        url: https://example.com/intake-checklist
    tasks:
      - title: Register request
        description: Create the delivery request record in the intake workflow.
        url: https://example.com/docs/register-request
      - title: Confirm mandatory inputs
        description: Verify the requester attached the required initial materials.
        url: https://example.com/docs/confirm-inputs
  - id: planning
    title: Planning
    summary: Convert the request into a structured delivery plan.
    description: Agree scope, owners, and target dates before execution begins.
    duration_weeks: 2
    contact:
      name: Casey Taylor
    tasks:
      - title: Define milestones
        description: Break the delivery into measurable execution checkpoints.

YAML schema

Top-level fields:

  • title: string
  • description: string
  • milestones: non-empty list

Milestone fields:

  • id: string, unique
  • title: string
  • summary: string
  • description: string
  • duration_weeks: positive int or float
  • contact:
    • name: string
    • role: optional string
    • email: optional string
    • support: optional
      • label: string
      • url: string
  • references: optional
    • label: string
    • url: string
  • tasks: list of objects
    • title: string
    • description: string
    • url: optional string

Validation rules

The plugin validates input before rendering.

Top-level validation:

  • the YAML file must exist
  • the YAML root must be a mapping
  • milestones must be a non-empty list

Milestone validation:

  • milestone ids must be unique
  • id, title, summary, description are required non-empty strings
  • duration_weeks must be a positive number
  • contact must be a mapping
  • contact.name is required
  • when present, contact.role must be a non-empty string
  • when present, contact.email must be a string
  • when present, contact.support must be a mapping with label and url
  • when present, references must be a list of mappings with label and url
  • tasks must be a list of mappings
  • each task must contain title and description
  • when present, task.url must be a non-empty string

Validation errors include the filename and milestone id where possible.

Rendered structure

For each rendered timeline:

  • timeline cards link to #milestone-{id}
  • detailed milestone sections use matching id="milestone-{id}"
  • summary stats include:
    • milestones
    • estimated duration
    • required tasks
    • references
  • task titles render as links only when task.url is present
  • support renders only when contact.support is present
  • references panel renders only when references exist

Development

Install the project in editable mode:

python3 -m pip install -e ".[dev]"

Run tests:

pytest

Build the example site:

mkdocs build -f examples/basic/mkdocs.yml

Build distributable artifacts:

python3 -m build

Check the generated distributions before publishing:

python3 -m twine check dist/*

Serve the example locally:

mkdocs serve -f examples/basic/mkdocs.yml

Then open:

  • http://127.0.0.1:8000/

Example

See examples/basic for a working sample project:

Publishing

Typical release flow:

python3 -m pip install -e ".[dev]"
pytest
mkdocs build -f examples/basic/mkdocs.yml
python3 -m build
python3 -m twine check dist/*
python3 -m twine upload dist/*

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

mkdocs_process_timeline-0.1.1.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

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

mkdocs_process_timeline-0.1.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_process_timeline-0.1.1.tar.gz.

File metadata

  • Download URL: mkdocs_process_timeline-0.1.1.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mkdocs_process_timeline-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d2905cc80ce19945c9a54eb420672d7dadf91e9c9ebe12537bf2eff0e4981169
MD5 66943f2e1100815f42e3c4e6d3a08426
BLAKE2b-256 2c7fa44544fef1ab54106b70fe7f7781ac4b9f3bcdc0fdfe0b2f21f05d35653d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mkdocs_process_timeline-0.1.1.tar.gz:

Publisher: publish.yml on lzelga/mkdocs-vibe

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

File details

Details for the file mkdocs_process_timeline-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_process_timeline-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5ec3685eb8762a3f51b444528b91dad51d5452601525ae45f0c280d7e4240fea
MD5 6509cf77d819c84d9745e90660b519a5
BLAKE2b-256 4d6e08daefd66b167b5284fb70d6ecb098a8a21961568a728ce1e5de1cac3783

See more details on using hashes here.

Provenance

The following attestation bundles were made for mkdocs_process_timeline-0.1.1-py3-none-any.whl:

Publisher: publish.yml on lzelga/mkdocs-vibe

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