CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this repository is
Content repository for the PKI Maturity Model (PKIMM), maintained by the PKI Consortium PKIMM working group. The content is rendered at https://pkic.org/pkimm by an external Hugo-based site — this repo holds the source markdown, the canonical model data, and assessment tools. There is no build system, no test suite, and no application code here. Treat changes as documentation/data edits, not software changes.
Repository layout
_index.md— top-level overview page (Hugo front matter).model/— definitions of maturity levels, modules, and the list of categories.categories/<slug>/_index.md— one file per category (16 categories: five in Governance including the Cryptography category, four each in Management and Operations, three in Resources). Folder name matches the YAMLid(kebab-case, no numeric prefix). Ordering is controlled byweight:in the front matter.categories/templates/_index.md— the canonical template for new category descriptions. Anything incategories/must follow its structure (Overview → Maturity levels table → Requirements table → Details with Guidance/Assessment/References per requirement).assessment/— assessment process pages (scoping, assessment, evaluation, reporting, implementation, action plans).data/pkimm-model-2.0.0.yaml— machine-readable source of truth for the 2.0.0 model: modules → categories → levels + requirements (with weights, guidance, assessment, references as catalog IDs). Validated bydata/pkimm-model.schema-2.0.0.json. Downstream integrations consume this file. The version suffix tracks the model version (see theversionfield inside the file).data/pkimm-model-1.0.0.yaml— archived 1.0.0 model; validated bydata/pkimm-model.schema-1.0.0.json.data/pkimm-model.schema-2.0.0.json— JSON Schema for the 2.0.0 YAML shape. Category and requirementidfields are kebab-case strings;requirements[].referencesis an array of catalog IDs.data/pkimm-model.schema-1.0.0.json— JSON Schema for the 1.0.0 YAML shape (retroactively renamed frompkimm-model.schema.json).data/pkimm-references.yaml— independently-versioned references catalog. Per-requirementreferencesfields in the 2.0.0 model contain arrays of IDs from this catalog. Edit here to update reference metadata without touching the model YAML.data/pkimm-references.schema-1.0.0.json— JSON Schema for the references catalog.extensions/extension.schema-1.0.0.json— JSON Schema for PKIMM extension files.extensions/catalog/pqc/pqc-extension.yaml— PQC (Post-Quantum Cryptography) extension version 0.2.0, compatible with PKIMM 2.0.0.scripts/— authoring and validation scripts (see “Authoring workflow” below).tools/— published Excel assessment tools (PKI_Maturity_Assessment_Tool_*.xlsx,PKI_Maturity_Self_Assessment_Tool_*.xlsx).integrations/eramba/— per-schema-version converters that produce Eramba-importable CSV packages.convert-yaml-data-to-csv-package-1.0.0.py— readsdata/pkimm-model-1.0.0.yaml(schema 1.0.0) and writespkimm-1.0.0.csv.convert-yaml-data-to-csv-package-2.0.0.py— readsdata/pkimm-model-2.0.0.yaml(schema 2.0.0) anddata/pkimm-references.yaml; writespkimm-2.0.0.csv. Future schema versions get their own script alongside.
release-notes/— per-version release notes (release-notes/1.0.0/,release-notes/2.0.0/) and a template atrelease-notes/templates/. See the release notes for consumer-facing changes and migration guidance.faq/,.github/README.md— supplementary content; the GitHub-rendered README lives in.github/README.md, not the repo root.
Authoring conventions
- All markdown files use Hugo-style YAML front matter (
date,title,weight, optionaldraft,sideMenu,tags,summary, hero fields on_index.md). Keepweightconsistent with intended navigation order (category folders no longer carry a numeric prefix; order is determined byweight:alone). - Category files mirror
categories/templates/_index.mdexactly — the table columns, anchor-link pattern in the Requirements overview ([id](#requirement-slug)), and the per-requirement Guidance/Assessment/References subsections are load-bearing for both readers and downstream tooling. - Mark in-progress category drafts with
draft: truein the front matter; remove it when the category is ready to publish. - The maturity-level vocabulary (2.0.0) is:
1 - Initial,2 - Foundational,3 - Advanced,4 - Managed,5 - Optimized. Note: 1.0.0 used “Basic” for level 2; “Foundational” is the 2.0.0 name. Don’t introduce new level names. - The category maturity formula is the weighted average of requirement ratings:
Σ(rᵢ·wᵢ) / Σ(wᵢ). Requirement weights are non-negative integers; preserve them when editing. - Category and requirement identifiers are stable kebab-case strings (e.g.,
strategy-and-vision,sponsor-support). Do not rename them after release — downstream integrations depend on them.
Authoring workflow (YAML-first)
The markdown category pages and data/pkimm-model-2.0.0.yaml describe the same model in two forms. YAML is the source of truth; markdown is generated from it.
- Edit YAML: make your change in
data/pkimm-model-2.0.0.yaml(ordata/pkimm-references.yamlfor reference-metadata changes). - Regenerate markdown: run
python scripts/generate_category_docs.pyto regenerate all category pages undercategories/from the updated YAML. - Update narrative docs: manually update
model/pages,_index.mdmindmap, andrelease-notes/notes if the change is consumer-facing. - Validate: run
python scripts/check_model_docs_consistency.py --repo-root .— must exit0 error(s), 0 warning(s)before committing. - Tag: when releasing, bump
versionindata/pkimm-model-2.0.0.yaml, copy the file todata/pkimm-model-<new>.yaml, add a schema file for the new shape, and author release notes underrelease-notes/<new>/.
CI runs the validator on every PR and push to main (.github/workflows/check-consistency.yml).
Key scripts in scripts/:
generate_category_docs.py— regeneratescategories/markdown from YAML.check_model_docs_consistency.py— validates YAML ↔ markdown parity, vocabulary, counts, references, and schema consistency. Run this before every commit.
Contribution constraints
Contributions are governed by the PKI Consortium IPR Agreement (https://pkic.org/ipr/) and the PKIMM working group charter (https://pkic.org/wg/pkimm/charter/). Substantive model changes are working-group decisions — don’t redesign categories, levels, modules, or weights unilaterally; editorial fixes, typos, and clarifications are fine.