[BUG] Plugin skills not loaded despite correct directory structure (new telegram plugin)

Resolved 💬 2 comments Opened Mar 20, 2026 by cosjef Closed Apr 18, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Bug: Plugin skills not loaded despite correct directory structure

Claude Code version: 2.1.80
OS: macOS
Install path: /Users/cosjef

What's wrong

After installing the telegram@claude-plugins-official plugin, /reload-plugins reports 0 skills even though the SKILL.md files exist in the correct cache location with valid frontmatter.

Reloaded: 0 plugins · 0 skills · 5 agents · 0 hooks · 0 plugin MCP servers · 0 plugin LSP servers

Steps to reproduce

  1. claude (standard session, no --channels flag)
  2. /plugin install telegram@claude-plugins-official
  3. /reload-plugins
  4. /skills → shows "No skills found"

What exists on disk

Skill files are present and readable:

~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.1/skills/access/SKILL.md
~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.1/skills/configure/SKILL.md

Frontmatter in access/SKILL.md is valid:

---
name: access
description: Manage Telegram channel access — approve pairings, edit allowlists, set DM/group policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the Telegram channel.
user-invocable: true
allowed-tools:
  - Read
  - Write
  - Bash(ls *)
  - Bash(mkdir *)
---

installed_plugins.json

{
  "version": 2,
  "plugins": {
    "telegram@claude-plugins-official": [
      {
        "scope": "project",
        "installPath": "/Users/cosjef/.claude/plugins/cache/claude-plugins-official/telegram/0.0.1",
        "version": "0.0.1",
        "installedAt": "2026-03-20T13:13:19.128Z",
        "lastUpdated": "2026-03-20T13:13:19.128Z",
        "gitCommitSha": "b664e152af5742dd11b6a6e5d7a65848a8c5a261",
        "projectPath": "/Users/cosjef"
      }
    ]
  }
}

plugin.json (manifest)

{
  "name": "telegram",
  "description": "Telegram channel for Claude Code — messaging bridge with built-in access control.",
  "version": "0.0.1",
  "keywords": ["telegram", "messaging", "channel", "mcp"]
}

Note: manifest does not explicitly declare skills, but neither does the discord plugin which has the same structure — so this appears to be by design for channel plugins.

Additional observations

  • 5 agents DO load successfully (source unknown — no agents/ directory exists in either the cache or marketplace copy)
  • The discord plugin has an identical structure and presumably has the same issue
  • Manually copying SKILL.md files to ~/.claude/skills/ works as a workaround
  • Reproduces in both standard sessions and --channels sessions
  • Confirmed against debug logs: Total plugin skills loaded: 0

What Should Happen?

After installing a plugin via /plugin install, its skills should be loaded and visible in /skills. Running /reload-plugins should report the correct skill count.

Error Messages/Logs

/skills shows: "No skills found. Create skills in .claude/skills/ or ~/.claude/skills/"

Steps to Reproduce

  1. Install the telegram plugin: /plugin install telegram@claude-plugins-official
  2. Run /reload-plugins
  3. Run /skills
  4. Observe: 0 skills reported despite SKILL.md files existing at:

~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.1/skills/access/SKILL.md
~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.1/skills/configure/SKILL.md

Both SKILL.md files have valid frontmatter (name, description, user-invocable, allowed-tools).
The plugin.json manifest does not explicitly declare skills — identical to the discord plugin which has the same structure, so this appears intentional.
Reproduces in both standard sessions (claude) and channel sessions (claude --channels plugin:telegram@claude-plugins-official).
Workaround: manually copying SKILL.md files to ~/.claude/skills/ makes them visible.

Claude Model

Sonnet (default)

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.1.80 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

!Image

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗