Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .agents/skills/markdown-frontmatter/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ metadata:

## Overview

Author and fix YAML frontmatter for **managed Markdown documents** under the [project-standards Markdown Frontmatter Standard](https://github.com/L3DigitalNet/project-standards/blob/main/standards/markdown-frontmatter/README.md).
Author and fix YAML frontmatter for **managed Markdown documents** under the [project-standards Markdown Frontmatter Standard](https://github.com/L3DigitalNet/project-standards/blob/v5.10.0/standards/markdown-frontmatter/versions/1.6/README.md).

This skill ships with the standard package and is installed repo-local at `.agents/skills/markdown-frontmatter` when a repository adopts the standard. That path is deliberate: both Claude Code and Codex CLI can discover it without a global skill owner.

Expand Down Expand Up @@ -83,7 +83,7 @@ These fields accept only these values (the schema is the source of truth):

## The `id` field — standard-enforced format

> **This is a standard rule, not a local addition.** `markdown-frontmatter@1.4` enforces the id format below via `validate-id` (run by `project-standards validate` and the V5 CI workflow). An id whose leading segment is not a valid `doc_type` **fails validation** with `prefix '<x>' is not a valid doc_type`. Earlier repo-name-prefixed ids no longer pass.
> **This is a standard rule, not a local addition.** `markdown-frontmatter@1.6` enforces the id format below via `validate-id` (run by `project-standards validate` and the V5 CI workflow). An id whose leading segment is not a valid `doc_type` **fails validation** with `prefix '<x>' is not a valid doc_type`. Earlier repo-name-prefixed ids no longer pass.

```text
{doc_type}-{base36-6}-{document-name}
Expand Down Expand Up @@ -169,8 +169,8 @@ To check or repair a single file's id: `validate-id <file>` (add `--fix` to rewr

## Authoritative references

- [Standard README](https://github.com/L3DigitalNet/project-standards/blob/main/standards/markdown-frontmatter/README.md) — overview and adoption surface.
- [Structure Requirements](https://github.com/L3DigitalNet/project-standards/blob/main/standards/markdown-frontmatter/structure.md) — hard fields, key order, scalar/list rules, IDs, and validation.
- [Field Values](https://github.com/L3DigitalNet/project-standards/blob/main/standards/markdown-frontmatter/field-values.md) — lifecycle, ownership, canonical tags, aliases, relationships, sources, and extensions.
- [Adoption guide](https://github.com/L3DigitalNet/project-standards/blob/v5/standards/markdown-frontmatter/versions/1.4/adopt.md) — unified config, CI workflow, repo-local skill install, and compliance procedure.
- `standards/markdown-frontmatter/versions/1.4/schemas/markdown-frontmatter.schema.json` (in project-standards) — the selected package contract; wins on any conflict.
- [Standard README](https://github.com/L3DigitalNet/project-standards/blob/v5.10.0/standards/markdown-frontmatter/versions/1.6/README.md) — overview and adoption surface.
- [Structure Requirements](https://github.com/L3DigitalNet/project-standards/blob/v5.10.0/standards/markdown-frontmatter/versions/1.6/structure.md) — hard fields, key order, scalar/list rules, IDs, and validation.
- [Field Values](https://github.com/L3DigitalNet/project-standards/blob/v5.10.0/standards/markdown-frontmatter/versions/1.6/field-values.md) — lifecycle, ownership, canonical tags, aliases, relationships, sources, and extensions.
- [Adoption guide](https://github.com/L3DigitalNet/project-standards/blob/v5.10.0/standards/markdown-frontmatter/versions/1.6/adopt.md) — unified config, CI workflow, repo-local skill install, and compliance procedure.
- `standards/markdown-frontmatter/versions/1.6/schemas/markdown-frontmatter.schema.json` (in project-standards) — the selected package contract; wins on any conflict.
9 changes: 8 additions & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,15 @@ on:

jobs:
format:
permissions:
contents: read
uses: L3DigitalNet/project-standards/.github/workflows/format.yml@v5
with:
prettier: true
globs: "**/*.md\n**/*.json\n**/*.jsonc\n**/*.yml\n**/*.yaml"
exclusions: "docs/reference/pre-migration/**\npackage-lock.json"
exclusions: |-
docs/reference/pre-migration/**
package-lock.json
products/vscode-extension/**/*.code-snippets
products/vscode-extension/**/*.js
products/vscode-extension/**/*.mjs
10 changes: 9 additions & 1 deletion .github/workflows/lint-markdown.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,15 @@ on:

jobs:
lint-markdown:
permissions:
contents: read
uses: L3DigitalNet/project-standards/.github/workflows/lint-markdown.yml@v5
with:
markdownlint: true
globs: "**/*.md\n!docs/reference/pre-migration/**"
globs: |-
**/*.md
!.pytest_cache/**
!.ruff_cache/**
!.venv/**
!node_modules/**
!docs/reference/pre-migration/**
2 changes: 1 addition & 1 deletion .markdownlint.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,5 @@
"MD056": true,
"MD058": true,
"MD059": { "prohibited_texts": ["click here", "here", "link", "more"] },
"MD060": { "style": "any", "aligned_delimiter": false }
"MD060": false
}
6 changes: 6 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,9 @@ docs/TODO.md
# run matches the format CI caller. Keep the two in sync.
docs/reference/pre-migration/
package-lock.json
products/vscode-extension/**/*.js
products/vscode-extension/**/*.mjs
products/vscode-extension/**/*.code-snippets

# Preserve local migration preview evidence outside tracked project content.
migration-plan.json
158 changes: 134 additions & 24 deletions .standards/catalog.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
[project_standards]
schema_version = "1.0"
catalog = "5"
release = "5.4.0"
digest = "sha256:a10514875f75550b32fe2a0c29bedab933f7126c59a19f7f819f5e84a051a0be"
release = "5.11.0"
digest = "sha256:492b1cc8a18b5e14974282bd8a797f27595398c27ad983a0934bdfc4562876e9"

[standards.adr]
status = "active"
available = ["1.1", "1.2"]
default = "1.2"
available = ["1.1", "1.2", "1.3"]
default = "1.3"
candidates = []

[standards.adr.versions."1.1"]
Expand All @@ -16,14 +16,19 @@ availability = "consumer"
payload_digest = "sha256:82e9e3ae5d50a641b4b47366ef5d66fd85b13555ffda0d9ac1c99aadd1c6c719"

[standards.adr.versions."1.2"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:5b36e6f63a2477f2c7c5bcef647edc8b674366eb64937aba646aefc65d8a6f21"

[standards.adr.versions."1.3"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:6c5d8da41c80658cb701b5aedd17a93149aab5e8dab4caa58f8e0047bf645d1f"

[standards.agent-handoff]
status = "active"
available = ["1.1", "1.2", "1.3"]
default = "1.3"
available = ["1.1", "1.2", "1.3", "1.4", "1.5", "1.6"]
default = "1.6"
candidates = []

[standards.agent-handoff.versions."1.1"]
Expand All @@ -37,14 +42,29 @@ availability = "consumer"
payload_digest = "sha256:197d9c6877781abf1a9f0a3d3f37092413600ebaff604371ae10c7405925cf5b"

[standards.agent-handoff.versions."1.3"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:3e6e53f9ba889b7f68624c1c3861c5e26ac889a6025c4fb7b819b49e140d1f78"

[standards.agent-handoff.versions."1.4"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:17bdc8b25c6cc6ac644057a85f55ed244adf88b58f4ad052d68222d20c24120a"

[standards.agent-handoff.versions."1.5"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:4acf48a8dbb987088700c558128d9b180718e1001a8bc7d4364950b0f05dc3da"

[standards.agent-handoff.versions."1.6"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:97041fb9a47c28cf0e2dd38c2de32be827af4b079de3943d6b74675bf52d81f8"

[standards.cli-documentation]
status = "active"
available = ["1.1", "1.2", "1.3"]
default = "1.3"
available = ["1.1", "1.2", "1.3", "1.4", "1.5"]
default = "1.5"
candidates = []

[standards.cli-documentation.versions."1.1"]
Expand All @@ -58,14 +78,24 @@ availability = "consumer"
payload_digest = "sha256:edde1a4011314a9b05f372731a8d50e3b5a0663d39369089256d442430e4943c"

[standards.cli-documentation.versions."1.3"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:2c15f700fd343327b675295579220572fea9f2735386da5aa266d38839a7f9c4"

[standards.cli-documentation.versions."1.4"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:8c2f1e9cd6538954d8ace67146133c6864a149ae0a1a97d6aba75560d5ecf346"

[standards.cli-documentation.versions."1.5"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:90bd59f457ec467da0990bbf89667f534753768be79530c7bfdde9c791d3b618"

[standards.markdown-frontmatter]
status = "active"
available = ["1.2", "1.3", "1.4"]
default = "1.4"
available = ["1.2", "1.3", "1.4", "1.5", "1.6"]
default = "1.6"
candidates = []

[standards.markdown-frontmatter.versions."1.2"]
Expand All @@ -79,14 +109,24 @@ availability = "consumer"
payload_digest = "sha256:97327fffde61fd981c08949292c504a930f4fe6786af455cb1f6c7d204dc7c43"

[standards.markdown-frontmatter.versions."1.4"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:a981a54cb6c6a36e2bfb73eca61c9b84100da67b072cd07c7c4ffea4b0593647"

[standards.markdown-frontmatter.versions."1.5"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:b31b9a97edb48334bbb6af2988272baf071449a457a303e218dbb8c6436a540c"

[standards.markdown-frontmatter.versions."1.6"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:cf1e2c975d5f139f1b3864090e6fcc0e45dcb895a97dd07113c0eeb7af0d0f32"

[standards.markdown-tooling]
status = "active"
available = ["1.2", "1.3", "1.4", "1.5", "1.6"]
default = "1.6"
available = ["1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "1.10"]
default = "1.10"
candidates = []

[standards.markdown-tooling.versions."1.2"]
Expand All @@ -110,14 +150,34 @@ availability = "consumer"
payload_digest = "sha256:2f06b126747822b330ed0239630b0dad413afb9f8c56380d72848403a9c23091"

[standards.markdown-tooling.versions."1.6"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:cf123371ac92c23942a37a5765b99d1af4f3c2481e2b75c2a239b6b17bc1ba8b"

[standards.markdown-tooling.versions."1.7"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:87376b5d4c3ce027ca3db249d5d27bb7a1bc6d2e7f843b7074f8f73d2a084c10"

[standards.markdown-tooling.versions."1.8"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:22ebe7b95ca82daa276746c9bf3f0688d15ce4b47314b7e4abea206df7212783"

[standards.markdown-tooling.versions."1.9"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:2952838b146eddf054cc2f81c05e8cd931ff4e5de1a1e2b120760aca50927456"

[standards.markdown-tooling.versions."1.10"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:db6b97d120ac9f31ab589c2d48926acb5713b840738dd13b6460d34632e4fc9b"

[standards.project-spec]
status = "active"
available = ["1.1", "1.2", "1.3"]
default = "1.3"
available = ["1.1", "1.2", "1.3", "1.4", "1.5"]
default = "1.5"
candidates = []

[standards.project-spec.versions."1.1"]
Expand All @@ -131,10 +191,20 @@ availability = "consumer"
payload_digest = "sha256:d5474ab7035937ac96d0551ecf9c076a71752e9e18dcfe14789d960933418c47"

[standards.project-spec.versions."1.3"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:56de712072c586549c68cdadfe4598b63d9d7d3ea7cb4f7727fd48c6ef4084a6"

[standards.project-spec.versions."1.4"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:8ea9d9a5f82156c1f177defa4bd78d5f55693013ced2ab9d07cabce63969e845"

[standards.project-spec.versions."1.5"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:e4286963cf591e3ee1454e5be317519b6610d3257dc61eb08de489d47ba407e1"

[standards.python-coding]
status = "draft"
available = ["0.5", "0.6"]
Expand All @@ -152,8 +222,8 @@ payload_digest = "sha256:a4c4d6f0d61f81beeabefe48a8ef29f9789b55d7159ab01bb64b1da

[standards.python-tooling]
status = "active"
available = ["1.1", "1.2", "1.3", "1.4", "1.5"]
default = "1.5"
available = ["1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "1.10"]
default = "1.10"
candidates = []

[standards.python-tooling.versions."1.1"]
Expand All @@ -177,13 +247,38 @@ availability = "consumer"
payload_digest = "sha256:6cece71c53909b6dcd04a50e873ce16eb98aa800203b186e472439f7986c3e5e"

[standards.python-tooling.versions."1.5"]
channel = "stable"
channel = "retained"
availability = "consumer"
payload_digest = "sha256:734c2b975c01307ed0a27a14c8a391ca4e73334180275d50012076b506021de3"

[standards.python-tooling.versions."1.6"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:78e9f7737e78990bdb32b559b87d3ba4f975ddf4b0d0bd5f1ecac1e772da1e5b"

[standards.python-tooling.versions."1.7"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:6ffff0fe5b82d15b1a30e23cb49dd0fba7ff8766a42bbf31f83eabb16e63e92b"

[standards.python-tooling.versions."1.8"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:7397498723a1f683b09037c233e1872df825cd70a27c514a45bb2bacf24cb312"

[standards.python-tooling.versions."1.9"]
channel = "retained"
availability = "consumer"
payload_digest = "sha256:299356c05185ce85d015abc04ad34c1c476d77b41e400377aa2aa942dbe7ad23"

[standards.python-tooling.versions."1.10"]
channel = "stable"
availability = "consumer"
payload_digest = "sha256:1f397497be8e925d79f46003d7297813a7d02ea7ff0112cf523354e0a4300398"

[standards.standard-bundle-authoring]
status = "active"
available = ["2.0", "2.1", "2.2", "2.3"]
available = ["2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6"]
candidates = []

[standards.standard-bundle-authoring.versions."2.0"]
Expand All @@ -205,3 +300,18 @@ payload_digest = "sha256:538d8afa6760bddd3f4be13b7b001257f028f94df4385a42e3aba5a
channel = "internal"
availability = "internal"
payload_digest = "sha256:dbe940f518534224ccf58956a3ce02660f99be20cf161241308444eddccee7d5"

[standards.standard-bundle-authoring.versions."2.4"]
channel = "internal"
availability = "internal"
payload_digest = "sha256:b2bdf94dffb7c8536debca60fdb4eb557cfcc364e47165a2634dccf002ca099f"

[standards.standard-bundle-authoring.versions."2.5"]
channel = "internal"
availability = "internal"
payload_digest = "sha256:3eb5d86979755372bbe851b06b82235410378cba71c6f1b9dbc7c49557623c4d"

[standards.standard-bundle-authoring.versions."2.6"]
channel = "internal"
availability = "internal"
payload_digest = "sha256:28756752d9a4a7c50240f178fdbc72be7f3f04faa8f8af9eabe5b0ba7b94f9d5"
4 changes: 4 additions & 0 deletions .standards/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ config.ci = { lint_caller = true, format_caller = true }
config.exclusions = [
{ glob = "docs/reference/pre-migration/**", applies_to = "both", reason = "Verbatim archived ChatGPT transcript; reformatting or annotating it would destroy the historical record. Already exempt from APSEUDO fence linting per bug 003." },
{ glob = "package-lock.json", applies_to = "format", reason = "npm regenerates this file and reverts Prettier's formatting on every install." },
{ glob = "products/vscode-extension/**/*.js", applies_to = "format", reason = "VS Code extension JavaScript follows its product-local formatting; root Prettier would rewrite unrelated source outside the declared Markdown and structured-config scope." },
{ glob = "products/vscode-extension/**/*.mjs", applies_to = "format", reason = "VS Code extension build scripts follow their product-local formatting; root Prettier would rewrite unrelated source outside the declared Markdown and structured-config scope." },
{ glob = "products/vscode-extension/**/*.code-snippets", applies_to = "format", reason = "VS Code snippet files preserve their product-local JSON formatting and are outside the declared structured-config extensions." },
]

[standards.project-spec]
Expand All @@ -47,6 +50,7 @@ contract_version = "1.1"
python_version = "3.14"
build_backend = "uv_build"
source_layout = "src"
additional_source_roots = [{ path = "media/repository-explainer", coverage = false }]
additional_dev_dependencies = []
workflow_ownership = "managed"
script_ownership = "managed"
Expand Down
Loading
Loading