pingdotgg / pingdotgg/t3code

[Bug]: Plugin-provided Claude skills (e.g. mattpocock-skills) never appear in the `$` picker

Open
#5,622 2 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
23k
Forks
5.9k
Avg merge
11h 14m
Merged PRs (30d)
357

Description

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 plugin that ships skills (e.g. mattpocock-skills) and enable it at the project level:
    // <project>/.claude/settings.json
    { "enabledPlugins": { "mattpocock-skills@claude-plugins-official": true } }
    
  2. Open the project in T3 Code (desktop AppImage), start a thread, and type $ in the composer.
  3. Observe: no mattpocock-skills:* entries appear in the picker, even though Claude Code itself lists them.
  4. For comparison, a skill placed under <project>/.claude/skills/<name>/SKILL.md does appear in the picker.
Expected behavior

Skills contributed by enabled plugins should appear in the $ picker alongside filesystem skills, since the engine loads them in the running session.

Actual behavior

Plugin-provided skills are never listed. The $ picker is fed from the provider snapshot's skills field, which discoverClaudeSkills (apps/server/src/provider/Drivers/ClaudeSkills.ts, ~L102) builds by scanning only two filesystem roots:

const roots = [
  { directory: path.join(configDirPath, "skills"), scope: "user" },
  ...(cwd ? [{ directory: path.join(cwd, ".claude", "skills"), scope: "project" as const }] : []),
];

Neither root covers the plugin cache, so ~/.claude/plugins/cache/claude-plugins-official/mattpocock-skills/1.2.3/skills/** is invisible to the picker.

This is picker/discovery-only: the skill is still fully invocable by name. I captured the provider init handshake for a thread with the plugin enabled and it lists mattpocock-skills:grill-with-docs (and all other plugin skills) in the model's loaded skills, with the Skill tool present. So the engine has them; only T3's filesystem inventory misses them.

Impact

Minor bug or occasional failure

Version or commit

0.0.32-nightly.20260807.1023 (desktop AppImage), Linux x64

Environment

Ubuntu (kernel 7.0.0), T3 Code desktop AppImage 0.0.32-nightly.20260807.1023, Claude provider (claude-agent-sdk 0.3.223), mattpocock-skills 1.2.3

Logs or stack traces

Provider init handshake (session claude/system/init, trimmed to the relevant fields):

{
  "skills": [ "mattpocock-skills:grill-with-docs", "mattpocock-skills:tdd", "..." ],
  "tools": [ "Skill", "..." ]
}
Workaround

Invoke plugin skills by name in prose ("use grill-with-docs on this") rather than via the $ picker — the model resolves and runs them. Picker-based discovery for plugin skills is unavailable.

Notes

Same underlying discovery limitation as #4544 (packaged desktop, project-level skills) and #5487 (.agents/skills root), but specifically for plugin-contributed skills. PR #5488 proposes adding a .agents/skills scan root; plugin skills would need a third source (the enabled plugin cache dirs) or surfacing the SDK init skill list into the snapshot instead of filesystem-only discovery.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in apps/server/src/provider/Drivers/ClaudeSkills.ts around discoverClaudeSkills and trace how its filesystem inventory becomes the provider snapshot's skills field. Compare that inventory with the Claude provider init handshake and enabled plugin cache paths; done means enabled plugin-provided skills appear in the $ picker alongside filesystem skills without breaking existing project skills.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
74/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.