VS Code linter validates SKILL.md frontmatter against DXT schema instead of skill schema
Description
When editing a SKILL.md file in VS Code with the Claude Code extension (2.1.88), adding allowed-tools to the YAML frontmatter produces a linter warning:
Attribute 'allowed-tools' is not supported in skill files. Supported: argument-hint, compatibility, description, disable-model-invocation, license, metadata, name, user-invocable.
However, allowed-tools is a valid skill frontmatter field. The Claude Code CLI runtime parses and uses it:
allowedTools: RF(q["allowed-tools"])
Built-in skill examples and the skill-authoring template within the CLI also use allowed-tools.
Root cause
The "Supported" field list in the warning (argument-hint, compatibility, description, disable-model-invocation, license, metadata, name, user-invocable) includes DXT (Desktop Extension Toolkit) manifest fields like license, compatibility, and metadata — these are not skill frontmatter fields.
The VS Code extension appears to be validating SKILL.md frontmatter against the DXT manifest schema rather than the skill frontmatter schema. The skill schema should include allowed-tools, argument-hint, description, disable-model-invocation, name, user-invocable, and others that the runtime actually parses.
Steps to reproduce
- Create
~/.claude/skills/test/SKILL.mdwith:
``yaml``
---
name: test
description: Test skill
allowed-tools: Read, Bash
---
# Test
- Open the file in VS Code with the Claude Code extension
- Observe the linter warning on
allowed-tools
Expected behavior
No warning — allowed-tools is a valid skill field that the runtime uses.
Environment
- Claude Code CLI: 2.1.87
- Claude Code VS Code extension: 2.1.88
- Platform: Linux (NixOS)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗