300多MB的 Skills 存了3份,我讓 Codex、Claude Code、Antigravity 共用同一個skills文件夾

作者:草莓派
日期:2026年6月11日 下午8:38
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Windows Junction 統一管理 Claude CodeCodexAntigravity 嘅 Skills,告別重複儲存同更新煩惱

整理版摘要

作者整理電腦時發現同一批 Skills 喺三個 AI 工具(Claude CodeCodexAntigravity)各自存咗一份,其中 Claude Code 嘅 Skills 目錄已經超過 300MB。唔單止浪費空間,每次更新一個 Skill 都要手動喺三個位置替換,好麻煩。

為咗解決呢個問題,作者用 WindowsJunction(目錄聯接)將三個 Skills 目錄指向同一個真實文件夾,實現共享。佢詳細講解咗點樣合併目錄、處理同名衝突、保留 Codex 嘅 .system 系統 Skills,同埋建立 Junction 嘅 PowerShell 命令。

最終結論係:呢個方法可以顯著減少重複儲存,簡化更新流程,而且所有工具照常運作,唔會影響功能。

  • 使用 Windows Junction 可以將多個 AI 工具嘅 Skills 目錄指向同一文件夾,節省空間同維護成本
  • 合併前要先處理同名 Skill 衝突,確認保留邊個版本,再將獨有嘅 Skills 搬入共享目錄
  • Codex 嘅 .system 系統 Skills 要特別處理,唔可以直接刪除,應一併遷入共享目錄
  • 建立 Junction 前最好將原目錄改名備份,避免創建失敗導致資料遺失
  • 驗證步驟:用 Get-Item 檢查 LinkTypeTarget,確保所有工具都指到同一個真實路徑
值得記低
筆記

PowerShell Skills 合併與 Junction 建立步驟

定義路徑 -> 合併目錄(避免同名衝突)-> 遷移 .system -> 改名舊目錄 -> 建立 Junction -> 驗證。具體命令見文章。

結構示例

內容結構

內容結構 text
C:\Users\你的用戶名\.agents\skills             真實文件
C:\Users\你的用戶名\.claude\skills             指向真實文件
C:\Users\你的用戶名\.codex\skills              指向真實文件
C:\Users\你的用戶名\.gemini\config\skills      指向真實文件
整理重點

發現問題:Skills 重複儲存,更新要跑三個地方

作者整理電腦時發現,同一批 Skills 竟然喺 Claude CodeCodexAntigravity 各存咗一份,單係 Claude Code 嘅 Skills 目錄就已經超過 300MB。

唔單止佔空間,每次更新一個 Skill 都要手動喺三個位置替換

咁樣好唔方便,所以佢諗到將三個目錄指向同一份真實文件,用 WindowsJunction 嚟實現。

整理重點

解決方案:用 Junction 建立共享文件夾

Junction 類似文件夾嘅別名,建立之後幾乎唔額外佔用空間,幾個路徑訪問嘅係同一批文件。

真實文件放喺 C:\Users\你的用戶名\.agents\skills

然後將 Claude CodeCodexAntigravity 嘅 Skills 目錄用 Junction 指過去,就可以共用同一份 Skills。

整理重點

實際步驟:合併目錄、保留 .system、建立 Junction

首先退出所有工具,備份現有 Skills,然後用 PowerShell 定義路徑變數,方便之後操作。

  1. 1 合併三個目錄:先列出同名 Skills,確認保留版本,再將獨有 Skills 搬入共享目錄。
  2. 2 Codex 嘅 .system 目錄特別重要,要成個移入共享目錄,如果同名就逐項合併。
  3. 3 將原目錄改名做 skills.backup,然後用 New-Item -ItemType Junction 建立 Junction 指向共享目錄。
  4. 4 Get-Item 檢查三個路徑嘅 LinkTypeTarget,確認全部指向同一位置。

作者特別提醒:如果目標位置已經存在同名目錄,Junction 會創建失敗,所以一定要先改名

完成之後,喺共享目錄裝一個新 Skill,三個工具都可以讀到,確認成功。

整理重點

點樣驗證同日常使用?

Get-Item 命令檢查每個 JunctionLinkType 應該係 Junction,Target 指向共享目錄就代表設定正確。

以後只需要喺 .agents\skills 入面管理所有 Skills,Claude CodeCodexAntigravity 都會自動讀到最新版本

作者仲提醒:如果想還原,只要刪除 Junction 並將備份嘅文件夾改名返就得,好靈活。

今日整理電腦嘅時候,發現同一批 Skills,我竟然存咗三份,

Claude Code 一份,Codex 一份,Antigravity 仲有一份。其中淨係 Claude Code 嘅 Skills 目錄就已經超過 300MB。

佔空間仲係小事,更麻煩嘅係,同一個 Skill 更新咗之後,我要喺三個目錄裏面分別替換。

於是我將三套 Skills 合併到一個目錄裏面,只保留一份真實檔案,等 Claude Code、Codex 同 Antigravity 可以共同讀取

而家我嘅目錄關係係:

C:\Users\你的用戶名\.agents\skills             真實文件
C:\Users\你的用戶名\.claude\skills             指向真實文件
C:\Users\你的用戶名\.codex\skills              指向真實文件
C:\Users\你的用戶名\.gemini\config\skills      指向真實文件


用嘅係 Windows 嘅 Junction,中文通常叫「目錄聯接」。

Junction 到底係咩

可以將 Junction 理解成資料夾嘅別名。

假設真實檔案放喺:

C:\Users\你的用戶名\.agents\skills


我再建立一個 Junction,Junction 幾乎唔會額外佔用空間,幾個路徑存取嘅係同一批檔案。

C:\Users\你的用戶名\.claude\skills


以後 Claude Code 存取自己嘅 skills 資料夾時,呢個資料夾指向嘅係.agents\skills

遷移過程

準備工作

退出 Claude Code、Codex 同 Antigravity,避免遷移時檔案正被佔用。

備份現有 Skills。首先將呢啲 skills 複製到一個臨時備份位置 .agents\skills-backup

打開 PowerShell ,

先定義幾個路徑,咁樣就唔使喺每條命令入面重複輸入用戶名:

$homePath = $env:USERPROFILE
$shared   = Join-Path $homePath '.agents\skills'
$claude   = Join-Path $homePath '.claude\skills'
$codex    = Join-Path $homePath '.codex\skills'
$gemini   = Join-Path $homePath '.gemini\config\skills'


建立共享目錄:

New-Item -ItemType Directory -Force -Path $shared


第一步:合併三個目錄裏面嘅 Skills

唔可以直接將一個目錄覆蓋到另一個目錄,因為三個目錄入面可能存在同名 skill,而且內容同版本未必一樣。

所以要事先處理一下:

  1. 先列出同名項目。

  2. 確認要保留邊個版本。

  3. 再將其他目錄入面獨有嘅 Skills 移入共享目錄。

查看兩個目錄入面同名嘅 Skills:

$sharedNames = Get-ChildItem -LiteralPath $shared -Directory |
  Select-Object -ExpandProperty Name
$claudeNames = Get-ChildItem -LiteralPath $claude -Directory |
  Select-Object -ExpandProperty Name
Compare-Object $sharedNames $claudeNames -IncludeEqual |
  Where-Object SideIndicator -eq '==' |
  Select-Object -ExpandProperty InputObject


確認同名項目之後,再遷移 Claude Code 入面冇衝突嘅 Skills:

$sharedNames = Get-ChildItem -LiteralPath $shared -Directory |
  Select-Object -ExpandProperty Name
Get-ChildItem -LiteralPath $claude -Directory |
  Where-Object { $_.Name -notin $sharedNames } |
  ForEach-Object {
    Move-Item -LiteralPath $_.FullName -Destination $shared
  }


Antigravity 目錄都按同樣嘅方法處理:

$sharedNames = Get-ChildItem -LiteralPath $shared -Directory |
  Select-Object -ExpandProperty Name
Get-ChildItem -LiteralPath $gemini -Directory |
  Where-Object { $_.Name -notin $sharedNames } |
  ForEach-Object {
    Move-Item -LiteralPath $_.FullName -Destination $shared
  }


第二步:唔好誤刪 Codex 嘅 .system

Codex 嘅 Skills 目錄同另外兩個有少少唔同。

我的:

C:\Users\你的用戶名\.codex\skills


下面有一個 .system 目錄,入面係 Codex 自帶嘅系統 Skills,例如:

imagegen
openai-docs
plugin-creator
skill-creator
skill-installer


呢個目錄唔可以刪除,

圖片

先將佢整體遷入共享目錄:

$codexSystem  = Join-Path $codex '.system'
$sharedSystem = Join-Path $shared '.system'
if (Test-Path $codexSystem) {
  Move-Item -LiteralPath $codexSystem -Destination $sharedSystem
}


如果共享目錄入面已經存在 .system,唔好強行覆蓋,先比較兩邊內容,再逐項合併。

第三步:將原目錄改成 Junction

所有 Skills 都放曬入 .agents\skills 之後,就可以將原來嘅三個目錄替換成 Junction。

呢度最穩妥嘅做法係先將舊目錄改名,

Rename-Item -LiteralPath $claude -NewName 'skills.backup'
Rename-Item -LiteralPath $codex  -NewName 'skills.backup'
Rename-Item -LiteralPath $gemini -NewName 'skills.backup'


然後建立 Junction:

New-Item -ItemType Junction -Path $claude -Target $shared
New-Item -ItemType Junction -Path $codex  -Target $shared
New-Item -ItemType Junction -Path $gemini -Target $shared


注意:如果目標位置已經有同名目錄,Junction 會建立失敗。一定要先確認原目錄已經改名或者移走。

第四步:檢查係咪真係指向同一個目錄

運行:

Get-Item $claude, $codex, $gemini |
  Select-Object FullName, LinkType, Target


正常情況下,三行嘅 LinkType 都應該顯示:

Junction


Target 都應該指向:

C:\Users\你的用戶名\.agents\skills


圖片

喺 .agents\skills 入面安裝一個新嘅 screenshot skill:

圖片

喺 Claude Code、Codex 同 Antigravity 檢查係咪讀到呢個新裝嘅 skill。

圖片

多謝你睇到呢度,如果你覺得有用,可以按一下關注,唔好迷路~


今天整理電腦時,發現同一批 Skills,我竟然存了三份,

Claude Code 一份,Codex 一份,Antigravity 還有一份。其中僅 Claude Code 的 Skills 目錄就已經超過 300MB。

佔空間還只是小事,更麻煩的是,同一個 Skill 更新後,我得在三個目錄裏分別替換。

於是我把三套 Skills 合併到一個目錄裏,只保留一份真實文件,讓 Claude Code、Codex 和 Antigravity 能共同讀取

現在我的目錄關係是:

C:\Users\你的用戶名\.agents\skills             真實文件
C:\Users\你的用戶名\.claude\skills             指向真實文件
C:\Users\你的用戶名\.codex\skills              指向真實文件
C:\Users\你的用戶名\.gemini\config\skills      指向真實文件


用的是 Windows 的 Junction,中文通常叫“目錄聯接”。

Junction 到底是什麼

可以把 Junction 理解成文件夾的別名。

假設真實文件放在:

C:\Users\你的用戶名\.agents\skills


我再創建一個 Junction,Junction 幾乎不額外佔用空間,幾個路徑訪問的是同一批文件。

C:\Users\你的用戶名\.claude\skills


以後 Claude Code 訪問自己的 skills 文件夾時,這個文件夾指向的是.agents\skills

遷移過程

準備工作

退出 Claude Code、Codex 和 Antigravity,避免遷移時文件正在被佔用。

備份現有 Skills。先把這些skills複製到一個臨時備份位置 .agents\skills-backup

打開 PowerShell ,

先定義幾個路徑,這樣不用在每條命令裏重複輸入用戶名:

$homePath = $env:USERPROFILE
$shared   = Join-Path $homePath '.agents\skills'
$claude   = Join-Path $homePath '.claude\skills'
$codex    = Join-Path $homePath '.codex\skills'
$gemini   = Join-Path $homePath '.gemini\config\skills'


創建共享目錄:

New-Item -ItemType Directory -Force -Path $shared


第一步:合併三個目錄裏的 Skills

不能直接把一個目錄覆蓋到另一個目錄,因為三個目錄裏可能存在同名 skill,而內容和版本並不一定相同。

所以要先做一下處理:

  1. 先列出同名項。

  2. 確認要保留哪個版本。

  3. 再把其他目錄中的獨有 Skills 移入共享目錄。

查看兩個目錄中的同名 Skills:

$sharedNames = Get-ChildItem -LiteralPath $shared -Directory |
  Select-Object -ExpandProperty Name
$claudeNames = Get-ChildItem -LiteralPath $claude -Directory |
  Select-Object -ExpandProperty Name
Compare-Object $sharedNames $claudeNames -IncludeEqual |
  Where-Object SideIndicator -eq '==' |
  Select-Object -ExpandProperty InputObject


確認同名項後,再遷移 Claude Code 中不存在衝突的 Skills:

$sharedNames = Get-ChildItem -LiteralPath $shared -Directory |
  Select-Object -ExpandProperty Name
Get-ChildItem -LiteralPath $claude -Directory |
  Where-Object { $_.Name -notin $sharedNames } |
  ForEach-Object {
    Move-Item -LiteralPath $_.FullName -Destination $shared
  }


Antigravity 目錄也按同樣的方法處理:

$sharedNames = Get-ChildItem -LiteralPath $shared -Directory |
  Select-Object -ExpandProperty Name
Get-ChildItem -LiteralPath $gemini -Directory |
  Where-Object { $_.Name -notin $sharedNames } |
  ForEach-Object {
    Move-Item -LiteralPath $_.FullName -Destination $shared
  }


第二步:別誤刪 Codex 的 .system

Codex 的 Skills 目錄和另外兩個有一點不同。

我的:

C:\Users\你的用戶名\.codex\skills


下面有一個 .system 目錄,裏面是 Codex 自帶的系統 Skills,例如:

imagegen
openai-docs
plugin-creator
skill-creator
skill-installer


這個目錄不能刪,

圖片

先把它整體遷入共享目錄:

$codexSystem  = Join-Path $codex '.system'
$sharedSystem = Join-Path $shared '.system'
if (Test-Path $codexSystem) {
  Move-Item -LiteralPath $codexSystem -Destination $sharedSystem
}


如果共享目錄裏已經存在 .system,不要強行覆蓋,先比較兩邊內容,再逐項合併。

第三步:把原目錄改成 Junction

所有 Skills 都放入 .agents\skills 後,就可以把原來的三個目錄替換成 Junction。

這裏最穩妥的做法是先把舊目錄改名,

Rename-Item -LiteralPath $claude -NewName 'skills.backup'
Rename-Item -LiteralPath $codex  -NewName 'skills.backup'
Rename-Item -LiteralPath $gemini -NewName 'skills.backup'


然後創建 Junction:

New-Item -ItemType Junction -Path $claude -Target $shared
New-Item -ItemType Junction -Path $codex  -Target $shared
New-Item -ItemType Junction -Path $gemini -Target $shared


注意:如果目標位置已經存在同名目錄,Junction 會創建失敗。必須先確認原目錄已經改名或移走。

第四步:檢查是否真的指向同一目錄

運行:

Get-Item $claude, $codex, $gemini |
  Select-Object FullName, LinkType, Target


正常情況下,三行的 LinkType 都應該顯示:

Junction


Target 都應該指向:

C:\Users\你的用戶名\.agents\skills


圖片

在.agents\skills中安裝一個新的screenshot skill:

圖片

在Claude Code、Codex 和 Antigravity 檢查是否能讀到這個新裝的skill。

圖片

謝謝你看到這裏,如果你覺得有用,可以點一下關注,不迷路~