Parent directory

validation.test.ts

1032 bytes
 1import { describe, it } from "node:test";
 2import assert from "node:assert/strict";
 3import { SimpleFrontmatterCodec } from "./parser.ts";
 4import { deriveSkillMetadata, getDuplicateFrontmatterKeys, hasDuplicateDisableModelInvocation } from "./validation.ts";
 5
 6const codec = new SimpleFrontmatterCodec();
 7
 8describe("frontmatter validation", () => {
 9  it("reports duplicate top-level frontmatter keys", () => {
10    const doc = codec.parse([
11      "---",
12      "name: handoff",
13      "description: Compact the conversation.",
14      "disable-model-invocation: true",
15      "argument-hint: What next?",
16      "disable-model-invocation: true",
17      "---",
18      "",
19    ].join("\n"));
20
21    assert.deepEqual(getDuplicateFrontmatterKeys(doc), ["disable-model-invocation"]);
22    assert.equal(hasDuplicateDisableModelInvocation(doc), true);
23    assert.deepEqual(deriveSkillMetadata("/skills/handoff/SKILL.md", doc).diagnostics, [
24      { severity: "warning", message: "Duplicate frontmatter key: disable-model-invocation" },
25    ]);
26  });
27});