最精準的一句話理解:
Skill 定義「Codex 應該怎麼完成一項工作」;Plugin 則把 Skills、工具、MCP Server 與外部服務整合,包裝成可安裝、分享及版本管理的產品套件。
兩者不是互斥關係。更準確地說:
Skill 是 AI coding workflow 的工作流程單元;Plugin 是能力的安裝、整合與發佈容器。
在 OpenAI Codex 的使用情境中,Skill 比較像「專業工作流程與操作指引」,用來告訴 Codex 面對某類任務時應該怎麼做;Plugin 則比較像「可安裝的能力套件」,可以把多個 Skills、App/Connector、MCP Server、Hooks、Assets 與設定整合在一起,形成一套可重複部署與管理的工具包。

Skill 與 Plugin 詳細比較
| 比較項目 | Skill | Plugin |
|---|---|---|
| 核心本質 | 可重複使用的工作流程與操作指引 | 可安裝、發佈、版本化的功能套件 |
| 解決的問題 | 告訴 Codex「這件事應該怎麼做」 | 把多種能力整合成「一套可安裝產品」 |
| 基本結構 | 一個包含 SKILL.md 的資料夾 | 必須包含 .codex-plugin/plugin.json |
| 可包含內容 | 指令、參考資料、範例、模板、腳本、素材 | Skills、App、Connector、MCP、Hooks、資產、圖示及套件設定 |
| 是否能包含多個 Skill | 本身通常對應一個聚焦工作流程 | 可以包含一個或多個 Skills |
| 是否直接提供外部工具 | 通常不會;主要是指導 Codex 使用現有工具 | 可以透過 App、Connector 或 MCP Server 提供新工具 |
| 是否需要登入帳號 | 通常不需要 | 如果包含 Shopify、Slack、Gmail 等 Connector,通常需要授權 |
| 能否讀寫真實資料 | 要看環境原本是否已有可用工具 | 若包含已授權的 App/MCP,可以實際讀寫外部資料 |
| 自動啟用方式 | Codex 可依 description 判斷,也可明確指定 | 安裝並啟用後,其 Skills 與工具才會進入可用範圍 |
| 指定方式 | CLI/IDE 可用 $skill-name 或技能選單 | ChatGPT 可用 @plugin,也能指定 Plugin 內的 Skill |
| Context 使用 | 採漸進式載入,需要時才讀取完整 SKILL.md | Plugin 本身是容器;其中 Skills 同樣採漸進式載入 |
| 更新方式 | 更新個別 Skill 資料夾或其來源 | 依 Plugin 版本整套更新 |
| 版本管理 | 獨立 Skill 不一定有統一套件版本 | Manifest 有明確的 version |
| 啟用/停用 | 可以針對個別 Skill 設定 | 可以整個 Plugin 安裝、停用或移除 |
| 分享方式 | 適合個人、本機或跟著 Repository 分享 | 適合 Marketplace、團隊、Workspace 或公開發佈 |
| 最適合的規模 | 單一、清楚、聚焦的任務 | 多流程、跨工具、需要登入或團隊統一管理 |
| 目前實例 | GSAP Core、Timeline、ScrollTrigger Skills | Shopify、Slack、Gmail、Google Drive Plugin |
官方將 Skill 定義為包含操作指引、資源及選用腳本的可重複工作流程;Plugin 則是能包含 Skills、App、MCP 與其他元件的安裝套件。Build skills、Build plugins
Skill 是什麼?負責定義 Codex 怎麼完成一項工作
Skill 的核心不是「增加一個外部系統」,而是讓 OpenAI Codex 或 AI coding agent 穩定遵循某種專業做法。它通常用來定義一套可重複執行的工作流程,讓 Codex 在面對相似任務時,不需要每次重新理解規則。
例如一個 gsap-scrolltrigger Skill 可以規定:
- 如何註冊 ScrollTrigger。
- 如何設定起點、終點與 scrub。
- 如何處理 React component cleanup。
- 如何避免重複建立 Trigger。
- 如何支援
prefers-reduced-motion。 - 完成後要執行哪些測試。
- 使用哪些程式碼模板與最佳實務。
也就是說,Skill 比較像「Codex 的專業操作手冊」。它不一定提供新的外部工具,但可以告訴 Codex 如何使用現有工具、如何修改程式碼、如何遵循專案規範,以及如何避免常見錯誤。
典型結構可能是:
gsap-scrolltrigger/
├── SKILL.md
├── references/
│ ├── patterns.md
│ └── performance.md
├── scripts/
│ └── validate-animation.js
└── assets/
└── starter-template.js
最低必要條件是:
gsap-scrolltrigger/
└── SKILL.md
SKILL.md 至少需要包含名稱與觸發描述:
---
name: gsap-scrolltrigger
description: 使用 GSAP ScrollTrigger 建立、修改或除錯滾動動畫。
---
建立動畫時,先檢查元素初始狀態……
Codex 一開始通常只看到 Skill 的名稱、描述與位置;當任務符合用途時,才讀取完整內容。這種方式稱為「漸進式揭露」,能避免所有 Skills 一開始就塞滿 Context。
Plugin 是什麼?負責安裝、整合、版本管理與發佈
Plugin 是具有 Manifest 的安裝套件。它可以把多個 Skills、App/Connector、MCP Server、Hooks、Assets 與套件設定包在一起,形成一套可以安裝、啟用、停用、更新與分享的能力包。
如果 Skill 是「Codex 怎麼做事」,Plugin 則是「這整套能力如何被安裝與交付」。
典型結構如下:
shopify-plugin/
├── .codex-plugin/
│ └── plugin.json
├── .app.json
├── .mcp.json
├── hooks/
│ └── hooks.json
├── assets/
│ ├── icon.png
│ └── logo.png
└── skills/
├── shopify-liquid/
│ └── SKILL.md
├── shopify-admin/
│ └── SKILL.md
├── shopify-functions/
│ └── SKILL.md
└── shopify-hydrogen/
└── SKILL.md
其中:
| 元件 | 負責內容 |
|---|---|
plugin.json | Plugin 名稱、版本、元件位置與顯示資訊 |
skills/ | Shopify 各領域的工作流程及專業知識 |
.app.json | 對應 ChatGPT App/Connector |
.mcp.json | MCP Server 與工具設定 |
hooks/ | 在特定生命週期自動執行的指令 |
assets/ | 圖示、Logo、截圖等呈現資產 |
基本 Manifest 可以只有:
{
"name": "gsap",
"version": "1.0.0",
"description": "Reusable GSAP animation workflows",
"skills": "./skills/"
}
如果包含更多能力,則可能是:
{
"name": "shopify",
"version": "2.0.0",
"description": "Shopify development and store management toolkit",
"skills": "./skills/",
"apps": "./.app.json",
"mcpServers": "./.mcp.json",
"hooks": "./hooks/hooks.json"
}
因此,Plugin 不一定要有 Connector 或 MCP Server。只有一組 Skills,也可以包成 Plugin;差別主要在於它開始具備正式的安裝、版本、啟用、分享與發佈機制。Plugin structure
MCP Server 在 Plugin 裡扮演什麼角色?
MCP Server 是 Plugin 可能包含的能力之一,主要用來提供工具、結構化資料與外部系統操作能力。對 Codex 或 ChatGPT 來說,MCP Server 可以讓 AI 不只是「知道怎麼做」,而是能透過工具實際查詢資料、讀取系統狀態,甚至執行特定操作。
簡單來說:
- Skill:告訴 Codex 怎麼完成一項工作。
- MCP Server:提供 Codex 可以呼叫的工具與資料。
- Plugin:把 Skill、MCP Server、Connector 與其他資源包裝成可安裝套件。
例如一個 SEO Plugin 可能包含:
- SEO 文章撰寫 Skill。
- Technical SEO 檢查 Skill。
- Ahrefs MCP Server。
- Google Search Console Connector。
- Slack 通知 Hooks。
- 報告模板與圖表資源。
這種組合就不只是單一工作流程,而是一整套 AI SEO 或 AI coding workflow 的產品化套件。
Shopify Plugin 的實際運作方式
Shopify Plugin 可以同時解決兩種完全不同的需求。
1. Shopify 開發知識與工作流程
例如:
- 撰寫 Shopify Liquid。
- 修改 Theme Section。
- 開發 Shopify Functions。
- 建立 Admin GraphQL mutation。
- 開發 Hydrogen Storefront。
- 設計 Metafields 或 Metaobjects。
- 建立 Checkout UI Extension。
這些主要由 Plugin 裡面的 Shopify Skills 負責。
例如你說:
幫我建立一個可設定標題、圖片與按鈕的 Shopify Section。
Codex 會採用 shopify-liquid Skill 的規範,修改本機 Theme 程式碼;不一定需要登入 Shopify 商店。這種情境下,Skill 負責的是開發規範、程式碼結構與最佳實務。
2. 讀寫真實 Shopify 商店
例如:
- 查詢商品。
- 取得訂單。
- 更新庫存。
- 編輯商品資料。
- 讀取商店設定。
- 執行管理後台操作。
這時需要 Plugin 內的 Shopify App/Connector 或 MCP 工具,而且通常必須先完成商店授權。

需要注意的是,Manifest 顯示的 Read、Write 能力主要是套件能力描述;真正可以存取哪些資料,仍取決於:
- Shopify Connector 提供哪些工具。
- 使用者授權了哪一間商店。
- Shopify OAuth scopes。
- Workspace 管理政策。
- Codex 當下的 Sandbox 與 Approval 設定。
換句話說,Manifest 寫著 Write 並不等於自動取得所有商店的寫入權限。Plugin 可以提供能力,但實際能不能讀寫資料,仍然取決於授權、工具範圍與執行環境。
GSAP 為什麼適合使用獨立 Skills?
GSAP 的主要需求是:
- 提供 API 使用方式。
- 提供動畫設計模式。
- 避免效能與生命週期問題。
- 產生正確的 JavaScript、React 或框架程式碼。
- 協助修改本機專案。
它通常不需要:
- 登入 GSAP 帳號。
- 存取私人雲端資料。
- 操作外部管理後台。
- OAuth 授權。
- MCP Server。
- 自訂 ChatGPT UI。
所以將 GSAP 拆成多個聚焦 Skills 很合理,例如:
gsap-core
gsap-timeline
gsap-scrolltrigger
gsap-flip
gsap-draggable
gsap-svg
gsap-react
gsap-performance
每一個 Skill 負責一種動畫能力,Codex 只在任務符合時載入需要的內容。這種做法可以讓 AI coding agent 在處理動畫開發時更精準,不需要每次都載入整套 GSAP 知識。
例如:
| 使用者需求 | 可能啟用的 Skill |
|---|---|
| 建立基本淡入動畫 | gsap-core |
| 製作多段動畫序列 | gsap-timeline |
| 捲動到區塊時播放動畫 | gsap-scrolltrigger |
| React component 動畫 | gsap-react |
| 清單重新排序的過場 | gsap-flip |
| 改善動畫掉幀問題 | gsap-performance |
GSAP 能不能包成 Plugin?
可以。
但如果原始 Repository 只有:
skills/
├── gsap-core/
├── gsap-timeline/
└── gsap-scrolltrigger/
而沒有:
.codex-plugin/plugin.json
它就只是「一個收錄多個 Skills 的 Repository」,還不是原生 Codex Plugin。
若要改成 Plugin,可以包裝成:
gsap-plugin/
├── .codex-plugin/
│ └── plugin.json
├── assets/
│ └── gsap-logo.png
└── skills/
├── gsap-core/
├── gsap-timeline/
├── gsap-scrolltrigger/
└── ...
這麼做不會讓 GSAP 動畫本身突然變強,但會帶來:
- 八個 Skills 一次安裝。
- 整套統一版本。
- 一次啟用或停用。
- 可以透過 Marketplace 發佈。
- 比較容易分享給 Irvinglab 團隊。
- 更新時不必分別處理八個 Skills。
- 可以加上圖示、說明、作者與版本資訊。
所以差別主要是「管理與發佈能力」,不是動畫程式碼能力。GSAP Plugin 的價值不是讓動畫 API 更強,而是讓整套 Codex Skills 更容易安裝、管理、更新與分享。
什麼時候選 Skill?
適合使用獨立 Skill 的情況:
- 只有一個明確的工作流程。
- 還在頻繁測試與修改。
- 主要由自己使用。
- 只需要本機程式碼、文件或既有工具。
- 不需要 OAuth 或外部帳號授權。
- 不需要把多個能力綁在同一版本。
- 只對某個 Repository 有效。
例如:
- Irvinglab SEO 文章撰寫規範。
- Shopify Theme Code Review。
- GSAP ScrollTrigger 動畫。
- 每週 SEO 報告格式。
- 品牌文案語氣檢查。
- Liquid Section 建立流程。
- 專案交付前檢查清單。
如果重點是讓 Codex 學會一套穩定做法,或讓 AI coding workflow 更一致,通常先做 Skill 就足夠。
什麼時候選 Plugin?
適合包成 Plugin 的情況:
- 有多個相關 Skills。
- 希望整套安裝與更新。
- 需要分享給團隊或客戶。
- 需要明確版本管理。
- 希望出現在 Plugin Directory 或 Marketplace。
- 需要連接 Shopify、Slack、Google Drive 等外部服務。
- 需要 MCP Server 或外部工具。
- 需要 Hooks 或其他套件級設定。
- 希望未來公開發布。
例如:
- Shopify AI Toolkit。
- Irvinglab SEO Toolkit。
- 公司內部品牌與內容生產套件。
- 同時連接 GA4、Search Console、Ahrefs 與 Slack 的 SEO Plugin。
- 包含 Liquid、GraphQL、Functions、Hydrogen 的 Shopify 開發套件。
如果重點是把多個能力包成一套可以安裝、更新、授權與分享的產品化工具,Plugin 會比單一 Skill 更適合。
快速選擇判斷
| 需求 | 建議 |
|---|---|
| 只有一個聚焦任務 | Skill |
| 還在實驗階段 | Skill |
| 個人本機使用 | Skill |
| Repository 專屬規範 | Skill |
| 多個 Skills 要一次安裝 | Plugin |
| 需要統一版本 | Plugin |
| 需要團隊分享 | Plugin |
| 需要 Connector 或登入外部服務 | Plugin |
| 需要 MCP、Hooks 或套件級設定 | Plugin |
| 希望上架 Marketplace | Plugin |
可以用這個簡單判斷:
如果重點是「教 Codex 怎麼做」,先做 Skill;如果重點是「把整套能力交給別人安裝、使用與更新」,再包成 Plugin。
最後總結
- Skill 是流程與專業知識。
- Plugin 是安裝、整合、版本管理與發佈方式。
- Plugin 可以包含 Skills,但 Skill 不會包含 Plugin。
- Skill 可以指導 Codex 使用工具,但不等於它自己提供外部工具。
- MCP Server 可以提供工具、資料與外部系統操作能力。
- 需要讀寫真實服務時,通常還需要 App/Connector 或 MCP。
- Shopify 適合 Plugin;GSAP 個人使用時適合獨立 Skills。
- GSAP 包成 Plugin 後,主要改善管理與分享,不會直接增加動畫能力。
延伸閱讀:官方進一步說明可參考:Skills & Plugins、Plugins