Trae IDE Skills 嵌套目录解决方案
使用 Symbolic Link 解决 Trae IDE 无法发现嵌套目录中 Skills 的问题问题背景Trae 的 Skills 发现机制Trae IDE 在启动时会扫描目录(中文版为),查找直接子目录中的SKILL.md文件:├── skill-a/SKILL.md✓ 会被发现├── skill-b/SKILL.md✓ 会被发现└── nested/SKILL.md✗ 不会被发现(嵌套太深)
Trae IDE Skills 嵌套目录解决方案
使用 Symbolic Link 解决 Trae IDE 无法发现嵌套目录中 Skills 的问题
问题背景
Trae 的 Skills 发现机制
Trae IDE 在启动时会扫描 ~/.trae/skills/ 目录(中文版为 ~/.trae-cn/skills/),查找直接子目录中的 SKILL.md 文件:
~/.trae/skills/
├── skill-a/SKILL.md ✓ 会被发现(一级子目录)
├── skill-b/SKILL.md ✓ 会被发现(一级子目录)
└── some-folder/
└── nested/SKILL.md ✗ 不会被发现(二级嵌套)
关键规则:Trae 只扫描一级子目录,不会递归扫描嵌套目录。
常见的目录结构冲突
许多优秀的 Skills 仓库采用如下结构:
some-skills-repo/
├── skills/ <- Skills 在子目录中
│ ├── skill-a/SKILL.md
│ ├── skill-b/SKILL.md
│ └── ...
├── README.md
├── docs/
└── ...
问题:Skills 位于 repo/skills/ 子目录中,Trae 无法直接发现它们。
❌ 错误方案(不工作)
创建一个符号链接指向整个 skills 目录:
# ❌ 这个方案不工作!
ln -s ~/.trae/superpowers/skills ~/.trae/skills/superpowers
结果:
~/.trae/skills/
├── superpowers/ <- 符号链接(容器目录)
│ ├── brainstorming/SKILL.md ✗ 二级嵌套,不会被发现
│ ├── writing-plans/SKILL.md ✗ 二级嵌套,不会被发现
│ └── ...
为什么不行:Trae 只扫描一级子目录,superpowers/brainstorming/SKILL.md 是二级嵌套!
✅ 正确方案:为每个 Skill 创建单独的链接
方案一:使用脚本批量创建(推荐)
Windows (PowerShell)
注意:Windows 创建 Symbolic Link 需要管理员权限。请以管理员身份运行 PowerShell。
# 定义 skills 列表
$skills = @(
"brainstorming",
"dispatching-parallel-agents",
"executing-plans",
"finishing-a-development-branch",
"receiving-code-review",
"requesting-code-review",
"subagent-driven-development",
"systematic-debugging",
"test-driven-development",
"using-git-worktrees",
"using-superpowers",
"verification-before-completion",
"writing-plans",
"writing-skills"
)
# 为每个 skill 创建 Symbolic Link(需要管理员权限)
foreach ($skill in $skills) {
$target = "$env:USERPROFILE\.trae-cn\skills\superpowers\skills\$skill"
$link = "$env:USERPROFILE\.trae-cn\skills\$skill"
if (-not (Test-Path $link)) {
New-Item -ItemType SymbolicLink -Path $link -Target $target | Out-Null
Write-Host "Created: $skill" -ForegroundColor Green
} else {
Write-Host "Exists: $skill" -ForegroundColor Yellow
}
}
替代方案:使用 Junction(无需管理员权限)
如果无法获取管理员权限,可以使用 Junction 作为替代:
# Junction 不需要管理员权限
foreach ($skill in $skills) {
$target = "$env:USERPROFILE\.trae-cn\skills\superpowers\skills\$skill"
$link = "$env:USERPROFILE\.trae-cn\skills\$skill"
if (-not (Test-Path $link)) {
New-Item -ItemType Junction -Path $link -Target $target | Out-Null
Write-Host "Created: $skill" -ForegroundColor Green
}
}
Junction 与 Symbolic Link 的区别:
| 类型 | 权限要求 | 跨文件系统 | 兼容性 |
|---|---|---|---|
| Symbolic Link | 需要管理员权限 | 支持 | 最佳 |
| Junction | 普通用户即可 | 仅同一文件系统 | Windows 专用 |
macOS / Linux
# 定义 skills 列表
skills=(
"brainstorming"
"dispatching-parallel-agents"
"executing-plans"
"finishing-a-development-branch"
"receiving-code-review"
"requesting-code-review"
"subagent-driven-development"
"systematic-debugging"
"test-driven-development"
"using-git-worktrees"
"using-superpowers"
"verification-before-completion"
"writing-plans"
"writing-skills"
)
# 为每个 skill 创建符号链接
for skill in "${skills[@]}"; do
target="$HOME/.trae/skills/superpowers/skills/$skill"
link="$HOME/.trae/skills/$skill"
if [ ! -L "$link" ]; then
ln -s "$target" "$link"
echo "Created: $skill"
else
echo "Exists: $skill"
fi
done
方案二:手动创建单个链接
Windows (PowerShell)
# 单个 skill 创建示例(需要管理员权限)
New-Item -ItemType SymbolicLink `
-Path "$env:USERPROFILE\.trae-cn\skills\brainstorming" `
-Target "$env:USERPROFILE\.trae-cn\skills\superpowers\skills\brainstorming"
macOS / Linux
# 单个 skill 创建示例
ln -s ~/.trae/skills/superpowers/skills/brainstorming ~/.trae/skills/brainstorming
最终目录结构
~/.trae-cn/skills/
│
├── superpowers/ <- 仓库根目录
│ └── skills/ <- 源 skills(实际文件)
│ ├── brainstorming/SKILL.md
│ ├── writing-plans/SKILL.md
│ └── ...
│
├── brainstorming/ ────────────────► superpowers/skills/brainstorming/
├── writing-plans/ ────────────────► superpowers/skills/writing-plans/
├── test-driven-development/ ──────► superpowers/skills/test-driven-development/
├── systematic-debugging/ ─────────► superpowers/skills/systematic-debugging/
├── subagent-driven-development/ ──► superpowers/skills/subagent-driven-development/
├── dispatching-parallel-agents/ ──► superpowers/skills/dispatching-parallel-agents/
├── executing-plans/ ──────────────► superpowers/skills/executing-plans/
├── verification-before-completion/ ► superpowers/skills/verification-before-completion/
├── requesting-code-review/ ───────► superpowers/skills/requesting-code-review/
├── receiving-code-review/ ────────► superpowers/skills/receiving-code-review/
├── using-git-worktrees/ ──────────► superpowers/skills/using-git-worktrees/
├── finishing-a-development-branch/ ► superpowers/skills/finishing-a-development-branch/
├── writing-skills/ ───────────────► superpowers/skills/writing-skills/
└── using-superpowers/ ────────────► superpowers/skills/using-superpowers/
关键点:每个 skill 都是 skills/ 目录下的直接子目录,Trae 可以正确发现!
工作原理
┌─────────────────────────────────────────────────────────────┐
│ Trae IDE 启动 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 扫描 ~/.trae/skills/ 目录 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 发现直接子目录(一级): │
│ ├── brainstorming/SKILL.md ✓ Symbolic Link │
│ ├── writing-plans/SKILL.md ✓ Symbolic Link │
│ ├── test-driven-development/ ✓ Symbolic Link │
│ └── ... │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 解析 SKILL.md 的 frontmatter │
│ 加载技能到内存 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 技能准备就绪,等待触发 │
└─────────────────────────────────────────────────────────────┘
安装指南
完整步骤
- 克隆仓库
- 为每个 skill 创建链接
- 重启 Trae IDE
- 验证安装
示例:以 Superpowers 为例
步骤 1:克隆仓库
macOS / Linux:
git clone https://github.com/obra/superpowers.git ~/.trae/superpowers
Windows (PowerShell):
git clone https://github.com/obra/superpowers.git "$env:USERPROFILE\.trae-cn\superpowers"
中文版 Trae 用户:将
.trae替换为.trae-cn
步骤 2:创建链接
使用上面的脚本为每个 skill 创建链接。
步骤 3:重启 Trae IDE
关闭并重新打开 Trae IDE,让它重新扫描 skills 目录。
步骤 4:验证安装
# Windows - 检查所有 Symbolic Link
Get-ChildItem "$env:USERPROFILE\.trae-cn\skills" -Directory |
Where-Object { $_.LinkType -eq "SymbolicLink" } |
Select-Object Name
在 Trae 中开始新对话,尝试:
- “使用头脑风暴 skill 来分析这个需求”
- “帮我用 TDD 方式实现这个功能”
如果 Trae 能够识别并激活相应的技能,说明安装成功!
SKILL.md 格式
每个技能的 SKILL.md 文件包含 YAML frontmatter:
---
name: skill-name
description: Use when [触发条件] - [技能功能描述]
---
# Skill Name
[技能内容...]
Trae 通过 description 字段判断何时自动激活技能。
更新与维护
更新 Skills
由于使用了链接,更新仓库后立即生效:
macOS / Linux:
cd ~/.trae/superpowers && git pull
Windows (PowerShell):
cd "$env:USERPROFILE\.trae-cn\superpowers"; git pull
卸载
删除所有 Symbolic Link:
Windows (PowerShell):
$skills = @("brainstorming", "writing-plans", "test-driven-development", "systematic-debugging", "subagent-driven-development", "dispatching-parallel-agents", "executing-plans", "verification-before-completion", "requesting-code-review", "receiving-code-review", "using-git-worktrees", "finishing-a-development-branch", "writing-skills", "using-superpowers")
foreach ($skill in $skills) {
$link = "$env:USERPROFILE\.trae-cn\skills\$skill"
if (Test-Path $link) {
Remove-Item $link -Force
Write-Host "Removed: $skill"
}
}
macOS / Linux:
rm ~/.trae/skills/brainstorming
rm ~/.trae/skills/writing-plans
# ... 删除其他链接
删除仓库(可选):
rm -rf ~/.trae/superpowers
故障排除
技能未被发现
- 验证链接是否正确:
Windows:
Get-ChildItem "$env:USERPROFILE\.trae-cn\skills" -Directory |
Where-Object { $_.LinkType -eq "SymbolicLink" } |
Select-Object Name, Target
macOS / Linux:
ls -la ~/.trae/skills/
- 检查 SKILL.md 是否存在:
Test-Path "$env:USERPROFILE\.trae-cn\skills\brainstorming\SKILL.md"
- 重启 Trae IDE:技能在启动时被发现
中文版 Trae 路径
中文版 Trae 使用 .trae-cn 目录:
# 中文版路径
$env:USERPROFILE\.trae-cn\skills\
$env:USERPROFILE\.trae-cn\superpowers\
技能激活不正确
检查 SKILL.md 的 description 字段是否清晰描述了触发条件。
创建自定义技能
你可以在 ~/.trae/skills/ 中创建自己的技能:
mkdir -p ~/.trae/skills/my-custom-skill
创建 ~/.trae/skills/my-custom-skill/SKILL.md:
---
name: my-custom-skill
description: Use when [触发条件] - [技能功能描述]
---
# My Custom Skill
[你的技能内容...]
## 使用场景
- 场景 1
- 场景 2
## 工作流程
1. 步骤 1
2. 步骤 2
description 字段是 Trae 自动激活技能的关键,请清晰描述触发条件。
命令速查表
Windows (PowerShell)
# 克隆仓库
git clone https://github.com/obra/superpowers.git "$env:USERPROFILE\.trae-cn\superpowers"
# 批量创建 Symbolic Link(需要管理员权限)
$skills = @("brainstorming", "writing-plans", "test-driven-development", "systematic-debugging", "subagent-driven-development", "dispatching-parallel-agents", "executing-plans", "verification-before-completion", "requesting-code-review", "receiving-code-review", "using-git-worktrees", "finishing-a-development-branch", "writing-skills", "using-superpowers")
foreach ($skill in $skills) {
New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\.trae-cn\skills\$skill" -Target "$env:USERPROFILE\.trae-cn\superpowers\skills\$skill" -Force | Out-Null
}
# 验证链接
Get-ChildItem "$env:USERPROFILE\.trae-cn\skills" -Directory | Where-Object { $_.LinkType -eq "SymbolicLink" } | Select-Object Name
# 更新
cd "$env:USERPROFILE\.trae-cn\superpowers"; git pull
# 卸载(删除所有链接)
foreach ($skill in $skills) { Remove-Item "$env:USERPROFILE\.trae-cn\skills\$skill" -Force }
Windows 替代方案:Junction(无需管理员权限)
# 批量创建 Junction(无需管理员权限)
foreach ($skill in $skills) {
New-Item -ItemType Junction -Path "$env:USERPROFILE\.trae-cn\skills\$skill" -Target "$env:USERPROFILE\.trae-cn\superpowers\skills\$skill" -Force | Out-Null
}
# 验证 Junction
Get-ChildItem "$env:USERPROFILE\.trae-cn\skills" -Directory | Where-Object { $_.LinkType -eq "Junction" } | Select-Object Name
macOS / Linux
# 克隆仓库
git clone https://github.com/obra/superpowers.git ~/.trae/superpowers
# 批量创建符号链接
skills=("brainstorming" "writing-plans" "test-driven-development" "systematic-debugging" "subagent-driven-development" "dispatching-parallel-agents" "executing-plans" "verification-before-completion" "requesting-code-review" "receiving-code-review" "using-git-worktrees" "finishing-a-development-branch" "writing-skills" "using-superpowers")
for skill in "${skills[@]}"; do
ln -s ~/.trae/superpowers/skills/$skill ~/.trae/skills/$skill
done
# 验证链接
ls -la ~/.trae/skills/
# 更新
cd ~/.trae/superpowers && git pull
# 卸载
for skill in "${skills[@]}"; do rm ~/.trae/skills/$skill; done
rm -rf ~/.trae/superpowers
相关资源
- Trae 官网:https://www.trae.ai/
- Trae 文档:https://docs.trae.ai/
- Superpowers 仓库(示例):https://github.com/obra/superpowers
总结
关键要点
- Trae 只扫描一级子目录 - 不会递归扫描嵌套目录
- 为每个 skill 创建单独的链接 - 不是创建一个容器链接
- 使用 Symbolic Link - 跨平台通用方案
- 链接后每个 skill 都是直接子目录 - Trae 可以正确发现
优点
- 无需修改仓库 - 不需要提交任何更改
- 自动更新 -
git pull后立即生效 - 原生支持 - 使用 Trae 标准的技能发现机制
- 通用方案 - 适用于任何嵌套目录的 Skills 仓库
祝你使用愉快!🚀
更多推荐



所有评论(0)