A documentation system for complex codebases. Enforces structural invariants in CI.
Project description
Irminsul
A documentation system for complex codebases. Designed to resist rot, scale with complexity, and survive philosophy shifts.
Irminsul is a Python CLI + composite GitHub Action that enforces structural invariants on your /docs tree in CI. The rules are simple: every fact has one home, every doc has one purpose, every cross-reference is bidirectional and machine-verifiable. The tool's job is to make sure those rules stay true while the codebase evolves.
Quickstart
pipx install irminsul
cd my-codebase
irminsul init
That scaffolds a 9-layer /docs skeleton, an irminsul.toml config, GitHub Actions workflows, and pre-commit hooks. Three commands, ten seconds, fully wired.
What it checks
Hard, blocking checks (deterministic, no LLM):
- Frontmatter validity — required fields present, enums valid, IDs match filenames
- Glob resolution — every
describesglob resolves to ≥1 source file - Coverage uniqueness — every source file is claimed by exactly one most-specific doc
- Internal link integrity — no broken
[link](other.md)references - Schema-leak detection — no class/type definitions in component docs (those belong in the generated reference layer)
CI integration
on: pull_request
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: huajie-zhong/irminsul@v0.1.0
with:
scope: hard
irminsul init writes this file for you.
License
AGPL-3.0-or-later. See LICENSE.
Reference
The full architectural reference for the doc system Irminsul enforces lives in docs/90-meta/doc-system.md.
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 irminsul-0.2.0.tar.gz.
File metadata
- Download URL: irminsul-0.2.0.tar.gz
- Upload date:
- Size: 240.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06b643aca98c53b8ce90b61da5a853c86f336cf3dcc9552ef62a5279587676cd
|
|
| MD5 |
658fc78829aea84525ba9fd90c1129b1
|
|
| BLAKE2b-256 |
fd35bd84a08640c4c837b01c23948752d78cb18559d8fa5e677cf9260870c036
|
Provenance
The following attestation bundles were made for irminsul-0.2.0.tar.gz:
Publisher:
release.yml on huajie-zhong/Irminsul
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
irminsul-0.2.0.tar.gz -
Subject digest:
06b643aca98c53b8ce90b61da5a853c86f336cf3dcc9552ef62a5279587676cd - Sigstore transparency entry: 1471645067
- Sigstore integration time:
-
Permalink:
huajie-zhong/Irminsul@75afe33560c8f0f89a6840543e8f6bde40d38290 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/huajie-zhong
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@75afe33560c8f0f89a6840543e8f6bde40d38290 -
Trigger Event:
push
-
Statement type:
File details
Details for the file irminsul-0.2.0-py3-none-any.whl.
File metadata
- Download URL: irminsul-0.2.0-py3-none-any.whl
- Upload date:
- Size: 79.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac1cdea2f05c65ff951358a121be622539065443a78b97787cc4d167a9afe532
|
|
| MD5 |
c1145e25b0af0e8c7d2925ee997a55fd
|
|
| BLAKE2b-256 |
500459111ed4e25a0c79d0a2a0d780b0650daebe3c8fe513974e63228063cf61
|
Provenance
The following attestation bundles were made for irminsul-0.2.0-py3-none-any.whl:
Publisher:
release.yml on huajie-zhong/Irminsul
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
irminsul-0.2.0-py3-none-any.whl -
Subject digest:
ac1cdea2f05c65ff951358a121be622539065443a78b97787cc4d167a9afe532 - Sigstore transparency entry: 1471645150
- Sigstore integration time:
-
Permalink:
huajie-zhong/Irminsul@75afe33560c8f0f89a6840543e8f6bde40d38290 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/huajie-zhong
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@75afe33560c8f0f89a6840543e8f6bde40d38290 -
Trigger Event:
push
-
Statement type: