github / github/app

Extension loader does not follow symlinks in .github/extensions/

未关闭
#868 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Bugs
主要语言
没有语言数据
星标
2.1k
派生
153
PR 合并指标
30 天内没有已合并 PR

描述

## Summary

The extension loader does not detect extensions that are symlinked into `.github/extensions/`. Only real (copied) directories are discovered.

## Steps to Reproduce

1. Have a canvas extension in a repo directory (e.g. `extensions/marp-viewer/`) with dependencies installed (`node_modules` present) — see [cedricvidal/copilot-extensions](https://github.com/cedricvidal/copilot-extensions/) for the Marp Viewer canvas extension used to reproduce this
2. Create a symlink: `ln -s ../../extensions/marp-viewer .github/extensions/marp-viewer`
3. Reload extensions → **0 extensions found**
4. Copy the same directory instead: `cp -r extensions/marp-viewer .github/extensions/marp-viewer`
5. Reload extensions → **1 extension found and running**

## Expected Behavior

Symlinked extension directories in `.github/extensions/` (and `~/.copilot/extensions/`) should be followed and loaded like regular directories.

## Why This Matters

- **Development workflow:** Symlinks are useful when the extension source lives elsewhere in the repo (or in a monorepo) and you don't want to duplicate files. The current behavior forces a copy, which makes iterating on extensions harder.
- **Third-party extension management:** Supporting symlinks would enable tooling similar to `npx skills` to manage extensions by symlinking them into the extensions directory, rather than copying or inlining them.

## Environment

- macOS (Darwin)
- GitHub Copilot App (technical preview)

贡献指南

打开贡献指南

调研方向

首先在 .github/extensions/ 中使用 symlink 复现该问题并重新加载扩展;将其与复制的目录进行比较,然后检查 loader 对 .github/extensions/ 和 ~/.copilot/extensions/ 的处理方式。完成的标准是:通过 symlink 链接的扩展目录能够被发现,并像普通目录一样运行。

由索引模型根据 Issue 内容生成。

评估

技术栈
macos, node.js
领域
desktop, tooling
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
冷清
描述清晰度
基本清楚
新手友好度
55/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。