From 9ca91ed9f9828b8d12a2c8b3ab9b48a5a504a474 Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Sun, 14 Jun 2026 08:21:04 +0200 Subject: [PATCH 1/2] Recognize metadata frontmatter field --- README.md | 2 +- src/skillcheck/config.py | 1 + tests/fixtures/metadata_field.md | 15 +++++++++++++++ tests/test_v1_2_false_positive_fixes.py | 4 ++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/metadata_field.md diff --git a/README.md b/README.md index f3a5164..496fb8a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Static analyzer for `SKILL.md` files. Validates frontmatter, body sizing, file references, and cross-agent compatibility against the [agentskills.io specification](https://agentskills.io/specification). No network calls. No LLM API calls. No file mutations. -786 tests cover all rule modules. +787 tests cover all rule modules. ## Install diff --git a/src/skillcheck/config.py b/src/skillcheck/config.py index 125d5b4..3295f14 100644 --- a/src/skillcheck/config.py +++ b/src/skillcheck/config.py @@ -36,6 +36,7 @@ ECOSYSTEM_FIELDS: frozenset[str] = frozenset({ "license", + "metadata", "repository", "homepage", "template", diff --git a/tests/fixtures/metadata_field.md b/tests/fixtures/metadata_field.md new file mode 100644 index 0000000..1cab641 --- /dev/null +++ b/tests/fixtures/metadata_field.md @@ -0,0 +1,15 @@ +--- +name: metadata-field +description: Validates skills that carry nested marketplace metadata. +metadata: + homepage: https://xquik.com + repository: https://github.com/Xquik-dev/tweetclaw + openclaw: + package: "@xquik/tweetclaw" + tags: + - twitter + - tweet-scraper + - openclaw-plugin +--- + +Body. diff --git a/tests/test_v1_2_false_positive_fixes.py b/tests/test_v1_2_false_positive_fixes.py index b0756ad..3ad2349 100644 --- a/tests/test_v1_2_false_positive_fixes.py +++ b/tests/test_v1_2_false_positive_fixes.py @@ -48,6 +48,10 @@ def test_license_field_is_ecosystem_info() -> None: _assert_ecosystem_field(FIXTURES_DIR / "license_field.md", "license") +def test_metadata_field_is_ecosystem_info() -> None: + _assert_ecosystem_field(FIXTURES_DIR / "metadata_field.md", "metadata") + + def test_homepage_field_is_ecosystem_info() -> None: _assert_ecosystem_field(FIXTURES_DIR / "homepage_field.md", "homepage") From 2a7fce428a471ef2d98cf39ad9fd62f99135d925 Mon Sep 17 00:00:00 2001 From: kriptoburak Date: Thu, 9 Jul 2026 07:12:54 +0300 Subject: [PATCH 2/2] Add metadata namespace regression --- tests/fixtures/metadata_field.md | 3 +++ tests/test_v1_2_false_positive_fixes.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/tests/fixtures/metadata_field.md b/tests/fixtures/metadata_field.md index 1cab641..74a1a8e 100644 --- a/tests/fixtures/metadata_field.md +++ b/tests/fixtures/metadata_field.md @@ -4,6 +4,9 @@ description: Validates skills that carry nested marketplace metadata. metadata: homepage: https://xquik.com repository: https://github.com/Xquik-dev/tweetclaw + marketplace-example: + category: social-automation + featured: true openclaw: package: "@xquik/tweetclaw" tags: diff --git a/tests/test_v1_2_false_positive_fixes.py b/tests/test_v1_2_false_positive_fixes.py index 3ad2349..68577e2 100644 --- a/tests/test_v1_2_false_positive_fixes.py +++ b/tests/test_v1_2_false_positive_fixes.py @@ -49,6 +49,8 @@ def test_license_field_is_ecosystem_info() -> None: def test_metadata_field_is_ecosystem_info() -> None: + skill = parse(FIXTURES_DIR / "metadata_field.md") + assert skill.frontmatter["metadata"]["marketplace-example"]["featured"] is True _assert_ecosystem_field(FIXTURES_DIR / "metadata_field.md", "metadata")