mif-compliance
Author and validate structured-MADR ADRs so they project clean as MIF (Modeled Information Format) at the configured conformance level. Use when writing or upgrading an ADR, when a MIF gate fails, when asked to make an ADR MIF-compliant, or to explain the MIF level model for ADRs.
Install
mkdir -p .claude/skills/mif-compliance && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15960" && unzip -o skill.zip -d .claude/skills/mif-compliance && rm skill.zipInstalls to .claude/skills/mif-compliance
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Author and validate structured-MADR ADRs so they project clean as MIF (Modeled Information Format) at the configured conformance level. Use when writing or upgrading an ADR, when a MIF gate fails, when asked to make an ADR MIF-compliant, or to explain the MIF level model for ADRs.About this skill
MIF Compliance for structured-MADR ADRs
structured-MADR markdown stays canonical. A MIF JSON-LD object is derived from
each ADR's frontmatter + body and validated against the level selected in
.github/config.yml (mifConformanceLevel: 1|2|3, default 2). You do not write
JSON-LD; you fill frontmatter, and the projector assembles + validates it.
What each level requires (content-dependent)
- Level 1 (core): every ADR —
@id(synthesized urn),conceptType(semantic),content(the body),created,title. Already satisfied by a valid ADR. - Level 2 (standard, default): adds
namespace(derived_semantic/decisions/<category>),modified(fromupdated),temporal. Relationships and entities are derived and validated only when present. - Level 3 (full): adds
provenance(from author/project) andtemporal.validFrom. Citations are extracted from body links; validated only when present.
A sparse ADR (no technologies, no related) still passes every level — optional
collections are validated only when present.
How frontmatter maps to MIF
| You write (frontmatter) | Becomes (MIF) |
|---|---|
title, created, updated, description, tags | title, created, modified, summary, tags |
category | namespace = _semantic/decisions/<category-slug> |
technologies: [rust, tokio] | entities[] (EntityReference, entityType Technology) |
related: [0002-foo.md] | relationships[] {type: relates-to, target: /decisions/0002-foo.md} |
x-superseded-by: 0009-new.md | relationships[] {type: supersedes, target: /decisions/0009-new.md} |
author, project | provenance (sourceType user_explicit) |
body [label](https://…) links | citations[] (L3) |
You may also author MIF-native keys directly in frontmatter (conceptType, namespace,
relationships, entities, temporal, provenance, citations, id) to override the
derivation; they are deep-validated against the MIF schema after projection.
Make an ADR conform
- Confirm the ADR passes the MADR validator:
npm run validate. - Project + validate as MIF at the configured level:
npm run validate:mif(or preview one ADR's MIF object with the/mif-projectcommand). - If it fails: read the
::error::annotation (it names the missing/invalid MIF field), fix the frontmatter source, re-run. To link a superseding decision, addx-superseded-by: <file>.mdand setstatus: superseded.
Notes
- The MIF schemas are vendored under
.github/schema/and pinned inVENDOR.lock(MIFdevelop/v1.0.0). Do not hand-edit vendored files; bump the vendor instead. - To type ADRs as MIF entities, enable the
structured-madrontology in.github/config.ymlontologies[]; the projection then stampsentity.entity_type: adr.