ChecklistFabrik is a Python 3 tool to simplify and automate process management using HTML checklists backed by YAML files.
Project description
Linuxfabrik ChecklistFabrik
Python tool that generates interactive HTML checklists from YAML templates. Jinja conditionals, reusable includes, pluggable modules, built-in web server. Ideal for SOPs, deployments & recurring ops. • made by Linuxfabrik
ChecklistFabrik - Open Source Checklist Maker Tool
ChecklistFabrik (clf-play) is a Python 3 tool designed to manage your team's recurring checklists, processes, and procedures. It leverages simple yet powerful YAML templates to create interactive HTML forms for an enhanced user experience. Utilize variables and logic through the Jinja templating language to define adaptive procedures, and enjoy seamless progress tracking.
If ChecklistFabrik helps you running your team's SOPs, deployments and recurring procedures, please give it a star.
Documentation
Full documentation is available at linuxfabrik.github.io/checklistfabrik. It is automatically built and deployed on every push to main.
Features
-
Auto-Save on Every Submit: Progress is written to the report file on every page change, not only on a clean shutdown. Closing the browser tab mid-run no longer loses already-submitted answers — re-open the report later to continue.
-
Dashboard: Run
clf-playwithout arguments to open a web dashboard that lists all your templates and reports. Start new checklists or re-open previous ones with a single click. -
Dynamic Item Exclusion: Automatically mark pages or tasks as inapplicable using conditional
whenexpressions. (See the User Guide for details.) -
HTML Interface with Built-In Web Server: View and complete checklists via a user-friendly HTML interface powered by a built-in local web server.
-
Jinja Templating Support: Create dynamic checklists using variables and Boolean expressions enabled by the Jinja templating language.
-
Simple YAML Checklists: Define templates and generate reports with plain YAML, making version control with systems such as Git straightforward.
-
Sub-Checklists with a "Run" Button: Embed another checklist template as a card on a page. Clicking the Run button launches the referenced template in a new browser tab as an independent checklist with its own report file — useful for splitting long procedures into reusable, self-contained sub-checklists.
-
Template Includes for Rapid Checklist Generation: Reuse checklist templates to quickly generate multiple checklists from a single file, eliminating the need to start from scratch each time.
Definitions and Terms
-
Checklist:
A series of tasks outlining a procedure, organized into pages. -
Page:
A collection of tasks displayed simultaneously to the user. -
Report:
The output of a checklist run—a YAML file generated from a template. -
Task: A description of work to be performed. Tasks can appear in various forms, such as text fields, checkboxes, radio buttons, or non-interactive text blocks (see the User Guide for details).
-
Checklist Template: A YAML file used to create checklists, intended for reuse rather than direct execution.
-
Task Module: To support an extensible architecture, ChecklistFabrik delegates task rendering to separate, pluggable Python modules. A valid task module is any Python module within the
checklistfabrik.modulesnamespace that provides amainmethod returning a dictionary that includes anhtmlkey with the rendered HTML as its value.
Installation
Using uv (recommended)
The recommended way to install ChecklistFabrik. You can run it without a permanent install:
uvx checklistfabrik
Or install it as a tool:
uv tool install checklistfabrik
For other installation methods (pipx, pip, development setup), see the PyPI page.
From Git (For Development)
git clone https://github.com/Linuxfabrik/checklistfabrik.git
cd checklistfabrik
pip install --editable .
Quick Start
A checklist template is a simple YAML file:
title: 'Server Maintenance'
description: 'Monthly maintenance procedure for production servers.'
version: '2025031901'
pages:
- title: 'Preparation'
tasks:
- linuxfabrik.clf.text_input:
label: 'Ticket number'
required: true
fact_name: 'ticket'
- linuxfabrik.clf.checkbox_input:
values:
- label: 'Notify users about the maintenance window'
- label: 'Create a full backup'
required: true
- title: 'Maintenance'
tasks:
- linuxfabrik.clf.markdown:
content: 'Working on ticket **{{ ticket }}**.'
- linuxfabrik.clf.checkbox_input:
label: 'Apply updates and reboot'
required: true
Run it:
# Open the dashboard (auto-detects templates/ and reports/ subdirectories):
clf-play
# Or run a template directly:
clf-play --template server-maintenance.yml
To explore the bundled examples in a dashboard, run:
cd examples/
clf-play
For the full guide on creating checklists—including conditional pages, imports, and all task modules—see the User Guide.
Usage
Open the Dashboard
clf-play
The dashboard scans for *.yml files and lists them as templates and reports:
- If
templates/and/orreports/subdirectories exist in the current working directory, they are used automatically. - If only one of them exists, the other falls back to the current directory.
- If both point to the same directory, all files are shown in both sections — use "Run" to start a new checklist or "View" to re-open an existing one.
You can override this with explicit paths:
clf-play --templates-dir ./my-templates --reports-dir ./my-reports
Create a New Checklist From a Template
clf-play --template path/to/template.yml path/to/report.yml
The destination file may be omitted; in that case:
- If the template specifies a
report_path, then that field is used to generate a new filename. - Otherwise, a generic, timestamped filename is generated.
Re-Open an Existing Checklist
clf-play path/to/existing_checklist.yml
Credits, License
- Authors: Linuxfabrik GmbH, Zurich
- License: The Unlicense, see LICENSE file
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 checklistfabrik-1.9.0.tar.gz.
File metadata
- Download URL: checklistfabrik-1.9.0.tar.gz
- Upload date:
- Size: 422.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0b2378b8bcd2072974c7e899d8e66aab814cd8d16d0c5ae10007de483188f77
|
|
| MD5 |
7f61e3d70a082bcc2abbe76bce53608f
|
|
| BLAKE2b-256 |
d2832a7bc42cf7e37db1753e7a597d6becb3be128741c2aee7e30a8cdb405c6a
|
Provenance
The following attestation bundles were made for checklistfabrik-1.9.0.tar.gz:
Publisher:
release.yml on Linuxfabrik/checklistfabrik
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
checklistfabrik-1.9.0.tar.gz -
Subject digest:
d0b2378b8bcd2072974c7e899d8e66aab814cd8d16d0c5ae10007de483188f77 - Sigstore transparency entry: 1524709042
- Sigstore integration time:
-
Permalink:
Linuxfabrik/checklistfabrik@eeff3a28944c48f1ea94354cb99630b6c583e7dc -
Branch / Tag:
refs/tags/v1.9.0 - Owner: https://github.com/Linuxfabrik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eeff3a28944c48f1ea94354cb99630b6c583e7dc -
Trigger Event:
release
-
Statement type:
File details
Details for the file checklistfabrik-1.9.0-py3-none-any.whl.
File metadata
- Download URL: checklistfabrik-1.9.0-py3-none-any.whl
- Upload date:
- Size: 428.7 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 |
68c224099a84c1dd444d9e12adf283eb0e2394228a1f01d35a961fa60adc3f84
|
|
| MD5 |
380deb392fb0818624fa1a6eff6643c1
|
|
| BLAKE2b-256 |
b9f54ba9d9ec9e102804b0e52411eca4b6a6d8ec253cbb4bbd74c2d933e0258f
|
Provenance
The following attestation bundles were made for checklistfabrik-1.9.0-py3-none-any.whl:
Publisher:
release.yml on Linuxfabrik/checklistfabrik
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
checklistfabrik-1.9.0-py3-none-any.whl -
Subject digest:
68c224099a84c1dd444d9e12adf283eb0e2394228a1f01d35a961fa60adc3f84 - Sigstore transparency entry: 1524709421
- Sigstore integration time:
-
Permalink:
Linuxfabrik/checklistfabrik@eeff3a28944c48f1ea94354cb99630b6c583e7dc -
Branch / Tag:
refs/tags/v1.9.0 - Owner: https://github.com/Linuxfabrik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eeff3a28944c48f1ea94354cb99630b6c583e7dc -
Trigger Event:
release
-
Statement type: