diff --git a/SKILL.md b/SKILL.md index af35b6c..85a37bc 100644 --- a/SKILL.md +++ b/SKILL.md @@ -1,6 +1,6 @@ --- name: isogram -description: Build animated isometric "how it works" diagrams for web pages: a small physical machine whose motion explains a product feature (calls routed, jobs queued, data synced), with step captions and a live readout. One scene renders in several looks (glow hairline, clean vector, 2:1 pixel art, blueprint; light and dark) and exports as a drop-in web component (HTML+CSS+JS), a self-contained embed snippet, GIF, PNG, SVG, WebM and a step sheet. Use for feature explainers, landing-page or docs illustrations, onboarding visuals, isometric animated diagrams, pixel-art or vector isometric illustrations, and "iso-glow"/"anatomy"-style figures meant to be embedded. +description: Build animated isometric "how it works" diagrams for web pages: a small physical machine whose motion explains a product feature (calls routed, jobs queued, data synced), with step captions and a live readout. One scene renders in several looks (glow hairline, clean vector, 2:1 pixel art, blueprint; light and dark) and exports as a drop-in iso-gram web component (HTML+CSS+JS), a self-contained embed snippet, GIF, PNG, SVG, WebM and a step sheet. Use for feature explainers, landing-page or docs illustrations, onboarding visuals, isometric animated diagrams, pixel-art or vector isometric illustrations, and "iso-glow"/"anatomy"-style figures meant to be embedded. --- # isogram diff --git a/test/skill.test.mjs b/test/skill.test.mjs index 3af3b0f..2a60788 100644 --- a/test/skill.test.mjs +++ b/test/skill.test.mjs @@ -15,6 +15,10 @@ test('SKILL.md has the frontmatter Claude needs', () => { const name = m[1].match(/^name: (.+)$/m)?.[1], desc = m[1].match(/^description: (.+)$/m)?.[1] assert.equal(name, 'isogram') assert.ok(desc && desc.length <= 1024, `description present and ≤ 1024 chars (is ${desc?.length})`) + // Claude's skill upload rejects angle brackets in the frontmatter ("description cannot contain XML"), + // so write the element as plain iso-gram here; the body of SKILL.md can still say . + for (const [k, v] of Object.entries({ name, description: desc })) + assert.doesNotMatch(v, /[<>]/, `${k} must not contain < or > (the skill validator reads them as XML tags)`) }) test('every file SKILL.md points to exists', () => {