Skip to content

[Bug]: Claude skill discovery drops skills with frontmatter Claude Code itself accepts (strict YAML vs CLI leniency), silently #7757

Description

@tarunguptain

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/server

Steps to reproduce

  1. Install a skill whose description is a plain scalar containing a colon followed by a space. Real-world example: LambdaTest's kane-cli installer (kane-cli install skill) writes ~/.claude/skills/kane-cli/SKILL.md with:

    ---
    name: kane-cli
    description: Browser automation + AI test authoring via kane-cli: run browser objectives, ...
    ---

    yaml.parse rejects this (mapping values are not allowed here), but Claude Code's own frontmatter parser accepts it — the skill loads and works in every Claude Code session.

  2. Start the desktop app with a Claude provider instance and wait for a capability probe cycle.

  3. Type $ in the composer, or read ~/.t3/caches/claudeAgent.json.

Expected behavior

Whatever file the Claude Code CLI loads as a skill should be discovered by T3's own scanner too — the CLI is the authority on what it accepts. Failing that, dropping a skill should at least log which file was rejected and why.

Actual behavior

parseSkillFrontmatter in apps/server/src/provider/Drivers/ClaudeSkills.ts strict-YAML-parses the frontmatter and skips the entry as malformed with no log. The same cache snapshot shows the contradiction: the skill appears in slashCommands (enumerated by the Claude Code SDK probe, which accepts the file) while skills is [] (T3's scanner dropped it). If it is the user's only skill, the $ picker is empty and nothing explains why.

Related but distinct: #6449 covers discovery scanning the wrong directory (ServerConfig.cwd), and #1084 covers malformed-skill diagnostics in threads. This one is the parser-strictness mismatch: a skill that demonstrably works in Claude Code is invisible in T3.

Impact

Minor bug or occasional failure

Version or commit

Desktop 0.0.33 (alpha); code path unchanged at main HEAD

Environment

macOS (Darwin 25.5.0), T3 Code (Alpha) 0.0.33, Claude Code CLI 2.1.237, kane-cli skill 0.0.17 as shipped by @testmuai/kane-cli-skill

Logs or stack traces

# ~/.t3/caches/claudeAgent.json (one snapshot, provider ready, authenticated)
"slashCommands": [... "kane-cli" ...]   # SDK probe accepted the file
"skills": []                            # T3's scanner dropped it, no log emitted

# python yaml.safe_load on the same frontmatter:
mapping values are not allowed here, line 2, column 65

Workaround

Quote the description in the skill's frontmatter so it parses as strict YAML. Works, but every consumer of an installer-shipped skill has to know to do it, and nothing tells them.


Investigated and filed by Claude Fable 5 (claude-fable-5) on behalf of the repo user; findings verified against the packaged app bundle and source at main.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions